コンテンツにスキップ

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

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

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



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

概要

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

アーキテクチャ

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

  1. Backbone: 特徴抽出を担当する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、レイテンシが46%少なく、パラメータが25%少ない。

パフォーマンス

T4 GPU上でTensorRT FP16を使用して測定されたレイテンシ。

モデル入力サイズAPFLOPs (G)レイテンシ(ms)
YOLOv10n64038.56.71.84
YOLOv10s64046.321.62.49
YOLOv10m64051.159.14.74
YOLOv10b64052.592.05.74
YOLOv10l64053.2120.37.28
YOLOv10x64054.4160.410.70

方法論

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

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

全体的な効率-精度重視のモデル設計

効率の向上

  1. 軽量分類ヘッド: Depth-wise separable convolutionを使用することにより、分類ヘッドの計算オーバーヘッドを削減します。
  2. 空間チャネル分離ダウンサンプリング: 空間的な縮小とチャネル変調を分離して、情報の損失と計算コストを最小限に抑えます。
  3. ランクガイド付きブロック設計: 固有のステージ冗長性に基づいてブロック設計を調整し、最適なパラメーター利用を保証します。

精度向上

  1. 大規模カーネル畳み込み受容野を拡大し、特徴抽出能力を強化します。
  2. Partial Self-Attention (PSA): 最小限のオーバーヘッドでグローバルな表現学習を改善するために、self-attentionモジュールを組み込みます。

実験と結果

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

比較

YOLOv10 SOTA天体検出器の比較

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

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

パフォーマンス

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

モデルParams
(M)
FLOPs
(G)
mAP
50-95
レイテンシ
(ms)
レイテンシ-順方向
(ms)
YOLOv6.0-N4.711.437.02.691.76
Gold-YOLO-N5.612.139.62.921.82
YOLOv8n3.28.737.36.161.77
YOLOv10n2.36.739.51.841.79
YOLOv6.0-S18.545.344.33.422.35
Gold-YOLO-S21.546.045.43.822.73
YOLOv8s11.228.644.97.072.33
YOLOv10s7.221.646.82.492.39
RT-DETR-R1820.060.046.54.584.49
YOLOv6.0-M34.985.849.15.634.56
Gold-YOLO-M41.387.549.86.385.45
YOLOv8m25.978.950.69.505.09
YOLOv10m15.459.151.34.744.63
YOLOv6.0-L59.6150.751.89.027.90
Gold-YOLO-L75.1151.751.810.659.78
YOLOv8l43.7165.252.912.398.06
RT-DETR-R5042.0136.053.19.209.07
YOLOv10l24.4120.353.47.287.21
YOLOv8x68.2257.853.916.8612.83
RT-DETR-R10176.0259.054.313.7113.58
YOLOv10x29.5160.454.410.7010.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 モデルシリーズは、高性能物体検出用に最適化された様々なモデルを取り揃えています。これらのモデルは、さまざまな計算ニーズや精度要件に対応し、幅広いアプリケーションに対応します。

モデルファイル名タスク推論検証学習エクスポート
YOLOv10yolov10n.pt yolov10s.pt yolov10m.pt yolov10l.pt yolov10x.pt物体検出

YOLOv10エクスポート

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

エクスポート形式エクスポートのサポートエクスポートされたモデルの推論注記
TorchScript標準的なPyTorchモデル形式。
ONNXデプロイメントで広くサポートされています。
OpenVINOIntelハードウェア向けに最適化されています。
TensorRTNVIDIA GPU向けに最適化されています。
CoreMLApple デバイスに限定されます。
TF SavedModelTensorFlow の標準モデル形式。
TF GraphDef従来の TensorFlow 形式。
TF Liteモバイルおよび組み込み向けに最適化されています。
TF Edge TPUGoogleの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}
}

詳細な実装、アーキテクチャ上の工夫、実験結果については、清華大学チームによる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 10のNMSアプローチはどのようにパフォーマンスを向上させるのか?

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

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

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

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

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



📅 1年前に作成されました✏️ 25日前に更新されました
glenn-jocherRizwanMunawarleonnilY-T-GLaughing-qMatthewNoyceUltralyticsAssistanthasanghaffari93zhixuweiabirami-vinaBurhan-Q

コメント