注意本篇使用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,如果训练时更改了这里也要随之更改。

659069788309458d8ad1af0c5ab5452b.png

三、hailo模型转换

1、hailo模块的下载

进入hailo官网进行注册:LOG IN HAILOhttps://hailo.ai/authorization/?redirect_to=https%3A%2F%2Fhailo.ai%2Fdeveloper-zone%2F

4e376f31dccb4b15a489fb888dd45fe6.png

注册登陆以后选择Software Download

db49297d8a604dd19fae8665ef7c6c25.png

下载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

验证安装:

44a2a928d6e84d8381c02a596970687e.png

在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_YOLOhttps://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为训练时输入的文件名,如果训练时更改了这里也要随之更改。

df0b7555da5649fea92e5c630a1073eb.png

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

17d348ae7ee54a1599e5557276cd0ef9.png

------------------------------------------------------------------------------------------------------------------------------

如果只有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文件夹。

0868ded2da434c729d7668df6fbe06c5.png

将这个文件夹按以下命令移动到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文件。

e99c0757d2de46898cccbc311420bdf9.png

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/ :校准的图像路径,但是前文已经做出对应的数据集并放到默认的路径,这里不需要额外指定

模型参照有以下模型可以选择:

38200636a6c5468fa6254ce71bbb36a1.png

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

16eba1371bd447d7b3edb7463e631b12.png

 由此得到了需要的HEF模型文件。

四、hailo模型部署

如果部署后,无法运行测试程序,请在以下链接获取树莓派镜像文件,重新烧录后再试。

https://downloads.raspberrypi.com/raspios_full_arm64/images/raspios_full_arm64-2024-11-19/2024-11-19-raspios-bookworm-arm64-full.img.xz

百度网盘链接为:

通过网盘分享的文件:2024-11-19-raspios-bookworm-arm64-full.img.xz
链接: https://pan.baidu.com/s/1CjdioowDMWXWpEE-ewE_YQ 提取码: hbgr 
--来自百度网盘超级会员v6的分享

1、安装所需库

参考树莓派官方:AI Kit - Raspberry Pi Documentationhttps://www.raspberrypi.com/documentation/accessories/ai-kit.html#about

这里做简要翻译

安装系统需要的库:

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官方资料一样:

hailo-rpi5-examples/doc/basic-pipelines.md at main · hailo-ai/hailo-rpi5-exampleshttps://github.com/hailo-ai/hailo-rpi5-examples/blob/main/doc/basic-pipelines.md

这里做简要翻译

在树莓派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

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐