YOLOv10: リアルタイム・エンドツーエンド物体検出
2024年5月にリリースされ、Ultralytics Python パッケージの研究者らによって構築された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モデルの強みを活かしつつ、いくつかの重要な革新を導入しています。モデルアーキテクチャは以下のコンポーネントで構成されています。
- バックボーン: 特徴抽出を担うYOLOv10のバックボーンは、CSPNet(Cross Stage Partial Network)の強化版を使用しており、勾配フローを改善し、計算の冗長性を削減しています。
- ネック: ネックは、異なるスケールの特徴を集約してヘッドに渡すように設計されています。効果的なマルチスケール特徴融合のためにPAN(Path Aggregation Network)レイヤーが含まれています。
- : 従来のYOLO出力を生成し、NMS後処理を必要とします。: 学習中に物体ごとに複数の予測を生成し、豊富な教師信号を提供して学習精度を向上させます。
- One-to-Oneヘッド: 推論中に物体ごとに最適な予測を1つだけ生成することでNMSの必要性を排除し、それにより遅延を減らし効率を向上させます。
主な機能
- NMSフリー学習: 一貫した二重割り当てを利用してNMSの必要性を排除し、推論遅延.
- を削減します。全体的なモデル設計
- : 軽量な分類ヘッド、空間チャネル分離ダウンサンプリング、ランクガイド付きブロック設計など、効率と精度の両観点からさまざまなコンポーネントを包括的に最適化しています。拡張されたモデル機能: 大規模カーネル畳み込み
および部分的な自己注意モジュールを組み込み、計算コストを大幅に増やすことなくパフォーマンスを向上させます。
モデルバリエーション
- YOLOv10には、さまざまなアプリケーションのニーズに対応するための多様なモデルスケールがあります。YOLOv10n
- : 極めてリソースが制限された環境向けのNanoバージョン。YOLOv10s
- : 速度と精度のバランスをとったSmallバージョン。YOLOv10m
- : 汎用向けのMediumバージョン。YOLOv10b
- : 幅を広げて精度を向上させたバランス型バージョン。YOLOv10l
- : 計算リソースの増加と引き換えに精度を高めたLargeバージョン。YOLOv10x
パフォーマンス
: 最大限の精度とパフォーマンスを実現するExtra-largeバージョン。YOLOv10は、精度と効率の面で以前のYOLOバージョンや他の最先端モデルを上回ります。例えば、YOLOv10sはCOCOデータセットにおいて、同等のAPでRT-DETR-R18よりも1.8倍高速であり、YOLOv10bはYOLOv9-C
と比較して、同じ性能で遅延が46%少なく、パラメータ数が25%削減されています。
| モデル | 遅延はT4 GPU上でTensorRT FP16を使用して測定されました。 | APval | 入力サイズ | FLOPs (G) |
|---|---|---|---|---|
| 遅延 (ms) | 640 | [YOLOv10n][1] | 6.7 | 38.5 |
| 1.84 | 640 | [YOLOv10s][2] | 46.3 | 21.6 |
| 2.49 | 640 | [YOLOv10m][3] | 51.1 | 59.1 |
| 4.74 | 640 | 52.5 | [YOLOv10b][4] | 92.0 |
| 5.74 | 640 | 53.2 | [YOLOv10l][5] | 120.3 |
| 7.28 | 640 | 54.4 | [YOLOv10x][6] | 160.4 |
10.70
手法
NMSフリー学習のための二重割り当ての一貫性推論.
YOLOv10は、学習中にone-to-manyとone-to-oneの戦略を組み合わせた二重ラベル割り当てを採用し、豊富な教師信号と効率的なエンドツーエンドのデプロイを確実にしています。一貫したマッチング指標により両戦略間の教師信号が整合され、推論中の予測品質が向上します。全体的な効率・精度を重視したモデル設計
効率の向上
- 軽量な分類ヘッド: 深さ方向分離畳み込み(Depth-wise separable convolutions)を使用することで、分類ヘッドの計算オーバーヘッドを削減します。
- 空間チャネル分離ダウンサンプリング: 空間縮小とチャネル変調を分離することで、情報損失と計算コストを最小限に抑えます。
- ランクガイド付きブロック設計: ステージ固有の冗長性に基づいてブロック設計を適応させ、最適なパラメータ活用を実現します。
精度の向上
- 大規模カーネル畳み込み:受容野を拡大し、特徴抽出能力を強化します。
- 部分的な自己注意(PSA): 自己注意モジュールを組み込み、最小限のオーバーヘッドでグローバルな表現学習を向上させます。
実験と結果
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 | Latency (ms) | Latency-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 |
| YOLOv10には、さまざまなアプリケーションのニーズに対応するための多様なモデルスケールがあります。 | 2.3 | 6.7 | 39.5 | 38.5 | 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 |
| : 極めてリソースが制限された環境向けのNanoバージョン。 | 7.2 | 46.3 | 46.8 | 21.6 | 2.39 |
| YOLOv10は、精度と効率の面で以前のYOLOバージョンや他の最先端モデルを上回ります。例えば、YOLOv10sはCOCOデータセットにおいて、同等のAPで | 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 |
| : 速度と精度のバランスをとったSmallバージョン。 | 15.4 | 51.1 | 51.3 | 59.1 | 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 |
| : 幅を広げて精度を向上させたバランス型バージョン。 | 24.4 | [YOLOv10l][5] | 53.4 | 120.3 | 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 |
| : 計算リソースの増加と引き換えに精度を高めたLargeバージョン。 | 29.5 | [YOLOv10x][6] | 54.4 | 160.4 | 10.60 |
ParamsおよびFLOPsの値は、以下の実行後のフュージョンモデルのものです。model.fuse()、これはConv層とBatchNorm層を統合し、補助的なone-to-many検出ヘッドを削除するものです。事前学習済みチェックポイントは完全な学習アーキテクチャを保持しており、カウント数がより多くなる場合があります。
使用例
YOLOv10を使用して新しい画像を予測します。モデルは、クラウド GPU 上で学習させることも可能です。Ultralytics Platform:
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 モデルシリーズは、それぞれが高性能向けに最適化された一連のモデルを提供しています物体検出。これらのモデルは、多様な計算ニーズや精度要件に対応しており、幅広いアプリケーションに対して汎用的に使用できます。
| モデル | ファイル名 | タスク | Inference | バリデーション | トレーニング | エクスポート |
|---|---|---|---|---|---|---|
| YOLOv10 | yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt | 物体検出 | ✅ | ✅ | ✅ | ✅ |
YOLOv10 のエクスポート
YOLOv10 で導入された新しい操作のため、Ultralytics が提供するすべてのエクスポート形式が現在サポートされているわけではありません。以下の表は、YOLOv10 において Ultralytics を使用して正常に変換できた形式を示しています。もし追加の形式のエクスポートサポートを追加するための貢献の変更が可能であれば、お気軽にプルリクエストを送ってください。
| エクスポート形式 | エクスポートサポート | エクスポートされたモデルの推論 | 備考 |
|---|---|---|---|
| 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バージョンの欠点に対処し、革新的な設計戦略を取り入れることで、リアルタイム物体検出における新しい標準を確立しました。そのNMSフリーのアプローチは、YOLOファミリーにおけるエンドツーエンド物体検出の先駆けとなりました。パフォーマンスが向上し、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リポジトリ(清華大学チーム著)をご参照ください。
FAQ
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()その他の使用例については、当社の使用例 セクションを参照してください。
YOLOv10にはどのようなモデルバリエーションがあり、それぞれのユースケースは何ですか?
YOLOv10は、さまざまなユースケースに対応するためにいくつかのモデルバリエーションを提供しています:
- YOLOv10には、さまざまなアプリケーションのニーズに対応するための多様なモデルスケールがあります。: リソースが極めて制限された環境に適しています
- : 極めてリソースが制限された環境向けのNanoバージョン。: 速度と精度のバランスが取れています
- : 速度と精度のバランスをとったSmallバージョン。: 汎用的な用途
- : 汎用向けのMediumバージョン。: 幅を広げることで精度を向上
- : 幅を広げて精度を向上させたバランス型バージョン。: 計算リソースを消費する代わりに高い精度を実現
- : 計算リソースの増加と引き換えに精度を高めたLargeバージョン。: 最大限の精度とパフォーマンス
各バリエーションは、異なる計算ニーズと精度要件に合わせて設計されており、多様なアプリケーションに対応できる汎用性を備えています。および部分的な自己注意モジュールを組み込み、計算コストを大幅に増やすことなくパフォーマンスを向上させます。 セクションを参照してください。
YOLOv10のNMSフリーのアプローチは、どのようにパフォーマンスを向上させますか?
YOLOv10は、トレーニング時に一貫した二重割り当てを採用することで、推論中の非最大値抑制(NMS)の必要性を排除します。このアプローチは、推論のレイテンシを削減し、予測効率を向上させます。また、アーキテクチャには推論用に1対1のヘッドが含まれており、各オブジェクトに対して最適な予測が一つだけ行われることを保証します。詳細については、手法 セクションを参照してください。
YOLOv10モデルのエクスポートオプションはどこで確認できますか?
YOLOv10は、TorchScript、ONNX、OpenVINO、TensorRTなど、いくつかのエクスポート形式をサポートしています。ただし、YOLOv10の新しい操作の性質上、Ultralyticsが提供するすべてのエクスポート形式が現在YOLOv10でサポートされているわけではありません。サポートされている形式の詳細およびエクスポートの手順については、YOLOv10 のエクスポート セクションを参照してください。
YOLOv10モデルのパフォーマンスベンチマークはどのようになっていますか?
YOLOv10は、精度と効率の両面で、以前のYOLOバージョンや他の最先端モデルを凌駕します。例えば、YOLOv10sは、COCOデータセットにおいて、同等のAPでRT-DETR-R18よりも1.8倍高速です。YOLOv10bは、同等のパフォーマンスでYOLOv9-Cよりもレイテンシが46%低く、パラメータ数が25%少なくなっています。詳細なベンチマークは、比較 セクションを参照してください。