Skip to main content

树莓派5 AI套件YOLOv8n目标检测教程

介绍

YOLOv8(You Only Look Once version 8)是最受欢迎的YOLO系列实时姿态估计和目标检测模型。它在前代产品的基础上,在速度、精度和灵活性方面引入了多项改进。树莓派AI套件用于加速推理速度,配备了基于Hailo-8L芯片构建的13 TOPS神经网络推理加速器。

本wiki将指导您如何在树莓派5上使用AI套件进行YOLOv8n目标检测,从训练到部署的完整过程。

准备硬件

适用于Hailo8L 13 TOPS

树莓派5 8GB树莓派AI套件

适用于 Hailo8 26 TOPS

reComputer AI R2130

安装硬件

请参考此文档

在主机上

note

我们将安装 hailo 软件,请确保您有一个 hailo 账户。

安装 Ultralytics 并训练模型

安装 python3.11

sudo apt install python3.11

Create yolo_env as your virtual environment

python3.11 -m venv yolo_env

Activate the environment

source yolo_env/bin/activate

Install ultralytics

pip install ultralytics

使用 COCO 数据集训练 YOLOv8n。如果您想训练自己的数据集,可以参考此处获取相关操作说明。

mkdir yolomodel && cd yolomodel
yolo detect train data=coco128.yaml model=yolov8n.pt name=retrain_yolov8n epochs=100 batch=16

pir

训练完成后,您将获得 best.pt 模型,如下所示:

cd ./runs/detect/retrain_yolov8n/weights/
ls

pir

.pt 模型转换为 .onnx

yolo export model=./best.pt imgsz=640 format=onnx opset=11 

结果如下所示:

pir

安装 hailo 软件

安装 python 3.8

cd ~
sudo apt install python3.8

Create hailo_env as your virtual environment

python3.8 -m venv hailo_env

Activate the environment

source hailo_env/bin/activate

安装 Hailo Dataflow Compiler 3.27,这里您需要注册 Hailo 并登录,然后下载软件。

pir

pip install hailo_dataflow_compiler-3.27.0-py3-none-linux_x86_64.whl 

安装 Model zoo,这里你需要注册 Hailo 并登录,然后下载软件。

pir

pip install hailo_model_zoo-2.11.0-py3-none-any.whl 

Test whether hailo_model_zoo is functioning correctly.

hailomz -h

pir

安装 hailo_model_zoo github 文件

cd yolomodel/runs/detect/retrain_yolov8n/weights

git clone https://github.com/hailo-ai/hailo_model_zoo.git

Install coco dataset for evaluate/optimize/compile the yolov8n model

python hailo_model_zoo/datasets/create_coco_tfrecord.py val2017
python hailo_model_zoo/datasets/create_coco_tfrecord.py calib2017

Use hailo_model_zoo to parse the model

hailomz parse --hw-arch hailo8l --ckpt ./best.onnx yolov8n

pir

使用 hailo_model_zoo 优化模型

note

如果您执行以下命令,可能会遇到一些错误。但是,您可以将 ./hailo_model_zoo/hailo_model_zoo 复制到您的本地库中。如果错误提示找不到数据集,您可以导航到 ~/.hailomz,找到数据集,并将其复制到您的本地数据集目录中。

hailomz optimize --hw-arch hailo8l --har ./yolov8n.har yolov8n

pir

使用 hailo_model_zoo 编译模型

hailomz compile  yolov8n --hw-arch hailo8l --har ./yolov8n.har 

pir

完成后,您将获得一个 hef 模型,您可以使用它在配备 AI 套件的 Raspberry Pi5 上进行部署

ls

pir

在 Raspberry Pi5 上

更新系统

sudo apt update
sudo apt full-upgrade

Set pcie to gen2/gen3(gen3 is faster than gen2)

Add following text to /boot/firmware/config.txt

#Enable the PCIe external connector

dtparam=pciex1

#Force Gen 3.0 speeds

dtparam=pciex1_gen=3

note

如果您想使用 gen2,请注释掉 dtparam=pciex1_gen=3

安装 hailo-all 并重启

在 Raspberry Pi 5 上打开终端并输入以下命令来安装 Hailo 软件

sudo apt install hailo-all
sudo reboot

检查软件和硬件

在 Raspberry Pi5 上打开终端,输入以下命令检查是否已安装 hailo-all。

hailortcli fw-control identify

正确的结果如下所示:

pir

在 Raspberry Pi5 上打开终端,输入以下命令检查 hailo-8L 是否已连接。

lspci | grep Hailo

正确的结果如下所示:

pir

克隆项目

git clone https://github.com/Seeed-Projects/Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L.git
cd Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L

Copy your model to the raspberry pi5

Make a directory named hailomodel

mkdir hailomodel
note

下面的命令应该在您的主机电脑上运行,而不是在您的 Raspberry Pi 5 上运行。请确保您的主机电脑和 Raspberry Pi 5 都连接到同一个网络。

scp -r ./yolomodel/runs/detect/retrain_yolov8n/weights/yolov8n.hef username@ip /home/pi/Benchmarking-YOLOv8-on-Raspberry-PI-reComputer-r1000-and-AIkit-Hailo-8L/hailomodel/

Change code

Find line 105 and 106 in object-detection-hailo.py, and change the code like below:

        elif args.network == "yolov8n":
self.hef_path = os.path.join(self.current_path, './hailomodel/yolov8n.hef')

object-detection-hailo.py 中找到第 172 行,并将代码修改如下:

    parser.add_argument("--network", default="yolov8n", choices=['yolov6n', 'yolov8s', 'yolox_s_leaky'], help="Which Network to use, defult is yolov6n")

Run the code

bash run.sh object-detection-hailo

结果

这是我们演示在 Raspberry Pi 5 上训练 YOLOv8n 模型并部署的视频。我们将批处理大小设置为 8,输入尺寸设置为 640x640,输入视频帧率设置为 240 fps。实现的推理速度为 136.7 fps,对于大多数应用场景来说都是非常快的。

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...