Link to this sectionBaiduのRT-DETR: Vision Transformerベースのリアルタイム物体検出器#
Link to this section概要#
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認識クエリ選択が採用され、デコーダの初期物体クエリとして機能する一定数の画像特徴を選択します。最後に、補助予測ヘッドを備えたデコーダが物体クエリを反復的に最適化し、ボックスと信頼度スコアを生成します (ソース)。
Link to this section主な特徴#
- 効率的なハイブリッドエンコーダ: BaiduのRT-DETRは、スケール内の相互作用とスケール間の融合を切り離すことでマルチスケールの特徴を処理する効率的なハイブリッドエンコーダを使用しています。このユニークなVision Transformerベースのデザインは、計算コストを削減し、リアルタイムの物体検出を可能にします。
- IoU認識クエリ選択: BaiduのRT-DETRは、IoU認識クエリ選択を利用することで物体クエリの初期化を改善します。これにより、モデルはシーン内で最も関連性の高い物体に焦点を当てることができ、検出精度が向上します。
- 適応可能な推論速度: BaiduのRT-DETRは、再学習の必要なしに異なるデコーダ層を使用することで、推論速度の柔軟な調整をサポートしています。この適応性は、さまざまなリアルタイム物体検出シナリオにおける実用的な適用を容易にします。
- NMS不要のフレームワーク: DETRに基づくRT-DETRは、非最大値抑制のポストプロセッシングを不要にし、検出パイプラインを簡素化して効率を向上させる可能性があります。
- アンカーフリー検出: アンカーフリー検出器として、RT-DETRは検出プロセスを簡素化し、異なるデータセット間での汎化性能を向上させる可能性があります。
Link to this section事前学習済みモデル#
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をリリースしました。これは、強化されたパフォーマンスメトリクスにより、元のアーキテクチャをさらに改善しています。
Link to this section使用例#
この例では、シンプルな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")RT-DETRの学習済み重みは、再学習なしでレイテンシを削減するために2つの推論時設定をサポートしています:
eval_idx: デコーディングを早期に停止します。デフォルトの6層デコーダの場合、ゼロベースのインデックス(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)Link to this sectionサポートされるタスクとモード#
この表は、モデルの種類、特定の学習済み重み、各モデルがサポートするタスク、および ✅ 絵文字で示されるサポートされているさまざまなモード(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 に対してのみ学習済み重みをリリースしています。YAMLからResNetバリアントをインスタンス化し(例: RTDETR("rtdetr-resnet50.yaml"))、必要に応じて学習またはファインチューニングを行ってください。
Link to this section理想的なユースケース#
RT-DETRは、高精度とリアルタイム性能の両方が求められるアプリケーションに特に適しています:
- 自動運転: 速度と精度の双方が不可欠な自動運転システムにおいて、信頼性の高い環境認識を実現します。自動運転車におけるAIについての詳細はこちら。
- 高度なロボティクス: 動的な環境において正確な物体認識と相互作用を必要とする複雑なタスクをロボットが実行できるようにします。ロボティクスにおけるAIの役割を探る。
- 医療用画像処理: 物体検出の精度が診断に不可欠となるヘルスケア分野のアプリケーション向けです。ヘルスケアにおけるAIの詳細はこちら。
- 監視システム: 高い検出精度でリアルタイム監視を必要とするセキュリティアプリケーション向けです。セキュリティアラームシステムについて学ぶ。
- 衛星画像解析: グローバルな文脈の理解が重要となる高解像度画像の詳細な解析に適しています。衛星画像におけるコンピュータビジョンについて読む。
Link to this section引用と謝辞#
研究や開発作業で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の開発を通じた彼らの貢献は、この分野において非常に高く評価されています。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionBaiduのRT-DETRモデルとは何ですか?また、どのように機能しますか?#
BaiduのRT-DETR (Real-Time Detection Transformer) は、Vision Transformerアーキテクチャの上に構築された高度なリアルタイム物体検出器です。効率的なハイブリッドエンコーダを通じて、スケール内の相互作用とスケール間の融合を切り離すことで、マルチスケールの特徴を効率的に処理します。IoU認識クエリ選択を採用することで、モデルは最も関連性の高い物体に焦点を合わせ、検出精度を向上させます。再学習なしでデコーダ層を調整することによる適応可能な推論速度により、RT-DETRはさまざまなリアルタイム物体検出シナリオに適しています。RT-DETRの機能の詳細については、RT-DETR Arxiv論文を参照してください。
Link to this sectionUltralyticsが提供する学習済みRT-DETRモデルはどのように使用できますか?#
Ultralytics Python APIを活用して、学習済みのPaddlePaddle RT-DETRモデルを使用できます。例えば、COCO val2017で事前学習されたRT-DETR-lモデルを読み込み、T4 GPUで高いFPSを達成するには、以下の例を利用できます:
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")Link to this sectionなぜ他のリアルタイム物体検出器ではなくBaiduのRT-DETRを選ぶべきなのですか?#
BaiduのRT-DETRは、計算コストを劇的に削減しながら高精度を維持する、効率的なハイブリッドエンコーダとIoU認識クエリ選択により際立っています。再学習なしで異なるデコーダ層を使用して推論速度を調整できる独自の機能が、柔軟性を大幅に向上させます。これにより、TensorRTを搭載したCUDAのようなアクセラレーションバックエンドでリアルタイム性能が求められるアプリケーションに特に有利であり、他の多くのリアルタイム物体検出器を凌駕します。Transformerアーキテクチャは、従来のCNNベースの検出器と比較して、より優れたグローバルな文脈の理解を提供します。
Link to this sectionRT-DETRは、さまざまなリアルタイムアプリケーション向けに適応可能な推論速度をどのようにサポートしていますか?#
BaiduのRT-DETRは、再学習を必要とせずに異なるデコーダ層を使用することで、推論速度の柔軟な調整を可能にします。この適応性は、さまざまなリアルタイム物体検出タスク間でパフォーマンスをスケーリングする上で重要です。より低い精度要件でより速い処理が必要な場合でも、より遅く正確な検出が必要な場合でも、RT-DETRは特定の要件を満たすように調整可能です。この機能は、計算能力が異なるデバイス間でモデルをデプロイする際に特に価値があります。
Link to this sectionmax_detを使用して、RT-DETRで300個を超える検出結果を返すことはできますか?#
いいえ、できません。RT-DETRにおいてmax_detは推論後に返される予測数の上限を決定するものですが、デコーダーが生成するオブジェクトクエリの数を増やすものではありません。UltralyticsのRT-DETR事前学習済みチェックポイントは300個のオブジェクトクエリを使用しているため、たとえmax_detをより大きな値に設定したとしても、画像あたり300個を超える検出結果を返すことはできません。
信頼度の高い予測結果が少量のみ必要な場合は、max_det(例: max_det=100)を使用して返される検出結果の数を減らすことができます。1画像あたり300個以上の物体が含まれる可能性があるデータセットを使用する場合は、モデルYAML内のデコーダクエリ数(nq)を増やしてカスタムRT-DETRモデルをトレーニングしてください。学習済みのチェックポイントに対して学習後にこの値を変更しても同等の効果は得られず、追加のクエリを学習させるには再トレーニングが必要です。
Link to this sectionRT-DETRモデルを、学習、検証、エクスポートなどの他のUltralyticsモードで使用できますか?#
はい、RT-DETRモデルは学習、検証、予測、エクスポートを含むさまざまなUltralyticsモードと互換性があります。これらのモードの利用方法の詳細については、それぞれのドキュメントを参照してください: Train、Val、Predict、および Export。これにより、物体検出ソリューションを開発・デプロイするための包括的なワークフローが保証されます。Ultralyticsフレームワークは、異なるモデルアーキテクチャ間で一貫したAPIを提供するため、RT-DETRモデルを簡単に扱うことができます。