人工知能
YOLOv9: リアルタイムオブジェクト検出の飛躍
オブジェクト検出は、最近の数年間でディープラーニングアルゴリズムの進歩により、急速に進化してきました。YOLO(You Only Look Once)シリーズの最新版であるYOLOv9は、前回のバージョンよりも大幅な精度、効率、適用性の向上を実現しています。この投稿では、YOLOv9がリアルタイムオブジェクト検出の新しい最先端技術となった理由について説明します。
オブジェクト検出の基礎
YOLOv9の新しい機能について説明する前に、オブジェクト検出の基礎について簡単に説明しましょう。オブジェクト検出の目的は、画像内にあるオブジェクト(例:車、人、動物)を識別して位置を特定することです。これは、自動運転車、監視システム、画像検索などのアプリケーションで重要な機能です。
検出器は画像を入力として受け取り、検出されたオブジェクトを囲むバウンディングボックスとそれに関連するクラスラベルを出力します。MS COCOなどの人気のあるデータセットは、モデルをトレーニングして評価するために数千のラベル付き画像を提供します。
オブジェクト検出には、主に2つのアプローチがあります。
- 2段階検出器のようにFaster R-CNNは、まずリージョン提案を生成し、次に各リージョンの境界を分類して精製します。これらはより正確ですが、遅い傾向があります。
- 1段階検出器のようにYOLOは、画像全体にモデルを1回で適用します。これらは精度をある程度犠牲にして、非常に高速な推論時間を実現します。
YOLOは1段階アプローチの先駆けとなりました。YOLOが複数のバージョンを経てどのように進化してきたかを見てみましょう。
以前のYOLOバージョンのレビュー
YOLO(You Only Look Once)モデルファミリーは、2016年に最初のバージョンが公開されて以来、高速オブジェクト検出の最前線で活躍してきました。ここでは、YOLOが複数のバージョンを経てどのように進化してきたかについて簡単に説明します。
- YOLOv1は、フル画像から直接バウンディングボックスとクラス確率を予測する統一モデルを提案しました。これにより、以前の2段階モデルよりも非常に高速になりました。
- YOLOv2は、バッチ正規化による安定性の向上、さまざまなスケールとアスペクト比でアンカーボックスを配置することによる多数のサイズの検出、そしてさまざまな最適化を実施してオリジナルのYOLOを改善しました。
- YOLOv3は、Darknet-53という新しい特徴抽出器を追加し、さらに精度を向上させました。
- YOLOv4は、他のオブジェクト検出器とセグメンテーションモデルからのアイデアを組み合わせて、精度をさらに向上させましたが、依然として高速な推論を維持しました。
- YOLOv5は、YOLOv4をPyTorchで完全に書き直し、新しい特徴抽出バックボーンであるCSPDarknetを追加しました。
- YOLOv6は、モデルのアーキテクチャとトレーニングプロセスを最適化し、大規模な外部データセットで事前トレーニングを行ってパフォーマンスをさらに向上させました。
つまり、以前のYOLOバージョンは、モデルのアーキテクチャとトレーニング技術の改善により精度を向上させました。しかし、モデルが大きく複雑になるにつれて、速度と効率が低下するようになりました。
効率性の向上の必要性
多くのアプリケーションでは、オブジェクト検出を制限された計算リソースを持つデバイスでリアルタイムで実行する必要があります。モデルが大きく計算量が増えるにつれて、デプロイが実用的ではなくなります。
例えば、自動運転車は車内プロセッサで高フレームレートでオブジェクトを検出する必要があります。セキュリティカメラはビデオフィードでオブジェクト検出を実行する必要があります。携帯電話やその他の消費者向けデバイスには、厳格な電力と熱制限があります。
最近のYOLOバージョンは、高い精度を得るために多数のパラメータと乗算加算演算(FLOPs)を必要とします。しかし、これは速度、サイズ、電力効率の低下につながります。
例えば、YOLOv5-Lでは、1280×1280の画像を処理するために100億を超えるFLOPsが必要です。これは、多くのリアルタイム用途では遅すぎます。モデルのサイズが大きくなる傾向は、過学習のリスクを増やし、汎化を困難にします。
したがって、オブジェクト検出の適用範囲を拡大するために、効率性を向上させる方法が必要です。YOLOv9で採用されたテクニックについて見てみましょう。
YOLOv9 – 効率性と精度の向上
YOLOv9の研究者は、幅広いデバイスでリアルタイムパフォーマンスを実現するために、効率性の向上に焦点を当てました。2つの重要な革新を導入しました。
- パラメータとFLOPsを最小限に抑えながら精度を最大化する新しいモデルアーキテクチャであるGeneral Efficient Layer Aggregation Network (GELAN)。
- 特に小さなモデルで信頼性の高い学習グラデーションを提供するトレーニングテクニックであるProgrammable Gradient Information (PGI)。
それぞれの進歩が効率性をどのように向上させるかを見てみましょう。
GELANを用いたより効率的なアーキテクチャ
モデルアーキテクチャ自体が、推論時のバランスとリソース使用量に大きな影響を与えます。ニューラルネットワークには、入力画像から関連する特徴を抽出するために十分な深さと幅が必要です。しかし、層やフィルタが多すぎると、モデルは遅くて肥大化します。
GELANは、可能な限り小さなアーキテクチャで最大の精度を絞り出すように設計されています。
GELANは、2つの主要な構成要素を組み合わせて構成されています。
- 効率的な層アグリゲーションボックス – これらは、ネットワークの複数のブランチ間で変換を集約して、多スケール特徴を効率的に抽出します。
- 計算ブロック – CSPNetブロックは、層間で情報を伝播するのに役立ちます。任意のブロックは、計算制約に基づいて置き換えることができます。
これらのブロックを慎重にバランスさせて組み合わせることで、GELANはパフォーマンス、パラメータ、速度のバランスをとることができます。同じモジュラーなアーキテクチャは、さまざまなモデルのサイズやハードウェアにわたってスケーリングできます。
実験では、GELANが以前のYOLOアーキテクチャよりも小さいモデルにパフォーマンスを詰め込むことができたことが示されました。例えば、GELAN-Small(7Mパラメータ)はYOLOv7-Nano(11Mパラメータ)を上回りました。また、GELAN-Medium(20Mパラメータ)はYOLOv7の中規模モデル(35-40Mパラメータ)と同等のパフォーマンスを示しました。
したがって、GELANは、パラメータ化されたアーキテクチャを特に効率性に最適化することで、モデルをより小さく、リソースが制限されたデバイスで実行できるようにします。次に、PGIがトレーニングをどのように改善するかを見てみましょう。
PGIを用いたより良いトレーニング
モデルトレーニングも、限られたリソースで最大の精度を出すために重要です。YOLOv9の著者は、小さいモデルで発生する信頼性の低いグラデーション情報の問題を特定しました。
グラデーションは、トレーニング中にモデルの重みをどれだけ更新するかを決定します。ノイズの多いまたは誤ったグラデーションは、収束が悪くなる原因となります。これは、小さいネットワークでは特に問題となります。
ディープサーパービジョンというテクニックは、ネットワーク内に追加のサイドブランチとロスを導入することで、この問題に対処します。ただし、小さい軽量モデルでは、このアプローチは崩壊し、分岐間で干渉や発散を引き起こすことがあります。

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information https://arxiv.org/abs/2402.13616
この限界を克服するために、YOLOv9はProgrammable Gradient Information (PGI)を導入します。PGIには2つの主要なコンポーネントがあります。
- 補助的な可逆的なブランチ – これらは、RevColsなどのブロックを使用して入力に可逆的な接続を提供し、クリーンなグラデーションを維持します。
- マルチレベルグラデーション統合 – これは、すべてのブランチからのグラデーションを統合して、分岐間の発散を防ぎます。
より信頼性の高いグラデーションを生成することで、PGIはトレーニングの収束と効率を向上させます。
実験では、PGIが小さいモデルと大きいモデルの両方で精度を向上させたことが示されました。例えば、YOLOv9-SmallのAPスコアを0.1-0.4%向上させ、YOLOv9-EのAPスコアを55.6%まで向上させました。
したがって、PGIは、小さいモデルが以前には達成できなかった水準の精度までトレーニングできるようにします。
YOLOv9 – 効率性の新たな最先端
GELANのアーキテクチャの進歩とPGIのトレーニングの改善を組み合わせることで、YOLOv9は前代未聞の効率性とパフォーマンスを達成します。
- 以前のYOLOバージョンと比較して、YOLOv9は10-15%少ないパラメータと25%少ない計算でより高い精度を達成します。これにより、速度と能力が大幅に向上します。
- YOLOv9は、YOLO-MSやRT-DETRなどの他のリアルタイム検出器よりも、パラメータ効率とFLOPsで優れています。特定のパフォーマンスレベルに到達するために必要なリソースが大幅に少なくなります。
- 小さいYOLOv9モデルは、事前トレーニングされた大きなモデルであるRT-DETR-Xを上回ります。36%少ないパラメータを使用しながら、55.6%のAPを達成します。
したがって、YOLOv9は、限られたリソース内で最大のパフォーマンスを出すために、効率性をアーキテクチャとトレーニングの両方のレベルで対処することで、効率性の新たな最先端を達成します。
GELAN – 効率性の最適化されたアーキテクチャ
YOLOv9は、最小のパラメータ数で最大の精度を達成するために、General Efficient Layer Aggregation Network (GELAN)という新しいアーキテクチャを導入します。GELANは、以前のYOLOモデルを基にしており、さまざまなコンポーネントを効率性に特化して最適化しています。

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information https://arxiv.org/abs/2402.13616
CSPNetとELANの背景
最近のYOLOバージョン(v5以降)は、効率性の向上のためにCross-Stage Partial Network (CSPNet)に基づいたバックボーンを使用しています。CSPNetは、ネットワークの並列ブランチ間で特徴マップを集約することを可能にします。
これは、層をシーケンシャルに積み重ねることよりも効率的です。シーケンシャルな積み重ねは、冗長な計算と過剰なパラメータ化につながることがあります。
YOLOv7は、CSPNetをEfficient Layer Aggregation Network (ELAN)にアップグレードしました。ELANは、ブロック構造を簡素化しました。
ELANは、層間のショートカット接続を削除し、代わりに出力に集約ノードを導入しました。これにより、パラメータとFLOPsの効率がさらに向上しました。
ELANの汎化による柔軟な効率性
YOLOv9のバックボーンとして使用されるGELANは、ELANをさらに汎化しました。GELANは、柔軟性と効率性を向上させるために重要な変更を加えました。
- 計算ブロックの交換 – 以前のELANには固定の畳み込み層がありました。GELANでは、ResNetsやCSPNetなどの任意の計算ブロックを交換できます。これにより、より多くのアーキテクチャオプションが提供されます。
- 深さのパラメータ化 – メインブランチとアグリゲーターブランチのブロックの深さを個別に設定できるようになり、リソース使用の微調整が容易になりました。
- 構成間の安定したパフォーマンス – GELANは、さまざまなブロックタイプや深さに対して安定した精度を維持します。これにより、柔軟なスケーリングが可能になります。
これらの変更により、GELANは強力で構成可能なバックボーンとなり、効率性を最大化することができます。
実験では、GELANモデルが一貫して以前のYOLOアーキテクチャを上回る精度を示したことが示されています。
- GELAN-Small(7Mパラメータ)はYOLOv7-Nano(11Mパラメータ)を上回りました。
- GELAN-Mediumは、より大きなYOLOv7の中規模モデルと同等のパフォーマンスを示しました。
したがって、GELANは、さまざまな効率性ターゲットに対してYOLOをスケーリングするための最適化されたバックボーンを提供します。次に、PGIがトレーニングをどのように改善するかを見てみましょう。
PGI – 全モデルのトレーニングの改善
アーキテクチャの選択は推論時の効率性に影響しますが、トレーニングプロセスもモデルリソース使用量に影響します。YOLOv9は、Programmable Gradient Information (PGI)という新しいテクニックを使用して、さまざまなモデルのサイズと複雑さに対するトレーニングを改善します。
信頼性の低いグラデーションの問題
トレーニング中に、損失関数はモデル出力とラベルを比較してエラーグラデーションを計算し、パラメータを更新します。ノイズの多いまたは誤ったグラデーションは、収束が悪くなる原因となります。
非常に深いネットワークは、情報ボトルネックを悪化させます。深い層からのグラデーションは、失われたまたは圧縮された信号によって汚染されます。
ディープサーパービジョンは、ネットワーク内に追加のサイドブランチとロスを導入することで、この問題に対処します。しかし、小さいモデルでは、分岐間の干渉や発散によって崩壊することがあります。
したがって、小さいモデルでも大きなモデルでも機能する、信頼性の高いグラデーションを提供する方法が必要です。
Programmable Gradient Information (PGI)の導入
信頼性の低いグラデーションに対処するために、YOLOv9はProgrammable Gradient Information (PGI)を提案します。PGIには2つの主要なコンポーネントがあります。
1. 補助的な可逆的なブランチ
RevColsなどのブロックを使用して、入力に可逆的な接続を提供します。これにより、情報ボトルネックを回避できます。
2. マルチレベルグラデーション統合
すべてのブランチからのグラデーションを統合して、分岐間の発散を防ぎます。
より信頼性の高いグラデーションを生成することで、PGIはトレーニングの収束と効率を向上させます。
- 軽量モデルは、以前使用できなかったディープサーパービジョンの恩恵を受けます。
- 大きなモデルは、よりクリーンなグラデーションを得て、より良い汎化を実現します。
実験では、PGIが小さいYOLOv9モデルと大きいYOLOv9モデルの両方で精度を向上させたことが示されています。
- YOLOv9-SmallのAPスコアを0.1-0.4%向上させました。
- 大きいYOLOv9モデルのAPスコアを0.5-0.6%向上させました。
したがって、PGIのプログラム可能なグラデーションにより、小さいモデルでも大きいモデルでもより効率的にトレーニングできます。
YOLOv9 – 精度の新たな最先端
GELANのアーキテクチャの進歩とPGIのトレーニングの改善を組み合わせることで、YOLOv9はリアルタイムオブジェクト検出の新たな最先端の精度を達成します。
COCOデータセットでの実験では、YOLOv9が以前のYOLOバージョンや他のリアルタイム検出器を上回る精度と効率性を示したことが示されています。
いくつかの重要なハイライト:
- YOLOv9-Smallは、10%少ないパラメータと計算でYOLO-MS-Smallを上回ります。
- YOLOv9-Mediumは、半分以下のリソースでYOLOv7の中規模モデルと同等のパフォーマンスを示します。
- YOLOv9-Largeは、15%少ないパラメータと25%少ないFLOPsでYOLOv8-Xを上回ります。
注目すべきは、小さいYOLOv9モデルが事前トレーニングを使用する他の検出器の大きいモデルを上回ることです。YOLOv9-Eは、4倍少ないパラメータでRT-DETR-Xを上回ります。
これらの結果は、YOLOv9の優れた効率性を示しています。効率性の向上により、高い精度のオブジェクト検出がより多くの実世界の用途で可能になります。
YOLOv9のアップグレードの重要なポイント
YOLOv9の新たな最先端のパフォーマンスを可能にする、いくつかの重要なアップグレードと革新について簡単にまとめてみましょう。
- GELAN最適化アーキテクチャ – フレキシブルなアグリゲーションブロックを介してパラメータ効率を向上させ、さまざまなターゲットに対してモデルをスケーリングできます。
- プログラム可能なグラデーション情報 – 可逆的な接続と融合を介して信頼性の高いグラデーションを提供し、モデルサイズ間のトレーニングを向上させます。
- リソースの削減と精度の向上 – YOLOv8と比較して10-15%少ないパラメータと25%少ない計算でより高い精度を達成します。推論の効率が向上します。
- モデルのサイズ間の優れた結果 – 軽量モデル、中規模モデル、大規模モデルすべてで新たな最先端のパフォーマンスを達成します。事前トレーニングされたモデルを上回ります。
- 適用範囲の拡大 – 効率性の向上により、エッジデバイスでのリアルタイム検出などのより多くの用途が可能になります。
精度、効率性、適用性を直接対処することで、YOLOv9はオブジェクト検出をリアルワールドの多様なニーズに合わせて前進させます。アップグレードは、重要なコンピュータビジョン機能における将来の革新の強力な基盤を提供します。












