transforms数据预处理方法(二)

transforms数据预处理方法(二)

4、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)

transforms.Pad(padding=(8, 64), fill=(255,0, 0),padding_mode='constant')
transforms.Pad(padding=(8, 16, 32, 64), fill=(255, 0, 0), padding_mode='symmetric')


mode=‘symmetric’
请添加图片描述

(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:
  • hue:色相参数,当为a时,从[-a, a]中选择参数,注: 0<= a <=0.5 ;
    当为(a, b)时,从[a, b]中选择参数,注:-0.5 <= a <= b <= 0.5
transforms.ColorJitter(brightness=0.5)

请添加图片描述

transforms.Colorjitter(saturation=0.5)

请添加图片描述

transforms.ColorJitter(hue=0.3)

请添加图片描述

(3)transforms.Grayscale(num_output_channels)
(4)transforms.RandomGrayscale(num_output_channels, p=0.1)

功能:依概率将图片转换为灰度图

  • num_ouput_channels: 输出通道数 只能设1或3
  • p:概率值,图像被转换为灰度图的概率
transforms.Grayscale(num output channels=3) 
transforms.RandomGrayscale(num output channels=3,p=0.5) 

请添加图片描述

(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
transforms.RandomAffine(degrees=30) #在(-30°-30°) 旋转
# 平移必须设置角度为0 保证角度不变 (平移的区间是-0.2*图像宽度--0.2*图像宽度)
transforms.RandomAffine(degrees=0, translate=(0.2, 0,2), fillcolor=(255,0, 0)) 
transforms .RandomAffine(degrees=0,scale=(0.7,0.7)) #缩放为原图70%  剩余地方用fillcolor填充

请添加图片描述
请添加图片描述
请添加图片描述

transforms.RandomAffine(degrees=0,shear=(0,0,45),
transforms.RandomAffine(degrees=0,shear=90,fillcolor=(255,0,0)),

请添加图片描述
请添加图片描述

(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)
transforms .ToTensor() #只接受tensor形式
transforms.RandomErasing(p=1,scale=(0.02,0.33), ratio=(0.5, 1), value=(254/255, 0, 0))# tensor只接受0-1 所以这里面的填充值要改变
transforms.RandomErasing(p=1, scale=(0.020,33), ratio=(0.5, 1)value='random') #value里只要是任意字符串 都会以杂乱像素点进行填充

请添加图片描述
请添加图片描述

(7). transforms.Lambda(lambd)

功能:用户自定义lambda方法
lambda:lambda匿名函数

  • transforms.TenCrop(200, vertical_flip=True)
    transforms.Lambda(lambda crops:torch.stack([transforms.Totensor()(crop) for crop in crops]))

5.transforms方法操作

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

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

transforms,RandomChoice((transforms.RandomVerticalFlip(p=1), transforms.RandomHorizontalFlip(p-1)])#在水平反转或者垂直反转中随便执行一个

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

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

 transforms.RandomApply([transforms.RandomAffine(degrees=0, shear=45, fillcolor=(255,0, 0)),transforms.Grayscale(num output channels=3)],p=0.5)

以0.5的概率执行 x轴错切 -45°到45° 再变成灰度图像输出
请添加图片描述

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

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

transforms.Randomorder([transforms.RandomRotation(15),
transforms.Pad(padding=32),transforms.RandomAffine(degrees=0, translate=(0.01, 0.1),scale=(0.9, 1.1))]),

请添加图片描述

6.小结

transforms 图像变换
Pad
ColorJitter
Grayscale
RandomGrayscale
RandomAffine
RandomErasing
Lambda
Resize
Totensor
Normalize
transforms的操作
transforms.RandomChoice
transforms.RandomApply
transforms.RandomOrder

猜你喜欢

转载自blog.csdn.net/weixin_43584866/article/details/128729388
今日推荐