跳到主要内容

模型推理

演示如何通过 QRB ROS NN Inference 节点在 DSP 上运行 TensorFlow Lite 模型推理,包含图像预处理、推理和结果可视化。

前提条件

方式一:开箱即用

使用 APT 安装的推理节点,仅从源码构建前后处理测试节点。

步骤 1:安装推理节点

radxa@airbox$
sudo apt install -y ros-jazzy-qrb-ros-nn-inference

步骤 2:克隆仓库并准备测试数据

radxa@airbox$
mkdir -p ~/ros-ws/src && cd ~/ros-ws/src
git clone https://github.com/qualcomm-qrb-ros/qrb_ros_nn_inference

下载测试图像:

wget -P ~/ros-ws/src/qrb_ros_nn_inference/test/qrb_ros_pre_process/image/ \
https://ultralytics.com/images/bus.jpg

将测试图像转换为模型输入格式:

radxa@airbox$
python3 ~/ros-ws/src/qrb_ros_nn_inference/test/qrb_ros_post_process/scripts/yolov8_input_pre_process.py

步骤 3:配置模型和图像路径

编辑 ~/ros-ws/src/qrb_ros_nn_inference/test/qrb_ros_post_process/launch/nn_node_test.launch.py,修改以下参数:

  • image_path:指向 bus.raw 的绝对路径
  • model_path:指向 YOLOv8 模型的绝对路径

步骤 4:构建前后处理节点

radxa@airbox$
cd ~/ros-ws
source /opt/ros/jazzy/setup.bash
rm -f ./src/qrb_ros_nn_inference/test/qrb_ros_post_process/COLCON_IGNORE
rm -f ./src/qrb_ros_nn_inference/test/qrb_ros_pre_process/COLCON_IGNORE
colcon build --packages-select qrb_ros_pre_process qrb_ros_post_process \
--cmake-args -DBUILD_TESTING=OFF

步骤 5:运行推理

radxa@airbox$
cd ~/ros-ws
source /opt/ros/jazzy/setup.bash
source install/local_setup.bash
ros2 launch qrb_ros_post_process nn_node_test.launch.py

预期日志中看到 libqrb_ros_inference_node.so/opt/ros/jazzy/lib/ 加载,推理成功后打印 Inference execute Successfully!

至少完成一次推理后按 Ctrl + C 停止。

步骤 6:可视化结果

radxa@airbox$
python3 ~/ros-ws/src/qrb_ros_nn_inference/test/qrb_ros_post_process/scripts/qrb_ros_yolo_detection_visualizer.py \
--original_image ~/ros-ws/src/qrb_ros_nn_inference/test/qrb_ros_pre_process/image/bus.jpg

检测结果位于 ~/ros-ws/src/qrb_ros_nn_inference/test/qrb_ros_post_process/inference_result/detection_result.jpg

YOLOv8 detection result

方式二:源码构建

从源码构建完整的推理链路,包含推理管理器、NN 推理节点、Tensor 消息接口和前后处理。

步骤 1:安装依赖

radxa@airbox$
sudo apt install -y software-properties-common colcon \
libtensorflow-lite-c-qcom1 libtensorflow-lite-qcom-dev \
libqnn-dev libqnn1

步骤 2:克隆仓库

radxa@airbox$
mkdir -p ~/qrb_ros_ws/src && cd ~/qrb_ros_ws/src
git clone https://github.com/qualcomm-qrb-ros/qrb_ros_nn_inference
git clone https://github.com/qualcomm-qrb-ros/qrb_ros_interfaces

步骤 3:修复 QNN 头文件路径

以下验证基于 QAIRT 2.46。该版本将 QNN 头文件安装在 /usr/include/QNN,而仓库 CMake 未包含该路径,需在 ~/qrb_ros_ws/src/qrb_ros_nn_inference/qrb_inference_manager/CMakeLists.txt 中添加:

include_directories(
include
/usr/include/QNN
)

步骤 4:构建

radxa@airbox$
cd ~/qrb_ros_ws
source /opt/ros/jazzy/setup.bash
colcon build --packages-up-to qrb_ros_nn_inference \
--allow-overriding qrb_ros_tensor_list_msgs qrb_inference_manager qrb_ros_nn_inference \
--cmake-args -DBUILD_TESTING=OFF

步骤 5:验证 overlay 生效

radxa@airbox$
source /opt/ros/jazzy/setup.bash
source ~/qrb_ros_ws/install/setup.bash
ros2 pkg prefix qrb_ros_nn_inference

应输出 ~/qrb_ros_ws/install/qrb_ros_nn_inference,确认用的是源码版本而非 APT 版。

步骤 6:运行推理

radxa@airbox$
source /opt/ros/jazzy/setup.bash
source ~/qrb_ros_ws/install/setup.bash
ros2 launch qrb_ros_post_process nn_node_test.launch.py

预期日志中看到 libqrb_ros_inference_node.so~/qrb_ros_ws/install/ 加载。

Ctrl + C 停止后,可视化步骤与方式一相同。

验证结果

两种方式对同一输入产生字节级完全一致的推理输出(SHA-256 相同)。对于 bus.jpg 测试图像,置信度 0.5 下 NMS 保留 4 个检测框:1 辆 bus、3 个 person。

    您需要登录 GitHub 才能发表评论。如果您已登录,请忽略此消息。

    Radxa-docs © 2026 by Radxa Computer (Shenzhen) Co.,Ltd. is licensed under CC BY 4.0