Discover how Ultralytics partners with Comet for Ultralytics YOLOv5 model optimization: real-time tracking, streamlined collaboration, and enhanced reproducibility.
Ultralytics YOLOv5 のような素晴らしいオープンソースツールの研究開発資金を提供するために、私たちは他の新興企業と商業的に提携しています。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。
当社の最新のパートナーです、 Cometは、データサイエンティスト、エンジニア、チームリーダーが機械学習やディープラーニングモデルを加速・最適化するためのツールを開発しています。
Comet は、モデル、データセット、メトリクスを追跡するための強力なツールです。システム変数や環境変数のログまで記録し、実行のたびに再現性とスムーズなデバッグを保証します。まるで、どのようなメモを残すべきかを魔法のように知っているバーチャル・アシスタントを持つようなものです。モデルのメトリクスをリアルタイムで追跡・可視化し,ハイパーパラメータ,データセット,モデルのチェックポイントを保存し,Comet カスタムパネルでモデルの予測を可視化します.
さらに、Comet 、作業内容を見失うことなく、あらゆる規模のチーム間で結果を共有し、コラボレーションすることが容易になります!
YOLOv5は、コンピュータ・ビジョンの旅の出発点として最適です。モデルのパフォーマンスを向上させ、プロダクションで使用できるようにするには、次のような実験追跡ツールで結果を記録する必要があります。 Comet.
Comet とYOLOv5 の統合は3つの主な機能を提供する:
このガイドでは、Comet でYOLOv5 を使用する方法について説明する。
あなたの実験をリアルタイムで追跡する準備はできましたか?さっそく始めよう!
Pip installcomet_ml
でComet を設定する方法は2つある。 YOLOv5.
環境変数で認証情報を設定するか、作業ディレクトリに .comet.config ファイルを作成し、そこに認証情報を設定します。
exportCOMET_API_KEY=exportCOMET_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で実行結果を可視化し、分析することができます。
完成したランの例はこちらでチェックできる。
あるいは、このコラボ・ノートブックで試してみるのもいいだろう。
デフォルトでは、Comet は以下の項目をログに記録する:
Comet は、トレーニングスクリプトに渡されるコマンドラインフラグまたは環境変数によって、追加データをログに記録するように設定することができます。
exportCOMET_MODE=online #Comet を'オンライン'と'オフライン'のどちらのモードで実行するかを設定します.デフォルトはonlineexportCOMET_MODEL_NAME= # 保存されるモデルの名前を設定します。デフォルトはyolov5exportCOMET_LOG_CONFUSION_MATRIX=false #Comet 混乱マトリックスのログを記録しないように設定します.デフォルトはtrueexportCOMET_MAX_IMAGE_UPLOADS= #Comet に記録する画像予測値の合計数を制御します。デフォルトは100です.exportCOMET_LOG_PER_CLASS_METRICS=true # 学習終了時に検出された各クラスの評価指標をログに記録するように設定します.デフォルトはfalseです。exportCOMET_DEFAULT_CHECKPOINT_FILENAME= # 別のチェックポイントからトレーニングを再開したい場合に設定します。デフォルトはlast.ptです'exportCOMET_LOG_BATCH_LEVEL_METRICS=true # バッチレベルでトレーニングメトリクスのログを記録したい場合に設定します.デフォルトはfalseです。 exportCOMET_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 のオブジェクト検出カスタムパネルを使って可視化できます。この頻度は、エポックごとのデータの 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環境変数を使って増減できます。
envCOMET_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を記録します。
envCOMET_LOG_PER_CLASS_METRICS=truepython 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のデータセットを使用する場合は、dataset yamlファイルのpath変数が以下のArtifactリソースURLを指すように設定します。
# artifact.yaml ファイルのパスの内容:"comet:///:"
次に、このファイルをトレーニングスクリプトに次のように渡します:
python Ⱚ Ⱚ Ⱚ Ⱚ Ⱚ Ⱚ Ⱚ Ⱚ Ⱚ
アーティファクトは、実験ワークフローを流れるデータの系譜を追跡することもできます。ここでは、アップロードしたデータセットを使用したすべての実験を示すグラフを見ることができます。
インターネット接続の中断など、何らかの理由でトレーニングランが中断された場合は、再開フラグとComet Run Pathを使用してランを再開することができます。
ランパスの書式は以下の通りであるcomet:////.
これには、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、Comet データセットのアーティファクト(元の実行で使用されていた場合)のダウンロードが含まれます。再開された実行は、Comet UIの既存のExperimentにログを取り続けます。
python train.py ¶--resume "comet://"
YOLOv5 は、Comet のオプティマイザーとも統合されており、Comet のUIでハイパーパラメータのスイープを簡単に視覚化することができます。
Comet Optimizerを設定するには、スイープに関する情報を含むJSONファイルを作成する必要があります。
ファイルの例は
utils/loggers/comet/optimizer_config.jsonpython 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 トレーニング、検証、配備に関する質問をしたり、ヒントを共有したりする場です。