将Yolov5s部署树莓派4B上自己的过程和遇到的问题

本人小白一枚,由于悟性很低,历经两天时间终于将yolov5s部署到了树莓派上

一、更换源

拿到树莓派,装好系统(自己可以看一看装系统的视频很简单),要将树莓派自带的源更换为国内源,可能是学校的网的原因也不知道什么原因,更换好清华源之后,输入

sudo apt-get update

sudo apt-get upgrade

就会出现暂时不能解析域名的错误,很头疼,这也是我遇到的第一个大坑

具体的更换源步骤和解决上面这个问题的方法在这篇文章里l

https://blog.csdn.net/weixin_54603153/article/details/119876008?spm=1001.2014.3001.5501、

二、进行一些必要的更新和安装

sudo apt-get update
sudo apt-get dist-upgrade
sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools
sudo apt-get install libavutil-dev libavcodec-dev libavformat-dev libswscale-dev

三、我们要安装包的列表

将Yolov5s部署树莓派4B上自己的过程和遇到的问题_第1张图片

这上面是我们一会要安装的包

四、 安装torch和torchvision

网上有很多编译的教程,我这里直接用别人编译好的torch1.8.0+torchvision0.9.0的.whl文件,下面我的百度网盘链接下载好,

将Yolov5s部署树莓派4B上自己的过程和遇到的问题_第2张图片

链接:https://pan.baidu.com/s/1ZqIsYIL1spPopqYeuvFkMQ 
提取码:f0i9

cd /home/pi  #先cd到这个文件解压的目录
sudo python3.7 -m pip install 文件名

五、安装Cython

sudo apt-get install python3-cython

六、安装matplotlib

sudo apt-get install python3-matplotlib

七、安装numpy

先安装支持包

sudo apt-get install libatlas-base-dev

在安装本身

sudo python3.7 -m pip install numpy

这时候出现这个问题

在这里插入图片描述

输入以下指令

sudo python3.7 -m pip install --target=/usr/lib/python3/dist-packages numpy

 在原代码install后面加上–target=“提示后面的地址”和包名,后面遇到这样的问题解决方案相同。

八、安装opencv-python

我们这里就不编译了太慢了,直接吃现成的

先安装支持包

sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y

在安装本身

sudo python3.7 -m pip install opencv-python


这时我想试一试刚才安装的opencv-python有没有成功

输入指令 pip3 list 发现里面有opencv-python

于是我输入python3打开环境,接着输入import cv2看看能不能打开 这时候出现了第二个大坑

出现如下错误

将Yolov5s部署树莓派4B上自己的过程和遇到的问题_第3张图片

这个问题我上网搜了很久,也试了很多方法,都没能成功,网上说这是由于numpy版本过高或者过低的原因,我的numpy是1.21.2版本最新的。

于是我尝试删除numpy,输入指令 sudo pip3 uninstall numpy,出现如下错误

说是找不到这个东西,但是我在pip3 list中看到它是有的,而且在python3环境下inport numpy也可以打开,但是就是没法卸载,可能是我的指令有问题

于是我换了一个指令

sudo apt-get remove python3-numpy

其中python3是numpy包的所在地,要指名包所在地,如果你的numpy在python2中,这里就要改成python2,如果不输入python3就会出现下面问题

 成功卸载numpy包,我进/usr/lib/python3/dist-packages发现下面这两个已经没有了

将Yolov5s部署树莓派4B上自己的过程和遇到的问题_第4张图片

此时我发现pip3 list还是有一个numpy包,我进入安装包的地址/usr/lib/python3/dist-packages发现里面还有一个numpy-1.21.1.egg-info文件夹,我也不知道这个文件夹是什么时候生成的,可能是在第七步输入sudo python3.7 -m pip install --target=/usr/lib/python3/dist-packages numpy,时候生成的,

就是因为有这个文件夹的存在,所以我安装新的numpy包时候,会说我已经有这个包了。

此时输入命令

rm -f /usr/lib/python3/dist-packages/文件名

就可以把这个文件删除了

此时我再pip3 list就没有看到numpy了,而且在python3环境下import numpy也可以打不开了

此时再重新输入命令

sudo python3.7 -m pip install numpy

就成功安装了numpy1.21.1,而且也可以在python3环境下import cv2了

所以说明出现开头那个错误并不是numpy版本不兼容的问题,而是我当时在第七步的安装numpy的时候没有安装好(好像是安装了两个版本的numpy)

具体什么原因现在也不太清楚,反正解决方法就是我这个,先给numpy包卸载了,然后用指令给numpy xxx info文件夹也删了,然后重新安装一下numpy。就OK了



九、安装pillow

安装支持包

sudo apt-get install libjpeg-dev

安装本身

sudo python3.7 -m pip install pillow

十、安装pyyaml

sudo python3.7 -m pip install pyyaml

十一、安装scipy

 sudo python3.7 -m pip install scipy

十二、安装tensorboard

 sudo python3.7 -m pip install tensorboard

十三、安装tqdm

sudo python3.7 -m pip install tqdm

十四、检验是否安装成

输入python3进入环境,依次一个一个输入import xx 看看能不能正常打开,都成功了说明上面的都安装好了。

不过我输入pillow、cython、pyyaml

将Yolov5s部署树莓派4B上自己的过程和遇到的问题_第5张图片

但是在pip3 list中也能找到这些包的存在,我很费解,不过最后可以成功的运行detect.py,我也没有去管他

十五、运行detect.py

首先在树莓派上打开yolov5的文件夹

cd /home/pi/hky/yolov5-5.0
sudo python3.7 detect.py

这时候会报错说 matplotlib>=3.2.2,我们安装的不符合条件,我的做法是把requirements.txt中的这一条直接删去,没什么影响。

然后可能还会有一些包没有安装报错,我们直接sudo python3.7 -m pip install xx即可

最后成功运行可以检测,不过效果很不理想,大概3-4秒一帧吧

以上就是我部署的整个过程和其中遇到的大坑,我主要的博文参看的是:

https://blog.csdn.net/m0_46295742/article/details/112967918

https://blog.csdn.net/qq_44166630/article/details/119647498

你可能感兴趣的:(opencv,python,pytorch)