Ultralytics YOLO27:
Get Started

機械学習実験追跡ツールComet MLのロゴ

Cometを使ったYOLOv5#

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

Cometについて#

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

モデルのメトリクスをリアルタイムで追跡して可視化し、ハイパーパラメーター、データセット、モデルチェックポイントを保存できます。また、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で実行結果を可視化して分析できます。

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

サンプルを試してみましょう。#

完了済みの実行例はこちらでご覧いただけます。

または、Colabノートブックで実際に試してみましょう。

Colabで開く

自動記録#

デフォルトでは、Cometは次の項目を記録します。

メトリクス#

  • トレーニングデータと検証データのボックス損失、物体損失、分類損失
  • 検証データのmAP_0.5、mAP_0.5:0.95メトリクス
  • 検証データの適合率と再現率

パラメーター数#

  • モデルのハイパーパラメーター
  • コマンドラインオプションで渡されたすべてのパラメーター

可視化#

  • 検証データに対するモデル予測の混同行列
  • すべてのクラスの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_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の物体検出カスタムパネルで可視化できます。この頻度は、エポックごとにN番目のデータバッチを記録する間隔を示します。以下の例では、各エポックの2番目のデータバッチごとに記録しています。

注: YOLOv5の検証データローダーでは、トレーニングのバッチサイズの2倍(--batch 16の場合は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のドキュメントの説明に従って整理してください。データセット設定ファイルyamlは、coco128.yamlファイルと同じ形式にする必要があります。

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

アップロードしたデータセットは、Comet WorkspaceのArtifactsタブで確認できます。

データセットのバージョン管理を行うComet Artifactsパネル

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

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

Artifactsではバージョン管理ができ、データセットのメタデータも追加できます。Cometは、データセットのyamlファイルからメタデータを自動的に記録します。

Comet Artifactのメタデータ

保存済み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の系譜グラフ

トレーニングの再開#

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

Run Pathは次の形式です: comet://WORKSPACE_NAME/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 Sweepの設定#

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のハイパーパラメーター可視化

よくある質問#

  • comet.comで無料アカウントを作成し、アカウント設定を開いてAPIキーをコピーします。COMET_API_KEYとしてエクスポートするか、train.pyの隣にある.comet.configファイルに保存してください。

  • はい。COMET_MODE=offlineを設定してExperimentをローカルアーカイブに書き込み、後からcomet upload path/to/archive.zipでアップロードします。

  • チェックポイントのログ記録はデフォルトで無効になっています。train.pyに--save-period 1(または別の間隔)を渡すと、保存された各チェックポイントがExperimentにアップロードされます。

  • Comet UIからRun Pathをコピーし、python train.py --resume "comet://WORKSPACE/PROJECT/EXPERIMENT_ID"を指定してトレーニングを開始します。YOLOv5はチェックポイント、ハイパーパラメーター、CometデータセットArtifactを復元し、同じExperimentへのログ記録を続けます。

コントリビューター

コメント