记个原图
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”]
裁剪的效果都很明朗,主要是其他的
transforms.RandomRotation(degrees=5)
不要周围白边
transforms.RandomRotation(degrees=5,expand=True)
参数
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))
transforms.RandomAutocontrast(p=1)
transforms.RandomEqualize(p=1)
kernel_size 高斯核大小
sigma 标准差
transforms.GaussianBlur(kernel_size=(5, 11),
sigma=(5, 10.0))
transforms.RandomInvert(p=1)
不加thresh参数效果就和RandomInvert 反色一样
(?)
通过减少每个颜色通道的位数,以给定的概率随机对图像进行后处理
bits :每个通道要保留的位数
transforms.RandomPosterize(1, p=1)
transforms.RandomPosterize(5, p=1)
transforms.RandomAdjustSharpness(sharpness_factor=20,p=1)
RandomHorizontalFlip 水平镜像
RandomVerticalFlip 垂直镜像
transforms.Grayscale(num_output_channels=1)
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")
(就是旋转平移这样的线性变换吧)
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)
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/这个椒盐噪声
transforms.Normalize(mean=[0.5, ], std=[0.5, ])
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)