环境配置:
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文件夹
把yolov5_ros/yolov5_ros/scipts/yolo_v5.py复制到自己功能包的scipts里:
还有yolov5_ros/yolov5_ros/launch/yolo_v5.launch复制过去。然后根据你的功能包名修改:
5、执行和调试
此时终端启动虚拟环境后再运行roslaunch offboard_py yolo_v5.launch
应该会报错无权限或者import yolov5_ros_msgs.msg error
之类的。
在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
为成功:
roslaunch offboard_py yolo_v5.launch
提示,说明环境没问题了,只是没有图片输入而以。
6、读取图像处理
将yolo要读取的图像修改为仿真无人机的摄像头话题:
得到图像后还是报错:
pip list
查看当前pytorch版本:
解决办法参考: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)