Ultralytics YOLO27:
Get Started

YOLOv9: 物体検出技術の飛躍的進歩#

YOLOv9は、プログラマブル勾配情報(PGI)や一般化効率的レイヤー集約ネットワーク(GELAN)など、画期的な手法を導入し、リアルタイム物体検出を大きく進歩させています。このモデルは、効率、精度、適応性を著しく向上させ、MS COCOデータセットで新たなベンチマークを打ち立てています。YOLOv9プロジェクトは独立したオープンソースチームが開発しましたが、Ultralyticsが提供する堅牢なコードベースであるYOLOv5を基盤としており、AI研究コミュニティの協力の精神を示しています。



視聴: Ultralytics を使ったカスタムデータによる YOLOv9 のトレーニング | 工業製品パッケージデータセット

YOLOv9の性能比較

YOLOv9の概要#

最適なリアルタイム物体検出を目指す中で、YOLOv9は、ディープニューラルネットワークに内在する情報損失の課題を克服する革新的なアプローチによって際立っています。PGIと柔軟なGELANアーキテクチャを統合することで、YOLOv9はモデルの学習能力を高めるだけでなく、検出プロセス全体で重要な情報を保持し、卓越した精度と性能を実現します。

YOLOv9の主要なイノベーション#

YOLOv9の進歩は、ディープニューラルネットワークにおける情報損失の課題への対処に深く根差しています。情報ボトルネック原理と可逆関数の革新的な活用が設計の中核にあり、YOLOv9の高い効率と精度を維持します。

情報ボトルネック原理#

情報ボトルネック原理は、ディープラーニングにおける根本的な課題を明らかにします。データがネットワークの層を順次通過するにつれて、情報損失の可能性が高まります。この現象は、次のように数式で表されます。

I(X, X) >= I(X, f_theta(X)) >= I(X, g_phi(f_theta(X)))

ここで、Iは相互情報量を表し、fとgは、それぞれパラメーターthetaとphiを持つ変換関数を表します。YOLOv9はプログラマブル勾配情報(PGI)を実装することでこの課題に対処します。PGIはネットワークの深さ全体にわたり重要なデータを保持し、より信頼性の高い勾配生成を実現するため、モデルの収束と性能が向上します。

可逆関数#

可逆関数もYOLOv9の設計の要です。情報を一切失わずに逆関数を求められる関数は可逆であるとされ、次のように表されます。

X = v_zeta(r_psi(X))

ここで、psiとzetaは、それぞれ可逆関数とその逆関数のパラメーターです。この特性はディープラーニングアーキテクチャにとって非常に重要です。ネットワークが情報の流れを完全に保持できるため、モデルのパラメーターをより正確に更新できます。YOLOv9はアーキテクチャに可逆関数を組み込み、特に深い層で情報が劣化するリスクを軽減し、物体検出タスクに不可欠なデータを確実に保持します。

軽量モデルへの影響#

情報損失への対処は、パラメーター数が不足しがちで、順伝播処理中に多くの情報を失いやすい軽量モデルにとって特に重要です。YOLOv9はPGIと可逆関数を活用したアーキテクチャにより、モデルを簡素化しても、正確な物体検出に必要な情報を保持し、効果的に活用できるようにします。

プログラマブル勾配情報(PGI)#

PGIは、情報ボトルネック問題に対処し、ディープネットワークの各層で重要なデータを保持するためにYOLOv9で導入された新しい概念です。これにより信頼性の高い勾配を生成でき、モデルを正確に更新し、検出性能全体を向上させます。

一般化効率的レイヤー集約ネットワーク(GELAN)#

GELANは戦略的なアーキテクチャの進歩であり、YOLOv9がパラメーターをより有効に活用し、計算効率を高めることを可能にします。さまざまな計算ブロックを柔軟に統合できる設計により、速度や精度を損なうことなく、YOLOv9を幅広い用途に適応させられます。

YOLOv9のアーキテクチャ比較

YOLOv9のベンチマーク#

Ultralyticsを使用したYOLOv9のベンチマークでは、学習と検証を済ませたモデルの性能を実環境で評価します。このプロセスには、次の項目が含まれます。

  • 性能評価:モデルの速度と精度を評価します。
  • エクスポート形式:さまざまなエクスポート形式でモデルをテストし、必要な基準を満たし、多様な環境で良好に動作することを確認します。
  • フレームワークのサポート:これらの評価を容易にし、一貫性と信頼性のある結果を得るため、Ultralyticsパッケージ内で包括的なフレームワークを提供します。

ベンチマークを実施することで、管理されたテスト環境だけでなく、実際の用途でもモデルが高い性能を維持できることを確認できます。



視聴: Ultralytics Python パッケージを使って YOLOv9 モデルをベンチマークする方法

MS COCOデータセットでの性能#

COCOデータセットにおけるYOLOv9の性能は、リアルタイム物体検出における大きな進歩を示しており、さまざまなモデルサイズで新たなベンチマークを確立しています。表1では、最先端のリアルタイム物体検出器を包括的に比較し、YOLOv9の優れた効率と精度を示しています。

性能
モデルサイズ
(ピクセル)
mAPval
50-95
mAPval
50
パラメーター
(M)
FLOPs
(B)
YOLOv9t64038.353.12.07.7
YOLOv9s64046.863.47.226.7
YOLOv9m64051.468.120.176.8
YOLOv9c64053.070.225.5102.8
YOLOv9e64055.672.858.1192.5

小型のtバリアントから大規模なeモデルまで、YOLOv9の各モデルは、精度(mAP指標)だけでなく、パラメーター数と計算要件(FLOPs)の削減による効率の向上も示しています。この表は、従来バージョンや競合モデルと比べて計算オーバーヘッドを維持または削減しながら、高い適合率を実現するYOLOv9の能力を示しています。

比較すると、YOLOv9には次のような顕著な改善が見られます。

  • 軽量モデル:YOLOv9sは、パラメーター効率と計算負荷の面でYOLO MS-Sを上回り、APを0.4~0.6%向上させています。
  • 中規模から大規模のモデル:YOLOv9mとYOLOv9eは、モデルの複雑さと検出性能のトレードオフを調整するうえで大きな進歩を示しています。精度の向上とともに、パラメーター数と計算量を大幅に削減しています。

特にYOLOv9cモデルは、アーキテクチャの最適化が効果的であることを示しています。YOLOv7 AFよりパラメーター数が42%少なく、計算負荷が21%低い一方で、同等の精度を実現し、YOLOv9の効率が大きく向上したことを示しています。さらにYOLOv9eモデルは、大規模モデルの新たな基準となり、YOLOv8xよりパラメーター数が15%少なく、計算負荷が25%低いだけでなく、APも1.7%向上しています。

これらの結果は、リアルタイム物体検出タスクに不可欠な精度を損なうことなく効率を高める、YOLOv9の戦略的なモデル設計の進歩を示しています。このモデルは性能指標の限界を押し広げるだけでなく、計算効率の重要性も示しており、コンピュータービジョン分野における重要な進展となっています。

結論#

2024年2月にリリースされたYOLOv9は、効率、精度、適応性を大きく向上させ、リアルタイム物体検出における重要な進展となりました。PGIやGELANなどの革新的なソリューションで重要な課題に対処し、リリース当時の新たなベンチマークを確立しました。その後、YOLO11やYOLO26など、さらなる改良を加えた新しいモデルが登場しましたが、YOLOv9のアーキテクチャ上の革新は今もこの分野に影響を与えています。

使用例#

この例では、YOLOv9の学習と推論の基本的な例を紹介します。これらやその他のモードの完全なドキュメントについては、Predict、Train、Val、Exportの各ドキュメントページをご覧ください。

例

PyTorchの事前学習済み*.ptモデルと構成*.yamlファイルをYOLO()クラスに渡すことで、Pythonでモデルインスタンスを作成できます。

from ultralytics import YOLO

# YOLOv9cモデルをスクラッチから構築する
model = YOLO("yolov9c.yaml")

# 事前学習済みの重みからYOLOv9cモデルを構築する
model = YOLO("yolov9c.pt")

# モデル情報を表示(任意)
model.info()

# COCO8サンプルデータセットでモデルを100エポック学習する
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# 「bus.jpg」画像でYOLOv9cモデルの推論を実行する
results = model("path/to/bus.jpg")

サポート対象のタスクとモード#

YOLOv9シリーズは、高性能な物体検出に最適化されたさまざまなモデルを提供します。各モデルは、計算要件と精度要件の違いに対応しており、幅広い用途に柔軟に適用できます。

モデルファイル名タスクトレーニング検証推論エクスポート
YOLOv9yolov9t.pt yolov9s.pt yolov9m.pt yolov9c.pt yolov9e.pt物体検出✅✅✅✅
YOLOv9-segyolov9c-seg.pt yolov9e-seg.ptインスタンスセグメンテーション✅✅✅✅

この表では、YOLOv9のモデルバリアントを詳しく紹介し、物体検出タスクにおける機能と、推論、検証、学習、エクスポートなどのさまざまな運用モードとの互換性を示しています。この包括的なサポートにより、幅広い物体検出シナリオでYOLOv9モデルの機能を最大限に活用できます。

注

YOLOv9モデルの学習には、同程度のサイズのYOLOv8モデルより多くのリソースが必要で、時間も長くかかります。

引用と謝辞#

リアルタイム物体検出分野への多大な貢献に対し、YOLOv9の著者の皆様に謝意を表します。

引用
@inproceedings{wang2024yolov9,
  title={YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information},
  author={Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
  booktitle={Computer Vision -- ECCV 2024},
  pages={1--21},
  year={2024},
  organization={Springer Nature Switzerland}
}

YOLOv9の公式論文はSpringer ECCV 2024論文集で発表され、arXivにプレプリントが公開されています。著者は研究成果を一般公開しており、コードベースはGitHubからアクセスできます。この分野の発展に貢献し、研究成果を幅広いコミュニティに公開してくださったことに感謝します。

よくある質問#

  • YOLOv9は、プログラマブル勾配情報(PGI)や一般化効率的レイヤー集約ネットワーク(GELAN)など、画期的な手法を導入しています。これらの革新は、ディープニューラルネットワークにおける情報損失の課題に対処し、高い効率、精度、適応性を実現します。PGIはネットワーク層全体で重要なデータを保持し、GELANはパラメーターの活用と計算効率を最適化します。MS COCOデータセットで新たなベンチマークを確立したYOLOv9の主要な革新について、詳しくご覧ください。

  • YOLOv9は、より高い精度と効率を実現し、最先端のリアルタイム物体検出器を上回ります。COCOデータセットでは、YOLOv9モデルはさまざまなサイズで優れたmAPスコアを示し、計算オーバーヘッドを維持または削減します。たとえば、YOLOv9cはYOLOv7 AFよりパラメーター数が42%少なく、計算負荷が21%低い一方で、同等の精度を実現します。詳細な指標については、性能比較をご覧ください。

  • PythonとCLIコマンドの両方でYOLOv9モデルを学習できます。Pythonでは、YOLOクラスを使用してモデルをインスタンス化し、trainメソッドを呼び出します。

    from ultralytics import YOLO
    
    # 事前学習済みの重みからYOLOv9cモデルを構築して学習する
    model = YOLO("yolov9c.pt")
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    CLIで学習する場合は、次を実行します。

    yolo train model=yolov9c.yaml data=coco8.yaml epochs=100 imgsz=640

    学習と推論の使用例について、詳しくご覧ください。

  • YOLOv9は情報損失を軽減するように設計されており、重要な情報を失いやすい軽量モデルにとって特に有効です。プログラマブル勾配情報(PGI)と可逆関数を統合することで、YOLOv9は重要なデータを確実に保持し、モデルの精度と効率を高めます。そのため、高性能なコンパクトモデルが求められる用途に非常に適しています。詳細については、YOLOv9が軽量モデルに与える影響のセクションをご覧ください。

  • YOLOv9は、物体検出やインスタンスセグメンテーションなど、さまざまなタスクに対応しています。推論、検証、学習、エクスポートなど複数の運用モードと互換性があります。この汎用性により、YOLOv9は多様なリアルタイムコンピュータービジョン用途に適応できます。詳細については、対応タスクとモードのセクションをご覧ください。

コメント