Meet YOLO26: next-gen vision AI.

Comet ML 機械学習実験トラッキング用ロゴ

Link to this sectionYOLOv5 と Comet#

このガイドでは、機械学習実験のトラッキング、比較、最適化を行うための強力なツールである Comet を YOLOv5 で使用する方法を説明します。

Link to this sectionComet について#

Comet は、データサイエンティスト、エンジニア、チームリーダーが 機械学習 および ディープラーニング モデルを加速・最適化するためのツールを提供しています。

モデルのメトリクスをリアルタイムでトラッキングおよび可視化し、ハイパーパラメータ、データセット、モデルチェックポイントを保存しましょう。また、Comet Custom Panels を使用してモデルの予測を可視化することも可能です。Comet を使用すれば作業の進捗を常に把握でき、あらゆる規模のチーム間での結果共有やコラボレーションが容易になります。

Link to this sectionはじめに#

Link to this sectionComet のインストール#

pip install comet_ml

Link to this sectionComet 認証情報の設定#

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'

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

YOLOv5 トレーニングメトリクスと実験トラッキングを表示する Comet ダッシュボード

Link to this section例を試す#

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

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

Open In Colab

Link to this section自動ログ記録#

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

Link to this sectionメトリクス#

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="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

Link to this sectionComet を使用したチェックポイントのログ記録#

モデルを Comet に記録する機能はデフォルトで無効になっています。有効にするには、save-period 引数をトレーニングスクリプトに渡します。これにより、save-period で指定された間隔に基づいて、ログ記録されたチェックポイントが Comet に保存されます:

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

Link 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 2

Link 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 1

Link 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.pt

Link to this sectionComet 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 Artifacts パネル

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

Comet データセットのプレビューとバージョン履歴

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

Comet Artifact メタデータ

Link to this section保存された Artifact の使用#

If you would like to use a dataset from Comet Artifacts, set the path variable in your dataset yaml file to point to the following Artifact resource 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 系列グラフ

Link to this sectionトレーニング実行の再開#

インターネット接続の中断など、何らかの理由でトレーニングが中断された場合、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"

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 1

Link to this section結果の可視化#

Comet は、スイープの結果を可視化するためのいくつかの方法を提供しています。スイープが完了したプロジェクトはこちらをご覧ください。

Comet ハイパーパラメータの可視化

コントリビューター

コメント