本人小白一枚,由于悟性很低,历经两天时间终于将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
三、我们要安装包的列表
这上面是我们一会要安装的包
四、 安装torch和torchvision
网上有很多编译的教程,我这里直接用别人编译好的torch1.8.0+torchvision0.9.0的.whl文件,下面我的百度网盘链接下载好,
链接: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看看能不能打开 这时候出现了第二个大坑
出现如下错误
这个问题我上网搜了很久,也试了很多方法,都没能成功,网上说这是由于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发现下面这两个已经没有了
此时我发现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
但是在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