Skip to main content

使用 Raspberry Pi 5 的 AI Kit 进行 YOLOv8n 目标检测教程

note

本文档由 AI 翻译。如您发现内容有误或有改进建议,欢迎通过页面下方的评论区,或在以下 Issue 页面中告诉我们:https://github.com/Seeed-Studio/wiki-documents/issues

简介

YOLOv8(You Only Look Once 第 8 版)是 YOLO 系列中最受欢迎的实时姿态估计和目标检测模型。它基于前代模型的优势,通过引入多项速度、准确性和灵活性方面的改进进一步提升性能。Raspberry-pi-AI-kit 用于加速推理速度,配备基于 Hailo-8L 芯片构建的 13 TOPS 神经网络推理加速器。

本文档将指导您如何使用 YOLOv8n 在 Raspberry Pi 5 上通过 AI Kit 进行目标检测,从训练到部署。

准备硬件

针对 Hailo8L 13 TOPS

Raspberry Pi5 8GBRaspberry Pi AI Kit

针对 Hailo8 26 TOPS

reComputer AI R2130

安装硬件

请参考此链接

在主机电脑上

note

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

安装 Ultralytics 并训练模型:

安装 Python 3.11

sudo apt install python3.11

创建名为 yolo_env 的虚拟环境

python3.11 -m venv yolo_env

激活虚拟环境

source yolo_env/bin/activate

安装 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

创建名为 hailo_env 的虚拟环境

python3.8 -m venv hailo_env

激活虚拟环境

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 

测试 hailo_model_zoo 是否正常运行。

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

安装 COCO 数据集以评估/优化/编译 YOLOv8n 模型

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

使用 hailo_model_zoo 解析模型:

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 Pi 5 上部署。

ls

pir

在 Raspberry Pi5 上

更新系统:

sudo apt update
sudo apt full-upgrade

将 PCIe 设置为 gen2/gen3(gen3 比 gen2 更快):

/boot/firmware/config.txt 文件中添加以下内容:

#启用 PCIe 外部连接器

dtparam=pciex1

#强制使用 Gen 3.0 速度

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

将模型复制到 Raspberry Pi5:

创建一个名为 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/

修改代码

找到 object-detection-hailo.py 文件中的第 105 和 106 行,并将代码修改如下:

        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")

运行代码:

bash run.sh object-detection-hailo

结果

以下视频展示了训练 YOLOv8n 模型并将其部署到 Raspberry Pi 5 的过程。我们将批量大小设置为 8,输入大小设置为 640x640,输入视频帧率设置为 240 fps。实现的推理速度为 136.7 fps,这对于大多数应用场景来说非常快。

技术支持与产品讨论

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

Loading Comments...