UltralyticsがUltralytics YOLOv5モデルの最適化のためにCometと提携し、リアルタイムトラッキング、合理化されたコラボレーション、および強化された再現性を実現する方法をご覧ください。

UltralyticsがUltralytics YOLOv5モデルの最適化のためにCometと提携し、リアルタイムトラッキング、合理化されたコラボレーション、および強化された再現性を実現する方法をご覧ください。
Ultralyticsでは、YOLOv5のような素晴らしいオープンソースツールをすべての人に無料で提供し続けるために、他のスタートアップ企業と提携して、研究開発の資金を調達しています。この記事には、これらのパートナーへのアフィリエイトリンクが含まれている場合があります。
私たちの最新パートナーであるCometは、データサイエンティスト、エンジニア、およびチームリーダーが機械学習および深層学習モデルを加速および最適化するのに役立つツールを構築しています。
Cometは、モデル、データセット、メトリクスを追跡するための強力なツールです。システム変数や環境変数もログに記録するため、再現性が確保され、実行ごとのデバッグがスムーズになります。まるで、記録すべき内容を魔法のように知っているバーチャルアシスタントがいるかのようです。モデルのメトリクスをリアルタイムで追跡および視覚化し、ハイパーパラメータ、データセット、モデルのチェックポイントを保存し、Cometカスタムパネルでモデルの予測を視覚化できます。
さらに、Comet を使用すると、作業の進捗状況を常に把握し、結果を簡単に共有して、あらゆる規模のチームで共同作業を行うことができます。
YOLOv5は、コンピュータビジョンの旅の素晴らしい出発点です。モデルのパフォーマンスを向上させ、本番環境に対応できるようにするには、Cometのような実験追跡ツールで結果をログに記録する必要があります。
CometとYOLOv5の統合は、3つの主な機能を提供します。
このガイドでは、CometでYOLOv5を使用する方法について説明します。
それでは、リアルタイムで実験を追跡する準備はできましたか?早速始めましょう!
Pip install comet_ml
YOLOv5でCometを設定するには、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エポック学習させますpython train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt
以上です!
Cometは、ハイパーパラメータ、コマンドライン引数、トレーニング、および検証メトリクスを自動的にログに記録します。Comet UIで実行を視覚化および分析できます。
完了した実行例はこちらをご覧ください。
さらに良いのは、こちらのColab Notebookでお試しいただくことです。
デフォルトでは、Cometは次の項目をログに記録します。
Cometは、トレーニングスクリプトまたは環境変数に渡されるコマンドラインフラグを介して、追加のデータをログに記録するように構成できます。
export COMET_MODE=online # Cometを'online'または'offline'モードで実行するかを設定します。デフォルトはonlineですexport COMET_MODEL_NAME= #保存されたモデルの名前を設定します。デフォルトはyolov5ですexport COMET_LOG_CONFUSION_MATRIX=false # Cometの混同行列のログ記録を無効にするには、これを設定します。デフォルトはtrueですexport 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引数を渡します。これにより、save-periodで指定された間隔の値に基づいて、ログに記録されたチェックポイントがCometに保存されます。
python train.py \
--img 640 \
--batch 16 \
--epochs 5 \
--data coco128.yaml \
--weights yolov5s.pt \
--save-period 1
デフォルトでは、モデルの予測(画像、正解ラベル、およびバウンディングボックス)がCometにログ記録されます。ログに記録される予測の頻度と関連する画像は、bbox_intervalコマンドライン引数を渡すことで制御できます。予測は、CometのObject Detection Custom Panelを使用して視覚化できます。この頻度は、エポックごとの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、適合率、再現率、および 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]タブにあります。
Comet UIでデータを直接プレビューできます。
アーティファクトはバージョン管理されており、データセットに関するメタデータの追加もサポートしています。Cometは、データセットのyamlファイルからメタデータを自動的にログに記録します。
Comet Artifactsのデータセットを使用する場合は、データセットのyamlファイルのパス変数を、次のArtifactリソースURLを指すように設定します。
# artifact.yamlファイルの内容 パス: "comet:///:"
次に、このファイルを次の方法でトレーニングスクリプトに渡します。
python train.py \--img 640 \--batch 16 \--epochs 5 \--data artifact.yaml \--weights yolov5s.pt
アーティファクトを使用すると、実験ワークフローを流れるデータの系統を追跡することもできます。ここでは、アップロードしたデータセットを使用したすべての実験を示すグラフを確認できます。
トレーニングの実行が何らかの理由で中断された場合(インターネット接続の中断など)、resumeフラグとComet Run Pathを使用して実行を再開できます。
Run Pathの形式は comet:// // /. です。
これにより、中断前の実行状態が復元されます。これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、および元の実行で使用されていた場合はCometデータセットアーティファクトのダウンロードが含まれます。再開された実行は、Comet UIの既存のExperimentへのログ記録を継続します。
python train.py \--resume "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"
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モデルの管理、視覚化、最適化を開始します。
そしてもちろん、Ultralyticsコミュニティにご参加ください。ここは、YOLOv5のトレーニング、検証、およびデプロイに関する質問をしたり、ヒントを共有したりする場所です。