【Tensorrt】——pspnet部署尝试

1. 问题

训练时采用的pytorch框架,采用动态尺寸的输入。所以最好的目标就是像用pytorch一样,采用动态尺寸的输入,得到动态尺寸的输出

  • pspnet解码部分的上采样,在python下能得到任意尺寸的输出,但导出到onnx时是不能的。因为interpolate函数的size要输入为int,而 torch.onnx.export 又不支持 int 的输入类型

解决方案: 设置interpolate的 scale_factor参数,这样不能多尺度测试

## onnx 输入多大,返回多大,不能用多尺度测试
x = nn.functional.interpolate(
    x, scale_factor=8.0, mode='bilinear')
x = nn.functional.softmax(x, dim=1)

问题2: onnxruntime和pytorch interpolate结果不一样
pytorch的interpolate,转onnx后,再用onnxruntime进行验证的时候,pytorch的输出和onnxruntime的结果有差异

发生异常: AssertionError

Not equal to tolerance rtol=0.1, atol=1e-10

Mismatched elements: 1429278 / 1945600 (73.5%)
Max absolute difference: 0.67711896
Max relative difference: 14.636919
 x: array([[[[8.655339e-01, 8.655339e-01, 8.655339e-01, ..., 7.575323e-01,
          7.575323e-01, 7.575323e-01],
         [8.655339e-01, 8.655339e-01, 8.655339e-01, ..., 7.575323e-01,...
 y: array([[[[8.655338e-01, 8.727098e-01, 8.793454e-01, ..., 7.575321e-01,
          7.575321e-01, 7.575321e-01],
         [8.592935e-01, 8.666480e-01, 8.734899e-01, ..., 7.461441e-01,...
  File "/home/data/CM/8_instance_segmentation/semantic-segmentation-pytorch/to_onnx.py", line 107, in local_test
    np.testing.assert_allclose(to_numpy(torch_out), ort_outs[0], rtol=1e-01, atol=1e-010)
  File "/home/data/CM/8_instance_segmentation/semantic-segmentation-pytorch/to_onnx.py", line 119, in <module>
    local_test()

解决方案:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值