YOLOv10: リアルタイムエンドツーエンド物体検出
2024年5月にリリースされ、清華大学の研究者によってUltralyticspythonパッケージ上に構築されたYOLOv10は、以前のYOLOバージョンに見られた後処理とモデルアーキテクチャの欠点の両方に対処し、リアルタイムオブジェクトdetectに新しいアプローチを導入しました。非最大抑制 (NMS) を排除し、さまざまなモデルコンポーネントを最適化することで、YOLOv10はリリース時に計算オーバーヘッドを大幅に削減し、優れたパフォーマンスを達成しました。そのNMSフリーのエンドツーエンド設計は、YOLO26でさらに開発されたアプローチの先駆けとなりました。

見る: 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データセットにおいて、RT-DETR-R18と同等のAPで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は、学習中にone-to-manyとone-to-oneの戦略を組み合わせるデュアルラベルアサインメントを採用しており、豊富な教師信号と効率的なエンドツーエンドデプロイメントを保証します。一貫したマッチングメトリックは、両戦略間の教師信号を整合させ、推論時の予測品質を向上させます。
全体的な効率-精度重視のモデル設計
効率の向上
- 軽量分類ヘッド: 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を0.3 AP / 0.5 AP上回り、パラメータ数は1.8倍 / 2.3倍少なくなっています。
パフォーマンス
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 pretrained 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 | ✅ | ✅ | Apple デバイスに限定されます。 |
| TF SavedModel | ✅ | ✅ | TensorFlow の標準モデル形式。 |
| TF GraphDef | ✅ | ✅ | 従来の TensorFlow 形式。 |
| TF Lite | ✅ | ✅ | モバイルおよび組み込み向けに最適化されています。 |
| TF Edge TPU | ✅ | ✅ | GoogleのEdge TPUデバイスに特有。 |
| TF.js | ✅ | ✅ | ブラウザで使用するための JavaScript 環境。 |
| PaddlePaddle | ❌ | ❌ | 中国で人気があります。グローバルサポートは少なめです。 |
| NCNN | ✅ | ❌ | レイヤー torch.topk 存在しないか、登録されていません |
結論
YOLOv10は、以前のYOLOバージョンの欠点に対処し、革新的な設計戦略を組み込むことで、リリース時にリアルタイムオブジェクトdetectの新しい標準を確立しました。そのNMSフリーのアプローチは、YOLOファミリーにおけるエンドツーエンドのオブジェクトdetectの先駆けとなりました。パフォーマンスが向上し、NMSフリーの推論を備えた最新のUltralyticsモデルについては、YOLO26を参照してください。
引用と謝辞
清華大学の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は、リアルタイム物体検出にいくつかの重要な革新をもたらします。学習中の一貫したデュアルアサインメントと最適化されたモデルコンポーネントを採用することで、非最大抑制(NMS)の必要性を排除し、計算オーバーヘッドを削減しつつ優れたパフォーマンスを実現します。そのアーキテクチャと主要機能の詳細については、YOLOv10概要セクションをご覧ください。
YOLOv10を使用して推論を実行するには、どのように始めればよいですか?
容易な推論のために、Ultralytics YOLO Pythonライブラリまたはコマンドラインインターフェース(CLI)を使用できます。以下に、YOLOv10を使用して新しい画像を予測する例を示します。
例
from ultralytics import YOLO
# Load the pretrained 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(non-maximum suppression)の必要性を排除します。このアプローチにより、推論レイテンシが削減され、予測効率が向上します。また、このアーキテクチャには推論用の1対1ヘッドが含まれており、各オブジェクトが単一の最適な予測を得られるようにします。詳細については、Consistent Dual Assignments for NMS-Free Trainingセクションを参照してください。
YOLOv10モデルのエクスポートオプションはどこで確認できますか?
YOLOv10は、TorchScript、ONNX、OpenVINO、TensorRTを含むいくつかのエクスポート形式をサポートしています。ただし、YOLOv10の新しい操作のため、Ultralyticsが提供するすべてのエクスポート形式が現在YOLOv10でサポートされているわけではありません。サポートされている形式とエクスポート手順の詳細については、Exporting YOLOv10セクションを参照してください。
YOLOv10モデルのパフォーマンスベンチマークは何ですか?
YOLOv10は、精度と効率の両方で以前のYOLOバージョンやその他の最先端モデルを上回ります。例えば、YOLOv10sはCOCOデータセットでRT-DETR-R18と同等のAPを達成しつつ、1.8倍高速です。YOLOv10bは、YOLOv9-Cと同等のパフォーマンスで、レイテンシが46%少なく、パラメータ数が25%少ないことを示しています。詳細なベンチマークは、Comparisonsセクションで確認できます。