torchvison.transforms.functional.affine()/resized_crop()

要使用这个函数,往往需要配套使用函数 transforms.RandomAffine.get_params,这个函数的作用是返回torchvison.transforms.functional.affine()所需要的变换参数。

transforms.RandomAffine.get_params的参数包括 degrees=(-10, 10), translate=(0.1, 0.1), scale_ranges=(0.9, 1.1), shears=(-5, 5), img_size=imgs[0][0].size,等等。可以看到这些参数都是比例,也就是对应的变换程度,比如translate=(0.1, 0.1),也就是说变换成都是0.1,scale_ranges=(0.9, 1.1)则表示图像的变换范围再0.9到1.1。

好了,问题来啦,上面的变换参数对于我们人来说很好理解,但是torchvison.transforms.functional.affine()计算的时候还是要对像素来计算的,所以,比如这里的scale_ranges=(0.9, 1.1)意思是在原来图像的基础上转变0.9到1.1的程度,但具体到底应该变换多少像素呢。所以transforms.RandomAffine.get_params这个函数的作用就是把我们人类好理解的参数转化为torchvison.transforms.functional.affine()可以实际操作的像素值。这也是参数img_size=imgs[0][0].size的作用,让transforms.RandomAffine.get_params在图像的实际尺寸上得到实际转化需要的像素值。

实例:

同样的道理也可以应用于torchvison.transforms.functional.resized_crop(),它也可以先利用transforms.RandomResizedCrop.get_params(img, scale=(1, 1), ratio=(0.9, 1.1))来得到一组参数,然后再使用torchvison.transforms.functional.resized_crop()来对目标进行变换。

但其实上面来个函数transforms.RandomResizedCrop和transforms.RandomAffine()本身自己内部就是先调用的对应的get_params()函数,再调用对应的functional函数来做变换,这里单独使用是为了对不同图片做相同变换。因为本身transforms.RandomResizedCrop和transforms.RandomAffine()是随机变换,不能保证对不同图片进行相同变换。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值