pytorch中transform函数详解

it2022-05-05  138

装载自:https://blog.csdn.net/hmh2_yy/article/details/85099523

transforms模块详解

torchvision.transforms是pytorch中的图像预处理包,包含了很多种对图像数据进行变换的函数,这些都是在我们进行图像数据读入步骤中必不可少的。

data_transforms = transforms.Compose([ transforms.RandomResizedCrop(224), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ])

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>

最新回复(0)