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モデルアーキテクチャ概要 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は、非最大値抑制 (NMS) の後処理を不要にし、検出パイプラインを簡素化して効率を向上させています。
  • アンカーフリー検出: アンカーフリー検出器である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の学習および推論の実装例を紹介しています。これらや他のモードに関する詳細なドキュメントについては、PredictTrainVal、および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層デコーダの場合、ゼロから始まるインデックス(05)を使用します。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, half=True)

サポートされているタスクとモード

この表は、モデルの種類、特定の学習済みウェイト、各モデルがサポートするタスク、および ✅ 絵文字で示されたサポートされている様々なモード(TrainValPredictExport)を提示しています。

モデルタイプ事前学習済み重みサポートタスク推論 (Inference)検証学習Export
RT-DETR Largertdetr-l.pt物体検出
RT-DETR Extra-Largertdetr-x.pt物体検出
アーキテクチャのみのバリアント

rtdetr-resnet50.yaml および rtdetr-resnet101.yaml は、YAMLアーキテクチャとしてのみ提供されています。Ultralyticsは rtdetr-l および rtdetr-x のみに学習済みウェイトをリリースしています。ResNetバリアントはYAMLからインスタンス化し(例:RTDETR("rtdetr-resnet50.yaml"))、必要に応じて学習または微調整を行ってください。

理想的な使用ケース

RT-DETRは、高い精度とリアルタイム性能の両方が求められるアプリケーションに特に適しています:

引用と謝辞

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モデルとは何か、そしてどのように機能するのか?

BaiduのRT-DETR (Real-Time Detection Transformer) は、Vision Transformerアーキテクチャの上に構築された高度なリアルタイム物体検出モデルです。効率的なハイブリッドエンコーダを通じて、スケール内相互作用とスケール間融合を分離し、マルチスケール特徴を効率的に処理します。IoU認識型クエリ選択を採用することで、モデルは最も関連性の高いオブジェクトに焦点を合わせ、検出精度を向上させます。再学習なしでデコーダ層を調整することで実現される適応可能な推論速度により、RT-DETRはさまざまなリアルタイム物体検出シナリオに適しています。RT-DETRの機能については、RT-DETR Arxiv論文で詳しく説明されています。

Ultralyticsが提供する学習済み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")

なぜ他のリアルタイム物体検出器ではなくBaiduのRT-DETRを選ぶべきか?

BaiduのRT-DETRは、効率的なハイブリッドエンコーダとIoU認識型クエリ選択により、高い精度を維持しながら計算コストを劇的に削減します。再学習なしでデコーダ層を調整して推論速度を変更できる独自の機能により、大幅な柔軟性が得られます。このため、TensorRTを用いたCUDAのようなアクセラレーションバックエンドでのリアルタイム性能が必要なアプリケーションにおいて、他の多くのリアルタイム物体検出モデルを上回る大きな利点があります。Transformerアーキテクチャは、従来のCNNベースの検出モデルと比較して、より優れたグローバルなコンテキスト理解を提供します。

RT-DETRは、さまざまなリアルタイムアプリケーション向けに適応可能な推論速度をどのようにサポートしているか?

BaiduのRT-DETRは、再学習を必要とせず、異なるデコーダ層を使用することで推論速度を柔軟に調整できます。この適応性は、様々なリアルタイム物体検出タスクにわたって性能をスケーリングするために重要です。低い精度でよいから高速処理が必要な場合でも、より正確な検出が必要な場合でも、RT-DETRは特定の要件を満たすようにカスタマイズ可能です。この機能は、計算能力が異なるデバイス間でモデルをデプロイする際に特に価値があります。

RT-DETRモデルは、学習、検証、エクスポートなどの他のUltralyticsモードで使用できるか?

はい、RT-DETRモデルは、学習、検証、予測、エクスポートを含む様々なUltralyticsモードと互換性があります。これらのモードの利用方法に関する詳細な手順については、それぞれのドキュメントを参照してください:TrainValPredict、およびExport。これにより、物体検出ソリューションの開発とデプロイメントのための包括的なワークフローが保証されます。Ultralyticsフレームワークは、異なるモデルアーキテクチャ間で一貫したAPIを提供しているため、RT-DETRモデルを簡単に扱うことができます。

コメント