transforms方法在图像增强中起到了至关重要的作用,特别是在深度学习的数据预处理阶段。以下是关于transforms方法如何对图片进行增强的详细解释:
-
数据增强的目的
数据增强是一种常用的数据预处理技术,通过对训练集进行各种变换和扩增操作,增加训练数据的多样性和丰富性,从而提高模型的泛化能力。其目的是模拟真实世界中的各种场景和变化,帮助模型学习到更多不同的特征和模式,提高模型对于不同样本的适应能力,减少过拟合的风险。 -
常见的transforms方法
几何变换:
transforms.CenterCrop(size):从图像中心裁剪图片到指定尺寸。
transforms.RandomCrop(size, padding=None, pad_if_needed=False, fill=0, padding_mode=‘constant’):从图像中随机裁剪图片到指定尺寸。
transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333), interpolation=2):随机大小和长宽比的裁剪,然后缩放到指定大小。
transforms.RandomHorizontalFlip(p=0.5):以一定的概率水平翻转图像。
transforms.RandomVerticalFlip(p=0.5):以一定的概率垂直翻转图像。
transforms.RandomRotation(degrees, resample=False, expand=False, center=None):随机旋转图像。
transforms.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0):对图像进行随机仿射变换。
色彩空间变换:
transforms.Grayscale(num_output_channels=1):将图像转换为灰度图。
transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0):随机改变图像的亮度、对比度、饱和度和色调。
其他变换:
transforms.Resize(size, interpolation=2):调整图像大小。
transforms.ToTensor():将PIL Image或numpy.ndarray转换为tensor,并归一化到[0.0, 1.0]范围内。
transforms.Normalize(mean, std):用均值和标准差对tensor图像进行标准化。 -
使用transforms进行数据增强
通常,我们会使用transforms.Compose来组合多个变换操作,形成一个变换序列,然后应用于图像数据。例如:
…
**from torchvision import transforms
from PIL import Image
img = Image.open(‘00000.jpg’) #需要处理图片地址
transform = transforms.Compose([
transforms.Resize(256),
transforms.RandomCrop(224),
transforms.RandomHorizontalFlip(p=0.5),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
对打开图片transform增强
transformed_image = transform( img)
- 数据增强的类别
有监督的数据增强:针对单个样本或多样本进行增强,包括几何变换和像素变换。
无监督的数据增强:利用模型以及已有数据生成新的数据来增大数据量,如GAN、扩散模型等。
综上所述,transforms方法提供了丰富的图像增强操作,通过组合这些操作,我们可以有效地增加训练数据的多样性和丰富性,提高模型的性能。