Pytorch预处理和OpenCV预处理差别——transforms.Resize的坑

使用Pytorch训练通常使用Torchvision的transforms进行预处理,transforms提供了丰富的数据增强手段,但是transforms.Resize和OpenCV的resize会有一定差异,这会导致我们使用C++去部署pytorch训练的model时候可能会有一定差距,源码里面也提到过:

because PIL applies antialiasing. This may lead to significant differences in the performance of a network (https://github.com/pytorch/vision/blob/3a278d701d3a0bba25ad52891653330ece2cb472/torchvision/transforms/functional.py#L350)

因为transforms.Resize当输入为PIL图像时,默认使用的PIL的resize进行处理,除了默认的双线性插值,还会进行antialiasing,对比了OpenCV不同的resize发现,差距还是挺大的:

对于一些分类检测任务还好,如果是embedding等,可能会存在较大的误差,所以训练时,尽量不要用到transforms.Resize.

这里替换掉transforms.Resize后,发现Opencv可以复现出pytorch的网络输出:

https://github.com/THU-MIG/yolov10/issues/111#issuecomment-2138941914

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值