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

Watch: How to Train YOLOv10 on SKU-110k Dataset using Ultralytics | Retail Dataset
概要#
リアルタイム物体検出は、低遅延で画像内のオブジェクトのカテゴリと位置を正確に予測することを目的としています。YOLOシリーズは、パフォーマンスと効率のバランスに優れているため、この研究の最前線に立ってきました。しかし、NMSへの依存や構造上の非効率性が、最適なパフォーマンスの妨げとなっていました。YOLOv10は、NMSフリーのトレーニングに向けた一貫したデュアル割り当てと、効率と精度の両立を重視したモデル設計戦略を導入することで、これらの問題に対処しています。
アーキテクチャ#
YOLOv10のアーキテクチャは、これまでのYOLOモデルの強みを基盤としつつ、いくつかの主要な革新を導入しています。モデルのアーキテクチャは以下のコンポーネントで構成されています。
- Backbone: 特徴抽出を担当し、YOLOv10のバックボーンにはCSPNet(Cross Stage Partial Network)の拡張バージョンが使用されており、勾配の流動性を改善し、計算の冗長性を削減しています。
- Neck: ネックは、さまざまなスケールの特徴を集約し、ヘッドに渡すように設計されています。効果的なマルチスケール特徴融合のためのPAN(Path Aggregation Network)レイヤーが含まれています。
- One-to-Many Head: 学習中に物体ごとに複数の予測を生成し、豊富な教師信号を提供して学習精度を向上させます。
- One-to-One Head: 推論中に物体ごとに最適な予測を1つだけ生成することで、NMSの必要性を排除し、それによって遅延を削減し効率を向上させます。
主な特徴#
- NMSフリーのトレーニング: 一貫したデュアル割り当てを利用してNMSの必要性をなくし、推論遅延を削減します。
- Holistic Model Design: 軽量な分類ヘッド、空間チャネル分離ダウンサンプリング、ランク誘導ブロック設計など、効率と精度の両方の観点からさまざまなコンポーネントを包括的に最適化しています。
- モデル機能の強化: 大規模カーネル畳み込みと部分セルフアテンションモジュールを組み込み、大きな計算コストをかけずにパフォーマンスを向上させます。
モデルのバリエーション#
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][1] | 640 | 38.5 | 6.7 | 1.84 |
| [YOLOv10s][2] | 640 | 46.3 | 21.6 | 2.49 |
| [YOLOv10m][3] | 640 | 51.1 | 59.1 | 4.74 |
| [YOLOv10b][4] | 640 | 52.5 | 92.0 | 5.74 |
| [YOLOv10l][5] | 640 | 53.2 | 120.3 | 7.28 |
| [YOLOv10x][6] | 640 | 54.4 | 160.4 | 10.70 |
手法#
NMSフリー学習のための整合性のある二重割り当て#
YOLOv10は、トレーニング中に1対多と1対1の戦略を組み合わせたデュアルラベル割り当てを採用し、豊富なスーパービジョンと効率的なエンドツーエンドのデプロイメントを確実にします。一貫したマッチング指標により、両戦略間のスーパービジョンが整合され、推論中の予測品質が向上します。
効率と精度を包括的に重視したモデル設計#
効率の向上#
- Lightweight Classification Head: デプスワイズ分離畳み込みを使用することで、分類ヘッドの計算オーバーヘッドを削減します。
- Spatial-Channel Decoupled Down sampling: 空間縮小とチャネル変調を分離することで、情報損失と計算コストを最小限に抑えます。
- Rank-Guided Block Design: 本質的なステージの冗長性に基づいてブロック設計を適応させ、最適なパラメータ利用を確保します。
精度の向上#
- 大規模カーネル畳み込み: 受容野を拡大し、特徴抽出機能を強化します。
- Partial Self-Attention (PSA): 自己注意モジュールを組み込み、最小限のオーバーヘッドでグローバルな表現学習を改善します。
実験と結果#
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のバリエーションと他の最先端モデルの詳細な比較です。
| モデル | パラメータ (M) | FLOPs (G) | mAPval 50-95 | 遅延 (ms) | 遅延-forward (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 |
パラメータ数および FLOPs の値は、Conv レイヤーと BatchNorm レイヤーを統合し、補助的な多対1(one-to-many)検出ヘッドを削除する model.fuse() 処理後の統合モデルに関するものです。事前学習済みチェックポイントは完全な学習アーキテクチャを保持しており、より高い数値を示す場合があります。
使用例#
YOLOv10を使用して新しい画像を予測します。モデルは、Ultralytics Platformを通じてクラウドGPU上でトレーニングすることもできます。
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()カスタムデータセットでの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)サポートされるタスクとモード#
YOLOv10モデルシリーズにはさまざまなモデルが用意されており、それぞれが高性能な物体検出向けに最適化されています。これらのモデルは、さまざまな計算ニーズや精度の要件に対応するため、幅広いアプリケーションに対して汎用性を持っています。
| モデル | ファイル名 | タスク | トレーニング | バリデーション | 推論 | エクスポート |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | Object Detection | ✅ | ✅ | ✅ | ✅ |
YOLOv10のエクスポート#
YOLOv10で導入された新しいオペレーションにより、Ultralyticsが提供するすべてのエクスポート形式が現在サポートされているわけではありません。次の表は、YOLOv10に対してUltralyticsを使用して正常に変換された形式の概要を示しています。YOLOv10向けの追加形式のエクスポートサポートを追加するための貢献や変更の提供が可能な場合は、お気軽にプルリクエストを開いてください。
| エクスポートフォーマット | エクスポートサポート | エクスポート済みモデルの推論 | 注意点 |
|---|---|---|---|
| TorchScript | ✅ | ✅ | 標準のPyTorchモデル形式。 |
| ONNX | ✅ | ✅ | デプロイメントに広く対応しています。 |
| OpenVINO | ✅ | ✅ | Intelハードウェア向けに最適化されています。 |
| TensorRT | ✅ | ✅ | NVIDIA GPU向けに最適化されています。 |
| CoreML | ✅ | ✅ | Appleデバイスに限定されます。 |
| TF SavedModel | ✅ | ✅ | TensorFlowの標準モデル形式。 |
| TF GraphDef | ✅ | ✅ | レガシーなTensorFlowフォーマットです。 |
| LiteRT | ✅ | ✅ | モバイル、組み込み、ブラウザ(LiteRT.js)向けに最適化されています。 |
| TF Edge TPU | ✅ | ✅ | GoogleのEdge TPUデバイス専用です。 |
| PaddlePaddle | ❌ | ❌ | 中国で普及しており、グローバルでのサポートは限定的です。 |
| NCNN | ✅ | ❌ | レイヤー torch.topk が存在しないか、登録されていません |
結論#
YOLOv10は、従来のYOLOバージョンの欠点に対処し、革新的な設計戦略を取り入れることにより、リリース時にリアルタイム物体検出の新しい基準を打ち立てました。そのNMSフリーのアプローチは、YOLOファミリーにおけるエンドツーエンドの物体検出の先駆けとなりました。パフォーマンスが向上し、NMSフリーの推論に対応した最新のUltralyticsモデルについては、YOLO26をご覧ください。
引用と謝辞#
Tsinghua UniversityのYOLOv10著者らによる広範な研究と、Ultralyticsフレームワークへの多大な貢献に深く感謝いたします。
@inproceedings{wang2024yolov10,
title={YOLOv10: Real-Time End-to-End Object Detection},
author={Wang, Ao and Chen, Hui and Liu, Lihao and Chen, Kai and Lin, Zijia and Han, Jungong and Ding, Guiguang},
booktitle={Advances in Neural Information Processing Systems},
doi = {10.52202/079017-3429},
url = {https://proceedings.neurips.cc/paper_files/paper/2024/file/c34ddd05eb089991f06f3c5dc36836e0-Paper-Conference.pdf},
volume={37},
pages={107984--108011},
year={2024}
}詳細な実装、構造上の革新、および実験結果については、Tsinghua UniversityチームによるYOLOv10の研究論文およびGitHubリポジトリをご参照ください。
よくある質問 (FAQ)#
YOLOv10とは何ですか?また、以前のYOLOバージョンとどのように異なりますか?#
Tsinghua Universityの研究者によって開発された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()その他の使用例については、使用例セクションをご覧ください。
YOLOv10はどのようなモデルバリエーションを提供しており、それぞれのユースケースは何ですか?#
YOLOv10は、様々なユースケースに対応するため、いくつかのモデルバリエーションを提供しています:
- YOLOv10n: 非常にリソースが制限された環境に適しています
- YOLOv10s: 速度と精度のバランスが取れています
- YOLOv10m: 一般的な用途向けです
- YOLOv10b: 幅を広げた高精度モデルです
- YOLOv10l: 計算リソースを消費しますが、高い精度を実現します
- YOLOv10x: 最大限の精度とパフォーマンスを実現します
各バリエーションは異なる計算ニーズや精度の要件に合わせて設計されており、多様なアプリケーションに対して柔軟に対応できます。詳細については、モデルのバリエーションセクションをご覧ください。
YOLOv10のNMSフリーアプローチは、どのようにパフォーマンスを向上させますか?#
YOLOv10は、トレーニングに一貫したデュアル割り当てを採用することで、推論時の非最大値抑制(NMS)の必要性をなくします。このアプローチにより、推論のレイテンシが短縮され、予測効率が向上します。また、このアーキテクチャには推論用の1対1のヘッドが含まれており、各オブジェクトに対して単一の最適な予測が確実に得られます。詳細な説明については、NMSフリートレーニングの一貫したデュアル割り当てセクションをご覧ください。
YOLOv10モデルのエクスポートオプションはどこで確認できますか?#
YOLOv10は、TorchScript、ONNX、OpenVINO、TensorRTなど、いくつかのエクスポート形式をサポートしています。ただし、新しいオペレーションがあるため、Ultralyticsが提供するすべてのエクスポート形式がYOLOv10で現在サポートされているわけではありません。サポートされている形式の詳細やエクスポートの手順については、YOLOv10のエクスポートセクションをご覧ください。
YOLOv10モデルのパフォーマンスベンチマークはどのようになっていますか?#
YOLOv10は、精度と効率の両面で、従来のYOLOバージョンやその他の最先端モデルを凌駕しています。例えば、YOLOv10sはCOCOデータセットにおいて同等のAPでRT-DETR-R18よりも1.8倍高速です。YOLOv10bは、同等のパフォーマンスでありながら、YOLOv9-Cと比較してレイテンシが46%低く、パラメータ数が25%少なくなっています。詳細なベンチマークは、比較セクションに記載されています。