文章目录
1. 数据增强
什么是数据增强?数据增强是优化数据吗?这种说法并不尽然。首先,数据增强的做法偏向于生成新样本。它是通过对现有数据进行各种变换和处理来生成新的训练样本,从而增加数据集的多样性和数量。但是不会直接修改原始数据集。这样,有助于防止过拟合情况的发生,提高模型的泛化能力。
这是一个偏人工的过程,需要模拟真实世界中的变化,拿视频来说,我们可能需要去掉滤镜效果,计算拍摄视角、光照或者是遮挡。使得特征表示更加具有鲁棒性。
2. 数据增强技巧
官方笔记推荐我们使用PyTorch来做数据增强,列举了一些数据增强技巧。我个人认为这些技巧本身已经比较好了,于是再补充一下我认识到的另一些技巧。
torchvision
文档库地址:https://pytorch.org/vision/stable/index.html
PyTorch其实更希望我们使用v2,所以如果把resize函数重写成V2格式就是这样:
2.1 图像大小调整
transforms.Resize((256, 256))
默认参数:
torchvision.transforms.Resize(size, interpolation=InterpolationMode.BILINEAR, max_size=None, antialias=True)
2.2 图像旋转
transforms.RandomHorizontalFlip()
# 写成V2版本
torchvision.transforms.v2.RandomHorizontalFlip(p: float = 0.5)
# 垂直反转
torchvision.transforms.v2.RandomVerticalFlip(p: float = 0.5)
2.3 图像转换为张量
transforms.ToTensor()
# 将图像数据转换为PyTorch的Tensor格式,这是在深度学习中处理图像数据的常用格式。
torchvision.transforms.v2.ToTensor
2.4 归一化
# 归一化
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
# 对图像进行归一化处理,这里的均值和标准差是根据ImageNet数据集计算得出的,用于将图像像素值标准化,这有助于模型的训练稳定性和收敛速度。
# 写成V2版本
torchvision.transforms.v2.Normalize(mean: Sequence[float], std: Sequence[float], inplace: bool = False)
2.5 图像裁剪
# 随机裁剪
torchvision.transforms.v2.RandomCrop