BaiduのRT-DETR:Vision Transformerベースのリアルタイム物体検出器#
概要#
Baiduが開発したReal-Time Detection Transformer(RT-DETR)は、高い精度を維持しながらリアルタイム性能を提供する、最先端のエンドツーエンド物体検出器です。DETR(NMSフレームワーク)を基盤としつつ、畳み込みベースのバックボーンと効率的なハイブリッドエンコーダーを導入して、リアルタイム速度を実現しています。RT-DETRは、スケール内の相互作用とスケール間の融合を分離することで、マルチスケール特徴を効率的に処理します。このモデルは高い適応性を備えており、再学習なしで異なるデコーダーレイヤーを使用して推論速度を柔軟に調整できます。RT-DETRは、TensorRTを使用したCUDAなどの高速化バックエンドで優れた性能を発揮し、他の多くのリアルタイム物体検出器を上回ります。
Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀
BaiduのRT-DETRの概要。 RT-DETRモデルのアーキテクチャ図では、バックボーンの最後の3段階 {S3, S4, S5} がエンコーダーへの入力として示されています。効率的なハイブリッドエンコーダーは、スケール内特徴の相互作用(AIFI)とスケール間特徴融合モジュール(CCFM)を通じて、マルチスケール特徴を画像特徴のシーケンスに変換します。IoU対応クエリ選択を使用して、固定数の画像特徴を選択し、デコーダーの初期オブジェクトクエリとして使用します。最後に、補助予測ヘッドを備えたデコーダーがオブジェクトクエリを反復的に最適化し、ボックスと信頼度スコアを生成します(出典)。
主な特徴#
- 効率的なハイブリッドエンコーダー: BaiduのRT-DETRは、スケール内の相互作用とスケール間の融合を分離することでマルチスケール特徴を処理する、効率的なハイブリッドエンコーダーを使用します。この独自のVision Transformerベースの設計により、計算コストを削減し、リアルタイムの物体検出を可能にします。
- IoU対応クエリ選択: BaiduのRT-DETRは、IoU対応クエリ選択を利用してオブジェクトクエリの初期化を改善します。これにより、モデルはシーン内で最も関連性の高いオブジェクトに集中でき、検出精度が向上します。
- 適応可能な推論速度: BaiduのRT-DETRは、再学習を必要とせず、異なるデコーダーレイヤーを使用して推論速度を柔軟に調整できます。この適応性により、さまざまなリアルタイム物体検出シナリオでの実用的な適用が容易になります。
- NMSフリーフレームワーク: DETRを基盤とするRT-DETRは、非最大抑制の後処理を不要にし、検出パイプラインを簡素化するとともに、効率を向上させる可能性があります。
- アンカーフリー検出: アンカーフリー検出器であるRT-DETRは、検出プロセスを簡素化し、異なるデータセット間での汎化性能を向上させる可能性があります。
事前トレーニング済みモデル#
Ultralytics Python APIは、異なるスケールの事前学習済みPaddlePaddle RT-DETRモデルを提供します。
- RT-DETR-L:COCO val2017で53.0% AP、T4 GPUで114 FPS
- RT-DETR-X:COCO val2017で54.8% AP、T4 GPUで74 FPS
さらに、Baiduは2024年7月にRTDETRv2をリリースしました。これは、性能指標を向上させることで従来のアーキテクチャをさらに改良したものです。
使用例#
この例では、RT-DETRのトレーニングと推論の簡単な例を紹介します。これらおよびその他のモードの完全なドキュメントについては、Predict、Train、Val、Exportのドキュメントページを参照してください。モデルは、Ultralytics Platformを通じてクラウドGPU上でトレーニングすることもできます。
from ultralytics import RTDETR
# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")PyTorch 2.0以降を使用してCUDA上でRT-DETRをトレーニングする場合は、deterministic=Falseを設定してください。その変形可能アテンションではF.grid_sampleを使用しますが、これは決定論的なCUDAの後方計算に対応していないため、deterministic=Trueでは実行を再現可能にできず、トレーニングスループットが低下する可能性があります。seedは、重みの初期化、データの順序、データ拡張のサンプリングを引き続き制御します。
RT-DETRの事前学習済み重みは、再学習なしでレイテンシを削減するための推論時設定を2つサポートします。
eval_idx:デコードを早期に停止します。デフォルトの6層デコーダーでは、0始まりのインデックス(0–5)を使用します。eval_idx=5はすべてのレイヤーを使用し、eval_idx=3は4層を使用します。TensorRT v10.11を使用するT4 GPU上では、RT-DETR-Lは4層で8.0 ms / 52.7 mAPから7.4 ms / 52.5 mAPに改善します。num_queries:オブジェクトクエリを削減します(デフォルト:300)。100に減らすと、同じ設定のCOCOで7.4 ms / 51.7 mAPを達成できます。画像あたりのオブジェクト数が少ないデータセットでは、通常mAPの低下はより小さくなりますが、値は画像あたりに想定される最大オブジェクト数を上回るようにしてください。
どちらの設定でもmAPが低下する可能性があるため、デプロイ前にデータセット上でトレードオフを検証してください。
from ultralytics import RTDETR
rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]
# Choose one or both settings after validating the speed/accuracy trade-off.
head.decoder.eval_idx = 3 # Use 4 of 6 decoder layers.
head.num_queries = 100 # Use fewer object queries.
results = rtdetr("path/to/image.jpg")
# Export uses the same decoder and query settings, including TensorRT exports.
rtdetr.export(format="engine", device=0, quantize=16)サポートされるタスクとモード#
このテーブルは、モデルタイプ、特定の事前学習済みウェイト、各モデルがサポートするタスク、および ✅ 絵文字で示されているサポートされているさまざまなモード(Train、Val、Predict、Export)を示しています。
| モデルタイプ | 事前学習済み重み | サポートされているタスク | トレーニング | 検証 | 推論 | エクスポート |
|---|---|---|---|---|---|---|
| RT-DETR Large | rtdetr-l.pt | オブジェクト検出 | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Extra-Large | rtdetr-x.pt | オブジェクト検出 | ✅ | ✅ | ✅ | ✅ |
rtdetr-resnet50.yamlとrtdetr-resnet101.yamlは、YAMLアーキテクチャのみとして提供されています。Ultralyticsは、rtdetr-lとrtdetr-xに対してのみ事前学習済み重みをリリースしています。ResNetバリアントはYAML(例:RTDETR("rtdetr-resnet50.yaml"))からインスタンス化し、必要に応じてトレーニングまたはファインチューニングしてください。
理想的なユースケース#
RT-DETRは、高い精度とリアルタイム性能の両方が求められるアプリケーションに特に適しています。
- 自動運転:速度と精度の両方が重要な自動運転システムで、信頼性の高い環境認識を実現します。自動運転車におけるAIについて詳しく見る。
- 高度なロボティクス:動的な環境で、正確な物体認識とインタラクションを必要とする複雑なタスクをロボットが実行できるようにします。ロボティクスにおけるAIの役割を見る。
- 医用画像:物体検出の精度が診断に不可欠となる可能性がある、ヘルスケア分野のアプリケーションに適しています。ヘルスケアにおけるAIについて見る。
- 監視システム:高い検出精度でのリアルタイム監視を必要とするセキュリティアプリケーションに適しています。セキュリティアラームシステムについて学ぶ。
- 衛星画像分析:グローバルコンテキストの理解が重要となる、高解像度画像の詳細な分析に適しています。衛星画像におけるコンピュータービジョンについて読む。
引用と謝辞#
研究または開発でBaiduのRT-DETRを使用する場合は、原論文を引用してください。
@misc{lv2023detrs,
title={DETRs Beat YOLOs on Real-time Object Detection},
author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
year={2023},
eprint={2304.08069},
archivePrefix={arXiv},
primaryClass={cs.CV}
}RTDETRv2については、2024年の論文を引用できます。
@misc{lv2024rtdetrv2,
title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
year={2024},
eprint={2407.17140},
archivePrefix={arXiv},
primaryClass={cs.CV}
}この貴重なリソースを作成・維持しているBaiduおよびPaddlePaddleチームに、コンピュータービジョンコミュニティを代表して謝意を表します。Vision Transformerベースのリアルタイム物体検出器RT-DETRの開発を通じた同チームの分野への貢献に、深く感謝いたします。
FAQ#
BaiduのRT-DETR(Real-Time Detection Transformer)は、Vision Transformerアーキテクチャを基盤に構築された高度なリアルタイム物体検出器です。効率的なハイブリッドエンコーダーにより、スケール内の相互作用とスケール間の融合を分離して、マルチスケール特徴を効率的に処理します。IoU対応クエリ選択を採用することで、モデルは最も関連性の高いオブジェクトに集中し、検出精度を向上させます。再学習なしでデコーダーレイヤーを調整して実現する適応可能な推論速度により、RT-DETRはさまざまなリアルタイム物体検出シナリオに適しています。RT-DETRの機能については、RT-DETR Arxiv論文で詳しく説明しています。
Ultralytics Python APIを活用して、事前学習済みPaddlePaddle RT-DETRモデルを使用できます。たとえば、COCO val2017で事前学習され、T4 GPUで高いFPSを実現するRT-DETR-lモデルを読み込むには、次の例を使用できます。
例from ultralytics import RTDETR # Load a COCO-pretrained RT-DETR-l model model = RTDETR("rtdetr-l.pt") # Display model information (optional) model.info() # Train the model on the COCO8 example dataset for 100 epochs results = model.train(data="coco8.yaml", epochs=100, imgsz=640) # Run inference with the RT-DETR-l model on the 'bus.jpg' image results = model("path/to/bus.jpg")BaiduのRT-DETRは、効率的なハイブリッドエンコーダーとIoU対応クエリ選択により、高い精度を維持しながら計算コストを大幅に削減できる点で優れています。再学習なしで異なるデコーダーレイヤーを使用して推論速度を調整できる独自の機能により、大きな柔軟性も実現します。そのため、TensorRTを使用するCUDAなどの高速化バックエンドでリアルタイム性能が求められるアプリケーションに特に有利であり、多くの他のリアルタイム物体検出器を上回ります。Transformerアーキテクチャは、従来のCNNベースの検出器と比較して、より優れたグローバルコンテキスト理解も提供します。
BaiduのRT-DETRは、再学習を必要とせず、異なるデコーダーレイヤーを使用して推論速度を柔軟に調整できます。この適応性は、さまざまなリアルタイム物体検出タスク間で性能を拡張するうえで重要です。低い精度要件に対してより高速な処理が必要な場合でも、低速でより正確な検出が必要な場合でも、RT-DETRは特定の要件に合わせて調整できます。この機能は、計算能力が異なるデバイス間でモデルをデプロイする際に特に有用です。
いいえ。RT-DETRでは、
max_detによって推論後に返される予測数の上限を設定できますが、デコーダーが生成するオブジェクトクエリの数は増加しません。Ultralytics RT-DETRの事前学習済みチェックポイントは300個のオブジェクトクエリを使用するため、max_detをより大きな値に設定しても、画像あたり300件を超える検出結果を返すことはできません。返される検出結果を減らすには
max_detを使用します。たとえば、高信頼度の予測結果が少数でよい場合はmax_det=100を使用します。データセットに画像あたり300個を超えるオブジェクトが含まれる可能性がある場合は、モデルYAMLでデコーダークエリ数(nq)を増やしたカスタムRT-DETRモデルをトレーニングしてください。トレーニング後に事前学習済みチェックポイントでこの値を変更しても同等にはならず、追加クエリを学習するために再トレーニングが必要です。