ウルトラリティクスYOLOv5とコメットの使い方

ウルトラリティクスチーム

5分で読める

2022年10月11日

Ultralytics YOLOv5モデル最適化のためにUltralyticsがCometとどのように提携しているかをご覧ください:リアルタイムの追跡、合理化されたコラボレーション、再現性の向上。

Ultralyticsでは、YOLOv5のような素晴らしいオープンソースツールの研究開発に資金を提供するために、他のスタートアップ企業と商業的に提携しています。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。

当社の最新のパートナーであるコメット社は、データサイエンティスト、エンジニア、チームリーダーが機械学習やディープラーニングモデルを加速・最適化するためのツールを開発しています。

Cometは、モデル、データセット、メトリクスを追跡するための強力なツールです。システム変数や環境変数のログまで記録し、実行のたびに再現性とスムーズなデバッグを保証します。まるで、どのようなメモを残すべきかを魔法のように知っているバーチャル・アシスタントを持つようなものです。モデルのメトリクスをリアルタイムで追跡・可視化し、ハイパーパラメータ、データセット、モデルのチェックポイントを保存し、Cometカスタムパネルでモデルの予測を可視化します!

さらに、コメットは、作業内容を見失うことなく、あらゆる規模のチーム間で結果を共有し、コラボレーションすることを容易にします!

YOLOv5は、コンピュータビジョンの旅の出発点として最適です。モデルのパフォーマンスを向上させ、生産可能な状態にするには、Cometのような実験追跡ツールで結果を記録する必要があります。

コメットとYOLOv5の統合は、3つの主要機能を提供する:

  • オートロギングとカスタムロギング機能
  • デバッグや再現性のために、データセットやモデルを成果物として保存する。
  • コメットのカスタムパネルでビューを整理する


このガイドでは、YOLOv5とコメットの使い方を説明する。

あなたの実験をリアルタイムで追跡する準備はできましたか?さっそく始めよう!

はじめに

1.コメットをインストールする

comet_ml をインストールする

2.コメット認証情報の構成

YOLOv5でコメットを設定するには2つの方法がある。

環境変数で認証情報を設定するか、作業ディレクトリに .comet.config ファイルを作成し、そこで認証情報を設定します。


環境変数

export COMET_API_KEY=export COMET_PROJECT_NAME= # デフォルトは 'yolov5' です。


コメット設定ファイル

[comet] api_key= project_name=<Your Comet API Key># This will default to 'yolov5'

3.トレーニングスクリプトを実行する

# COCO128 上で YOLOv5s を 5 エポック学習させるspython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt

それだけだ!

Cometは、ハイパーパラメータ、コマンドライン引数、トレーニング、検証メトリクスを自動的に記録します。CometのUIで実行結果を可視化し、分析することができます。

コメット・ダッシュボードでのYOLOv5の実験

自分で試してみよう!

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

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

自動ログ

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

指標

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

パラメータ

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

ビジュアライゼーション

  • 検証データに対するモデル予測値の混乱行列
  • 全クラスのPR曲線とF1曲線のプロット
  • クラス・ラベルの相関図

コメット・ロギングの設定

コメットは、トレーニングスクリプトまたは環境変数に渡されるコマンドラインフラグによって、追加データをログに記録するように設定することができます。

export COMET_MODE=online # Cometを'オンライン'または'オフライン'モードのどちらで実行するかを設定します.デフォルトはonlineexport COMET_MODEL_NAME= # 保存されるモデルの名前を設定します.デフォルトはyolov5export COMET_LOG_CONFUSION_MATRIX=false # 彗星のコンフュージョンマトリックスのログを記録しないように設定します.デフォルトはtrueexport COMET_MAX_IMAGE_UPLOADS= # Cometに記録する画像の予測総数を制御します.デフォルトは100です。export COMET_LOG_PER_CLASS_METRICS=true # 学習の終了時に、検出された各クラスの評価メトリクスをログに記録するように設定します。デフォルトはfalseです。 export COMET_DEFAULT_CHECKPOINT_FILENAME= # 別のチェックポイントからトレーニングを再開したい場合に設定します。デフォルトは 'last.pt'export COMET_LOG_BATCH_LEVEL_METRICS=true # バッチレベルでトレーニングメトリクスのログを記録したい場合に設定します。デフォルトはfalseです。 export COMET_LOG_PREDICTIONS=true # モデルの予測をログに記録しない場合は、falseに設定します。

コメットによるチェックポイントの記録

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

コメットに記録される予測画像数の制御

YOLOv5からの予測をログに記録する場合、Cometは各予測セットに関連する画像をログに記録します。デフォルトでは、最大100の検証画像がログに記録されます。この数は、COMET_MAX_IMAGE_UPLOADS環境変数を使用して増減できます。

env COMET_MAX_IMAGE_UPLOADS=200python 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 Artifactsにアップロードする

Comet Artifactsを使用してデータを保存したい場合は、upload_datasetフラグを使用して保存できます。

データセットは、YOLOv5のドキュメントに記述されている方法で構成されている。データセットのconfig yamlファイルは、coco128.yamlファイルと同じ書式に従わなければならない。

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

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

YOLOv5 彗星人工物タブ

コメットUIで直接データをプレビューできます。

コメット、YOLOv5でのプレビューデータ

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

Comet、YOLOv5でYAMLファイルからメタデータを記録する

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

コメットアーティファクトのデータセットを使用したい場合は、データセットyamlファイルのパス変数を設定して、以下のアーティファクトリソースURLを指すようにします。

# artifact.yamlファイルの内容 パス:"comet:///:"

次に、このファイルをトレーニングスクリプトに次のように渡します:

python train.py ¦--img 640 ¦--batch 16 ¦--epochs 5 ¦--data artifact.yaml ¦--weights yolov5s.pt

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

彗星実験ワークフロー, YOLOv5

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

インターネット接続が切断されるなど、何らかの理由でトレーニングランが中断された場合、再開フラグとコメットランパスを使用してランを再開することができます。

ランパスは以下のフォーマットである。

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

python train.py ¶--resume "comet://"

コメット・オプティマイザによるハイパーパラメータ探索

YOLOv5はCometのオプティマイザーとも統合されており、CometのUIでハイパーパラメーター・スイープを簡単に視覚化できる。

オプティマイザースイープの設定

コメット・オプティマイザーを設定するには、スイープに関する情報を含む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 utils/loggers/comet/hpo.py \utils/loggers/comet/optimizer_config.json"

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

Comet、YOLOv5でスイープ結果を視覚化

連絡を取り合う

Cometとの統合により、YOLOv5モデルの管理、可視化、最適化が可能になります。

YOLOv5のトレーニング、検証、導入に関する質問やヒントを共有する場です

AIの未来
を一緒に作りましょう!

機械学習の未来への旅を始めよう

無料で始める
クリップボードにコピーされたリンク