コンテンツへスキップ

YOLOv10: リアルタイムのエンド・ツー・エンド物体検出

YOLOv10は UltralyticsPython YOLOv10は、 清華大学の研究者によりパッケージ化され、リアルタイムの物体検出に新しいアプローチを導入し、以前のバージョン(YOLO )で見られた後処理とモデルアーキテクチャの両方の欠陥に対処しています。非最大抑制(NMS)を排除し、様々なモデルコンポーネントを最適化することで、YOLOv10は、計算オーバーヘッドを大幅に削減しながら、最先端の性能を達成した。広範な実験により、複数のモデルスケールにわたって、その優れた精度と遅延のトレードオフが実証されています。

YOLOv10の一貫したデュアルアサインによるNMSフリートレーニング



見るんだ: Ultralytics |Retail Datasetを使用してSKU-110kデータセットでYOLOv10をトレーニングする方法

概要

リアルタイム物体検出は、画像中の物体のカテゴリと位置を低遅延で正確に予測することを目的としている。YOLO シリーズは、性能と効率のバランスにより、この研究の最前線にいる。しかし、NMSへの依存とアーキテクチャの非効率性が、最適な性能を妨げてきた。YOLOv10は、NMSを使用しないトレーニングのための一貫したデュアル割り当てと、全体的な効率と精度を重視したモデル設計戦略を導入することで、これらの問題に対処しています。

建築

YOLOv10のアーキテクチャーは、いくつかの重要な革新的技術を導入しながらも、これまでのYOLO モデルの長所を基盤としている。モデル・アーキテクチャは以下のコンポーネントで構成されている:

  1. バックボーン:特徴抽出を担当するYOLOv10のバックボーンは、勾配フローを改善し、計算の冗長性を減らすために、CSPNet(Cross Stage Partial Network)の強化版を使用している。
  2. ネック:異なるスケールの特徴を集約し、ヘッドに渡すように設計されている。効果的なマルチスケール特徴フュージョンのためのPAN(Path Aggregation Network)レイヤーを含む。
  3. One-to-Many Head: トレーニング中にオブジェクトごとに複数の予測を生成し、豊富な監視信号を提供し、学習精度を向上させます。
  4. One-to-Oneヘッド:推論中にオブジェクトごとに最良の予測を1つ生成し、NMSを不要にすることで、待ち時間を短縮し、効率を向上させる。

主な特徴

  1. NMSフリートレーニング:一貫したデュアル割り当てを利用してNMSの必要性を排除し、推論の待ち時間を短縮。
  2. 全体的なモデル設計:軽量分類ヘッド、空間チャンネル分離ダウンサンプリング、ランクガイド付きブロック設計など、効率と精度の両面から様々なコンポーネントを包括的に最適化。
  3. モデル機能の強化:大きなカーネル畳み込みと部分的な自己アテンションモジュールを組み込み、大きな計算コストをかけずにパフォーマンスを向上。

モデルバリエーション

YOLOv10には、さまざまな用途のニーズに応えるため、さまざまなモデルスケールがある:

  • YOLOv10n:リソースが極端に制限された環境向けのナノバージョン。
  • YOLOv10s:スピードと正確性をバランスさせた小型バージョン。
  • YOLOv10m:汎用ミディアムバージョン。
  • YOLOv10b:精度を高めるために幅を広げたバランス・バージョン。
  • YOLOv10l:計算リソースを増やす代わりに精度を高めた大型バージョン。
  • YOLOv10x:最高の精度と性能を誇る超大型バージョン。

パフォーマンス

YOLOv10は、精度と効率の面で、以前のYOLO バージョンや他の最先端モデルを凌駕している。例えば、YOLOv10sは、COCOデータセット上で、同様のAPを持つRT-DETR1.8倍高速であり、YOLOv10bは、同じ性能を持つYOLOv9-Cより、レイテンシが46%少なく、パラメータが25%少ない。

パフォーマンス

T4GPU 上のTensorRT FP16 で測定したレイテンシ。

モデル 入力サイズ エーピーバル フロップ数(G) 待ち時間 (ms)
YOLOv10n 640 38.5 6.7 1.84
YOLOv10s 640 46.3 21.6 2.49
YOLOv10m 640 51.1 59.1 4.74
YOLOv10b 640 52.5 92.0 5.74
YOLOv10l 640 53.2 120.3 7.28
YOLOv10x 640 54.4 160.4 10.70

方法論

NMSフリー・トレーニングのための一貫した二重割り当て

YOLOv10は、豊富な監視と効率的なエンド・ツー・エンドの展開を保証するために、学習中に1対多と1対1の戦略を組み合わせた二重のラベル割り当てを採用している。一貫性のあるマッチングメトリックは、両ストラテジー間の監視を整列させ、推論時の予測品質を向上させる。

全体的な効率と精度を重視したモデル設計

効率性の向上

  1. 軽量分類ヘッド:深さ方向に分離可能な畳み込みを使用することで、分類ヘッドの計算オーバーヘッドを削減。
  2. 空間-チャンネル分離ダウンサンプリング:空間縮小とチャネル変調を切り離し、情報損失と計算コストを最小限に抑える。
  3. ランク誘導型ブロック設計:内在するステージの冗長性に基づいてブロック設計を適応させ、最適なパラメータ利用を保証します。

精度の向上

  1. ラージカーネル畳み込み受容野を拡大して特徴抽出能力を高める。
  2. パーシャル・セルフ・アテンション(PSA):セルフ・アテンションモジュールを組み込むことで、オーバーヘッドを最小限に抑えながら大域的な表現学習を改善。

実験と結果

YOLOv10は、COCOのような標準的なベンチマークで広範囲にテストされ、優れた性能と効率を実証しています。YOLOv10は、様々なバリエーションにおいて最先端の結果を達成しており、旧バージョンや他の最新のディテクターと比較して、レイテンシーと精度が大幅に改善されています。

比較

YOLOv10とSOTA天体検出器の比較

他の最先端の検出器と比較して:

  • YOLOv10s / xは、RT-DETR/ R101と同程度の精度で、1.8倍 / 1.3倍速い。
  • YOLOv10bはYOLOv9-Cに比べ、同じ精度で25%少ないパラメータと46%低いレイテンシを実現
  • YOLOv10l / xはYOLOv8l / xより1.8倍 / 2.3倍少ないパラメータで0.3AP / 0.5AP上回る。

パフォーマンス

ここでは、YOLOv10のバリエーションと他の最新モデルを詳細に比較する:

モデル Params
(M)
FLOPs
(G)
mAPval
50-95
待ち時間
(ms)
レイテンシー-フォワード
(ms)
YOLOv6-3.0-N 4.7 11.4 37.0 2.69 1.76
ゴールドYOLO-N 5.6 12.1 39.6 2.92 1.82
YOLOv8n 3.2 8.7 37.3 6.16 1.77
YOLOv10n 2.3 6.7 39.5 1.84 1.79
YOLOv6-3.0-S 18.5 45.3 44.3 3.42 2.35
ゴールドYOLO-S 21.5 46.0 45.4 3.82 2.73
YOLOv8s 11.2 28.6 44.9 7.07 2.33
YOLOv10s 7.2 21.6 46.8 2.49 2.39
RT-DETR-R18 20.0 60.0 46.5 4.58 4.49
YOLOv6-3.0-M 34.9 85.8 49.1 5.63 4.56
ゴールドYOLO-M 41.3 87.5 49.8 6.38 5.45
YOLOv8m 25.9 78.9 50.6 9.50 5.09
YOLOv10m 15.4 59.1 51.3 4.74 4.63
YOLOv6-3.0-L 59.6 150.7 51.8 9.02 7.90
ゴールドYOLO-L 75.1 151.7 51.8 10.65 9.78
YOLOv8l 43.7 165.2 52.9 12.39 8.06
RT-DETR-R50 42.0 136.0 53.1 9.20 9.07
YOLOv10l 24.4 120.3 53.4 7.28 7.21
YOLOv8x 68.2 257.8 53.9 16.86 12.83
RT-DETR-R101 76.0 259.0 54.3 13.71 13.58
YOLOv10x 29.5 160.4 54.4 10.70 10.60

使用例

YOLOv10で新しい画像を予測するために:

from ultralytics import YOLO

# Load a pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")

# Perform object detection on an image
results = model("image.jpg")

# Display the results
results[0].show()
# Load a COCO-pretrained YOLOv10n model and run inference on the 'bus.jpg' image
yolo detect predict model=yolov10n.pt source=path/to/bus.jpg

カスタムデータセットでYOLOv10をトレーニングする:

from ultralytics import YOLO

# Load YOLOv10n model from scratch
model = YOLO("yolov10n.yaml")

# Train the model
model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a YOLOv10n model from scratch and train it on the COCO8 example dataset for 100 epochs
yolo train model=yolov10n.yaml data=coco8.yaml epochs=100 imgsz=640

# Build a YOLOv10n model from scratch and run inference on the 'bus.jpg' image
yolo predict model=yolov10n.yaml source=path/to/bus.jpg

サポートされるタスクとモード

YOLOv10シリーズには、高性能な物体検出用に最適化された様々なモデルがあります。これらのモデルは、様々な計算ニーズや精度要件に対応し、幅広いアプリケーションに対応します。

モデル ファイル名 タスク 推論 バリデーション トレーニング 輸出
YOLOv10 yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt 物体検出

YOLOv10のエクスポート

YOLOv10で導入された新しい操作のため、Ultralytics が提供するすべてのエクスポートフォーマットが現在サポートされているわけではありません。以下の表は、YOLOv10でUltralytics 、変換に成功したフォーマットの概要を示しています。YOLOv10で追加フォーマットのエクスポートサポートを追加するための貢献変更を提供できる場合は、遠慮なくプルリクエストを開いてください。

エクスポート形式 輸出サポート エクスポートされたモデルの推論 備考
TorchScript 標準 PyTorchモデル形式。
ONNX 配備が広くサポートされている。
OpenVINO Intel ハードウェアに最適化されている。
TensorRT NVIDIA GPU用に最適化されている。
CoreML アップル社製デバイスに限る。
TF SavedModel TensorFlowの標準的なモデル形式である。
TF GraphDef レガシーTensorFlow フォーマット。
TF ライト モバイルおよび組み込み用に最適化されています。
TF エッジTPU Google EdgeTPU デバイス専用。
TF.js ブラウザ用のJavaScript環境。
PaddlePaddle 中国での人気は高いが、世界的な支持は少ない。
NCNN レイヤー torch.topk 存在しない、登録されていない

結論

YOLOv10は、これまでのYOLO バージョンの欠点に対処し、革新的な設計戦略を取り入れることで、リアルタイムの物体検出における新たな基準を打ち立てました。低い計算コストで高精度を実現できるため、製造小売自律走行車など、幅広い実世界のアプリケーションに最適です。

引用と謝辞

清華大学のYOLOv10執筆陣の広範な研究とフレームワークへの多大な貢献に謝意を表したい。 Ultralyticsフレームワーク

@article{THU-MIGyolov10,
  title={YOLOv10: Real-Time End-to-End Object Detection},
  author={Ao Wang, Hui Chen, Lihao Liu, et al.},
  journal={arXiv preprint arXiv:2405.14458},
  year={2024},
  institution={Tsinghua University},
  license = {AGPL-3.0}
}

詳細な実装、アーキテクチャ上の工夫、実験結果については、清華大学チームによるYOLOv10の研究論文と GitHubリポジトリを参照されたい。

よくあるご質問

YOLOv10とは何ですか?また、以前のバージョン(YOLO )との違いは何ですか?

清華大学の研究者によって開発されたYOLOv10は、リアルタイムの物体検出にいくつかの重要な革新を導入している。YOLOv10は、学習中の一貫したデュアル割り当てと最適化されたモデルコンポーネントを採用することで、非最大抑制(NMS)の必要性を排除し、計算オーバーヘッドを削減しながら優れたパフォーマンスを実現します。アーキテクチャと主要機能の詳細については、YOLOv10の概要セクションをご覧ください。

YOLOv10を使って推論を始めるには?

簡単に推論を行うには、Ultralytics YOLO Python ライブラリ、またはコマンドラインインターフェース (CLI) を使用することができます。以下はYOLOv10を使って新しい画像を予測した例である:

from ultralytics import YOLO

# Load the pre-trained YOLOv10n model
model = YOLO("yolov10n.pt")
results = model("image.jpg")
results[0].show()
yolo detect predict model=yolov10n.pt source=path/to/image.jpg

その他の使用例については、使用例のセクションをご覧ください。

YOLOv10にはどのようなモデルバリエーションがあり、どのような使用例がありますか?

YOLOv10は、さまざまな使用ケースに対応するため、いくつかのモデルバリエーションを用意している:

  • YOLOv10n:リソースに非常に制約のある環境に最適
  • YOLOv10s:スピードと正確性のバランス
  • YOLOv10m:一般用
  • YOLOv10b:幅を広げることでより高い精度を実現
  • YOLOv10l:計算資源を犠牲にしても高い精度
  • YOLOv10x:最高の精度とパフォーマンス

各バリアントは、異なる計算ニーズと精度要件に合わせて設計されているため、さまざまなアプリケーションに対応できます。詳しくは、モデルバリエーションのセクションをご覧ください。

YOLOv10のNMSフリーのアプローチはどのようにパフォーマンスを向上させるのか?

YOLOv10は、トレーニングに一貫したデュアル割り当てを採用することで、推論中の非最大抑制(NMS)の必要性を排除している。このアプローチにより、推論の待ち時間が短縮され、予測効率が向上する。また、このアーキテクチャには推論用の1対1ヘッドが含まれており、各オブジェクトが単一の最良予測を得ることを保証します。詳細な説明については、「NMS-Freeトレーニングのための一貫したデュアル割り当て」のセクションを参照してください。

YOLOv10モデルのエクスポートオプションはどこにありますか?

YOLOv10は、TorchScript 、ONNX 、OpenVINO 、TensorRT を含むいくつかのエクスポート・フォーマットをサポートしています。しかし、Ultralytics が提供するエクスポート・フォーマットは、新しい操作のため、現在YOLOv10ではすべてサポートされているわけではありません。サポートされているフォーマットの詳細とエクスポートの手順については、YOLOv10のエクスポートのセクションをご覧ください。

YOLOv10モデルのパフォーマンスベンチマークは?

YOLOv10は、精度と効率の両方において、以前のYOLO バージョンや他の最先端モデルを凌駕している。例えば、YOLOv10sは、COCOデータセット上で同様のAPを持つRT-DETR1.8倍高速である。YOLOv10bは、同じパフォーマンスで、YOLOv9-Cよりレイテンシが46%少なく、パラメータが25%少ない。詳細なベンチマークは、比較セクションにあります。

📅作成 10ヶ月前 ✏️更新 8日前

コメント