树莓派5部署自己训练的YOLOv8模型记录

实验平台: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文件,待我再摸索几日......

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值