Ultralytics YOLOv5とCometの使い方
UltralyticsがCometと提携して、Ultralytics YOLOv5モデルの最適化(リアルタイム追跡、効率的なコラボレーション、再現性の向上)を行う方法を発見してください。

Ultralyticsでは、YOLOv5のような優れたオープンソースツールの研究開発資金を確保し、誰でも無料で利用できるようにするため、他のスタートアップ企業と商業的なパートナーシップを結んでいます。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。
最新のパートナーである Comet は、データサイエンティスト、エンジニア、チームリーダーが機械学習およびディープラーニングモデルを加速・最適化するためのツールを開発しています。
Comet は、モデル、データセット、メトリクスを追跡するための強力なツールです。システム変数や環境変数もログに記録するため、すべての実行において再現性とスムーズなデバッグが保証されます。まるで、どのメモを残すべきかを魔法のように知っているバーチャルアシスタントがいるようなものです。モデルのメトリクスをリアルタイムで追跡・可視化し、ハイパーパラメータ、データセット、モデルチェックポイントを保存し、Comet Custom Panels でモデルの予測を可視化しましょう!
さらに、Cometを使用すれば作業の進捗を常に把握でき、結果の共有やあらゆる規模のチームとのコラボレーションが容易になります。
YOLOv5 は、コンピュータビジョンの学習を始めるのに最適な出発点です。モデルのパフォーマンスを向上させ、本番環境に対応できるようにするには、Comet のような実験追跡ツールに結果を記録する必要があります。
CometとYOLOv5の統合により、3つの主要な機能が提供されます。
- 自動ログ記録およびカスタムログ記録機能
- デバッグと再現性のためにデータセットとモデルをアーティファクトとして保存する機能
- Cometのカスタムパネルを使用して表示を整理する機能
このガイドでは、YOLOv5とCometの使用方法を解説します。
それでは、リアルタイムで実験を追跡する準備はできましたか?さあ、始めましょう!
はじめに#
Cometをインストール#
pip install comet_mlCometの認証情報を設定#
YOLOv5 で Comet を設定するには、2つの方法があります。
認証情報を環境変数経由で設定するか、作業ディレクトリに .comet.config ファイルを作成してそこに設定するかのいずれかを選択できます。
環境変数#
export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'Comet構成ファイル#
[comet]
api_key=<Your 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で可視化・分析できます。

ぜひお試しください!#
完了した実行の例はこちらをご覧ください。
あるいは、こちらの Colab Notebook で実際に試してみてください。
自動ログ記録#
デフォルトで、Cometは以下の項目をログに記録します。
メトリクス#
- トレーニングおよび検証データに対するBox Loss、Object Loss、Classification Loss
- 検証データに対するmAP_0.5、mAP_0.5:0.95メトリクス
- 検証データに対する精度(Precision)と再現率(Recall)
パラメータ#
- モデルのハイパーパラメータ
- コマンドラインオプション経由で渡されたすべてのパラメータ
可視化#
- 検証データに対するモデル予測の混同行列(Confusion Matrix)
- 全クラスにわたる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 predictionsCometを使用したチェックポイントの記録#
Cometへのモデルの記録はデフォルトで無効になっています。有効にするには、トレーニングスクリプトに save-period 引数を渡してください。これにより、指定した間隔で記録されたチェックポイントがCometに保存されます。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1モデル予測の記録#
デフォルトで、モデルの予測(画像、正解ラベル、バウンディングボックス)はCometに記録されます。bbox_interval コマンドライン引数を渡すことで、記録される予測と関連画像の頻度を制御できます。予測結果は、Cometの「Object Detection」カスタムパネルを使用して可視化できます。この頻度は、エポックごとのデータバッチのN個目に対応しています。以下の例では、各エポックでデータの2バッチごとに記録しています。
注意:YOLOv5の検証データローダーのデフォルトのバッチサイズは32ですので、それに応じて記録頻度を設定する必要があります。
以下は、Panel を使用したプロジェクトの例です。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--bbox_interval 2Cometに記録される予測画像の数の制御#
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 Artifactsへのアップロード#
Comet Artifacts を使用してデータを保存する場合は、upload_dataset フラグを使用して行うことができます。
データセットは、YOLOv5 documentation で説明されている方法で整理されています。データセットの設定 yaml ファイルは、coco128.yaml ファイルと同じフォーマットに従う必要があります。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--upload_datasetアップロードされたデータセットは、Cometワークスペースの「Artifacts」タブで見つけることができます。

データはComet UIで直接プレビューできます。

Artifactsにはバージョン管理機能があり、データセットに関するメタデータの追加もサポートしています。Cometはデータセットのyamlファイルからメタデータを自動的に記録します。

保存されたArtifactの使用#
Comet Artifactsのデータセットを使用する場合は、データセットのyamlファイルのpath変数を、以下のArtifactリソースURLを指すように設定します。
# contents of artifact.yaml file
path: "comet://<workspace name>/<artifact name>:<artifact version or alias>"次に、以下の方法でこのファイルをトレーニングスクリプトに渡します。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data artifact.yaml \
--weights yolov5s.ptArtifactsを使用すると、実験ワークフローを通じてデータがどのように流れるかという系列を追跡することもできます。ここでは、アップロードされたデータセットを使用したすべての実験を示すグラフを確認できます。

トレーニング実行の再開#
インターネット接続の切断など、何らかの理由でトレーニング実行が中断された場合、resume フラグとComet Run Pathを使用して実行を再開できます。
Run Path の形式は comet://<your workspace name>/<your project name>/<experiment id> です。
これにより、中断前の状態に復元されます。これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、および元の実行で使用されていた場合にCometデータセットArtifactsをダウンロードすることが含まれます。再開された実行は、Comet UI内の既存の実験への記録を継続します。
python train.py \
--resume "comet://<your run path>"Comet Optimizerを使用したハイパーパラメータ探索#
YOLOv5はCometのOptimizerとも統合されており、Comet UIでハイパーパラメータスイープを簡単に可視化できます。
Optimizerスイープの設定#
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 <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonComet には、スイープの結果を可視化するための多くの方法が用意されています。スイープが完了したプロジェクトの例はこちらをご覧ください:

連絡先#
Comet との統合を利用して、トレーニングの実行から本番環境のモニタリングまで、YOLOv5 モデルの管理、可視化、最適化を開始しましょう。
そしてもちろん、Ultralytics Community に参加しましょう。ここは、YOLOv5 のトレーニング、検証、デプロイに関する質問をしたり、ヒントを共有したりするための場所です。






