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

Ultralytics YOLOv5モデル最適化のためにUltralyticsがCometとどのように提携しているかをご覧ください:リアルタイムの追跡、合理化されたコラボレーション、再現性の向上。
Ultralyticsでは、YOLOv5のような素晴らしいオープンソースツールの研究開発に資金を提供するために、他のスタートアップ企業と商業的に提携しています。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。
当社の最新のパートナーであるコメット社は、データサイエンティスト、エンジニア、チームリーダーが機械学習やディープラーニングモデルを加速・最適化するためのツールを開発しています。
Cometは、モデル、データセット、メトリクスを追跡するための強力なツールです。システム変数や環境変数のログまで記録し、実行のたびに再現性とスムーズなデバッグを保証します。まるで、どのようなメモを残すべきかを魔法のように知っているバーチャル・アシスタントを持つようなものです。モデルのメトリクスをリアルタイムで追跡・可視化し、ハイパーパラメータ、データセット、モデルのチェックポイントを保存し、Cometカスタムパネルでモデルの予測を可視化します!
さらに、コメットは、作業内容を見失うことなく、あらゆる規模のチーム間で結果を共有し、コラボレーションすることを容易にします!
YOLOv5は、コンピュータビジョンの旅の出発点として最適です。モデルのパフォーマンスを向上させ、生産可能な状態にするには、Cometのような実験追跡ツールで結果を記録する必要があります。
コメットとYOLOv5の統合は、3つの主要機能を提供する:
このガイドでは、YOLOv5とコメットの使い方を説明する。
あなたの実験をリアルタイムで追跡する準備はできましたか?さっそく始めよう!
comet_ml をインストールする
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'
# COCO128 上で YOLOv5s を 5 エポック学習させるspython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
それだけだ!
Cometは、ハイパーパラメータ、コマンドライン引数、トレーニング、検証メトリクスを自動的に記録します。CometのUIで実行結果を可視化し、分析することができます。
デフォルトでは、コメットは以下の項目を記録する:
コメットは、トレーニングスクリプトまたは環境変数に渡されるコマンドラインフラグによって、追加データをログに記録するように設定することができます。
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を使用してデータを保存したい場合は、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タブにあります。
コメットUIで直接データをプレビューできます。
アーティファクトはバージョン管理され、データセットに関するメタデータの追加もサポートしています。Cometはデータセットのyamlファイルからメタデータを自動的に記録します。
コメットアーティファクトのデータセットを使用したい場合は、データセットyamlファイルのパス変数を設定して、以下のアーティファクトリソースURLを指すようにします。
# artifact.yamlファイルの内容 パス:"comet:///:"
次に、このファイルをトレーニングスクリプトに次のように渡します:
python train.py ¦--img 640 ¦--batch 16 ¦--epochs 5 ¦--data artifact.yaml ¦--weights yolov5s.pt
アーティファクトは、実験ワークフローを流れるデータの系譜を追跡することもできます。ここでは、アップロードしたデータセットを使用したすべての実験を示すグラフを見ることができます。
インターネット接続が切断されるなど、何らかの理由でトレーニングランが中断された場合、再開フラグとコメットランパスを使用してランを再開することができます。
ランパスは以下のフォーマットである。
これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、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は、スイープの結果を視覚化するさまざまな方法を提供します。掃引が完了したプロジェクトをご覧ください: