总结一些transforms,数据增强的方式

记个原图
在这里插入图片描述
all = [“Compose”, “ToTensor”, “PILToTensor”, “ConvertImageDtype”, “ToPILImage”, “Normalize”, “Resize”, “Scale”,
“CenterCrop”, “Pad”, “Lambda”, “RandomApply”, “RandomChoice”, “RandomOrder”, “RandomCrop”,
“RandomHorizontalFlip”, “RandomVerticalFlip”, “RandomResizedCrop”, “RandomSizedCrop”, “FiveCrop”, “TenCrop”,
“LinearTransformation”, “ColorJitter”, “RandomRotation”, “RandomAffine”, “Grayscale”, “RandomGrayscale”,
“RandomPerspective”, “RandomErasing”, “GaussianBlur”, “InterpolationMode”, “RandomInvert”, “RandomPosterize”,
“RandomSolarize”, “RandomAdjustSharpness”, “RandomAutocontrast”, “RandomEqualize”]

裁剪的效果都很明朗,主要是其他的

对PILimage

RandomRotation 旋转

transforms.RandomRotation(degrees=5)

在这里插入图片描述

不要周围白边
transforms.RandomRotation(degrees=5,expand=True)

在这里插入图片描述

ColorJitter 调色

参数
brightness:亮度
contrast:对比度
saturation:饱和度
hue:色调 0<= hue <= 0.5

亮度
transforms.ColorJitter(brightness=10)

在这里插入图片描述

对比度
transforms.ColorJitter(contrast=5)

在这里插入图片描述

饱和度
transforms.ColorJitter(saturation=10)

在这里插入图片描述

色调
transforms.ColorJitter(hue=(-0.5, 0.5))

在这里插入图片描述

自动调整对比度 RandomAutocontrast

transforms.RandomAutocontrast(p=1)

均衡器 RandomEqualize

transforms.RandomEqualize(p=1)

在这里插入图片描述

GaussianBlur 高斯模糊

kernel_size 高斯核大小
sigma 标准差

transforms.GaussianBlur(kernel_size=(5, 11),
                            sigma=(5, 10.0))

在这里插入图片描述

RandomInvert 反色

transforms.RandomInvert(p=1)

在这里插入图片描述

RandomInvert 日光化

不加thresh参数效果就和RandomInvert 反色一样

RandomPosterize 后处理(?)

通过减少每个颜色通道的位数,以给定的概率随机对图像进行后处理
bits :每个通道要保留的位数

transforms.RandomPosterize(1, p=1)

在这里插入图片描述

transforms.RandomPosterize(5, p=1)

在这里插入图片描述

锐化 RandomAdjustSharpness

transforms.RandomAdjustSharpness(sharpness_factor=20,p=1)

在这里插入图片描述

翻转

RandomHorizontalFlip 水平镜像
RandomVerticalFlip 垂直镜像

Grayscale 灰度化

transforms.Grayscale(num_output_channels=1)

Pad 填充

transforms.Pad(padding, fill=0, padding_mode='constant')

padding
fill 填充的值是啥(仅对应constant模式)
padding_mode 填充模式

常数
transforms.Pad((10, 20, 30, 40), fill=0, padding_mode="constant")

在这里插入图片描述

延伸
transforms.Pad((10, 20, 30, 40), padding_mode="edge")

在这里插入图片描述

镜像,这俩区别不是很大?
transforms.Pad((10, 20, 30, 40), padding_mode="reflect")
transforms.Pad((10, 20, 30, 40), padding_mode="symmetric")

在这里插入图片描述

RandomAffine 仿射(就是旋转平移这样的线性变换吧)

degrees:旋转角度
translate:水平偏移
scale:比例
shear: 裁剪
resample ({PIL.Image.NEAREST, PIL.Image.BILINEAR, PIL.Image.BICUBIC}, optional)
fill:图像外部填充颜色 int

transforms.RandomAffine(degrees=30, translate=(0, 0.2), scale=(0.9, 1), shear=(6, 9), fill=66)

在这里插入图片描述

RandomPerspective 美术透视

distortion_scale:控制失真程度的参数,范围从0到1。默认值为0.5。
p
interpolation:插值,PIL.Image.BILINEAR,PIL.Image.NEAREST,PIL.Image.BICUBIC
fil:外部区域的像素填充值

transforms.RandomPerspective(distortion_scale=0.5, p=0.5, fill=0)

在这里插入图片描述

以及可以自制

例如https://www.pythonheidong.com/blog/article/147611/92d69853c6c8f67525d5/这个椒盐噪声
在这里插入图片描述

对tensor

Normalize 标准化

transforms.Normalize(mean=[0.5, ], std=[0.5, ])

在这里插入图片描述

遮挡 RandomErasing

scale:被擦除的区域相对于输入图像的比例
ratio:被擦除区域的宽高比
value:
inplace:判断是否inplace(?试了下也没啥变化啊?)

value输三元组tuple,其实就是rgb共同调一个色出来
value输一个int,其实就是三元组统一一个数
transforms.RandomErasing(p=1, scale=(0.02, 0.33), ratio=(0.3, 3.3), value=(254 / 255, 0, 127 / 255))

在这里插入图片描述

马赛克
transforms.RandomErasing(p=1, scale=(0.02, 0.33), ratio=(0.3, 3.3), value='random')

在这里插入图片描述

顺便关于随机种子

https://blog.csdn.net/m0_37163827/article/details/111284328提到

从v0.8.0版后,所有随机转换都使用torch默认随机生成器来采样随机参数。这是一个破坏向后兼容性的更改,用户应将随机状态设置为:

# Previous versions
# import random
# random.seed(12)
# Now 
import torch 
torch.manual_seed(17) 

猜你喜欢

转载自blog.csdn.net/weixin_40459958/article/details/124452966
今日推荐