Ultralytics YOLO27:
インテグレーション

CometでUltralytics YOLOv5を使用する方法

Cometとのパートナーシップにより、Ultralytics YOLOv5モデルの最適化、リアルタイムトラッキング、コラボレーションの効率化、再現性の向上を実現する方法をご覧ください。

NUNuvola Ladi6 min read
CometでUltralytics YOLOv5モデルのトレーニングを追跡する

Ultralyticsでは、YOLOv5のような優れたオープンソースツールを誰でも無料で利用できる状態に保つため、研究開発費の支援を目的として、他のスタートアップ企業と商業的に提携しています。この記事には、提携先へのアフィリエイトリンクが含まれている場合があります。

当社の最新パートナーであるCometは、データサイエンティスト、エンジニア、チームリーダーが機械学習および深層学習モデルを高速化・最適化するためのツールを開発しています。

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

さらに、Cometを使えば作業の進捗を見失うことなく、規模を問わずチーム間で結果を簡単に共有し、共同作業できます。

YOLOv5は、コンピュータビジョンの取り組みを始めるのに適した出発点です。モデルのパフォーマンスを向上させて本番環境で利用できる状態にするには、Cometのような実験追跡ツールに結果を記録する必要があります。

CometとYOLOv5の統合には、3つの主な機能があります。

  • 自動ロギングとカスタムロギング機能
  • デバッグと再現性のために、データセットとモデルをアーティファクトとして保存
  • Cometのカスタムパネルによる表示の整理

このガイドでは、YOLOv5をCometとともに使用する方法を説明します。

それでは、実験をリアルタイムで追跡する準備はできましたか。始めましょう。

はじめに#

1. Cometをインストールする#

pip install comet_ml

2. Cometの認証情報を設定する#

YOLOv5でCometを設定する方法は2つあります。

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

環境変数#

export COMET_API_KEY=<Your API Key>
export COMET_PROJECT_NAME=<Your Comet Project Name> # This will default to 'yolov5'

Comet設定ファイル#

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

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

# 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で実行結果を可視化・分析できます。

CometダッシュボードでのYOLOv5の実験

ぜひお試しください。#

完了した実行結果の例はこちらでご覧いただけます。

さらに、このColab Notebookでぜひお試しください。

自動的に記録する#

デフォルトでは、Cometは次の項目を記録します。

メトリクス#

  • トレーニングデータと検証データのBox Loss、Object Loss、Classification Loss
  • 検証データのmAP_0.5、mAP_0.5:0.95メトリクス
  • 検証データのPrecisionとRecall

パラメータ#

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

可視化#

  • 検証データに対するモデル予測のConfusion Matrix
  • すべてのクラスにわたるPR曲線とF1曲線のプロット
  • クラスラベルのCorrelogram

Cometのロギングを設定する#

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

export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online
export COMET_MODEL_NAME=<your model name> # 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=<number of allowed images to upload to Comet> # 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=<your checkpoint filename> # 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引数をトレーニングスクリプトに渡します。これにより、save-periodで指定した間隔に基づいて、記録されたチェックポイントがCometに保存されます。

python train.py \
  --img 640 \
  --batch 16 \
  --epochs 5 \
  --data coco128.yaml \
  --weights yolov5s.pt \
  --save-period 1

モデルの予測を記録する#

デフォルトでは、モデルの予測(画像、ground truthラベル、バウンディングボックス)が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

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 Artifactsにアップロードする#

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

データセットは、YOLOv5のドキュメントで説明されている方法で整理します。データセット設定のyamlファイルは、coco128.yamlファイルと同じ形式にする必要があります。

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

アップロードしたデータセットは、Comet WorkspaceのArtifactsタブで確認できます。

Comet Artifactsタブ、YOLOv5

Comet UIでデータを直接プレビューできます。

Cometでのデータプレビュー、YOLOv5

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

CometでYAMLファイルのメタデータを記録、YOLOv5

保存済みArtifactを使用する#

Comet Artifactsのデータセットを使用する場合は、データセットのyamlファイルでpath変数を次のArtifactリソース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

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

Cometの実験ワークフロー、YOLOv5

トレーニング実行を再開する#

インターネット接続の中断など、何らかの理由でトレーニング実行が中断された場合は、resumeフラグとComet Run Pathを使用して実行を再開できます。

Run Pathの形式はcomet://<your workspace name>/<your project name>/<experiment id>です。

これにより、チェックポイントからのモデルの復元、すべてのハイパーパラメータとトレーニング引数の復元、元の実行で使用していた場合のCometデータセットArtifactsのダウンロードなど、中断前の状態に実行が復元されます。再開した実行では、Comet UIの既存のExperimentへのロギングが継続されます。

python train.py \
  --resume "comet://<your run path>"

Comet Optimizerでハイパーパラメータを検索する#

YOLOv5はCometのOptimizerとも統合されているため、Comet UIでハイパーパラメータスイープを簡単に可視化できます。

Optimizerスイープを設定する#

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 <num_workers> utils/loggers/comet/hpo.py \
  utils/loggers/comet/optimizer_config.json

Cometには、スイープの結果を可視化する方法が多数あります。完了したスイープのプロジェクトはこちらでご確認ください。

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

つながりを保つ#

Cometとの統合を使い始めて、トレーニング実行から本番環境のモニタリングまで、YOLOv5モデルを管理、可視化、最適化しましょう。

もちろん、Ultralytics Communityにもご参加ください。YOLOv5のトレーニング、検証、デプロイについて質問したり、ヒントを共有したりできる場です。

Explore solutions

航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る

AIの未来を一緒に築きましょう!

機械学習の未来への歩みを始めましょう