Java基本数据类型 echarts HashMap 微信小程序教程 JAVA学习 TCP连接 劝酒文化 animation gwt scroll x86 NEJ 后台网站模板 java两个数组合并 mysql降序 js获取月份 安装python教程 python中文手册 java入门教程 java教材 怎么看java版本 java的方法 java时间戳转换日期格式 java日期格式化 linux基础教程 怎么安装linux系统 php开发教程 嵌入式开发教程 找茬辅助 0x8002801c spoonwep 模拟人生2夜生活 js关闭当前页面 给视频加字幕的软件 ip地址切换器 上单艾克出装 下拉框默认选中 xfce4 思源字体包 android模拟器下载
当前位置: 首页 > 学习教程  > 编程语言

Pytorch学习——22种transforms数据预处理方法

2020/8/11 19:15:47 文章标签:

一、图像增强

数据增强又称为数据增广,数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力

二、transforms——裁剪

1. transforms.CenterCrop  
  • 功能:从图像中心裁剪图片
  • size:所需裁剪图片尺寸
2. transforms.RandomCrop (size, padding=None, pad_if_needed=False, fill=0, padding_mode='constant')
  • 功能:从图片中随机裁剪出尺寸为size的图片
  • size:所需裁剪图片尺寸
  • padding:设置填充大小 ;当为a时,上下左右均填充a个像素 ;当为(a, b)时,上下填充b个像素,左右填充a个像素 ;当为(a, b, c, d)时,左,上,右,下分别填充a, b, c, d
  • pad_if_need:若图像小于设定size,则填充
  • padding_mode:填充模式,有4种模式 
  • ——1、constant:像素值由fill设定
  • ——2、edge:像素值由图像边缘像素决定
  • ——3、reflect:镜像填充,最后一个像素不镜像,eg:[1,2,3,4] → [3,2,1,2,3,4,3,2] 
  • ——4、symmetric:镜像填充,最后一个像素镜像,eg:[1,2,3,4] → [2,1,1,2,3,4,4,3]
  • fill:constant时,设置填充的像素值
3. RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(3/4, 4/3), interpolation)
  • 功能:随机大小、长宽比裁剪图片
  • size:所需裁剪图片尺寸
  • scale:随机裁剪面积比例, 默认(0.08, 1)
  • ratio:随机长宽比,默认(3/4, 4/3)
  •  interpolation:插值方法
  • ——PIL.Image.NEAREST
  • ——PIL.Image.BILINEAR
  • ——PIL.Image.BICUBIC
4.transforms.FiveCrop(size)
5.transforms.TenCrop(size, vertical_flip=False)
  • 功能:在图像的上下左右以及中心裁剪出尺寸为size的5张图片,TenCrop对这5张图片 进行水平或者垂直镜像获得10张图片
  • size:所需裁剪图片尺寸
  • vertical_flip:是否垂直翻转

三、transforms——翻转、旋转

1.RandomHorizontalFlip(p=0.5)
2.RandomVerticalFlip(p=0.5)
  • 功能:依概率水平(左右)或垂直(上下)翻转图片
  • p:翻转概率
3.RandomRotation (degrees,
                                resample=False,
                                expand=False,
                                center=None)
  • 功能:随机旋转图片
  • degrees:旋转角度
  • ——当为a时,在(-a,a)之间选择旋转角度
  • ——当为(a, b)时,在(a, b)之间选择旋转角度
  • resample:重采样方法
  • expand:是否扩大图片,以保持原图信息
  • center:旋转点设置,默认中心旋转

四、transforms ——图像变换

1.transforms.Pad(padding,  fill=0,  padding_mode='constant')
  • 功能:对图片边缘进行填充
  • padding:设置填充大小
  • ——当为a时,上下左右均填充a个像素
  • ——当为(a, b)时,上下填充b个像素,左右填充a个像素
  • ——当为(a, b, c, d)时,左,上,右,下分别填充a, b, c, d
  • padding_mode:填充模式,有4种模式,constant、edge、reflect和symmetric
  • fill:constant时,设置填充的像素值,(R, G, B) or (Gray)
2. transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
  • 功能:调整亮度、对比度、饱和度和色相
  • brightness:亮度调整因子
  • ——当为a时,从[max(0, 1-a), 1+a]中随机选择
  • ——当为(a, b)时,从[a, b]中
  • contrast:对比度参数,同brightness
  • saturation:饱和度参数,同brightness
  • hue:色相参数,当为a时,从[-a, a]中选择参数,注: 0<= a <= 0.5 ;当为(a, b)时,从[a, b]中选择参数,注:-0.5 <= a <= b <= 0.5

3.Grayscale(num_output_channels)

4.RandomGrayscale(num_output_channels, p=0.1)

  • 功能:依概率将图片转换为灰度图
  • num_ouput_channels:输出通道数 只能设1或3
  • p:概率值,图像被转换为灰度图的概率

5.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)

  • 功能:对图像进行仿射变换,仿射变换是二维 的线性变换,由五种基本原子变换构成,分别 是旋转、平移、缩放、错切和翻转
  • degrees:旋转角度设置
  • translate:平移区间设置,如(a, b), a设置宽(width),b设置高(height) 图像在宽维度平移的区间为 -img_width * a < dx < img_width * a
  • scale:缩放比例(以面积为单位)
  • fill_color:填充颜色设置
  • shear:错切角度设置,有水平错切和垂直错切
    ——若为a,则仅在x轴错切,错切角度在(-a, a)之间
    ——若为(a,b),则a设置x轴角度,b设置y的角度
    ——若为(a, b, c, d),则a, b设置x轴角度,c, d设置y轴角度
  • resample:重采样方式,有NEAREST 、BILINEAR、BICUBIC
6.RandomErasing (p=0.5, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=0,inplace=False)
  • 功能:对图像进行随机遮挡
  • p:概率值,执行该操作的概率
  • scale:遮挡区域的面积
  • ratio:遮挡区域长宽比
  • value:设置遮挡区域的像素值,(R, G, B) or (Gray)
7. transforms.Lambda(lambd)
  • 功能:用户自定义lambda方法
  • lambd:lambda匿名函数 
  • 例如:
  • ——transforms.TenCrop(200, vertical_flip=True),
  • ——transforms.Lambda(lambda crops: torch.stack([transforms.Totensor()(crop) for crop in crops])), 

五、transforms方法操作

1. transforms.RandomChoice([transforms1, transforms2, transforms3])
  • 功能:从一系列transforms方法中随机挑选一个
2.transforms.RandomApply([transforms1, transforms2, transforms3], p=0.5)
  • 功能:依据概率执行一组transforms操作
3. transforms.RandomOrder([transforms1, transforms2, transforms3])
  • 功能:对一组transforms操作打乱顺序
 

六、自定义transforms方法

自定义transforms要素:
  • 1. 仅接收一个参数,返回一个参数
  • 2. 注意上下游的输出与输入
class Compose(object):
       def __call__(self, img):
              for t in self.transforms:
                    img = t(img)
              return img

例如——椒盐噪声

  • 一种随机出现的白点或者黑点, 白点称为盐噪声, 黑色为椒噪声
  • 信噪比(Signal-Noise Rate, SNR)是衡量噪声的比例,图像中为图像像素的 占比
class AddPepperNoise(object):
    """增加椒盐噪声
    Args:
        snr (float): Signal Noise Rate
        p (float): 概率值,依概率执行该操作
    """

    def __init__(self, snr, p=0.9):
        assert isinstance(snr, float) and (isinstance(p, float))    # 2020 07 26 or --> and
        self.snr = snr
        self.p = p

    def __call__(self, img):
        """
        Args:
            img (PIL Image): PIL Image
        Returns:
            PIL Image: PIL image.
        """
        if random.uniform(0, 1) < self.p:
            img_ = np.array(img).copy()
            h, w, c = img_.shape
            signal_pct = self.snr
            noise_pct = (1 - self.snr)
            mask = np.random.choice((0, 1, 2), size=(h, w, 1), p=[signal_pct, noise_pct/2., noise_pct/2.])
            mask = np.repeat(mask, c, axis=2)
            img_[mask == 1] = 255   # 盐噪声
            img_[mask == 2] = 0     # 椒噪声
            return Image.fromarray(img_.astype('uint8')).convert('RGB')
        else:
            return img

七、汇总

  • 裁剪

  • 1. transforms.CenterCrop 
  • 2. transforms.RandomCrop 
  • 3. transforms.RandomResizedCrop 
  • 4. transforms.FiveCrop 
  • 5. transforms.TenCrop
  • 翻转和旋转 

  • 1. transforms.RandomHorizontalFlip 
  • 2. transforms.RandomVerticalFlip 
  • 3. transforms.RandomRotation
  • 图像变换

  • 1. transforms.Pad
  • 2. transforms.ColorJitter
  • 3. transforms.Grayscale
  • 4. transforms.RandomGrayscale
  • 5. transforms.RandomAffine
  • 6. transforms.LinearTransformation
  • 7. transforms.RandomErasing
  • 8. transforms.Lambda
  • 9. transforms.Resize
  • 10. transforms.Totensor
  • 11. transforms.Normalize
  • transforms的操作

  • 1. transforms.RandomChoice
  • 2. transforms.RandomApply
  • 3. transforms.RandomOrder

本文链接: http://www.dtmao.cc/news_show_100108.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?