cd onnx-tensorrt
mkdir build
cd build
cmake .. -DTENSORRT_ROOT=/usr/src/tensorrt
make -j4
sudo make install
onnx2trt -V
从相关资源百度云盘链接中将yolox_s.onnx、yolox_tiny.onnx、yolox_nano.onnx到Jetson Nano上,可放置于home目录下,并依次执行 以下命令:
onnx2trt yolox_s.onnx -o yolox_s.engine
onnx2trt yolox_tiny.onnx -o yolox_tiny.engine
onnx2trt yolox_nano.onnx -o yolox_nano.engine
若要自己生成.onnx文件,请进入以下链接:
yolox导出onnx
四、从github克隆cv-detect-ros
项目,并将本人设计好的yolox-ros-deepstream
子项目的相关子文件夹拷贝到相应目录下进行编译
从github克隆cv-detect-ros
项目(建议在搭建梯子的环境下进行git clone)
先按 ctrl + alt +t
进入终端(默认克隆的文件在家目录下)
git clone https://github.com/guojianyang/cv-detect-ros.git
首先对我们所要操作的文件夹赋予权限
sudo chmod -R 777 /opt/nvidia/deepstream/deepstream-5.1/sources/
再拷贝cv-detect-ros/yolox-ros-deepstream/yolox-ros文件夹到opt/nvidia/deepstream/deepstream-5.1/sources/
yolox-ros中的文件内容如下图所示:
sudo cp ~/cv-detect-ros/yolox-ros-deepstream/yolox-ros /opt/nvidia/deepstream/deepstream-5.1/sources/
拷贝步骤(三)中生成的yolox、yolox-tiny和yolox-nano的engine文件到opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
cp ~/yolox_s.engine /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
cp ~/yolox_tiny.engine /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
cp ~/yolox_nano.engine /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
CUDA_VER=10.2 make -C nvdsinfer_custom_impl_yolox
对于yolox-tiny和yolox-nano的部署, nvdsparsebbox_yolox.cpp中先修改
static const int INPUT_W = 416; //640;
static const int INPUT_H = 416; //640;
然后在进行编译
搭建自定义的rostpoic话题消息的工作空间boxes_ws,建立ros接口
将git clone 的文件夹cv-detect-ros/yolovx-ros-deepstream/boxes_ws复制到home目录下
sudo cp -r ~/cv-detect-ros/yolox-ros-deepstream/boxes_ws ~/
进入boxes_ws文件夹,编译ros工作空间
cd ~/boxes_ws
boxes_ws目录下若有 build和devel文件,则需删除后再编译,否则无需执行本步骤
rm -r build devel
catkin_make
编译成功后,需将boxes_ws工作空间添加环境变量
sudo gedit .bashrc
echo "source ~/boxes_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
将src下功能包darknet_ros_msgs建立软连接至/opt/nvidia/deepstream/deepstream-5.1/sources/yolovx-ros/目录下
cd ~/boxes_ws/src
ln -s ~/boxes_ws/src/ darknet_ros_msgs /opt/nvidia/deepstream/deepstream-5.1/sources/yolovx-ros/
测试ros接口是否成功建立
cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolovx-ros/
在当前目录终端下运行`python2`(一定要python2),并导入以下功能包:
from darknet_ros_msgs.msg import BoundingBox_tensor,BoundingBoxes_tensor
若以上导入没有报错,则说明ros接口创建成功!!!
五、落地部署测试
测试推理视频文件
启动检测程序(启动成功后会出现检测画面)
cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros
deepstream-app -c deepstream_app_config.txt
将yolox-ros-deepstream中的client_ros.py文件复制到/opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/中
cp -r ~/cv-detect-ros/yolox-ros-deepstream/client_ros.py /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/
ctrl + alt +t
新建终端,启动roscore
roscore
再ctrl + alt +t
新建一个终端,并进入目录/opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/
cd /opt/nvidia/deepstream/deepstream-5.1/sources/yolox-ros/
python2 client_ros.py
client_ros.py文件启动后,检测到的目标数据以topic的形式发布出来,可通过订阅话题boundingboxes_tensor
实时查看目标检测的数据
如下图所示: