Toybrick

rknn.inference和pytorch的inference结果差距很大

pfwhnudhwq

注册会员

积分
130
发表于 2020-7-16 12:38:35    查看: 940|回复: 3 | [复制链接]    打印 | 显示全部楼层
  1. import numpy as np
  2. import cv2
  3. from rknn.api import RKNN
  4. import torchvision.models as models
  5. import torch

  6. if __name__ == '__main__':
  7.     model = 'pt/feature.pt'
  8.     input_size_list = [[3, 127, 127]]
  9.     inp_z = np.ones(shape=[127, 127, 3], dtype=np.uint8)*255
  10.     # rknn inference
  11.     rknn = RKNN()
  12.     rknn.config(reorder_channel='0 1 2')
  13.     ret = rknn.load_pytorch(model=model, input_size_list=input_size_list)
  14.     ret = rknn.build(do_quantization=False)
  15.     ret = rknn.init_runtime()
  16.     outputs = rknn.inference(inputs=[inp_z])
  17.     rknn.release()
  18.     # pytorch inference
  19.     inp_z = np.ones([3, 127, 127], dtype=np.uint8)*255
  20.     inp_z = torch.Tensor(inp_z).unsqueeze(0)
  21.     module = torch.jit.load(model)
  22.     out = module.forward(inp_z)
  23.     out = out.data.cpu().numpy()
  24.     # difference between rknn and pytorch
  25.     print(np.sum(np.abs(out-outputs)))
  26. WARNING: Token 'COMMENT' defined, but not used
  27. WARNING: There is 1 unused token
  28. W The target_platform is not set in config, using default target platform rk1808.
  29. W [set_chip_platform_env:187]evaluate model on RK1808
  30. 1459.6528
复制代码

环境:x86 pc,rknn-toolkit1.3.2,pytorch1.2
请问为什么同一个模型的输出结果差这么大?


回复

使用道具 举报

jefferyzhang

超级版主

积分
7730
发表于 2020-7-16 15:03:36 | 显示全部楼层
这个需要debug的。。。
调试思路大概可以这样:
1. 先确认你API、DRV是不是最新的版本(1.3.2-1.3.3),每个版本都解决了很多op的bug。如果drv不匹配,很容易出现结果出错
2. 非量化非预编译是否正常,量化后是否正常 (这两个走的处理器不一样,不排除某个有bug)
3. Dump每一层输出,检查哪层计算错了

然后就可以报bug给我们,我们会提交给NPU部门处理。
回复

使用道具 举报

pfwhnudhwq

注册会员

积分
130
 楼主| 发表于 2020-7-16 16:17:53 | 显示全部楼层
jefferyzhang 发表于 2020-7-16 15:03
这个需要debug的。。。
调试思路大概可以这样:
1. 先确认你API、DRV是不是最新的版本(1.3.2-1.3.3),每 ...

谢谢,已经解决,是float32到float16的误差累计出来的,Tensor里每个元素的平均误差不是很大,还能接受。再次感谢!
回复

使用道具 举报

Cuttlefish

新手上路

积分
23
发表于 2020-11-19 16:13:51 | 显示全部楼层
遇到了同样的问题,本来想去dump每一层的输出,增加了环境变量后一直没有txt文件输出。想问下楼主是怎么找到问题所在的呢
回复

使用道具 举报

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

本版积分规则

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


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