pytorch中transform函数详解

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中的函数:(从比较重要的开始)

  1. ToTensor:convert a PIL image to tensor (HWC) in range [0,255] to a torch.Tensor(CHW) in the range [0.0,1.0]
  2. Normalize:Normalized an tensor image with mean and standard deviation。
    即:用给定的均值和标准差分别对每个通道的数据进行正则化。具体来说,给定均值(M1,…,Mn),给定标准差(S1,…,Sn),其中n是通道数(一般是3),对每个通道进行如下操作:
output[channel] = (input[channel] - mean[channel]) / std[channel]

比如:原来的tensor是三个维度的,值在[0,1]之间,经过变换之后就到了[-1,1]
计算如下:((0,1)-0.5)/0.5=(-1,1)

  1. ToPILImage: convert a tensor to PIL image

针对PILImage的操作函数:

  1. CenterCrop:在图片的中间区域进行裁
  2. RandomCrop:在一个随机的位置进行裁
  3. RandomHorizontalFlip:以0.5的概率水平翻转给定的PIL图像
  4. RandomVerticalFlip:以0.5的概率竖直翻转给定的PIL图像
  5. RandomResizedCrop:将PIL图像裁剪成任意大小和纵横比
  6. Grayscale:将图像转换为灰度图像
  7. RandomGrayscale:将图像以一定的概率转换为灰度图像
  8. FiceCrop:把图像裁剪为四个角和一个中心
  9. Pad:填充
  10. ColorJitter:随机改变图像的亮度对比度和饱和度
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值