YOLOv5 とComet
このガイドでは、YOLOv5 の使い方を説明する。 Comet
についてComet
Comet builds tools that help data scientists, engineers, and team leaders accelerate and optimize machine learning and deep learning models.
モデルのメトリクスをリアルタイムで追跡および可視化し、ハイパーパラメータ、データセット、およびモデルのチェックポイントを保存し、Comet カスタムパネルでモデルの予測を可視化します。Comet は、作業内容を見失うことなく、あらゆる規模のチーム間で結果を共有し、コラボレーションすることを容易にします!
はじめに
インストールComet
Comet 認証情報を設定する
YOLOv5 でComet を設定する方法は2つある。
環境変数で認証情報を設定することもできます。
環境変数
export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'
あるいは .comet.config
ファイルを作業ディレクトリに作成し、そこにクレデンシャルを設定する。
Comet 設定ファイル
[comet]
api_key=<Your Comet API Key>
project_name=<Your Comet Project Name> # This will default to 'yolov5'
トレーニングスクリプトの実行
# Train YOLOv5s on COCO128 for 5 epochs
python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
これだけです!Comet は、ハイパーパラメータ、コマンドライン引数、トレーニングと検証のメトリクスを自動的に記録します。Comet UIで実行結果を可視化し、分析することができます。
例を試してみよう!
完走例はこちら
あるいは、このコラボ・ノートブックで試してみるのもいいだろう。
自動ログ
デフォルトでは、Comet は以下の項目を記録する。
指標
- Box Loss, Object Loss, Classification Loss for the training and validation data
- mAP_0.5、mAP_0.5:0.95の評価基準。
- 検証データのPrecisionとRecall
パラメータ
- モデルのハイパーパラメータ
- コマンドラインオプションで渡されるすべてのパラメーター
ビジュアライゼーション
- Confusion Matrix of the model predictions on the validation data
- 全クラスのPR曲線とF1曲線のプロット
- クラス・ラベルの相関図
Comet ログを設定する
Comet は、トレーニングスクリプトに渡されるコマンドラインフラグまたは環境変数によって、追加データをログに記録するように設定できます。
export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME=<your model name> #Set the name for the saved model. Defaults to yolov5
export COMET_LOG_CONFUSION_MATRIX=false # Set to disable logging a Comet Confusion Matrix. Defaults to true
export COMET_MAX_IMAGE_UPLOADS=<number of allowed images to upload to Comet> # Controls how many total image predictions to log to Comet. Defaults to 100.
export COMET_LOG_PER_CLASS_METRICS=true # Set to log evaluation metrics for each detected class at the end of training. Defaults to false
export COMET_DEFAULT_CHECKPOINT_FILENAME=<your checkpoint filename> # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt'
export COMET_LOG_BATCH_LEVEL_METRICS=true # Set this if you would like to log training metrics at the batch level. Defaults to false.
export COMET_LOG_PREDICTIONS=true # Set this to false to disable logging model predictions
によるチェックポイントの記録Comet
モデルのComet へのログ記録は、デフォルトでは無効になっています。有効にするには save-period
引数をトレーニングスクリプトに追加します。によって指定された間隔値に基づいて、Comet にログされたチェックポイントを保存します。 save-period
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
ロギング・モデルの予測
デフォルトでは、モデル予測(画像、グランドトゥルースラベル、バウンディングボックス)はComet に記録されます。
を渡すことで、ログに記録される予測と関連する画像の頻度を制御できます。 bbox_interval
command line argument. Predictions can be visualized using Comet's 物体検出 Custom Panel. This frequency corresponds to every Nth batch of data per epoch. In the example below, we are logging every 2nd batch of data for each epoch.
Note: The YOLOv5 validation dataloader will default to a batch size of 32, so you will have to set the logging frequency accordingly.
以下は、Panel を使用したプロジェクト例です。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2
に記録される予測画像の数を制御する。Comet
YOLOv5 からの予測をログに記録するとき、Comet は各予測セットに関連する画像をログに記録します。デフォルトでは、最大100の検証画像が記録されます。この数は COMET_MAX_IMAGE_UPLOADS
環境変数。
env COMET_MAX_IMAGE_UPLOADS=200 python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 1
クラス・レベルのメトリクスの記録
を使用する。 COMET_LOG_PER_CLASS_METRICS
environment variable to log mAP, precision, recall, f1 for each class.
env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt
Comet アーティファクトへのデータセットのアップロード
を使用してデータを保存したい場合 Comet 工芸品を使うことができます。 upload_dataset
の旗を掲げている。
で説明されている方法でデータセットを編成する。 YOLOv5 ドキュメンテーション.データセットの設定 yaml
ファイルの書式と同じでなければならない。 coco128.yaml
ファイル。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_dataset
アップロードされたデータセットは、Comet ワークスペースの「Artifacts」タブにあります。
Comet UIで直接データをプレビューできる。
アーティファクトはバージョン管理され、データセットに関するメタデータの追加もサポートしています。Comet は、データセットからメタデータを自動的に記録します。 yaml
ファイル
保存されたアーティファクトの使用
Comet Artifactsのデータセットを使用したい場合は、次のように設定します。 path
データセットの変数 yaml
ファイルに、以下のアーティファクト・リソースURLを指定します。
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"
次に、このファイルをトレーニングスクリプトに次のように渡します。
アーティファクトは、実験ワークフローを流れるデータの系譜を追跡することもできます。ここでは、アップロードしたデータセットを使用したすべての実験を示すグラフを見ることができます。
トレーニング・ランの再開
インターネット接続が切断されるなど、何らかの理由でトレーニングが中断された場合は、次の方法で再開することができます。 resume
フラグとComet Run Path。
ランパスの書式は以下の通りです。 comet://<your workspace name>/<your project name>/<experiment id>
.
これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、Comet データセットのアーティファクト(元の実行で使用されていた場合)のダウンロードが含まれます。再開された実行は、Comet UIの既存のExperimentにログを取り続けます。
Comet オプティマイザによるハイパーパラメータ探索
YOLOv5 は、Comet のオプティマイザーとも統合されており、Comet のUIでハイパーパラメータのスイープを簡単に視覚化することができます。
オプティマイザー・スイープの設定
Comet Optimizerを設定するには、スイープに関する情報を含むJSONファイルを作成する必要があります。ファイルの例は utils/loggers/comet/optimizer_config.json
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json"
について hpo.py
スクリプトは train.py
.掃引に追加の引数を渡したい場合は、スクリプトの後に追加してください。
python utils/loggers/comet/hpo.py \
--comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \
--save-period 1 \
--bbox_interval 1
スイープの並列実行
comet optimizer -j <set number of workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.json"
結果の可視化
Comet は、掃引の結果を視覚化するさまざまな方法を提供します。スイープが完了したプロジェクトはこちらからご覧いただけます。