YOLOv5 とComet
このガイドでは、YOLOv5 の使い方を説明する。 Comet
についてComet
Comet は、データサイエンティスト、エンジニア、チームリーダーが機械学習や ディープラーニングのモデルを高速化し、最適化するためのツールを開発しています。
モデルのメトリクスをリアルタイムで追跡および可視化し、ハイパーパラメータ、データセット、およびモデルのチェックポイントを保存し、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 は以下の項目を記録する。
指標
- 訓練データと検証データのボックス・ロス、オブジェクト・ロス、分類ロス
- mAP_0.5、mAP_0.5:0.95の評価基準。
- 検証データのPrecisionとRecall
パラメータ
- モデルのハイパーパラメータ
- コマンドラインオプションで渡されるすべてのパラメーター
ビジュアライゼーション
- 検証データに対するモデル予測値の混乱行列
- 全クラスの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
コマンドライン引数。予測はComet の 物体検出 カスタムパネル。この回数は、1回につきNバッチ分のデータに相当する。 エポック.以下の例では、各エポックごとに2バッチ目のデータを記録している。
注: YOLOv5 バリデーションデータローダーは、デフォルトでバッチサイズを32に設定するため、それに応じてロギング頻度を設定する必要があります。
以下は、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
環境変数でmAPを記録する、 精度, リコール各クラスのf1。
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 は、掃引の結果を視覚化するさまざまな方法を提供します。スイープが完了したプロジェクトはこちらからご覧いただけます。