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

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

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

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

Link to this section保存された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を使用すると、実験ワークフローを通じてデータがどのように流れるかという系列を追跡することもできます。ここでは、アップロードされたデータセットを使用したすべての実験を示すグラフを確認できます。

Link to this sectionトレーニング実行の再開#
インターネット接続の切断など、何らかの理由でトレーニング実行が中断された場合、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>"Link to this sectionComet Optimizerを使用したハイパーパラメータ探索#
YOLOv5はCometのOptimizerとも統合されており、Comet UIでハイパーパラメータスイープを簡単に可視化できます。
Link to this sectionOptimizerスイープの設定#
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 1Link to this sectionスイープを並列実行する#
comet optimizer -j <num_workers> utils/loggers/comet/hpo.py \
utils/loggers/comet/optimizer_config.jsonCometには、スイープの結果を可視化するための多くの方法が用意されています。スイープが完了したプロジェクトはこちらをご覧ください。

Link to this section連絡先#
トレーニングから実運用環境の監視まで、YOLOv5モデルの管理、可視化、最適化にCometとの統合を活用してください。
そしてもちろん、YOLOv5のトレーニング、検証、デプロイに関する質問やヒントを共有できる場所として、Ultralyticsコミュニティにもぜひご参加ください。






