torchvision.transforms包括很多图像增强的方法
(1)Scale 对图像尺寸进行缩小和放大
(2)CenterCrop 对图像正中心进行给定大小的裁剪
(3)RandomCrop 对图像进行给定大小的随机裁剪
(4)RandomHorizaontalFlip 对图像做概率为0.5的随机水平翻转
(5)RandomSizedCrop 对图片进行随机尺寸的裁剪 最后缩放到统一大小
(6) Pad 对边界进行0填充
相关 代码
if transforms is None:
#这里的参数是预训练模型中的参数
normalize = T.Normalize(mean = [0.485, 0.456, 0.406],
std = [0.229, 0.224, 0.225])
if self.test or not train:
self.transforms = T.Compose([#将多个transform组合起来使用。
T.Scale(224),#将输入的`PIL.Image`重新改变大小成给定的`size`,`size`是最小边的边长。举个例子,如果原图的`height>width`,那么改变大小后的图片大小是`(size*height/width, size)`。
T.CenterCrop(224),#将给定的PIL.Image进行中心切割,得到给定的size,size可以是tuple,(target_height, target_width)。size也可以是一个Integer,在这种情况下,切出来的图片的形状是正方形。
T.ToTensor(),
normalize
])
else :
self.transforms = T.Compose([
T.Scale(256),
T.RandomSizedCrop(224),#先将给定的PIL.Image随机切,然后再resize成给定的size大小。
T.RandomHorizontalFlip(),#随机水平翻转给定的PIL.Image,概率为0.5。即:一半的概率翻转,一半的概率不翻转。
T.ToTensor(),#把一个取值范围是[0,255]的PIL.Image或者shape为(H,W,C)的numpy.ndarray,转换成形状为[C,H,W],取值范围是[0,1.0]的torch.FloadTensor,#将PIL的图片类型转换成tensor,这样pytorch才可以对其做处理#取值在0-1之间这样可以使得输入的分布变化不是太大,影响学习
normalize#给定均值:(R,G,B) 方差:(R,G,B),将会把Tensor biaozhunhua。即:Normalized_image=(image-mean)/std。
])