『PyTorch』transforms

1. 数据增强

1.1. 中心化

  • transforms.ToTensor()
    呃…这方法有点尴尬针对图片的,或者元素值在[0,255]之间的矩阵,将所有元素值缩放到[0,1]之间,不适用一般的张量

1.2. 标准化

  • transforms.Normalize()

    • 功能: o u t p u t = i n p u t − m e a n s t d output = \displaystyle\frac{input - mean}{std} output=stdinputmean
    transforms.Normalize(mean, std, inplace=False)
    
    • 主要参数
      • mean:各通道的均值
      • std:各通道的标准差
      • inplace:是否原地操作

1.3. 缩放

  • transforms.Resize()
    • 主要参数
      • size
        如果是整数则代表方形缩放,否则是矩形,要给出长度为2的序列

1.4. 裁剪

  1. transforms.CenterCrop()

    • 功能:从图像中心裁剪图片
    • 主要参数:
      • size:所需裁剪图片尺寸,可以是整数或长度为2的序列
  2. transforms.RandomCrop()

    • 功能:从图片中随机裁剪出尺寸为size的图片

      transforms.RandomCrop(size, padding=None, pad_if_need=False,
                            fill=0, padding_mode='constant')
      
    • 主要参数:

      • size:尺寸大小
      • padding:设置填充大小
        • 当为a时,四边填充a个像素
        • 当为(a,b)时。左右填充a个像素,上下填充b个像素
        • 当为(a,b,c,d)时,左、上、右、下分别填充a,b,c,d个像素
      • pad_if_need:若图像小于设定size,则填充
      • padding_mode:填充模式
        • constant:像素值由fill设定
        • edge:像素值由图像边缘像素决定
        • reflect:镜像填充,最后一个像素不镜像,e.g. [1,2,3,4]→[3,2,1,2,3,4,3,2]
        • symmetric:镜像填充,最后一个像素镜像,e.g. [1,2,3,4]→[2,1,1,2,3,4,4,3]
      • fill:padding_mode=constant时,设置的填充值
  3. transforms.RandomResizedCrop()

    • 功能:随机大小长宽比裁剪图片

      transforms.RandomResizedCrop(size, scale=(0.08, 1.0), 
                              ratio=(3/4, 4/3), interpolation)
      
    • 主要参数:

      • size:所需裁剪图片尺寸
      • scale:随机裁剪面积比例
      • ratio:随机长宽比
      • interpolation:插值方法
        • PIL.Image.NEAREST
        • PIL.Image.BILINEAR
        • PIL.Image.BICUBIC
  4. transforms.FiveCrop()

  5. transforms.TenCrop()

1.5. 旋转

  • transforms.RandomRotation()

    transforms.RandomRotation(degrees,resample=False,expand=False,center=None)
    
    • 主要参数:

      • degrees:旋转角度

        当为 a a a时,在 ( − a , a ) (-a,a) (a,a)之间选择旋转角度

        当为 ( a , b ) (a,b) (a,b)时,在 ( a , b ) (a,b) (a,b)之间选择旋转角度

      • resample:重采样方法

      • expand:是否扩大图片,以保持原图信息

      • center:旋转中心,默认是图片中心

1.6. 翻转

transforms.RandomHorizontalFlip()transforms.RandomVerticalFlip()

  • 功能:依概率水平(左右)或垂直(上下)翻转图片

  • 主要参数:概率p

1.7. 填充

  • transforms.Pad()

    transforms.Pad(padding, fill=0, padding_mode='constant')
    
  • 主要参数:

    • padding:设置填充大小
      • 当为a时,四边填充a个像素
      • 当为(a,b)时。左右填充a个像素,上下填充b个像素
      • 当为(a,b,c,d)时,左、上、右、下分别填充a,b,c,d个像素
    • padding_mode:填充模式
      • constant:像素值由fill设定
      • edge:像素值由图像边缘像素决定
      • reflect:镜像填充,最后一个像素不镜像,e.g. [1,2,3,4]→[3,2,1,2,3,4,3,2]
      • symmetric:镜像填充,最后一个像素镜像,e.g. [1,2,3,4]→[2,1,1,2,3,4,4,3]
    • fill:padding_mode=constant时,设置的填充值(R,G,B)或灰度值(Gray)

1.8. 亮度、对比度、饱和度和色相变换

  • 用到时再查吧~~,现在没心情

1.9. 空间几何变换

  • 看不懂…太数学了

1.10. 遮挡

  • transforms.RandomErasing()

    transforms.RandomErasing(p=0.5, scale=(0.02,0.33), 
                             ratio=(0.3,3.3), value=0, inplace=False)
    
    • 功能:对图片进行随机遮挡
    • 主要参数:
      • p:概率值,执行该操作的概率
      • scale:遮挡区域面积
      • ratio:遮挡区域长宽比
      • value:设置遮挡区域像素值

1.11 自定义lambda方法

  • transforms.Lambda()

    transforms.Lambda(lambda)
    

    实现一些简单的操作,主要由于调用多个数据增强方法时,输入输出不匹配,可以用自定义的lambda方法实现输入输出匹配

2. 选择操作

2.1 RandomChoice

  • 功能:从一系列transforms方法中随机挑选一个执行

    transforms.RandomChoice([transforms1, transforms2, transforms3])
    

2.2 RandomApply

  • 功能:依据概率执行一组transforms操作

    transforms.RandomApply([transforms1, transforms2, transforms3], p=0.5)
    

2.3 RandomOrder

  • 功能:对一组transforms操作打乱顺序执行

    transforms.RandomOrder([transforms1, transforms2, transforms3])
    

3. 自定义transforms方法

  • 自定义transforms要素

    • 仅接受一个参数,返回一个参数
    • 注意上下文的输入于输出
    class MyTransforms(object):
        def __init__(self, ...):
            # 这里可以传入多参数
            pass
            
        def __call__(self, img):
            pass
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值