(2024.11.5)亚博树莓派5部署yolov8目标检测
我使用的是亚博树莓派5,官方已经在其SD卡中下载好最新的系统,
出厂镜像系统信息
镜像名称:Pi-OS-ROS_2024_01_05.img
原始系统版本:2023-12-05-raspios-bookworm-arm64
树莓派系统信息:
账号:pi
密码:yahboom
WiFi热点:
名称:Pi_Hot
密码:12345678
访问jupyterlab:IP:8888
jupyterlab密码:yahboom
环境:Python 3.11.2、Opencv 4.8.1、Docker、Jupyter lab
功能:开启SSH、VNC,Docker(ROS1、ROS2)、开机自启热点等
远程连接:
先用树莓派和电脑连接同一个WiFi ,树莓派开机是默认打开热点的,热点数据在上图,具体看官网
快速上手(必看)https://www.yahboom.com/build.html?id=9155&cid=618
VNC访问:
开启SSH和VNC:applications menu → Preferences → Raspberry Pi Configuration
查看架构信息
uname -m
系统信息
用户名:pi
用户密码:yahboom
热点名称:Pi_Hot
热点密码:12345678
jupyter lab的密码:yahboom
获取IP
使用Windows系统可以根据WiFi的IP地址来定位树莓派热点IP网段。
打开终端:Win+R,输入cmd回车
查看IP:终端输入ipconfig
查看已解析的IP设备:arp -a
其中10.42.0.1就是树莓派IP,若有多个设备,可以通过VNC连接不同的IP设备测试!
arp -a命令会列出本地计算机已解析的IP地址与对应的MAC地址;若使用该命令无法找到树莓派IP,可以使用Advanced IP Scanner扫描同一网段下的设备IP地址!
VNC连接
根据IP连接VNC:
右键 new 一个新的连接
输入用户名和密码:
连接成功界面:
开始部署yolov8环境
安装Miniconda
Miniconda清华源镜像,选择aarch64版本,该操作系统对应的miniconda3的版本不要超过4.10!
参考:【树莓派】树莓派安装miniconda 2023版-CSDN博客https://blog.csdn.net/weixin_43710676/article/details/129002349
下载
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.9.2-Linux-aarch64.sh
安装
chmod +x ./Miniconda3-py39_4.9.2-Linux-aarch64.sh
./Miniconda3-py39_4.9.2-Linux-aarch64.sh
source ~/.bashrc
安装完成后 指令行前会出现base 基础系统环境
创建虚拟环境
conda create -n yolov8 python=3.9 # 创建环境
conda activate yolov8 # 激活环境
如果想删除重建可以
conda env remove --name yolov8 # 删除环境
conda create -n pytorch --clone base # 克隆环境
拉取源码:
# clone慢的话直接下载到本地
git clone https://github.com/ultralytics/ultralytics
cd ultralytics #进入到源码文件夹
pip install -e . #配置环境依赖
如果下载不来可以从电脑传过去
之后将编译器的Python解释器路径改为虚拟环境下
就可以跑模型了,将文件和模型放在树莓派下,模型和代码同文件夹
test.py的代码是基础跑pt模型的
import cv2
from ultralytics import YOLO
from cv2 import getTickCount, getTickFrequency
# 加载 YOLOv8 模型
model = YOLO("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窗口
md只有2帧
于是我换了onnx模型。
直接将代码第五行改一下,环境yolov8官方已经给你弄好了,不要听网上的还要下载啥的
玩不了一点。