实验平台:Raspberry Pi 5 8G
使用软件:Real VNC Viewer, WinSCP,Visual Studio Code
配置环境:python3.10
Part1:连接自己的树莓派
连接使用的RealVNC Viewer
Start your free trial | RealVNC Connect
注册个账号 然后把这小玩意(RealVNC viewer)下了,登录账号后让树莓派连接你的电脑热点,再输入Pi的IP地址, 输入密码就可以进入Pi的图形界面了(记得在Pi先开启VNC权限,初始配置网上有很多资料)
Part2:搭建环境
第一步先换源
sudo nano /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian bookworm-updates main contrib non-free-firmware
sudo nano /etc/apt/sources.list.d/raspi.list
把下面的加上去
deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi bookworm main
sudo reboot
重启一下树莓派 然后
apt-get update
apt-get upgrade
自此 apt-get换源完毕
然后,安装相关包
sudo apt-get install cmake libopenblas-dev m4 libblas-dev
sudo apt-get install python3-pip python3-numpy python3-dev python3-opencv python3-matplotlib python3-torch python3-torchvision python3-torchaudio
下一步再完成miniconda的安装:
Miniconda — Anaconda documentation
下载aaarch64版本,使用bash指令安装
完成后,激活conda
conda activate
创建一个虚拟环境
conda create -n yolov8 python=3.10
自此,环境基本配置完毕,我们开始制作自己的训练集并在自己带GPU的电脑上训练模型
我使用的是WSL2环境,需要了解怎么配置可以看UP主:学不会电磁场
【yolov8】2024,半小时速通yolov8,2024最新,windows,ubuntu,wsl_哔哩哔哩_bilibili
Part3:准备模型
Roboflow: Computer vision tools for developers and enterprises
注册一个账号后建立一个工程
然后在工程里上传图片后就可以开始标注了,roboflow有AI标注功能,可以使用一下(免费的那个)
点Start Auto label
进入后会根据你的数据集给你匹配一个模型,你可以调整左上角的置信度来选择你觉得效果不错的模型帮你完成大部分的标注工作
这个AI标注使用下来感觉是越用越管用,好像是会边标注边训练,然后越标越准,你只需要标注漏标的再把误标的弄掉就行了。如果是大数据集建议用上
标注完点Generate,这些如果不需要数据增强的话直接点continue然后create就好。
点击右上角的Export Dataset,选择YOLOv8格式,下载zip即可。
现在我们就得到了自己制作的符合yolov8训练要求的数据集,可以开始训练了。
先安装我们模型需要的模块
pip3 install -r requirements.txt
这一步不出所料会出现许多次爆红...我的解决办法是看报错退出前最后一个正在下载的模块是什么.然后使用conda指令下载。报错的错误应该是pip库里没有对应的模块包 记得加上清华源或者直接换源。
使用训练代码:
#coding:utf-8
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO('ultralytics/cfg/models/v8/yolov8-SPD-Conv.yaml')
model.load('yolov8n.pt') # loading pretrain weights
model.train(data='datasets/data.yaml', epochs=150, batch=2)
开始训练:
完成后将项目通过WinSCP或RealVNC传至树莓派。
Part4:部署到树莓派并运行
conda activate yolov8
进入我们刚刚创建好的环境
记得再运行一次pip3 install -r requirements.txt
cd /home/qr/yolov8/ultralytics-8.0.227-SPV-Conv/ultralytics-8.0.227
进入项目路径
运行detect.py:
import cv2
from ultralytics import YOLO
from cv2 import getTickCount, getTickFrequency
# 加载 YOLOv8 模型
model = YOLO("runs/detect/train6/weights/best.pt")
# 获取摄像头内容,参数 0 表示使用默认的摄像头
cap = cv2.VideoCapture(0)
while cap.isOpened():
loop_start = getTickCount()
success, frame = cap.read() # 读取摄像头的一帧图像
if success:
results = model.predict(source=frame) # 对当前帧进行目标检测并显示结果
annotated_frame = results[0].plot()
# 中间放自己的显示程序
loop_time = getTickCount() - loop_start
total_time = loop_time / (getTickFrequency())
FPS = int(1 / total_time)
# 在图像左上角添加FPS文本
fps_text = f"FPS: {FPS:.2f}"
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1
font_thickness = 2
text_color = (0, 0, 255) # 红色
text_position = (10, 30) # 左上角位置
cv2.putText(annotated_frame, fps_text, text_position, font, font_scale, text_color, font_thickness)
cv2.imshow('img', annotated_frame)
# 通过按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release() # 释放摄像头资源
cv2.destroyAllWindows() # 关闭OpenCV窗口
python detect.py --source 0
成功运行:
后来成功用streamlit建立了一个前端页面,支持切换模型以及图片,视频流,本地摄像头监测。但没有AI算力的树莓派5跑yolov8还是逊...只有大概0.3fps,笔者最近也入手了Hailo-8l,得先将pt文件转为onnx文件再通过Hailo官方的DFC(数据流编译器)转化为其支持的hef文件,待我再摸索几日......