CometでUltralytics YOLOv5を使用する方法
Cometとのパートナーシップにより、Ultralytics YOLOv5モデルの最適化、リアルタイムトラッキング、コラボレーションの効率化、再現性の向上を実現する方法をご覧ください。

Ultralyticsでは、YOLOv5のような優れたオープンソースツールを誰でも無料で利用できる状態に保つため、研究開発費の支援を目的として、他のスタートアップ企業と商業的に提携しています。この記事には、提携先へのアフィリエイトリンクが含まれている場合があります。
当社の最新パートナーであるCometは、データサイエンティスト、エンジニア、チームリーダーが機械学習および深層学習モデルを高速化・最適化するためのツールを開発しています。
Cometは、モデル、データセット、メトリクスを追跡するための強力なツールです。再現性を確保し、実行ごとのデバッグをスムーズにするために、システム変数や環境変数まで記録します。保持すべきメモを魔法のように把握しているバーチャルアシスタントのようなものです。モデルのメトリクスをリアルタイムで追跡・可視化し、ハイパーパラメータ、データセット、モデルチェックポイントを保存して、Comet Custom Panelsでモデルの予測を可視化できます。
さらに、Cometを使えば作業の進捗を見失うことなく、規模を問わずチーム間で結果を簡単に共有し、共同作業できます。
YOLOv5は、コンピュータビジョンの取り組みを始めるのに適した出発点です。モデルのパフォーマンスを向上させて本番環境で利用できる状態にするには、Cometのような実験追跡ツールに結果を記録する必要があります。
CometとYOLOv5の統合には、3つの主な機能があります。
- 自動ロギングとカスタムロギング機能
- デバッグと再現性のために、データセットとモデルをアーティファクトとして保存
- Cometのカスタムパネルによる表示の整理
このガイドでは、YOLOv5をCometとともに使用する方法を説明します。
それでは、実験をリアルタイムで追跡する準備はできましたか。始めましょう。
はじめに#
1. Cometをインストールする#
pip install comet_ml2. Cometの認証情報を設定する#
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'3. トレーニングスクリプトを実行する#
# 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曲線のプロット
- クラスラベルのCorrelogram
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引数をトレーニングスクリプトに渡します。これにより、save-periodで指定した間隔に基づいて、記録されたチェックポイントがCometに保存されます。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1モデルの予測を記録する#
デフォルトでは、モデルの予測(画像、ground truthラベル、バウンディングボックス)がCometに記録されます。bbox_intervalコマンドライン引数を渡すことで、記録する予測と関連画像の頻度を制御できます。予測はCometのObject Detection Custom Panelで可視化できます。この頻度は、エポックごとの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、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 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 Workspaceの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を使用すると、Experimentationワークフローを通じてデータが流れる際の系譜も追跡できます。ここでは、アップロードしたデータセットを使用したすべての実験を示すグラフを確認できます。

トレーニング実行を再開する#
インターネット接続の中断など、何らかの理由でトレーニング実行が中断された場合は、resumeフラグとComet Run Pathを使用して実行を再開できます。
Run Pathの形式はcomet://<your workspace name>/<your project name>/<experiment id>です。
これにより、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、元の実行で使用していた場合のCometデータセットArtifactsのダウンロードなど、中断前の状態に実行が復元されます。再開した実行では、Comet UIの既存のExperimentへのロギングが継続されます。
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のトレーニング、検証、デプロイについて質問したり、ヒントを共有したりできる場です。









