pytorch 中的 transforms.TenCrop 和 transforms.FiveCrop 讲解
1. transforms.TenCrop 和 transforms.FiveCrop 在干什么?
这一点官方文档写的很清楚。
transforms.FiveCrop 就是在原图片的四个角和中心各截取一幅大小为 size 的图片, 而 transforms.TenCrop 就是在 transforms.FiveCrop 基础上再进行水平或者竖直翻转(Flip),默认为水平翻转。
torchvision.transforms.FiveCrop(size)
torchvision.transforms.TenCrop(size, vertical_flip=False)
2. 怎么用?
我们先看看官方给的例子。
transform = Compose([
FiveCrop(size), # this is a list of PIL Images
Lambda(lambda crops: torch.stack([ToTensor()(crop) for crop in crops])) # returns a 4D tensor
])
#In your test loop you can do the following:
input, target = batch # input is a 5d tensor, target is 2d
bs, ncrops, c, h, w = input.size()
result = model(input.view(-1, c, h, w)) # f