コンテンツへスキップ

Comet

YOLOv5 とComet

このガイドでは、YOLOv5 の使い方を説明する。 Comet

についてComet

Comet builds tools that help data scientists, engineers, and team leaders accelerate and optimize machine learning and deep learning models.

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

はじめに

インストールComet

pip install comet_ml

Comet 認証情報を設定する

YOLOv5 でComet を設定する方法は2つある。

環境変数で認証情報を設定することもできます。

環境変数

export COMET_API_KEY=<Your Comet API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

あるいは .comet.config ファイルを作業ディレクトリに作成し、そこにクレデンシャルを設定する。

Comet 設定ファイル

[comet]
api_key=<Your Comet 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で実行結果を可視化し、分析することができます。

yolo-ウイ

例を試してみよう!

完走例はこちら

あるいは、このコラボ・ノートブックで試してみるのもいいだろう。

オープン・イン・コラボ

自動ログ

デフォルトでは、Comet は以下の項目を記録する。

指標

  • Box Loss, Object Loss, Classification Loss for the training and validation data
  • mAP_0.5、mAP_0.5:0.95の評価基準。
  • 検証データのPrecisionとRecall

パラメータ

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

ビジュアライゼーション

  • Confusion Matrix of the model predictions on the validation data
  • 全クラスの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=<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 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 command line argument. Predictions can be visualized using Comet's 物体検出 Custom Panel. This frequency corresponds to every Nth batch of data per epoch. In the example below, we are logging every 2nd batch of data for each epoch.

Note: The YOLOv5 validation dataloader will default to a batch size of 32, so you will have to set the logging frequency accordingly.

以下は、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 environment variable to log mAP, precision, recall, f1 for each class.

env COMET_LOG_PER_CLASS_METRICS=true python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt

Comet アーティファクトへのデータセットのアップロード

を使用してデータを保存したい場合 Comet 工芸品を使うことができます。 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」タブにあります。 アーティファクト-1

Comet UIで直接データをプレビューできる。 アーティファクト2

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

保存されたアーティファクトの使用

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

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

トレーニング・ランの再開

インターネット接続が切断されるなど、何らかの理由でトレーニングが中断された場合は、次の方法で再開することができます。 resume フラグとComet Run Path。

ランパスの書式は以下の通りです。 comet://<your workspace name>/<your project name>/<experiment id>.

これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、Comet データセットのアーティファクト(元の実行で使用されていた場合)のダウンロードが含まれます。再開された実行は、Comet UIの既存のExperimentにログを取り続けます。

python train.py \
--resume "comet://<your run path>"

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

YOLOv5 は、Comet のオプティマイザーとも統合されており、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"

について 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 <set number of workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json"

結果の可視化

Comet は、掃引の結果を視覚化するさまざまな方法を提供します。スイープが完了したプロジェクトはこちらからご覧いただけます。

ハイパーパラメータyolo


📅 Created 11 months ago ✏️ Updated 19 days ago

コメント