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

目录

  • 引言
  • 下载系统
  • 更新镜像源
  • 安装miniconda
  • 安装虚拟环境
  • 安装yolov5依赖环境

引言

最近在树莓派上装用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

之后 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

安装

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

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

安装虚拟环境

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

conda create -n new python=3.9
conda activate new

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

conda create -n new python=3.9 pip=21.0.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

查看版本,发现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

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

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

你可能感兴趣的:(YOLO,python,linux)