特别说明:参考官方开源的 yoloworld 代码、瑞芯微官方文档、地平线的官方文档,如有侵权告知删,谢谢。
模型和完整仿真测试代码,放在github上参考链接 模型和代码。
yoloworld出来的有一段时间了,还没有盘到板端上玩一玩,不把这个给整落地工作都干不起劲。落地过程也是一波三折多次想放弃,起早赶晚的抽时间干,再试一次,再试最后一次,再试最最后一次 。。。yoloworld 环境(MMDet)搭建都折腾了三次,转onnx也折腾了三次,上rknn板子又是三次(尝试rknn_toolkit2-1.3.0、rknn_toolkit2-1.6.0运行报错,最终用的rknn_toolkit2-2.0.0运行成功),都快折腾废了。
1 模型训练
训练就不多说,也没有尝试过,训练参考官方代码,本示例直接用yolov8提供的yoloworld模型(本想用腾讯提供的模型,奈何搭建环境太折腾;尝试过Huggingface导出的onnx模型,奈何规避不掉板端不支持的操作),进行板端部署。
1 导出 yolo_world onnx (yolo_world_v2_s)
尝试过用 huggingface 提供的demo导出onnx,但其中有操作(torch.einsum)板端支持不了,只能放弃作罢。用yoloworld 官方提供的导出onnx方式可以规避 torch.einsum 操作,得到可以上板子的onnx模型。导出时进行调整,导出模型示意图如下,导出的类别使用的是80类。本示例对应提供的代码只用于适用六个输出头。
2 pytorch测试效果
onnx测试效果
3 tensorRT 时耗
模型yolo_world_v2_s,导出类别80类,输入分辨率是640x640,转trt使用的fp16_mode,显卡Tesla V100,cuda_11.0。
5 rknn 板端C++部署
模型yolo_world_v2_s,导出类别80类,输入分辨率是640x640,芯片rk3588.
把在rk3588板子上测试的模特推理时耗,和用C++代码写的后处理时耗,都给贴出来供大家参考。【rk3588的C++代码参考链接】。