えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

YOLOX-ROSに関する(うれしい)Contirubuteが2件ありました

久しぶりに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のアップデートをしました。ありがとうございます🙇🙇🙇

Fix to suppress warnings of YOLOX by m12watanabe1a · Pull Request #48 · Ar-Ray-code/YOLOX-ROS · GitHub

Replace TensorRT deperecated function by fateshelled · Pull Request #49 · Ar-Ray-code/YOLOX-ROS · GitHub


これっらのアップデートによって、新たに置き換えた関数をサポートしていない過去のバージョンの依存関係が使えなくなるかもしれないので、その場合は、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もサポートしたいですね🫡