YOLOv10:リアルタイムエンドツーエンド物体検出
清華大学の研究者によってUltralytics Pythonパッケージ上に構築されたYOLOv10は、従来のYOLOバージョンに見られるポストプロセッシングとモデルアーキテクチャの欠点に対処する、リアルタイムオブジェクト検出への新しいアプローチを導入します。Non-Maximum Suppression(NMS)を排除し、さまざまなモデルコンポーネントを最適化することで、YOLOv10は計算オーバーヘッドを大幅に削減しながら、最先端のパフォーマンスを実現します。広範な実験により、複数のモデルスケールにわたって優れた精度と遅延のトレードオフが実証されています。
見る: Ultralyticsを使用してSKU-110kデータセットでYOLOv10をトレーニングする方法 | 小売データセット
概要
リアルタイム物体検出は、低遅延で画像内の物体のカテゴリと位置を正確に予測することを目的としています。YOLOシリーズは、性能と効率のバランスにより、この研究の最前線に立ってきました。しかし、NMSへの依存とアーキテクチャの非効率性が、最適な性能を妨げてきました。YOLOv10は、NMSフリーのトレーニングのための一貫性のあるデュアル割り当てと、全体的な効率と精度を重視したモデル設計戦略を導入することで、これらの問題に対処します。
アーキテクチャ
YOLOv10のアーキテクチャは、以前のYOLOモデルの強みを基盤として構築されており、いくつかの重要なイノベーションが導入されています。モデルアーキテクチャは、次のコンポーネントで構成されています。
- Backbone: 特徴抽出を担うバックボーンとして、YOLOv10ではCSPNet(Cross Stage Partial Network)の改良版を使用し、勾配の流れを改善し、計算の冗長性を低減します。
- ネック: ネックは、さまざまなスケールの特徴を集約し、ヘッドに渡すように設計されています。効果的なマルチスケール特徴融合のために、PAN(Path Aggregation Network)レイヤーが含まれています。
- One-to-Many Head: トレーニング中にオブジェクトごとに複数の予測を生成し、豊富な教師信号を提供し、学習精度を向上させます。
- One-to-One Head: 推論中にオブジェクトごとに単一の最適な予測を生成し、NMSの必要性を排除することで、レイテンシを削減し、効率を向上させます。
主な特徴
- NMSフリー学習: 一貫したデュアル割り当てを利用してNMSの必要性を排除し、推論レイテンシを削減します。
- 包括的なモデル設計: 軽量な分類ヘッド、空間チャネル分離ダウンサンプリング、ランクガイド付きブロック設計など、効率と精度の両方の観点からさまざまなコンポーネントを包括的に最適化。
- 強化されたモデル機能: 大きなカーネル畳み込みと部分的な自己注意モジュールを組み込むことで、計算コストを大幅に増加させることなくパフォーマンスを向上させます。
モデルのバリエーション
YOLOv10は、さまざまなアプリケーションのニーズに応えるために、多様なモデルスケールで提供されます。
- YOLOv10n: 極めてリソースが限られた環境向けのナノバージョン。
- YOLOv10s: 速度と精度のバランスを取った小型バージョン。
- YOLOv10m: 汎用的な使用のためのミディアムバージョン。
- YOLOv10b: より高い精度を実現するために幅を広げたバランスの取れたバージョン。
- YOLOv10l: 計算リソースの増加を犠牲にして、より高い精度を実現する大規模バージョン。
- YOLOv10x: 最大限の精度とパフォーマンスのための特大バージョン。
パフォーマンス
YOLOv10は、精度と効率の点で、以前のYOLOバージョンや他の最先端モデルを上回っています。たとえば、YOLOv10sは、COCOデータセットで同様のAPを持つRT-DETR-R18よりも1.8倍高速であり、YOLOv10bは、同じパフォーマンスでYOLOv9-Cよりも46%少ないレイテンシと25%少ないパラメータを備えています。
パフォーマンス
T4 GPU上でTensorRT FP16を使用して測定されたレイテンシ。
モデル | 入力サイズ | APval | FLOPs (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の戦略を組み合わせたデュアルラベル割り当てを採用し、豊富なスーパービジョンと効率的なエンドツーエンドのデプロイメントを保証します。一貫したマッチングメトリックは、両方の戦略間のスーパービジョンを調整し、推論中の予測の品質を向上させます。
全体的な効率-精度重視のモデル設計
効率の向上
- 軽量分類ヘッド: Depth-wise separable convolutionを使用することにより、分類ヘッドの計算オーバーヘッドを削減します。
- 空間チャネル分離ダウンサンプリング: 空間的な縮小とチャネル変調を分離して、情報の損失と計算コストを最小限に抑えます。
- ランクガイド付きブロック設計: 固有のステージ冗長性に基づいてブロック設計を調整し、最適なパラメーター利用を保証します。
精度向上
- 大規模カーネル畳み込み:受容野を拡大し、特徴抽出能力を強化します。
- Partial Self-Attention (PSA): 最小限のオーバーヘッドでグローバルな表現学習を改善するために、self-attentionモジュールを組み込みます。
実験と結果
YOLOv10は、COCOなどの標準的なベンチマークで広範なテストが行われており、優れたパフォーマンスと効率を発揮しています。このモデルは、さまざまなバリアントで最先端の結果を達成し、以前のバージョンや他の現代的な検出器と比較して、レイテンシと精度が大幅に向上しています。
比較
他の最先端の検出器と比較して:
- YOLOv10s / xは、RT-DETR-R18 / R101よりも精度が同程度であるにもかかわらず、1.8× / 1.3×高速です。
- YOLOv10bは、同じ精度でYOLOv9-Cよりもパラメータが25%少なく、レイテンシが46%低くなっています。
- YOLOv10l / xは、YOLOv8l / xよりもパラメータが1.8× / 2.3×少ないにもかかわらず、0.3 AP / 0.5 APだけ性能が優れています。
パフォーマンス
YOLOv10のバリアントと他の最先端モデルとの詳細な比較を以下に示します。
モデル | Params (M) |
FLOPs (G) |
mAPval 50-95 |
レイテンシ (ms) |
レイテンシ-順方向 (ms) |
---|---|---|---|---|---|
YOLOv6-3.0-N | 4.7 | 11.4 | 37.0 | 2.69 | 1.76 |
Gold-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 |
Gold-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 |
Gold-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 |
Gold-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モデルシリーズは、高性能なObject Detection向けに最適化されたさまざまなモデルを提供します。これらのモデルは、さまざまな計算ニーズと精度の要件に対応しており、幅広いアプリケーションに汎用性があります。
モデル | ファイル名 | タスク | 推論 | 検証 | 学習 | エクスポート |
---|---|---|---|---|---|---|
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 | ✅ | ✅ | Apple デバイスに限定されます。 |
TF SavedModel | ✅ | ✅ | TensorFlow の標準モデル形式。 |
TF GraphDef | ✅ | ✅ | 従来の TensorFlow 形式。 |
TF Lite | ✅ | ✅ | モバイルおよび組み込み向けに最適化されています。 |
TF Edge TPU | ✅ | ✅ | GoogleのEdge TPUデバイスに特有。 |
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}
}
詳細な実装、アーキテクチャの革新、および実験結果については、Tsinghua UniversityチームによるYOLOv10の研究論文およびGitHubリポジトリを参照してください。
よくある質問
YOLOv10とは何ですか?また、以前のYOLOバージョンとどのように異なりますか?
清華大学の研究者によって開発されたYOLOv10は、リアルタイムオブジェクト検出にいくつかの重要な革新をもたらします。トレーニング中に一貫したデュアル割り当てを採用することでNon-Maximum Suppression(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は、学習に一貫したデュアル割り当てを採用することで、推論時のNon-Maximum Suppression(NMS)の必要性を排除します。このアプローチにより、推論の遅延が減少し、予測効率が向上します。このアーキテクチャには、推論用のOne-to-Oneヘッドも含まれており、各オブジェクトが単一の最適な予測を得られるようになっています。詳細な説明は、Consistent Dual Assignments for NMS-Free Trainingのセクションを参照してください。
YOLOv10モデルのエクスポートオプションはどこにありますか?
YOLOv10は、TorchScript、ONNX、OpenVINO、TensorRTを含むいくつかのエクスポート形式をサポートしています。ただし、Ultralyticsが提供するすべてのエクスポート形式が、新しいオペレーションのためにYOLOv10で現在サポートされているわけではありません。サポートされている形式とエクスポートの手順の詳細については、Exporting YOLOv10のセクションをご覧ください。
YOLOv10モデルのパフォーマンスベンチマークは何ですか?
YOLOv10は、精度と効率の両方において、以前のYOLOバージョンや他の最先端モデルを上回っています。たとえば、YOLOv10sは、COCOデータセットで同様のAPを持つRT-DETR-R18よりも1.8倍高速です。YOLOv10bは、同じパフォーマンスでYOLOv9-Cよりも46%少ないレイテンシと25%少ないパラメータを示しています。詳細なベンチマークは、比較セクションにあります。