久しぶりにYOLOX-ROSに更新がありました。
特に目新しいものはないですが…
YOLOX-ROS
YOLOXは2021年に公開された複数物体の検出プログラムで、YOLOX-ROSはこのYOLOXをROS追加するために作ったパッケージです。
3年前のモデルなので、AI界隈ではちょっと昔のモデルになってしまいますが、ライセンスの緩さから人気があり、たまに魔改造されているのを見かけるほどです。
しばらくは、中身を替えつつ使われ続けることでしょう。
…とはいえ、AIの推論インタフェースは定期的に入れ替わっており、OpenVINOやTensorRTで使われなくなったり新たに名前空間が変わった関数は非推奨関数となり、数年後に削除されます。
5年くらい前のTensorFlowが使われているノートブックが動かなくなっていて、調べていったら別の場所にまとめられていた…!みたいな感じです。
最新のTensorRT10では8で既に非推奨になっているものは削除されていたり、OpenVINO2024では、非推奨になっていたAPIを一掃しているらしいです。
Release Notes :: NVIDIA Deep Learning TensorRT Documentation
OpenVINO Release Notes — OpenVINO™ documentation
YOLOX-ROSはUbuntu22ベースで開発中なので、今までこれ関連のWarningは見て見ぬふりをずっとしていました。
しかし、Ubuntu24では問題が出てくると思われるので、そろそろ対応しなければいけません。
つい最近、新しいAPIに対応したPRが2件あったので、その動作確認とDockerfileのアップデートをしました。ありがとうございます🙇🙇🙇
これっらのアップデートによって、新たに置き換えた関数をサポートしていない過去のバージョンの依存関係が使えなくなるかもしれないので、その場合は、v0.3.3のバージョンで切ってください。
使用方法
TensorRT
次のバージョンで動作確認を行いました。
- OS:Ubuntu 22.04 (Linux kernel : 6.2)
- NVIDIA driver version:550
- CUDA 12.4
- TensorRT 10.1(with trtexec)
- ROS 2 Humble
TensorRTはdockerのみで動作確認を行いました
ビルド方法は次のとおり
# TensorRTの必要であれば、事前に行う source /opt/ros/humble/setup.bash git clone --recursive https://github.com/Ar-Ray-code/YOLOX-ROS -b humble ~/ros2_ws/src/YOLOX-ROS cd ~/ros2_ws/ colcon build --cmake-args -DYOLOX_USE_TENSORRT=ON
モデルのダウンロードは次のとおり
# yolox_sの場合 bash ~/ros2_ws/src/YOLOX-ROS/weights/tensorrt/convert.bash yolox_s # workspaceオプションがなくなっていたので、削除済み
実行方法は次のとおり
# 既にビルド済み source ~/ros2_ws/install/setup.bash ros2 launch yolox_ros_cpp yolox_tensorrt.launch.py model_path:=~/ros2_ws/src/YOLOX-ROS/weights/tensorrt/yolox_s.trt
OpenVINO
OpenVINOのインストールは、公式インストールガイドからUbuntu22 + APTで行いました。
Install OpenVINO™ 2024.2 — OpenVINO™ documentation
# OpenVINOのパス通しが必要であれば、事前に行う source /opt/ros/humble/setup.bash git clone --recursive https://github.com/Ar-Ray-code/YOLOX-ROS -b humble ~/ros2_ws/src/YOLOX-ROS cd ~/ros2_ws/ colcon build --cmake-args -DYOLOX_USE_OPENVINO=ON
モデルのダウンロードは次のとおり
# yolox_sの場合 bash ~/ros2_ws/src/YOLOX-ROS/weights/onnx/download.bash yolox_s
実行方法は次のとおり
# 既にビルド済み source ~/ros2_ws/install/setup.bash ros2 launch yolox_ros_cpp yolox_openvino.launch.py model_path:=~/ros2_ws/src/YOLOX-ROS/weights/onnx/yolox_s.onnx
Docker
Dockerに関しても最新バージョンに引き上げました。
過去の自分のものであっても、Dockerfileは参考になりますね…🥲(久しぶりに苦戦した)
~/ros2_wsにコードをクローンした後、 yolox_ros_cpp/docker/<対応するフレームワーク>
に入って docker compose up -d
を実行します。
# clone済みならスキップ git clone --recursive https://github.com/Ar-Ray-code/YOLOX-ROS -b humble ~/ros2_ws/src/YOLOX-ROS # tensorrtの場合 cd ~/ros2_ws/src/YOLOX-ROS/yolox_ros_cpp/docker/tensorrt/ docker compose up -d
プロセスが立ち上がったら docker compose exec <対象プロセス> /bin/bash
でdockerコンテナにアクセスします。
TODO
ひとまずHailoRTへの対応を次の目標にしています。
これがひと段落したら、Ubuntu 24・Jazzyもサポートしたいですね🫡