Toybrick

同一个模型和代码,同一张图,两次运行结果不一致

jefferyzhang

版主

积分
13007
楼主
发表于 2024-4-11 09:31:27 | 显示全部楼层
如果是rknn2建议转onnx再转rknn。
如果是rknn1建议用pt直接转rknn。
推理不正确可以尝试:
1. 用最新的rknntoolkit转换
2. 用netron查看转换后的rknn模型有什么区别
3, 逐层比对输出哪一层出问题
4. 关闭量化查看输出是否正确
回复

使用道具 举报

jefferyzhang

版主

积分
13007
沙发
发表于 2024-4-11 16:40:18 | 显示全部楼层
学校对面 发表于 2024-4-11 13:52
感谢回复!针对您的回复
1:我是用的1.7.5
2:两种方式转换后会有区别,区别在于pixelshuffle这个算子, ...

如果关闭量化结果完全相同说明模型转换两种是一致的,区别在于量化方式上。
转换成不同的算子他的数值范围会可能就会有很大变化,如果变化太大,uint8的量化是无法覆盖他所有情况,就会造成量化后的结果误差偏大。
例如 算子A参数范围在 [0, 10] 而concat了一个B参数范围在[100, 500] ,那这种算子量化后效果就会极差,一般做法就是拆算子,或者用混合量化方式将这层算子改为不量化。
回复

使用道具 举报

jefferyzhang

版主

积分
13007
板凳
发表于 2024-4-12 08:55:15 | 显示全部楼层
学校对面 发表于 2024-4-11 17:49
谢谢,我算子的变化只有depth2shuffle,trace之后被拆分为了reshape->permute->reshape这三步,按理说这 ...

可以试着混合量化把这个算子不量化
回复

使用道具 举报

jefferyzhang

版主

积分
13007
地板
发表于 2024-4-15 16:43:39 | 显示全部楼层
学校对面 发表于 2024-4-15 10:48
您好,按文档执行混合量化时,目前是先根据step1中的建议对其中某一个卷积进行了i16的混合量化,并且在st ...

set input failed 一般是输入和模型对不上,传入的buffer是你转换时候设置的格式,这里你的模型要3240000尺寸buffer,而你只有32400,这个很明显的问题,自己可以先算下输入尺寸是多少,先不要用0拷贝接口。
回复

使用道具 举报

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

本版积分规则

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


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