久しぶりの物体検出AIネタです。
物体検出AIのレイヤーがTransformer系(DETR)になってからしばらく経ちますが、まだまだ性能は上がっているようです。
Roboflowの「RF-DETR」もその一つと言えるでしょう。RF-DETRは2025年の3月に登場したモデルで、7月にNano/Small/MediumがHuggingFaceで配布されました。
Apache 2.0なのはありがたいですね。
RF-DETRはCOCOデータセットを用いたベンチマークで初めて60mAPを超えたモデルで、より多くのドメインやタスクへの適合性をテストするRF100でも圧倒的な性能を持ちます。(ドキュメントを読むと、ターゲットはあくまでRF-100)
(https://blog.roboflow.com/rf-detr/より)
中身はLW-DETRと事前学習済みのDINOv2バックボーンで、従来のDETRの汎化性能をより高めるために事前学習済みモデルをマージしているみたいです。
We explored pushing forward the state of the art by combining the best of modern DETRs with the best of modern pre-training. Specifically, we created RF-DETR by combining LW-DETR with a pre-trained DINOv2 backbone.
OpenVINOとC++で扱う
モデルはONNX形式で提供されているので、OpenVINOで扱うことができます。
今回はRF-DETRのROS 2ラッパーをOpenVINO&C++で作成しました。(そのうちTensorRT対応もしたい)
依存環境
OpenVINO 2023.3以降とROS-Humble以降が必要です。
インストール
依存環境をすべてインストールした後にワークスペースを作成してビルドします。
mkdir -p ~/ros2_ws/src/ cd ~/ros2_ws/src/ git clone https://github.com/Ar-Ray-code/rf_detr_ros_cpp.git cd ~/ros2_ws/ rosdep install -i --from-paths ./ colcon build --packages-up-to rf_detr_ros_cpp --cmake-args -DRF_DETR_USE_OPENVINO=ON
モデルのダウンロードが必要な場合は別途ダウンロードします。
cd ~/ros2_ws/ ./src/rf_detr_ros_cpp/weights/rf_detr/download_openvino.bash nano
実行
source ~/ros2_ws/install/setup.bash ros2 launch rf_detr_ros_cpp rf_detr_openvino.launch.py model_path:=./src/rf_detr_ros_cpp/weights/rf_detr/rf_detr_nano_coco.onnx openvino_device:=GPU

最近はAI関連は追っていなかったのですが、久しぶりに新しい情報が入ったので試してみました。
高性能なDETRがノートPCで動くようになったのは驚きですね。DETRがサクサク動くNPUとかはあるのでしょうか?試してみたいですね。
