YOLOv5 とComet
このガイドでは、YOLOv5 Comet機械学習実験を追跡、比較、最適化するための強力なツールです。
についてComet
Cometは、データサイエンティスト、エンジニア、チームリーダーが機械学習や ディープラーニングモデルを高速化・最適化するためのツールを開発しています。
モデルのメトリクスをリアルタイムで追跡および可視化し、ハイパーパラメータ、データセット、およびモデルのチェックポイントを保存し、Comet カスタムパネルでモデルの予測を可視化します!Comet すれば、作業内容を見失うことなく、あらゆる規模のチーム間で結果を共有し、共同作業を簡単に行うことができます!
はじめに
インストールComet
Comet 認証情報を設定する
YOLOv5 でComet を設定する方法は2つある。
環境変数を使って認証情報を設定することもできる:
環境変数
export COMET_API_KEY=YOUR_API_KEY
export COMET_PROJECT_NAME=YOUR_COMET_PROJECT_NAME # This will default to 'yolov5'
あるいは .comet.config
ファイルを作業ディレクトリに作成し、そこに認証情報を設定する:
Comet 設定ファイル
トレーニングスクリプトの実行
# 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="yolov5" # 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=30 # 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="last.pt" # 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、precision、recall、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://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID
.
これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、Comet データセットアーティファクトのダウンロード(元の実行で使用されていた場合)が含まれます。再開された実行は、Comet UIの既存のExperimentへのログを継続します:
Comet オプティマイザによるハイパーパラメータ探索
YOLOv5 5は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 、掃引の結果を視覚化するさまざまな方法を提供します。掃引が完了したプロジェクトをご覧ください。