Toybrick

onnx模型转换为rknn模型, 输出结果不正确

jefferyzhang

版主

积分
12952
楼主
发表于 2020-2-28 10:44:08 | 显示全部楼层
可以尝试以下调试方法:

1. 不要量化,一层一层往上修改output,核对rknn和onnx计算的结果(比对输出的值,而不是比对推理图片),找到出问题的层
2. 对比rknn-toolkit pc仿真和实机推理结果是否有正确的。
3. 尝试用其他的架构转换。 你说的tf转换后netron结果很乱是正常的,因为onnx转换tf后子图概念丢失,就变成op散开了,但是不影响计算结果。
回复

使用道具 举报

jefferyzhang

版主

积分
12952
沙发
发表于 2020-3-2 09:46:05 | 显示全部楼层
1. 我们NPU是专用计算器,非通用计算单元,其中最主要的优化是Conv2D。不支持depth-wise卷积。
2. depth-wise卷积的功能是牺牲conv2d有限精度的情况下提高端侧(主要是CPU)运算效率。但我们不需要他牺牲,我们NPU可以很好高效的运行conv2d。

你说的第一层就conv+relu出错的情况我们还没遇到过,我把这个问题报给NPU部门先
回复

使用道具 举报

jefferyzhang

版主

积分
12952
板凳
发表于 2020-3-2 09:52:34 | 显示全部楼层
还有我看你都是在板子上操作,请先核对下npu-drv版本号和toolkit是不是匹配,是否都是1.3.0.
驱动不对的话一切都是错的。
回复

使用道具 举报

jefferyzhang

版主

积分
12952
地板
发表于 2020-3-30 15:26:45 | 显示全部楼层
NPU回复是说1.3.1已经解决,目前1.3.1还没正式发布,我先发给你一个beta版本测下:

rknn_toolkit v1.3.1 beta3:
链接: https://pan.baidu.com/s/1Kn2FGAdF_j3CMLNEsC3OPw 提取码: rcds
回复

使用道具 举报

jefferyzhang

版主

积分
12952
5#
发表于 2020-3-31 14:22:53 | 显示全部楼层
NPU部门回复:
在 onnx_edit.py 里, rknn.config 漏掉了一个参数 reorder_channel='0 1 2', rknn.inference 也漏掉了 data_format='nchw' 的参数,这两个参数加上就可以推理正确。
回复

使用道具 举报

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

本版积分规则

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


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