pt模型转化为rknn的常见问题整理

首先说明本次转换模型最终采用训练模型torch版本1.8.0+cu111、Python3.7.13;
转换采用的rknntoolkit版本为1.7.1、torch版本为1.6、Python3.6;
本次待转换模型为自训练的yolov5s模型,整个转换过程分两步:
pt模型转化为onnx,然后将onnx通过rknntoolkit转化为rknn模型;
可能遇到问题如下:
1、版本问题,yolov5转化代码export.py中这句话,解决了版本兼容的问题,但是pt模型只有在torch1.8.0版本和1.9.0版本下才能转化成功(but 1.9.0我没有试过,毕竟版本差距太大)。

m._non_persistent_buffers_set = set()  # pytorch 1.6.0 compatability

2、rknn中不支持pytorch+GPU因此需要转化成CPU模型(本次采用rknntoolkit不支持GPU,如有GPU模型转换成功,还请多指教)
在这里插入图片描述
3、若出现错误
pt模型转化为rknn的常见问题整理_第1张图片
需将源代码:session = onnxruntime.InferenceSession(w, None)
改为:session = onnxruntime.InferenceSession(w,providers=['TensorrtExecutionProvider','CUDAExecutionProvider', 'CPUExecutionProvider'])
4、numpy版本问题
pt模型转化为rknn的常见问题整理_第2张图片
解决:
numpy版本太高:改成1.16.3版本

pip install --upgrade numpy==1.16.3

5、在pt转onnx时,出现onnxruntime与CUDA版本不匹配问题
在这里插入图片描述
请参照官网的版本对应关系下载安装onnxruntime。
6、如果采用pt直接转化为rknn模型,出现下面错误:
pt模型转化为rknn的常见问题整理_第3张图片
这是rknntoolkit1.7.1版本的bug,更新下一个版本就可以了(并不知道下一个版本是否更新);所以还需将pt转化为onnx再转化为rknn更稳妥。

最后,转换模型测试一下,输出结果:
pt模型转化为rknn的常见问题整理_第4张图片
解决错误,也是进步的一种~~

你可能感兴趣的:(后端)