当前位置:   article > 正文

树莓派配置YOLOV5环境(可用跑通),并记录踩坑日常_树莓派能跑yolo吗

树莓派能跑yolo吗

引言

最近在树莓派上装用conda装yolov5的环境,不直接用树莓派自带的python3是因为我喜欢捣鼓环境,conda可以很好的解决python环境问题,而自带的python3一旦环境崩了,处理起来可能很麻烦,重装系统也费时间。
因为自己的环境部署能力还凑活,基本就是遗忘的某些步骤参考下博客,其中发现网上很多文章都存在不小的问题,而这些问题最终导致我多花费了工作量,我自己踩了一遍并记录下来。我会详细阐述搭建过程的步骤,操作的原因(自己的理解),系统和软件的版本。我将问题和解决办法分开纪录,不需要关注问题的直接看------------------解决办法-------------以下的内容即可。那么开始!!!

下载系统

这里我们在官网选择64位系统的2022-04-07版本。为什么不选择最新版是因为根据我个人习惯,我认为最新版都会存在或多或少的bug,遇到了处理起来很心累,所以选择最新版之前的版本较为稳定。
链接: https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-04-07/
下载好后用读卡器写入SD卡插上开机使用即可,这里不再多赘述。需要开机步骤的请参考其他博客。

更新镜像源

如果只是为了跑通yolov5,此步骤不需要,可以跳过。
网上很多博客给出的镜像都存在问题,要么需要密匙,添加后又不能用,要么镜像本身就有问题,sudo apt update后就报错。
下面是我实验的可用镜像源:

# /etc/apt/sources.list 替换下面的镜像
deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
# /etc/apt/sources.list.d 替换下面的镜像
deb http://mirrors.aliyun.com/raspberrypi/ buster main ui
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

之后 sudo apt update,sudo apt upgrade就没有问题。

安装miniconda

-------------------------------------------遇到问题-------------------------------------
这里我照常在网上下载miniconda并装入树莓派,以为就能用,没有多想嵌入式操作系统很多地方都不兼容这个大问题!结果就出现问题:
请添加图片描述
参考博客链接: https://blog.csdn.net/IT_lesliewu/article/details/124893143
发现是因为树莓派不能兼容高版本的miniconda,选用4.9.2及以下即可。
-------------------------------------------解决办法-------------------------------------
下载

wget https://repo.anaconda.com/miniconda/Miniconda3-py37_4.9.2-Linux-aarch64.sh
  • 1

安装

bash Miniconda3-py37_4.9.2-Linux-aarch64.sh
  • 1

后面一直回车,需要输入yes就输入yes,然后等待安装完毕。

安装虚拟环境

这一块是最神奇的地方,且听我慢慢安装,慢慢道来。
如往常一样,开启新的虚拟环境,并切换过去。(我也尝试了python3.7,发现都可以)

conda create -n new python=3.9
conda activate new
  • 1
  • 2

-------------------------------------------遇到问题-------------------------------------
这样安装好的虚拟环境的pip是不能用的,不管是pip install 还是pip -V,整个pip不能用,也是如下图:
请添加图片描述
我搜集了大量的内容,加上我自己的经验,以及我观察到的现象:猜测可能是pip版本问题。因为上面的命令默认安装的是pip的最新版,在“new”环境下pip无法使用,但是且回到“base”下pip是正常的。为了验证猜想,来看看两个环境下的pip版本
new(默认安装的最新版pip):
在这里插入图片描述
base:
在这里插入图片描述
然后我使用如下命令来指定pip版本:

conda create -n new python=3.9 pip=21.0.1
  • 1

在我以为大功告成了,奇怪的事情发生,新环境的pip依旧不能用,还是和上面一样的错误。
-------------------------------------------解决办法-------------------------------------
接着继续搜集资料呗,这篇博客给我了启示:
链接: https://blog.csdn.net/weixin_43710676/article/details/129222042
我把~/miniconda3/lib/libcrypto.so.1.1 替换~/miniconda3/envs/new/lib/libcrypto.so.1.1 解决问题
使用

pip -V
  • 1

查看版本,发现pip是最新版,没有因为替换而改变,但是能用了,很奇怪。
我不清楚原因,不过可以肯定的是,安装新环境的时候肯定是lib下的某些文件出现了问题,有兴趣的可以自己去对比看看 ~/miniconda3/lib ~/miniconda3/envs/new/lib这两个文件夹下的文件,虽然名字相同,但是有些大小却不一样,说明不是相同文件。

安装yolov5依赖环境

-------------------------------------------遇到问题-------------------------------------
这里会出现的问题在于直接用官方代码里的requirements.txt文件是不行的,python导入包的时候会依旧会出现 Illegal instruction 的问题。
-------------------------------------------解决办法-------------------------------------
原因是有些包的版本高,不兼容树莓派系统。解决办法就是改写requirements.txt,指定依赖的版本,这里是我改写的:

# YOLOv5 requirements
# Usage: pip install -r requirements.txt

# Base ----------------------------------------
matplotlib==3.7.1
pyserial==3.5
numpy==1.22.3
opencv-python==4.7.0.72
Pillow==9.2.0
PyYAML==6.0
requests>=2.23.0
scipy>=1.4.1
torch==1.12.0  # see https://pytorch.org/get-started/locally/ (recommended)
torchvision==0.13.0
tqdm>=4.64.0
# pyrealsense2
protobuf<=3.20.1  # https://github.com/ultralytics/yolov5/issues/8012

# Logging -------------------------------------
# tensorboard>=2.4.1
# wandb
# clearml

# Plotting ------------------------------------
pandas>=1.1.4
seaborn>=0.11.0

# Export --------------------------------------
# coremltools>=6.0  # CoreML export
onnx==1.12.0  # ONNX export
onnxruntime==1.13.1
# onnx-simplifier>=0.4.1  # ONNX simplifier
# nvidia-pyindex  # TensorRT export
# nvidia-tensorrt  # TensorRT export
# scikit-learn<=1.1.2  # CoreML quantization
# tensorflow>=2.4.1  # TF exports (-cpu, -aarch64, -macos)
# tensorflowjs>=3.9.0  # TF.js export
# openvino-dev  # OpenVINO export

# Deploy --------------------------------------
# tritonclient[all]~=2.24.0

# Extras --------------------------------------
ipython  # interactive notebook
psutil  # system utilization
thop>=0.1.1  # FLOPs computation
# mss  # screenshots
# albumentations>=1.0.3
# pycocotools>=2.0  # COCO mAP
# roboflow

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

如果自己的代码还不能跑,大部分就是依赖没安装完整,缺什么安装就行,如果出现Illegal instruction的问题,就降低安装依赖的版本。

还在解决上面不清楚原因的问题,未完待续。。。。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/443586
推荐阅读
相关标签
  

闽ICP备14008679号