コンテンツにスキップ

Comet

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 UI

例を試す!

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

さらに良いことに、このColab Notebookでご自身でお試しください。

Colabで開く

自動的にログを記録

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

メトリクス

  • トレーニングおよび検証データのBox Loss、Object Loss、Classification Loss
  • 検証データに対するmAP_0.5、mAP_0.5:0.95のメトリクス
  • 検証データの適合率再現率

パラメータ

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

可視化

  • 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 トレーニングスクリプトへの引数。これにより、ログに記録されたチェックポイントが、によって提供される間隔値に基づいてCometに保存されます。 save-period:

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の検証データローダーは、デフォルトでバッチサイズが32になるため、それに応じてログ記録の頻度を設定する必要があります。

以下は、Panelを使用したプロジェクトの例です。

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アーティファクトを使用すると、次のものを使用してそれを行うことができます。 upload_dataset フラグ。

データセットは、以下に説明されているように構成する必要があります。 YOLOv5のドキュメント。データセット構成は以下のとおりです: yaml fileは、以下と同じ形式に従う必要があります。 coco128.yaml file。

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

アップロードされたデータセットは、Cometワークスペースの[アーティファクト]タブにあります。

Cometアーティファクトタブ

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

Cometデータプレビュー

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

Cometアーティファクトメタデータ

保存されたアーティファクトを使用する

Comet Artifactsのデータセットを使用したい場合は、以下を設定してください。 path データセット内の変数 yaml ファイルで、次のアーティファクトリソース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

アーティファクトを使用すると、実験ワークフローを流れるデータの系統を追跡することもできます。ここでは、アップロードしたデータセットを使用したすべての実験を示すグラフを確認できます。

Cometアーティファクトリネージグラフ

学習の再開

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

実行パスは次の形式です。 comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

これにより、中断前の状態に実行が復元されます。これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、および元の実行で使用されていた場合はCometデータセットアーティファクトのダウンロードが含まれます。再開された実行は、Comet UIの既存の実験へのロギングを継続します。

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

Cometオプティマイザーによるハイパーパラメータ探索

YOLOv5はCometのOptimizerとも統合されており、Comet UIでハイパーパラメータースイープを簡単に視覚化できます。

オプティマイザースイープの構成

Comet Optimizerを設定するには、スイープに関する情報を含むJSONファイルを作成する必要があります。サンプルファイルが以下に用意されています。 utils/loggers/comet/optimizer_config.json:

python utils/loggers/comet/hpo.py \
  --comet_optimizer_config "utils/loggers/comet/optimizer_config.json"

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



📅 1年前に作成 ✏️ 2か月前に更新

コメント