BaiduのRT-DETR:ビジョン 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 Transformersベースの設計により、計算コストが削減され、リアルタイムの物体検出が可能になります。
- 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")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 | Object Detection | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Extra-Large | rtdetr-x.pt | Object Detection | ✅ | ✅ | ✅ | ✅ |
rtdetr-resnet50.yamlとrtdetr-resnet101.yamlは、YAMLアーキテクチャとしてのみ提供されています。Ultralyticsは、rtdetr-lおよびrtdetr-xに対してのみ事前学習済みの重みをリリースしています。必要に応じて、YAMLからResNetのバリアントをインスタンス化し(例: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 Transformersベースのリアルタイム物体検出器であるRT-DETRの開発による分野への貢献に深く感謝します。
よくある質問 (FAQ)#
BaiduのRT-DETR(Real-Time Detection Transformer)は、Vision Transformerアーキテクチャに基づいて構築された高度なリアルタイム物体検出器です。効率的なハイブリッドエンコーダーを通じてスケール内相互作用とクロススケール融合を分離することで、マルチスケール特徴量を効率的に処理します。IoUアウェアクエリ選択を採用することで、モデルは最も関連性の高い物体に焦点を当て、検出精度を向上させます。再学習なしでデコーダー層を調整することで達成される適応性のある推論速度により、RT-DETRはさまざまなリアルタイム物体検出シナリオに適しています。RT-DETRの機能の詳細については、RT-DETR Arxiv paperを参照してください。
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")BaiduのRT-DETRは、効率的なハイブリッドエンコーダーとIoUアウェアクエリ選択により際立っており、高い精度を維持しながら計算コストを大幅に削減します。再学習なしで異なるデコーダー層を使用して推論速度を調整できる独自の能力により、優れた柔軟性が加わります。これにより、TensorRTを備えたCUDAのようなアクセラレーテッドバックエンドでリアルタイム性能を必要とするアプリケーションに特に有利になり、他の多くのリアルタイム物体検出器を凌駕します。トランスフォーマーアーキテクチャはまた、従来の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モデルをトレーニングしてください。トレーニング後に事前学習済みチェックポイントでこの値を変更しても同等ではなく、追加のクエリを学習するための再学習が必要です。