目录
一、树莓派环境初步安装:
二、YOLOV8模型训练:
三、模型转换:PT转ONNX
四、模型转换:ONNX模型转HEF模型
五:模型部署
先看一下效果:
可以看到平均帧数可达134。
硬件介绍:
一、树莓派环境初步安装:
参考:分享个人树莓派5B安装AI Kit Hailo-8(L)的环境的经历_树莓派 和 hailo 8l-CSDN博客
在这一步主要是执行:
sudo apt install hailo-all
这将安装以下依赖项:
Hailo内核设备驱动程序和固件
Hailo中间件软件
Hailo Tappas核心后处理库
这rpicam-apps
Hailo后处理软件演示阶段
二、YOLOV8模型训练:
参考:
YOLOv8教程系列:一、使用自定义数据集训练YOLOv8模型(详细版教程,你只看一篇->调参攻略),包含环境搭建/数据准备/模型训练/预测/验证/导出等_yolov8训练自己的数据集-CSDN博客
如果没有本地GPU可以利用云端免费GPU来加快训练。参考:训练YOLOv5模型(云端GPU)_哔哩哔哩_bilibili 。
三、模型转换:PT转ONNX
由于AI_KIT Hailo使用的是HEF模型,使用我们需要将训练得到的.pt模型文件转化成HEF模型文件,这里我们需要先转化成ONNX模型
在你的电脑上,使用指令:
yolo export model=./best.pt imgsz=640 format=onnx opset=11
注意imgsz为你自己训练时的图像输入大小,通常为640,如果你训练时更改了这里也需要更改。
四、模型转换:ONNX模型转HEF模型
这一步后比较麻烦,需要一些耐心。
1.首先我们需要准备一个linux_x86_64的系统,我们可以下一个乌班图虚拟机来达到要求:
打开乌班图系统输入:
uname -m
可以看到符合要求。
2.安装Hailo数据流编译器,这里需要注册Hailo并登录,下载软件。
进入Hailo官网注册账号,
如下进行下载选择并下载:
安装Model zoo,这里需要注册Hailo并登录,下载软件。
如下进行下载选择并下载:
得到如下两个文件:
将这两个文件放入虚拟机中。 在虚拟机中执行:
pip install hailo_dataflow_compiler-3.28.0-py3-none-linux_x86_64.whl pip install hailo_model_zoo-2.12.0-py3-none-any.whl
这一步需要下载资源需要时间较长,如果发现下载过慢可进行换源下载。
-i https://pypi.tuna.tsinghua.edu.cn/simple
如果虚拟机无法上网请参考:虚拟机下Ubuntu上网设置_ubuntu虚拟机怎么连接网络-CSDN博客
安装完成后输入:
hailomz -h
看到如下证明安装成功:
3.安装hailo_model_zoo github文件
虚拟机输入:
git clone https://github.com/hailo-ai/hailo_model_zoo.git
下载coco数据集:
python hailo_model_zoo/datasets/create_coco_tfrecord.py val2017python hailo_model_zoo/datasets/create_coco_tfrecord.py calib2017
由于这个数据非常大所以需要确保虚拟机有足够的空间(大约需要35g),可以使用gparted来进行虚拟机硬盘扩容。扩容参考:【转】Linux虚拟机vmware中使用gparted调整磁盘大小并设置swap分区 - 一棵梧桐树 - 博客园
如果不想使用YOLOV8官方模型来转化可以不下载。
4.执行转化
将hailo_model_zoo/hailo_model_zoo复制到你的python环境下(一般在.local/lib/python3.8/site-packages/)
输入:
hailomz compile yolov8n --ckpt=best.onnx --hw-arch hailo8n --calib-path weights/test/images/ --classes 1 --performance
请将各个参数更换成你自己的参数:
yolov8n :模型训练的参照--ckpt=best.onnx :你自己的best.pt转化的.onnx模型--hw-arch hailo8l :你购买的ai_kit硬件型号--calib-path weights/test/images/ :校准的图像路径--classes 1 :模型检测类别的数量
这个过程需要时间较长请耐心等待。
由此得到了我们所需要的HEF模型文件。
五:模型部署
1.硬件安装与检测:https://www.raspberrypi.com/documentation/accessories/ai-kit.html#about
2. 环境与库包,在树莓派上克隆存储库,输入:
git clone https://github.com/hailo-ai/hailo-rpi5-examples.git
进入存储库目录:
cd hailo-rpi5-examples
直接运行环境配置脚本:
source setup_env.sh
在python虚假环境中安装依赖包:
pip install -r requirements.txtsudo apt install -y rapidjson-dev
资源下载与处理编译:
./download_resources.sh./compile_postprocess.sh
之后便可在树莓派上运行了:
python basic_pipelines/detection.py --labels-json resources/my-labels.json --hef resources/my.hef -input resources/fish1.mp4 --show-fps --dump-dot
python :python执行代码basic_pipelines/detection.py :识别代码地址--labels-json resources/my-labels.json :类标签地址,参考resources/barcode-labels.json--hef resources/my.hef :模型文件地址-input rpi :输入源:rpi为树莓派内嵌摄像头;/dev/video2为USB摄像头(偶数);resources/fish1.mp4视频输入--show-fps :显示帧数--dump-dot :将管道图转储到dot文件
开始识别,由于我测试的输入源最大为30fps,所以跑出来稳定在30fps,从树莓派社区与Hailo社区可以看到:我们将批处理大小设置为8,输入大小设置为640x640,输入视频帧速率设置为240 fps。达到的推理速度为136.7 fps,对于大多数应用场景来说都是异常快的。
相关参考连接:
Hailo · GitHub
Getting Started with Seeed Studio Wiki Platform | Seeed Studio Wiki
https://www.raspberrypi.com/documentation/accessories/ai-kit.html#about
The World’s Top Performing Edge AI Processor For Edge Devices
https://www.youtube.com/watch?v=mVNrEVpvvuc&t=58s