官方介绍
用户可以用transforms.Lambda()函数自行定义transform操作,该操作不是由torchvision库所拥有的,其中参数是lambda表示的是自定义函数。
代码实例
当官方提供的方法并不能够满足需要时,这时候就需要自定义自己的transform策略方法就是使用transforms.Lambda。比如想要截取图像,但并不想在随机位置截取,而是希望在一个指定的位置去截取那么就需要自定义一个截取函数,然后使用transforms.Lambda去封装它即可,代码如下所示:
from torchvision import transforms
def _crop(img,pos,size):
'''
:param img:输入的图像
:param pos:图像截取的位置,类型为元组,包含(x,y)
:param size:图像截取的大小
:return: 返回截取后的图像
'''
ow, oh = img.size
x1, y1 = pos
tw = th = size
if (ow > tw or oh > th):
return img.crop((x1,y1,x1+tw,y1+th))
return img
deta_transforms = transforms.Compose([
transforms.Lambda(lambda img:_crop(img,(5,5),224)),
transforms.ToTensor(),
])