4、ROS使用yolov5
@ Desmond | Monday, May 1, 2023 | 1 minute read | Update at Monday, May 1, 2023

参考

环境配置:

1、装conda

执行:

bash ~/Downloads/Anaconda3-2021.05-Linux-x86_64.sh

2、创建虚拟环境

conda create -n yolo python=3.8
conda activate yolo

3、装pytorch

选择对应的版本安装PyTorch: https://pytorch.org/get-started/locally/

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia

4、代码配置

git clone https://github.com/qq44642754a/Yolov5_ros.git

把他的包下载下来后,把yolov5_ros/yolov5_ros下的yolov5文件夹 1684003654881

把yolov5_ros/yolov5_ros/scipts/yolo_v5.py复制到自己功能包的scipts里: 1684003672799

还有yolov5_ros/yolov5_ros/launch/yolo_v5.launch复制过去。然后根据你的功能包名修改: 1684003717170

5、执行和调试

此时终端启动虚拟环境后再运行roslaunch offboard_py yolo_v5.launch应该会报错无权限或者import yolov5_ros_msgs.msg error之类的。

解决办法:ros中自定义msg消息并在其他功能包中使用

在ros工作空间catkin_ws中: catkin_create_pkg yolov5_ros_msgs roscpp rospy std_msgs 把·yolov5_ros/yolov5_ros_msgs里的文件复制到这个新建的包里,然后可以参考前面链接更改msg里的package.xml或者CMakeLists.txt文件。

然后catkin build(有的人的包可能是catkin_make)。如下rosmsg show测试出现自定义的yolov5_ros_msgs为成功: 1684003941374

roslaunch offboard_py yolo_v5.launch提示,说明环境没问题了,只是没有图片输入而以。 1684003964670

6、读取图像处理

将yolo要读取的图像修改为仿真无人机的摄像头话题: 1684003994728

得到图像后还是报错: 1684004006056

pip list查看当前pytorch版本:

1684004021576

解决办法参考:AttributeError: ‘Upsample’ object has no attribute ‘recompute_scale_factor’

我是直接更换修改环境代码而不是更改pytorch版本(因为cuda版本比较高,不兼容1.10以下的pytorch):路径按报错的提示路径打开:/home/desmond/anaconda3/envs/mypytorch/lib/python3.8/site-packages/torch/nn/modules/upsampling.py

找到def forward函数改为:

def forward(self, input: Tensor) -> Tensor:
    return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)
    # return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners,
    # recompute_scale_factor=self.recompute_scale_factor)
ros
Save as image

Social Links