【树莓派5+AI_KIT】基于hailo模块转换重新训练的YOLO模型
注意本篇使用yolov8模型,一般不需要额外修改模型。若要使用yolov5或其他模型,请参考:
【树莓派5+AI KIT】hailo转换自定义的yolo模型_hailo yolo-CSDN博客
或者私信博主
*********************************************
本篇尝试了最新的hailo库,只需要在原来基础上安装HailoRT即可
Hailo Dataflow Compiler = 3.31.0
Hailo Model Zoo = 2.15.0
HailoRT = 4.21.0
hailo-rpi5 的commit id为 82cfc8f
*********************************************
博主推荐使用已经打包好的wsl发行版,具体参考另一篇博客:
【树莓派5+AI KIT】hailo模型转换所需要的ubuntu开发版_树莓派5 hailo-CSDN博客
本篇主要分享树莓派5B+AI_KIT基于hailo模块转换重新训练的yolov8、yolov10模型(也即pt格式的模型转为hef格式的模型)过程中存在的坑和需要用到的步骤,关于训练和部署部分不做详细展开
一、准备工作
1、linux系统配置
hailo模块一般只能在Linux系统进行,本篇主要以Ubuntu22.04的系统展开。
这里需要选择两种路线,第一种是虚拟机,第二种是双系统。
虚拟机的配置参考以下博客:
VMware虚拟机安装Ubuntu教程(超详细)_vmware安装ubuntu-CSDN博客
windows下有nvidia-gpu服务的虚拟机wsl配置参考以下视频:
[人工智能加速]Windows下linux虚拟机gpu显卡虚拟化_哔哩哔哩_bilibili
双系统的配置参考以下视频系列:
Windows11 安装 Ubuntu 避坑指南_哔哩哔哩_bilibili
2、nvidia服务配置
有nvidia显卡且选用双系统配置的伙伴可以参考我的另外一篇博客配置nvidia服务:Ubuntu22.04安装cuda、cudnn、pytorch、tensorflow一条龙操作-CSDN博客
其中的pytorch和tensorflow安装不是必要的,可以选择不安装。
二、YOLO模型训练与转换
参考我的另外一篇博客:YOLO简单实用-CSDN博客
值得注意的是,从onnx格式转为hef格式需要onnx的版本为1.14.0,因此在训练模型的环境下运行以下命令:
pip install onnx==1.14.0
在完成训练以后,使用以下命令将yolo模型转为onnx格式:
yolo export model=./best.pt imgsz=640 format=onnx opset=11
其中imgsz为自己训练时的图像输入大小,通常为640,如果训练时更改了这里也要随之更改。

三、hailo模型转换
1、hailo模块的下载
进入hailo官网进行注册:LOG IN HAILO
https://hailo.ai/authorization/?redirect_to=https%3A%2F%2Fhailo.ai%2Fdeveloper-zone%2F

注册登陆以后选择Software Download

下载dataflow

下载model_zoo

下载HailoRT

将下载得到的3个whl文件和1个deb文件传到ubuntu系统中。
由于下载过程在没有设置代理的情况下会比较慢,或者旧版本已无法获取,也可以通过我的百度网盘分享获得:
通过网盘分享的文件:hailo_packages_5.3
链接: https://pan.baidu.com/s/1y2GxJ1x64hizpRgh7Sq8bQ 提取码: v2kt
--来自百度网盘超级会员v6的分享
2、hailo模块的安装
在ubuntu系统中完成步骤一后,创建新的环境:
conda create -n hailo python=3.10
激活环境:
source activate hailo
安装之前要提前安装会报错的库:
sudo apt-get install graphviz graphviz-dev
conda install -c conda-forge lap
安装dataflow和model_zoo:
pip install hailo_dataflow_compiler-3.31.0-py3-none-linux_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install hailo_model_zoo-2.15.0-py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
安装HailoRT:
sudo dpkg -i hailort_4.21.0_amd64.deb
pip install hailort-4.21.0-cp310-cp310-linux_x86_64.whl
验证安装:

在ubuntu系统中获取hailo_model_zoo的github文件:
sudo apt install git
git clone https://github.com/hailo-ai/hailo_model_zoo.git
将hailo_model_zoo/hailo_model_zoo复制到python环境的site-packages文件夹下(一般在~/.conda/envs/hailo/lib/python3.10/site-packages或者~/anaconda3/envs/hailo/lib/python3.10/site-packages),选择合并与替换所有重复的文件和文件夹
3、hailo数据库构建
程序已经公开在我的项目中,完成构建只需要额外安装tensorflow(是否为gpu版本均可,不影响),推荐安装2.12.0版本的tensorflow。simple_YOLO
https://github.com/guoX66/simple_YOLO
按照simple_YOLO项目完成标签标注和训练的小伙伴,可以运行步骤二下载的smple_YOLO项目中的程序,从voc(xml)格式的标签开始构建转换hailo所需要用到的coco数据格式:
cd coco_make
python voc2coco_1.py
python coco_move_2.py
python coco_json_3.py --file mytrain
python create_coco_tfrecord_4.py
其中mytrain为训练时输入的文件名,如果训练时更改了这里也要随之更改。

此时在训练文件夹下会生成class.json,作为后续使用hailo8l的detection程序需要用到的json文件。

------------------------------------------------------------------------------------------------------------------------------
如果只有yolo官方的txt标签格式的小伙伴,可以按以下目录放置数据集:
--simple_YOLO
--data
--datasets
--images
--1.jpg
--2.jpg
...
--labels
--1.txt
--2.txt
...
随后运行以下程序:
cd coco_make
python write_img_name_0.py
python txt2coco_1.py --class_file /path/to/class.yaml
python coco_move_2.py
python coco_json_3.py --class_file /path/to/class.yaml
python create_coco_tfrecord_4.py
其中class.yaml为类别顺序对应文件,参考yolo官方给出的格式,/path/to改为class.yaml文件所在路径:
class.yaml
———————————————————————————————————————————
0: hand
1: person
......
等待程序运行完毕以后在data/datasets文件夹下会有models_files文件夹。

将这个文件夹按以下命令移动到hailo默认数据位置。(如果是使用其他机器进行训练和运行转换程序的,要先将models_files文件夹传到执行模型转换的ubuntu系统中)
mkdir ~/.hailomz/data -p
cp /path/to/models_files ~/.hailomz/data -r
其中/path/to改为models_files文件夹原来所在的路径
此时coco_make文件夹会生成class.json,作为后续使用hailo8l的detection程序需要用到的json文件。

4、hailo模型转换
输入以下命令进行转换:
hailomz compile yolov8n --ckpt=best.onnx --hw-arch hailo8l --classes 30 --performance
- yolov8n :模型训练的参照,可以改为yolov10n
- --ckpt=best.onnx :你自己的best.pt转化的.onnx模型
- --hw-arch hailo8l :你购买的ai_kit硬件型号
- --classes 30 :模型检测类别的数量
- 这里可以添加参数--calib-path weights/test/images/ :校准的图像路径,但是前文已经做出对应的数据集并放到默认的路径,这里不需要额外指定
模型参照有以下模型可以选择:

这个过程需要时间较长请耐心等待。值得注意的是,前面制作数据集的时候如果图片数量小于1024张,则转换过程中不会根据数据集对模型进行优化。

由此得到了需要的HEF模型文件。
四、hailo模型部署
如果部署后,无法运行测试程序,请在以下链接获取树莓派镜像文件,重新烧录后再试。
百度网盘链接为:
通过网盘分享的文件:2024-11-19-raspios-bookworm-arm64-full.img.xz
链接: https://pan.baidu.com/s/1CjdioowDMWXWpEE-ewE_YQ 提取码: hbgr
--来自百度网盘超级会员v6的分享
1、安装所需库
这里做简要翻译
安装系统需要的库:
sudo apt update && sudo apt full-upgrade
sudo rpi-eeprom-update
sudo rpi-eeprom-update -a
用 sudo reboot 重启树莓派
安装hailo需要的库:
sudo apt install hailo-all
用 sudo reboot 重启树莓派
检查安装是否完成:
hailortcli fw-control identify
2、hailo环境部署
步骤与hailo官方资料一样:
这里做简要翻译
在树莓派5B上克隆代码库:
git clone https://github.com/hailo-ai/hailo-rpi5-examples.git
进入项目路径:
cd hailo-rpi5-examples
切换版本:
git checkout 82cfc8f
也可以点击以下链接直接下载:
https://github.com/hailo-ai/hailo-rpi5-examples/archive/refs/tags/2024-10.zip
激活环境:
source setup_env.sh
安装依赖:
pip install -r requirements.txt
其中rapidjson-dev库一般不会自动安装,若未安装请用以下命令安装:
sudo apt install -y rapidjson-dev
下载资源:
./download_resources.sh
编译程序:
./compile_postprocess.sh
3、运行检测
将步骤三得到的class.json和hef模型文件传到树莓派,激活环境后运行检测程序:
source setup_env.sh
python basic_pipelines/detection.py --input /dev/video0 --labels-json class.json --hef yolov8n.hef --show-fps
- --input /dev/video0:输入源。可以是文件,USB或RPi相机(CSI相机模块)。/dev/video0为USB相机。对于RPi相机,使用--input rpi。默认为示例视频resources/detection0.mp4
- --labels-json class.json:标签文件路径
- --hef-path yolov8n.hef:hef文件的路径
- --show-fps:显示FPS
更多推荐
所有评论(0)