1.首先是版本问题
由于硬件为RK1808,本次采用rknn-toolkit 1.7.1进行模型转换和验证。
将pt模型部署在硬件上需要使用C++编程部署,并且需要将pt模型转化为RK可接受的模型。
① 目前硬件环境RK仅能解析yolov5 5.*版本的模型,对于yolov5更新后的6.0版本,硬件并不支持。
因为yolov5 5.*模型输出形式为三组数据,而yolov5 6.*输出为一组数据。(个人觉得是后期数据处理不同,并不影响检测结果的输出,但是要用于rknn的部署,就麻烦很多)
② 关于rknn转换代码,目前采用rknn_model_zoo能够实现对yolov5 模型的转化,相较之前转换文档,该文档参数清晰明了,方便操作。
2.转换流程
1)训练pt模型best.pt,本次采用yolov5 5.*版进行训练及转换,通过yolov5官方文档中的./model/export.py转化为onnx模型,即best.onnx。
如果在转换过程中出现下面的报错:
AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘model\\common.py‘
则需要修改common.py文件,在里面参考博文https://blog.youkuaiyun.com/magicnnonn/article/details/124343085添加如下代码:
import warnings
class SPPF(nn.Module):
# Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher