コンテンツへスキップ

Comet

YOLOv5 とComet

このガイドでは、YOLOv5 Comet機械学習実験を追跡、比較、最適化するための強力なツールです。

についてComet

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

モデルのメトリクスをリアルタイムで追跡および可視化し、ハイパーパラメータ、データセット、およびモデルのチェックポイントを保存し、Comet カスタムパネルでモデルの予測を可視化します!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

例を試してみよう!

完成したランの例はこちらでチェックできる。

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

オープン・イン・コラボ

自動ログ

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

指標

  • 訓練データと検証データのボックス・ロス、オブジェクト・ロス、分類ロス
  • 検証データのmAP_0.5, mAP_0.5:0.95 メトリクス
  • 検証データのPrecisionと Recall

パラメータ

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

ビジュアライゼーション

  • 検証データに対するモデル予測値の混乱行列
  • 全クラスの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 の 物体検出 カスタムパネル。この回数は、1回につき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、precision、recall、f1を記録する:

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タブにあります:

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 Run Path。

ランパスの書式は以下の通りです。 comet://WORKSPACE_NAME/PROJECT_NAME/EXPERIMENT_ID.

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

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

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

YOLOv5 5は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 、掃引の結果を視覚化するさまざまな方法を提供します。掃引が完了したプロジェクトをご覧ください。

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

📅作成:1年前 ✏️更新しました 8日前

コメント