コンテンツにスキップ

YOLOv9 .YOLOv5:物体検出におけるアーキテクチャの進化と継承

YOLO You Only Look Once)ファミリーの進化は、コンピュータビジョン技術の進歩を示す興味深いタイムラインである。 YOLOv5は、Ultralytics リリースされ、使いやすさと実用性の面で新たな基準を確立し、世界中の開発者にとって定番のフレームワークとなりました。 YOLOv9は、2024年に中央研究院の研究者によってリリースされ、プログラマブル勾配情報(PGI)などの概念により理論的アーキテクチャの限界を押し広げている。

この比較では、YOLOv5 、YOLOv5 YOLOv9 YOLOv5 、特定のコンピュータビジョンニーズに最適なモデル選択を支援します。

性能指標の比較

以下の表は、2つのモデルを様々なサイズで比較したベンチマーク結果です。YOLOv9 理論上の精度(mAP)YOLOv9 ものの、YOLOv5 速度とリソース効率において競争力をYOLOv5 、特にレガシー環境での展開においてYOLOv9 。

モデルサイズ
(ピクセル)
mAPval
50-95
速度
CPU ONNX
(ms)
速度
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLOv9t64038.3-2.32.07.7
YOLOv9s64046.8-3.547.126.4
YOLOv9m64051.4-6.4320.076.3
YOLOv9c64053.0-7.1625.3102.1
YOLOv9e64055.6-16.7757.3189.0
YOLOv5n64028.073.61.122.67.7
YOLOv5s64037.4120.71.929.124.0
YOLOv5m64045.4233.94.0325.164.2
YOLOv5l64049.0408.46.6153.2135.0
YOLOv5x64050.7763.211.8997.2246.4

YOLOv5:実運用AIの標準

UltralUltralyticsにより2020年にリリースされて以来、 YOLOv5 は実用的なAIデプロイメントの代名詞となった。単なるモデルアーキテクチャではなく、完全なエコシステム変革をもたらした。YOLOv5、物体検出モデルのトレーニングには複雑な設定ファイルや脆弱なCベースのフレームワークが必須だった。YOLOv5 PyTorch YOLOv5 、トレーニングを単一のコマンドで実行可能なほど簡素化した。

YOLOv5について詳しくはこちら

YOLOv5の主な強み

  1. 比類なき使いやすさ: Ultralytics 特徴はユーザー体験にあります。YOLOv5 データセットの準備からデプロイまでシームレスなワークフローYOLOv5 。
  2. 幅広いプラットフォームサポート:CoreMLTFLite、およびONNX のネイティブエクスポートをサポートしており、モバイルおよびエッジアプリケーション向けに非常に汎用性の高いソリューションです。
  3. 低リソースオーバーヘッド:膨大なGPU 必要とするトランスフォーマー中心のアーキテクチャとは異なり、YOLOv5 極めて効率的YOLOv5 、コンシューマー向けハードウェアやGoogle のような無料のクラウドノートブック上でのトレーニングを可能にします。
  4. 安定性:長年にわたる積極的なメンテナンスにより、エッジケースは解決され、スマート製造やセキュリティ分野におけるミッションクリティカルなアプリケーション向けの安定したプラットフォームが確保されています。

使いやすさの例

YOLOv5 またはUltralytics )での推論の実行は標準化されており、簡単です:

from ultralytics import YOLO

# Load a pretrained YOLOv5s model
model = YOLO("yolov5s.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")

# Show results
results[0].show()

YOLOv9: PGIによるアーキテクチャ革新

2024年初頭にリリースされた、 YOLOv9 は、深層ニューラルネットワークにおける情報ボトルネック問題の解決に焦点を当てています。ネットワークが深くなるにつれ、重要な特徴情報が順伝播過程で失われる可能性があります。YOLOv9 、プログラマブル勾配情報(PGI) と汎用効率的層集約ネットワーク(GELAN)を用いてこのYOLOv9 。

YOLOv9について詳しくはこちら

アーキテクチャのブレークスルー

  • GELANアーキテクチャ:この新規アーキテクチャは、CSPNet(YOLOv5)とELAN(YOLOv7)の優れた点を組み合わせ、パラメータ効率を最大化します。これにより、従来のアーキテクチャと比較して、より少ないパラメータで高い精度を達成することが可能となります。
  • プログラマブル勾配情報(PGI):PGIは、学習時のみ使用される補助分岐を通じて信頼性の高い勾配を生成します。これにより、推論コストを追加することなく深層が意味情報を保持し、小さな物体の検出といった困難なタスクでの性能向上を実現します。

比較分析:どちらを使うべきか?

これらの2つのモデルから選択するには、優先事項によって異なります:展開速度か最高精度か

1. トレーニング効率とエコシステム

YOLOv5 はエコシステムの成熟度で優位性を発揮します。数千ものサードパーティ製ツールに統合され、大規模なコミュニティサポートを有しています。今日、最小限の手間でモデルをデプロイする必要があるなら、YOLOv5 またはより新しい YOLO11)がより安全な選択肢となることが多い。

YOLOv9Ultralytics 内で完全にサポートされているため、ユーザーは同じ簡素化されたトレーニングパイプラインを活用できます。ただし、その複雑なアーキテクチャ(補助ブランチ)により、トレーニング速度が遅くなり、合理化されたYOLOv5よりもわずかにメモリを消費する場合があります。

2. エッジデプロイメント対サーバー精度

純粋に精度を重視するタスク(オフライン医療画像解析や高精度産業検査など)において、YOLOv9eはYOLOv5xを大幅に上回り、mAP 5%のmAP を実現している。

ただし、ラズベリーパイやNVIDIA のようなエッジデバイスでは、 YOLOv5 は依然として人気が高い。そのシンプルなアーキテクチャはint8量子化に適しており、制約のあるハードウェア上でもより高速な推論速度を実現することが多い。ただし、YOLO26のような新モデルがこの分野で急速に取って代わりつつある。

3. タスクの汎用性

両モデルとも汎用性が高いが、Ultralytics により、単純な検出を超えた幅広いタスクをサポートすることが保証されている:

  • インスタンスセグメンテーション:ピクセル単位の精密マスク。
  • 分類:画像全体のラベリング。
  • 姿勢推定: 人間活動認識のためのキーポイント追跡
  • OBB: 航空画像用の傾斜バウンディングボックス。

未来:YOLO26

YOLOv5 YOLOv9 優れたYOLOv9 、この分野は急速に進化しています。絶対的な最先端技術を求める開発者はYOLO26に注目すべきです。

2026年1月にリリースされたYOLO26は、これらのアーキテクチャ上の進歩の集大成である。これはエンドツーエンドNMS設計を採用しており、最初に普及させたのは YOLOv10によって初めて普及したエンドツーエンドのNMSフリー設計を採用し、遅延の大きい非最大抑制ステップを完全に排除しています。さらに、SGD 融合したハイブリッド手法であるMuSGDオプティマイザーを搭載し、収束速度と安定性の向上を実現しています。

ProgLoss + STALによる小規模物体検出の改善や、エクスポート簡素化のための分布焦点損失(DFL)の削除などにより、YOLO26は前世代比で最大43%CPU を実現。研究と実運用双方において優れた選択肢となっています。

YOLO26についてさらに詳しく

結論

  • レガシーシステムや極端なリソース制約下で、軽量かつ実戦で実績のあるモデルが必要な場合、YOLOv9新しい演算子のサポートが不足している可能性がある場合には、 YOLOv5
  • 困難なデータセットで高い精度が必要であり、わずかに高いトレーニングリソースコストを許容できる場合は、 YOLOv9を選択してください
  • YOLO26を選べば、あらゆる面で最高の性能を手に入れられます:NMS高速処理、最高水準の精度、そしてMuSGDオプティマイザーのような次世代機能を備えています。

これらのモデルのいずれかを始めるには、Ultralytics データセットを管理し、クラウドでトレーニングを行い、簡単にデプロイできます。

はじめに

これらのPython を使用してトレーニングできます。スクリプト内のモデル名を変更するだけです:

from ultralytics import YOLO

# Switch between models easily
model = YOLO("yolov5su.pt")  # YOLOv5
# model = YOLO("yolov9c.pt") # YOLOv9
# model = YOLO("yolo26n.pt") # YOLO26

# Train on your data
model.train(data="coco8.yaml", epochs=100)

コメント