基于MNN框架进行YOLOV5-lite部署,通过ROS进行订阅和发布。
前言:这篇文章主要介绍在linux上基于MNN部署yolov5,使用的是cpp_demo,并增加ROS相关代码,使得这个demo可以订阅topic和发布topic。
一、安装MNN
1、首先安装依赖项
//如果你安装了ros,那么应该只需要安装protobuf
install opecv
install protobuf
install cmake
2、编译安装MNN
git clone https://github.com/alibaba/MNN.git
cd MNN
mkdir bulid && cd build
sudo cmake ..
sudo make
sudo make install
ps:如果在编译过程中出现error: ‘__builtin_isnan’ is not a member of ‘std’
这种错误
提示的位置在MNN/TOOLS/CPP/testModelWithDescrisbe.cpp处,那么在这段代码的头文件 处加上#include<bits/stdc++.h>
此处参考下面链接
https://blog.csdn.net/weixin_51326570/article/details/113867325
3、安装demo
a:在https://github.com/ppogg/YOLOv5-Lite网站上将cpp-demo文件夹中的mnn抠出来
b:将抠出的mnn文件夹其作为单独的文件夹复制到主目录中,这里我将mnn改名为mnn_demo
c:编译这个文件
cd mnn_demo
mkdir bulid && cd build
sudo cmake ..
sudo make
编译后得到的结果如上图
d:下载权重文件进行测试
下载上面mnn对应的权重文件,创建一个model_zoo文件夹,将其放在这里面。
e:单张图片进行测试
注意:main程序中,读入的图片名字是1860.jpg,需要更改成你自己图片的名字,否则则会出现下面错误!
测试结果:
二、更改代码,使其可以订阅ros topic和发布ros topic
先看实现效果:
@代码已上传至github,自取
https://github.com/yuchuxiang/yolov5_ros_mnn.git
1、下载代码功能包、编译、launch、enjoy!!!
mkdir yolo_v5_ws/src -p
cd yolo_v5_ws/src
git clone https://github.com/yuchuxiang/yolov5_ros_mnn.git
cd ..
catkin_make
source devel/setup.bash
roslaunch yolov5_pkg yolo.launch