YOLOv9 vs YOLOX:包括的な技術比較
適切な物体検出アーキテクチャを選択することは、コンピュータビジョンアプリケーションの効率、精度、スケーラビリティに影響を与える重要な決定です。このガイドでは YOLOv9と、2021年にリリースされた高性能アンカーレス検出器YOLOXの詳細な技術比較を行います。
YOLOv9: ディープネットワークにおける情報損失の克服
YOLOv9 、ディープニューラルネットワークをデータが通過する際の情報損失という基本的な課題に対処するために設計された、リアルタイムの物体検出における大きな飛躍を意味する。
著者Chien-Yao Wang, Hong-Yuan Mark Liao
Organization:Institute of Information Science, Academia Sinica, Taiwan
Date:2024-02-21
Arxiv:arXiv:2402.13616
GitHub:WongKinYiu/yolov9
Docs:docs.ultralytics.com/models/yolov9/
建築とイノベーション
YOLOv9 革新の核心は、2つの主要コンポーネントにある:プログラム可能な勾配情報(PGI)と一般化された効率的なレイヤ集約ネットワーク(GELAN)である。
- プログラム可能な勾配情報(PGI):ディープネットワークでは、特徴抽出の過程で重要な入力データが失われることが多く、これは情報ボトルネックとして知られる現象である。PGIは、信頼性の高い勾配生成を保証する補助的な監視信号を提供し、推論コストを増加させることなく、モデルがより効果的な特徴を学習できるようにします。
- GELAN:このアーキテクチャ設計は、パラメータ利用と計算効率を最適化する。GELANは、ELAN(Efficient Layer Aggregation Networks)の概念を一般化することで、計算ブロックを柔軟に積み重ねることができ、軽量かつ高速なモデルを実現している。
これらの技術革新により、YOLOv9 COCO データセットでトップクラスの性能を達成することができ、精度とパラメータ効率の両方でこれまでの反復を上回る。
YOLOX:アンカー・フリー・スタンダード
YOLOXは、学術研究と産業応用のギャップを埋めるために導入され、YOLO シリーズのアンカーフリーアプローチを普及させた。
著者Zheng Ge, Songtao Liu, Feng Wang, Zeming Li, and Jian Sun
組織:Megvii
Date:2021-07-18
Arxiv:arXiv:2107.08430
GitHub:Megvii-BaseDetection/YOLOX
Docs:yolox.readthedocs.io
主な建築上の特徴
YOLOXは、アンカーボックスを取り除き、非連結ヘッド構造を採用することで、以前のYOLO バージョンとは一線を画している。
- アンカーフリー設計:従来の検出器は、あらかじめ定義されたアンカーボックスに依存しており、ヒューリスティックなチューニングとクラスタリングが必要でした。YOLOXは、物体検出を点予測問題として扱い、設計を簡素化し、多様な物体形状に対する汎化を向上させます。
- 分離ヘッド:分類タスクと回帰タスクは、別々のブランチ(ヘッド)で処理されます。この分離により、モデルは各タスクを独立して最適化できるようになり、収束が速くなり、精度が向上します。
- SimOTA:グラウンドトゥルースオブジェクトにポジティブサンプルを動的に割り当てる高度なラベル割り当て戦略で、パフォーマンスをさらに向上させます。
パフォーマンス分析指標とベンチマーク
性能を分析すると、YOLOv9 、新しいアーキテクチャであることと矛盾しない明確な優位性を示している。PGIとGELANを活用することで、YOLOv9 YOLOXと比較して計算負荷(FLOPs)を維持または削減しながら、より高い平均精度mAP)を達成している。
以下の表は、性能の違いを強調している。特筆すべきは、YOLOv9、YOLOX-L(49.7%)の半分以下のパラメータ数(25.3M対54.2M)で、YOLOX-Lより大幅に高いmAP (53.0%)を達成していることです。この効率性により、YOLOv9 、ハードウェア・リソースに制約があるが、高精度が要求されるアプリケーションにとって優れた選択肢となる。
| モデル | サイズ (ピクセル) | mAP値 50-95 | 速度 CPU ONNX (ms) | 速度 T4 TensorRT10 (ms) | params (M) | FLOPs (B) |
|---|---|---|---|---|---|---|
| YOLOv9t | 640 | 38.3 | - | 2.3 | 2.0 | 7.7 |
| YOLOv9s | 640 | 46.8 | - | 3.54 | 7.1 | 26.4 |
| YOLOv9m | 640 | 51.4 | - | 6.43 | 20.0 | 76.3 |
| YOLOv9c | 640 | 53.0 | - | 7.16 | 25.3 | 102.1 |
| YOLOv9e | 640 | 55.6 | - | 16.77 | 57.3 | 189.0 |
| YOLOXnano | 416 | 25.8 | - | - | 0.91 | 1.08 |
| YOLOXtiny | 416 | 32.8 | - | - | 5.06 | 6.45 |
| YOLOXs | 640 | 40.5 | - | 2.56 | 9.0 | 26.8 |
| YOLOXm | 640 | 46.9 | - | 5.43 | 25.3 | 73.8 |
| YOLOXl | 640 | 49.7 | - | 9.04 | 54.2 | 155.6 |
| YOLOXx | 640 | 51.1 | - | 16.1 | 99.1 | 281.9 |
スピードと効率
YOLOXは2021年に驚異的なスピードを導入したが、YOLOv9 さらにその限界を押し広げる。YOLOv9(Tiny)モデルは、わずか2.0Mのパラメータで38.3%のmAP 実現する卓越したバランスを提供し、モバイルおよび組み込みアプリケーションに非常に適している。対照的に、YOLOX-Nanoは小型ですが、精度を大幅に犠牲にしています(25.8%mAP)。
トレーニング効率
YOLOv9 、最新のトレーニングレシピと最適化されたUltralytics トレーナーの恩恵を受けており、多くの場合、古いアーキテクチャと比較して、トレーニング中の収束が速く、メモリ使用量が少なくなっています。
理想的なユースケース
これらのモデルのどちらを選択するかは、特定のプロジェクトの要件によって異なります。
YOLOv9選ぶとき
YOLOv9 、その優れた精度対効率性により、最新のコンピュータ・ビジョン・アプリケーションのほとんどに推奨されています。
- リアルタイム・エッジAI: NVIDIA JetsonのようなFLOPsが重要なデバイスに展開。YOLOv9軽量アーキテクチャはスループットを最大化します。
- 高精度検査:小さな欠陥の検出が重要な工業用品質管理。YOLOv9EのmAP 、微細なディテールを確実に捉えます。
- 自律システム:ロボットやドローンは低レイテンシーを要求する。YOLOv9最適化されたグラフ構造は、検出能力を損なうことなく、高速な推論を実現します。
YOLOXを検討する時期
YOLOXは、特定のレガシーワークフローや研究比較のための強力な候補であることに変わりはない。
- 学術研究非結合型ヘッドとアンカーフリー設計により、物体検出の基礎を研究するための古典的なベースラインとなっている。
- レガシーデプロイメント:既存のインフラストラクチャが、特定のYOLOXアーキテクチャに大きく最適化されている場合(たとえば、YOLOXヘッド専用に作られたカスタムTensorRT プラグイン)、レガシーモデルを維持することは、短期的にはコスト効率がよいかもしれない。
Ultralytics 優位性
Ultralytics エコシステムを通じてYOLOv9 採用することで、スタンドアロンでの実装とは異なる明確な利点が得られます。Ultralytics フレームワークは、機械学習オペレーション(MLOps)のライフサイクル全体を合理化するように設計されています。
- 使いやすさ: Ultralytics Python APIは、わずか数行のコードでモデルのロード、トレーニング、デプロイを可能にします。
- 整備されたエコシステム:定期的なアップデートにより、PyTorch、ONNX、CUDA最新バージョンとの互換性が保証されます。
- 汎用性:YOLOXは主にオブジェクト検出器ですが、Ultralytics フレームワークは、ポーズ推定、セグメンテーション、分類などの幅広いタスクをサポートしており、同じコードベース内でアーキテクチャやタスクを簡単に切り替えることができます。
- メモリ効率: Ultralytics モデルはメモリ使用量が最適化されているため、複雑なTransformerベースのモデルや最適化されていないレガシー検出器をトレーニングする際によく発生するOOM(Out-Of-Memory)エラーを防ぐことができます。
コード例:YOLOv9実行
YOLOv9 推論を実行するには、Ultralytics パッケージを使えば簡単だ。
from ultralytics import YOLO
# Load a pre-trained YOLOv9 compact model
model = YOLO("yolov9c.pt")
# Run inference on a local image
results = model("path/to/image.jpg")
# Display the results
results[0].show()
輸出の柔軟性
Ultralytics トレーニングされたYOLOv9 モデルは、次のような形式に簡単にエクスポートできます。 TensorRT, OpenVINOおよび CoreMLを使用することで、柔軟なデプロイが可能です。
結論と推奨事項
YOLOXはアンカーなし検出の進歩に極めて重要な役割を果たした、 YOLOv9は、現在の開発において優れた選択肢となっている。その革新的なPGIとGELANアーキテクチャは、より少ないパラメータでより高い精度を実現し、これまでのディープネットワークの限界であった情報のボトルネック問題を解決している。
最新のパフォーマンスと機能を求める開発者には、次のようなものもお勧めする。 YOLO11を検討されることをお勧めします。YOLO11は、これらのコンセプトをさらに洗練させ、複数のビジョン・タスクにわたって、さらに高速で汎用性の高い機能を提供します。しかし、YOLOXと直接比較する場合、YOLOv9 、検出の信頼性を高めながら計算オーバーヘッドを削減する魅力的なアップグレードパスを提供します。
その他のモデルを見る
Ultralytics エコシステム内の他のトップクラスのモデルを比較することで、知識を広げましょう: