一、简介:
本贴分享的是如何在BeagleY-AI部署自己的yolo模型。由于使用的是TI的Edge AI SDK,我们需要把训练完的pt格式的模型转为onnx格式再使用tidl-tool转为bin格式才能运行。
二、在PC上部署TIDL环境:
我这里选择在电脑上的Ubuntu 22.04部署。
TIDL的下载网站:
https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/README.md
1. 安装系统依赖:
sudo apt-get update
sudo apt-get install libyaml-cpp-dev libglib2.0-dev
2.git下载:
cd ~
git clone https://github.com/TexasInstruments/edgeai-tidl-tools.git
cd edgeai-tidl-tools
git checkout 11_00_06_00
3.设置环境变量:
export SOC=am67a
source ./setup.sh
source ./setup_env.sh am67a
如果报错:
ERROR: Failed to build ‘git+https://github.com/NVIDIA/TensorRT@release/8.5#subdirectory=tools/onnx-graphsurgeon’ when getting requirements to build wheel
直接忽略,graphsurgeon是用于修改节点的工具,一般用不到。
三、模型转换:
1.我们需要在电脑上部署yolo训练环境和下载yolo11n.pt模型
2.转为ONNX格式:
from ultralytics import YOLO
if __name__ == "__main__":
model = YOLO(r"F:\deeplearning\yolo11n.pt")
model.export(format='onnx',simplify=True,imgsz=640,opset=11,dynamic=False)
3.将ONNX格式转为bin格式:
修改文件:
“/home/user/edgeai-tidl-tools/examples/osrt_python/model_configs.py”
在字典models_configs最后写入自己模型的配置
修改完到这个目录下:
/edgeai-tidl-tools/examples/osrt_python/ort
运行:
python3 onnxrt_ep.py -c -m my-yolo11n-custom
最后会在/edgeai-tidl-tools/model-artifacts/my-yolo11n-custom/目录下生成
编译转换后的bin文件。
再把/my-yolo11n-custom/artifacts/tempDir/下的文件都mv到artifacts/文件夹下。这是为了让他和板子里的/model_zoo中模型的文件格式一样。
最后将整个my-yolo11n-custom文件复制到板子上的model_zoo下。
四、运行模型
我们先使用CPU进行推理,看看模型转换是否成功
1.创建一个使用CPU推理的脚本:
(左为模型配置,右为推理脚本)
填入你自己的模型和图片路径,运行脚本
结果如下:
纯CPU推理太慢了,花了要900ms;接下来我们尝试自己加入DSP加速,看看能否成功。
2.尝试加入DSP加速:
创建py脚本:
运行后发现报错:
VX_ZONE_ERROR: [ownNodeKernelInit:704] Target kernel, TIVX_CMD_NODE_CREATE failed for node node_86
…
VX_ZONE_ERROR: [ TIDL subgraph /model.4/cv2/act/Mul_output_0 ] Graph verify failed
…
onnxruntime.capi.onnxruntime_pybind11_state.Fail: [ONNXRuntimeError] : 1 : FAIL : Create state function failed. Return value:-1
总结可能有以下几个原因:
1.EdgeAI-TIDL-Tools的版本与开发板的SDK版本不匹配,导致板子无法识别bin文件
2.EdgeAI-TIDL-Tools不支持yolo11n的部分算子,比如SiLU和MUL算子
关于版本匹配问题:通过官网查询TIDL-Tools与SDK的兼容表,开发板的SDK是基于Processor SDK RTOS 11.00.00.06修改的,是可以兼容我们TIDL-Tools的版本(11_00_06_00)。
关于算子支持问题:通过官网查询到TIDL-Tools的更新记录,从11_01_06_00开始支持SiLU算子,但是BeagleBoard最新的SDK还停留在11.00.00.06,所以需要等待BB官方更新才能解决。
除此之外,我也尝试使用app_edgeai.py或者在GUI界面尝试运行yolo11,也是无功而返。还尝试过yolov8等模型,也是无功而返。所以目前只支持官方提供的优化后的模型,只能等待官方更新了。
综上所述,本贴成功将yolo11n部署到BeagleY-AI开发板上运行(使用CPU推理),并且进行了目标检测。尝试加入DSP对推理进行加速,但是失败了。后续我会继续跟进和研究。
五、心得体会:
在下载TIDL的时候如果遇到依赖、组件下载失败,请换源或者代理。同时要保证你的硬盘够大,TIDL有10g多。本次遇到最大的问题就是无法打开DSP对推理进行加速,我在网络上也找不到相关的资料。同时我还发现TI的GitHub仓库里已经转换好后的模型,也不能在板子上运行,也是因为版本不兼容的问题 真让人头大。。


