数据增强抑制过拟合
约 1031 字大约 3 分钟
2026-03-27
数据增强是抑制过拟合、提升模型泛化能力的关键技术。具体而言,通过对训练数据进行多样化的变换操作,可以有效扩充训练样本的多样性,从而提升模型的鲁棒性,使其在面对经过增强处理的样本时仍能保持稳定的篡改定位能力。下面详细介绍了几种常见的数据增强方法及其作用:
几何变换:几何变换主要涉及对图像的空间位置进行调整,包括缩放、水平翻转、垂直翻转以及旋转90°等操作。这些变换可以模拟出目标对象在不同视角或尺度下的外观变化,帮助模型学习到更具普遍性的特征。
- 缩放:改变图像大小。
- 水平/垂直翻转:沿水平或垂直轴反转图像。
- 旋转90°:将图像旋转90度。

光度变换:光度变换关注的是图像的颜色和亮度调整,包括但不限于亮度对比度调整、Gamma校正和锐化等。这类变换能够使模型适应不同的光照条件和色彩表现形式,提升其在复杂环境中的识别能力。
- 亮度对比度调整:改变图像的明暗程度及对比度。
- Gamma校正:调整图像的亮度分布。
- 锐化:增强图像边缘的清晰度。

噪声类:向图像中添加不同类型的人工噪声(如高斯噪声、ISO噪声)可以帮助模型学习如何在存在干扰的情况下依然准确地识别目标。这有助于提高模型的抗噪性能。
- 高斯噪声:模拟随机分布的背景噪音。
- ISO噪声:模仿高感光度条件下拍摄的照片所特有的颗粒感。

模糊类:模糊处理(如普通模糊、高斯模糊、中值模糊、运动模糊)是模拟物体移动或相机失焦效果的有效手段。这种变换能增强模型对于非理想拍摄条件下图像的理解力。
- 均值模糊/高斯模糊:产生平滑的模糊效果。
- 中值模糊:减少图像中的噪声。
- 运动模糊:模拟物体快速移动时的拖影效果。

质量退化:质量退化处理(如JPEG压缩、降采样)用于模拟低质量图像的情况,使得模型能够在有限的信息中仍能保持良好的识别性能。
- JPEG压缩:通过有损压缩降低图像文件大小。
- 降采样:减少图像分辨率。

2.albumentations库
albumentations库提供了丰富的图像增强功能,包括几何变换(如翻转、旋转、裁剪等)、颜色空间变换(如亮度、对比度调整等)、像素值变换(如归一化、标准化等)等。这些变换可以通过Compose类组合在一起,形成一个复杂的增强管道。
- Compose:用于组合多个图像变换操作。
- HorizontalFlip:水平翻转图像。
- VerticalFlip:垂直翻转图像。
- Rotate:旋转图像。
- ShiftScaleRotate:同时执行平移、缩放和旋转操作。
- RandomBrightnessContrast:随机调整图像的亮度和对比度。
- Normalize:对图像进行归一化处理。
在实例中,我们使用如下的方法进行数据增强:
self.albu = A.Compose([
A.RandomScale(scale_limit=(-0.5, 0.0), p=0.75),
A.PadIfNeeded(min_height=self.img_size, min_width=self.img_size, p=1.0),
A.OneOf([
A.HorizontalFlip(p=1.0),
A.VerticalFlip(p=1.0),
A.RandomRotate90(p=1.0),
A.Transpose(p=1.0),
], p=0.75),
A.ImageCompression(50, 95, p=0.75),
A.OneOf([
A.OneOf([
A.Blur(blur_limit=3, p=1.0),
A.GaussianBlur(blur_limit=(3, 5), p=1.0),
A.MedianBlur(blur_limit=3, p=1.0),
A.MotionBlur(blur_limit=5, p=1.0),
], p=1.0),
A.OneOf([
A.Downscale(0.5, 0.9, p=1.0),
A.GaussNoise(0.02, 0.08, p=1.0),
A.ISONoise(p=1.0),
A.RandomBrightnessContrast(p=1.0),
A.RandomGamma(p=1.0),
A.Sharpen(p=1.0),
], p=1.0),
], p=0.25),
A.Resize(self.img_size, self.img_size)
])