装载自:https://blog.csdn.net/hmh2_yy/article/details/85099523
Compose方法是将多种变换组合在一起。上述对data_transforms进行了四种变换,前两个是对PILImage进行的,分别对其进行随机大小和随机宽高比的裁剪,之后resize到指定大小224,以及对原始图像进行随机的水平翻转;
第三个transforms.ToTensor()将PILImage转变为torch.FloatTensor的数据形式;
而最后一个Normalize则是对tensor进行的。
多种组合变换有一定的先后顺序,处理PILImage的变换方法(大多数方法)都需要放在ToTensor方法之前,而处理tensor的方法(比如Normalize方法)就要放在ToTensor方法之后。
接下来介绍transforms中的函数:(从比较重要的开始)
ToTensor:convert a PIL image to tensor (HWC) in range [0,255] to a torch.Tensor(CHW) in the range [0.0,1.0]Normalize:Normalized an tensor image with mean and standard deviation。 即:用给定的均值和标准差分别对每个通道的数据进行正则化。具体来说,给定均值(M1,…,Mn),给定标准差(S1,…,Sn),其中n是通道数(一般是3),对每个通道进行如下操作: output[channel] = (input[channel] - mean[channel]) / std[channel] 1比如:原来的tensor是三个维度的,值在[0,1]之间,经过变换之后就到了[-1,1] 计算如下:((0,1)-0.5)/0.5=(-1,1)
ToPILImage: convert a tensor to PIL image针对PILImage的操作函数:
CenterCrop:在图片的中间区域进行裁RandomCrop:在一个随机的位置进行裁RandomHorizontalFlip:以0.5的概率水平翻转给定的PIL图像RandomVerticalFlip:以0.5的概率竖直翻转给定的PIL图像RandomResizedCrop:将PIL图像裁剪成任意大小和纵横比Grayscale:将图像转换为灰度图像RandomGrayscale:将图像以一定的概率转换为灰度图像FiceCrop:把图像裁剪为四个角和一个中心Pad:填充ColorJitter:随机改变图像的亮度对比度和饱和度 </div>