Toybrick

onnx模型转rknn模型显示位宽超出

11111qq

新手上路

积分
12
楼主
发表于 2025-2-12 11:09:02    查看: 193|回复: 4 | [复制链接]    打印 | 只看该作者
本帖最后由 11111qq 于 2025-2-12 11:10 编辑

target_platform选的是rk3588,onnx是双输入的模型,这个问题是什么原因引起的,求帮助
rknn模型能导出来,但是转换的时候有这个错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

jefferyzhang

版主

积分
14109
沙发
发表于 7 天前 | 只看该作者
本帖最后由 jefferyzhang 于 2025-2-13 18:07 编辑

这个一般是模型某个op位宽太大支持不了,会默认用cpu运行,你转完看下跑的是否正确,如果不正确只能改模型了。

回复

使用道具 举报

11111qq

新手上路

积分
12
板凳
 楼主| 发表于 6 天前 | 只看该作者
jefferyzhang 发表于 2025-2-13 17:47
这个一般是模型某个op位宽太大支持不了,会默认用cpu运行,你转完看下跑的是否正确,如果不正确只能改模型 ...

多谢解答,我回去研究研究。
我还有一个问题,您能帮忙解答下吗:
我有一个基于yolov5的微小目标检测的onnx模型,使用rknn_toolkit2中yolov5示例的转换代码,能够成功转换成rknn模型(没有报错)。
但是在PC端进行推理时,使用yolov5示例中自带的后处理代码,得出的结果不太对,图片画的框都是乱的。
然后将rknn模型推理得出的outputs传到原来onnx模型的后处理代码中,得出的map为0
模型转换成rknn模型推理后,不知道怎么验证输出是否正确,以及置信度边界框这些后处理要怎么修改,rknn模型和onnx模型推理得出的outputs有什么区别

回复

使用道具 举报

jefferyzhang

版主

积分
14109
地板
发表于 6 天前 | 只看该作者
11111qq 发表于 2025-2-14 08:51
多谢解答,我回去研究研究。
我还有一个问题,您能帮忙解答下吗:
我有一个基于yolov5的微小目标检测的on ...

这些你要自行深入研究下,可以提供几个思路:
1. 同一个模型同一个精度下,不管什么框架运行结果都一定一样,不一样就有问题需要调试
2.rknn可以先尝试不量化跑fp16看下结果是否和onnx一致,这里的一致是指绝对一致,包括小数点后面的几位都完全一致
3. 如果上一步一致,那就可以开始量化,量化后结果会有所不一样,但不会差别很大,如果量化后结果不一致,就要开始调量化,具体调的方式请看rknntoolkit文档,可以输出每一层量化前后精度对比。

YOLO比较经典的量化失效情况就是他最后会把两个数值范围完全不一样的节点concat在一起输出,例如一个是[0,1],另一个是[0,1000],那么concat成一个节点后0,1的组就会永远为0了。这样就需要做分组量化,或者手动拆成两个输出节点来量化。

具体问题具体研究,rknn也提供了modelzone供大家学习
回复

使用道具 举报

11111qq

新手上路

积分
12
5#
 楼主| 发表于 3 天前 | 只看该作者
jefferyzhang 发表于 2025-2-14 10:31
这些你要自行深入研究下,可以提供几个思路:
1. 同一个模型同一个精度下,不管什么框架运行结果都一定一 ...

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表