yolov10 目标检测rknn的C++部署来了。
特别说明:如有侵权告知删除,谢谢。
直接上代码和模型,欢迎参考交流 【完整代码和模型】
1、rknn模型准备
pytorch转onnx,onnx再转rknn模型这一步就不再赘述,请参考上一篇 【yolov10 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署,部署工程难度小、模型推理速度快】 。
2、C++ 代码
模型和图片读取部分参考rknn官方提供的示例,详细代码请参本实例对应的github仓库,代码和模型 。本实例提供的完整代码也就只包含两个.c文件和一个.h 文件,阅读起来没啥难度。
3、编译运行
1)编译
cd examples/rknn_yolov10_demo_open
bash build-linux_RK3588.sh
2)运行
cd install/rknn_yolov10_demo_Linux
./rknn_yolov10_demo
注意:修改模型、测试图像、保存图像的路径,所在文件为 src 下main.cc文件。示例使用的类别时80类,自己的数据注意修改类别,在 include 下 postprocess.h 文件。
4、板端效果
pytorch测试效果
板端rknn测试效果,冒号“:”前的数子是coco的80类对应的类别,后面的浮点数是目标得分(类别:得分)。板端效果和pytoch效果不完全一致是由于转rknn时精度有所丢失导致。若想让精度丢失的少,可以考虑使用更多、更丰富的量化图片。
5、后处理时耗
本示例用的是yolov10n,模型计算量6.7G,看到这个时耗觉得可能是有操作切换到CPU上进行计算的,查了rknn转换模型日志确实是有操作切换到CPU上进行的,对应的是模型中 PSA 模块计算 Attention 这部分操作。