环境配置方式:🚀 整个过程采用远程的方式,记录树莓派部署YOLOv5s的过程。

准备:

  • 树莓派5-4B
  • 树莓派系统(安装的官方64位系统)
  • USB摄像头

获取yolov5s.pt权值文件

使用的是轻量的yolov5s模型,在本地训练后,通过命令发送发到树莓派上:

  1. 首先查看树莓派地址:
    ifconfig  # 查看地址


连接的wify,可以看到所属的地址端口。

  1. 将本地训练好的yolov5s.pt权值文件发送到树莓派上:
    scp yolov5s.pt <用户名>@<树莓派地址>:<保存文件地址>  

树莓派环境搭建

本打算参考其他博主的方法,将pt权值文件转为ONNX再利用OpenVINO转为IR模型部署到树莓派上。

在本地成功得到IR模型后,树莓派配置OpenVINO环境加速推理时,遇到问题有点多😤,准备有空再进行尝试。

树莓派中运行yolov5s的环境使用Anaconda配置和管理,步骤如下:

  • 安装Anaconda
  • 创建虚拟环境
  • 下载yolov5源码
  • 安装依赖库
  1. 安装Anaconda🌱
    下载并安装Anaconda以管理Python环境,分别在终端执行:
wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
bash Anaconda3-2021.05-Linux-x86_64.sh
  1. 创建虚拟环境并安装YOLOv5 🌱
    conda create -n yolov5 python=3.9 -y                # 创建名为yolov5的虚拟环境,并指定Python版本为3.9
    conda activate yolov5                               # 激活虚拟环境
    git clone https://github.com/ultralytics/yolov5.git # 克隆YOLOv5源码
    cd yolov5
    pip install -r requirements.txt                     # 安装YOLOv5所需的依赖库

检测图片

  1. 运行程序🌱
    python detect.py \
    --weights yolov5s.pt \   # 没有准备可省略该行,自动下载官方权值文件
    --img 320 \              # 指定图片大小,压缩图片,加快检测速度,但是清晰度降低
    --source /image/1.jpg \  # 指定图片路径
    --device cpu \           # 使用cpu进行推理

使用的cpu进行推理,速度较慢,看资料显示树莓派也是有GPU的,但是因为树莓派GPU的算力太低,所以还是使用cpu进行推理,如果想使用GPU进行推理,需要安装CUDA,而且树莓派安装CUDA比较麻烦。

  1. 检测效果如下🌱:


开启摄像头实时检测

🍋检测视频流,遇到无法弹出实时检测界面,这让之前的工作毫无成就感😳,之后通过安装lightdm来解决的。

lightdm 能够提供图形界面服务,使 OpenCV cv2.imshow() 能通过 VNC 的虚拟显示端口渲染窗口。

  1. 安装lightdm🌱
    sudo apt install lightdm                # 安装图形界面管理器
    sudo dpkg-reconfigure lightdm          # 绑定显示服务到 VNC
    sudo systemctl restart lightdm          # 重启服务使配置生效
  1. 查看摄像头🌱
    使用v4l2-ctl指令查看所有视频设备
    v4l2-ctl --list-devices

可以看到识别到的USB摄像头/dev/video0/dev/video1,使用0作为source参数。

  1. 运行程序🌱
    python detect.py \
    --weights yolov5s.pt \
    --source 0 \             # 使用摄像头(0 表示第一个摄像头)
    --view-img \             # 启用实时画面显示--img-size 320
    --device cpu
  1. 检测效果如下🌱:

🍀最终,通过远程的方式,在树莓派上成功部署了yolov5s模型,实现了实时检测的功能。检测速度差不多8-9帧/s,后续会尝试加速推理。