YOLO Vision 2026:

Comet ML logo for machine learning experiment tracking

YOLOv5 と Comet#

このガイドでは、機械学習実験の追跡、比較、最適化を行うための強力なツールであるCometでYOLOv5を使用する方法について説明します。

Comet について#

Cometは、データサイエンティスト、エンジニア、チームリーダーがmachine learningおよびdeep learningモデルを加速・最適化するためのツールを構築しています。

モデルのメトリクスをリアルタイムで追跡および視覚化し、ハイパーパラメータ、データセット、モデルチェックポイントを保存し、Comet Custom Panelsでモデルの予測を視覚化できます!Cometを使用すると、作業の進捗を見失うことがなくなり、結果の共有やあらゆる規模のチーム間でのコラボレーションが容易になります!

はじめに#

Comet のインストール#

pip install comet_ml

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 設定ファイル

[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 で実行結果を可視化・分析できます。

Comet dashboard showing YOLOv5 training metrics and experiment tracking

例を試す#

完了した実行の例はこちらをご確認ください。

あるいは、この Colab ノートブックで実際に試してみてください:

Open In Colab

自動ログ記録#

デフォルトでは、Comet は以下の項目をログに記録します:

メトリクス#

  • トレーニングおよびvalidation dataのボックス損失、オブジェクト損失、分類損失
  • 検証データの 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="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 引数を渡します。これにより、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 Custom Panelを使用して視覚化できます。この頻度は、各epochあたりのN番目のバッチデータに対応しています。以下の例では、各エポックの2番目のバッチごとにログを記録しています。

メモ: YOLOv5の検証データローダーはデフォルトでbatch sizeが32に設定されるため、それに応じてログ記録の頻度を設定する必要があります。

パネルを使用したプロジェクトの例はこちらです

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 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 artifacts panel for dataset versioning

Comet UI でデータを直接プレビューできます:

Comet dataset preview and version history

アーティファクトはバージョン管理されており、データセットに関するメタデータの追加もサポートしています。Cometは、データセットの yaml ファイルからメタデータを自動的にログに記録します:

Comet Artifact Metadata

保存された 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.pt

Artifacts を使用すると、実験ワークフローを通じてデータがどのように流れるかという系列を追跡することもできます。ここでは、アップロードされたデータセットを使用したすべての実験を示すグラフを確認できます:

Comet Artifact Lineage Graph

トレーニング実行の再開#

インターネット接続の切断など、何らかの理由でトレーニングの実行が中断された場合は、resume フラグとComet Run Pathを使用して実行を再開できます。

Run Pathのフォーマットは comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID です。

これにより、チェックポイントからのモデルの復元、すべてのハイパーパラメータおよびトレーニング引数の復元、元の実行で使用された Comet データセット Artifacts のダウンロードなど、中断前の状態に実行が復元されます。再開された実行は、Comet UI 上の既存の実験に継続してログを記録します:

python train.py \
  --resume "comet://YOUR_RUN_PATH"

Comet Optimizer を使用したハイパーパラメータ検索#

YOLOv5はComet's 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には、探索結果を視覚化するためのいくつかの方法が用意されています。探索が完了したプロジェクトはこちらをご覧ください。

Comet Hyperparameter Visualization

コメント