JA EN ZH

机器学习数据增强 - 实用图像增强技术

· 9 分钟阅读

什么是数据增强 - 为什么要扩展训练数据

数据增强是通过对现有训练图像施加各种变换来人工扩大数据集规模的技术。深度学习模型需要大量数据才能学习到鲁棒的特征,但收集和标注真实数据成本高昂。数据增强以极低的成本将数据集有效扩大数倍甚至数十倍。

数据增强的核心思想:对图像施加不改变其语义标签的变换。例如将猫的图片水平翻转后仍然是猫,调整亮度后仍然是猫。模型通过学习这些变体,获得对位置、角度、光照等变化的不变性。

数据增强的效果:通常可以将模型精度提升 2-10 个百分点;显著减少过拟合(训练集和验证集精度差距缩小);提高模型对真实世界变化的鲁棒性。

注意事项:增强策略需要与任务匹配。例如文字识别任务中不应使用垂直翻转(会改变语义);医学影像中颜色增强需要谨慎(颜色可能携带诊断信息)。

几何增强 - 改变位置和形状

几何增强通过改变图像中物体的空间位置和形状来增加多样性。

水平/垂直翻转:最简单有效的增强。水平翻转几乎适用于所有自然图像任务。垂直翻转适用于航拍、显微镜等无固定方向的图像。

随机旋转:在指定角度范围内(如 -15° 到 +15°)随机旋转。模拟相机倾斜和物体自然摆放角度。大角度旋转(90°、180°)适用于无方向性的图像。

随机裁剪:从图像中随机裁剪一个区域并缩放到原始尺寸。模拟不同的拍摄距离和构图。需要确保裁剪后目标物体仍然可见。

仿射变换和透视变换:模拟不同的拍摄角度。仿射变换保持平行线平行(平移、旋转、缩放、剪切的组合);透视变换模拟相机角度变化,平行线可能汇聚。

弹性变形:对图像施加随机的局部扭曲。特别适用于手写文字识别和医学影像分割,模拟组织的自然形变。

颜色和像素增强 - 改变外观

颜色增强通过改变图像的色彩属性来模拟不同的光照和拍摄条件。

亮度和对比度调整:随机改变图像的整体亮度(模拟不同光照强度)和对比度(模拟不同的曝光设置)。通常在 ±20-30% 范围内调整。

色相和饱和度偏移:在 HSV 空间中随机偏移色相(模拟不同的白平衡设置)和饱和度(模拟不同的色彩鲜艳度)。

高斯噪声:添加随机噪声模拟低光照条件下的传感器噪声。提高模型对噪声图像的鲁棒性。

高斯模糊:随机模糊模拟对焦不准或运动模糊。使模型不过度依赖高频细节。

随机擦除(Random Erasing):随机遮挡图像的一个矩形区域(用随机值或均值填充)。迫使模型学习物体的多个部分而非依赖单一特征。类似于 Dropout 的正则化效果。

通道随机交换:随机交换 RGB 通道顺序,增强模型对颜色排列的不变性。

基于混合的增强 - MixUp、CutMix 与 Mosaic

混合增强通过组合多张图像创建新的训练样本,是近年来最有影响力的增强技术之一。

MixUp:将两张图像按随机比例 λ 线性混合:x_new = λ * x1 + (1-λ) * x2,标签也相应混合。产生"半透明叠加"效果。显著减少过拟合,提高模型的泛化能力。λ 通常从 Beta(0.2, 0.2) 分布采样。

CutMix:从一张图像中裁剪一个矩形区域,粘贴到另一张图像上。标签按面积比例混合。比 MixUp 更自然(没有半透明效果),同时保留了局部特征的完整性。

Mosaic:将 4 张图像拼接成一张(YOLO v4 引入)。每张图像占据四分之一区域。极大地增加了单次前向传播中看到的物体数量和上下文多样性。特别适合目标检测任务。

CutOut:CutMix 的简化版,只是将随机区域置零(黑色)而非替换为另一张图像。效果类似 Random Erasing。

这些方法的共同优势:不增加数据收集成本、实现简单、效果显著(通常提升 1-3% 精度)、可以与其他增强方法叠加使用。

自动增强 - AutoAugment 与 RandAugment

手动设计增强策略需要大量实验。自动增强方法通过搜索或随机化找到最优的增强组合。

AutoAugment:Google 提出的方法,使用强化学习搜索最优的增强策略。在 ImageNet 上搜索到的策略可以迁移到其他数据集。缺点是搜索成本极高(数千 GPU 小时)。

RandAugment:大幅简化的替代方案。只有两个超参数:N(每次应用的变换数量)和 M(变换强度)。从预定义的变换池中随机选择 N 个变换,每个以强度 M 应用。简单有效,搜索成本极低。

TrivialAugment:进一步简化,每次只应用一个随机变换,强度也随机。令人惊讶地,性能与 RandAugment 相当甚至更好。证明了增强策略的随机性本身就是有价值的。

实践建议:对于大多数项目,RandAugment(N=2, M=9)是一个很好的起点。如果计算资源充足,可以对 N 和 M 进行小范围网格搜索。不需要从头搜索策略,使用已发表的策略作为起点即可。

任务特定策略与 Albumentations 实现

不同的计算机视觉任务需要不同的增强策略。

图像分类:可以使用所有不改变语义的增强。RandAugment + MixUp/CutMix 是标准组合。强增强(大角度旋转、强颜色变换)通常有益。

目标检测:几何变换需要同步变换边界框坐标。Mosaic 增强特别有效。注意裁剪后边界框可能部分或完全超出画面,需要处理这些边界情况。

语义分割:几何变换需要同步变换分割掩码。颜色增强不影响掩码。弹性变形对医学影像分割特别有效。

Albumentations 库:Python 最流行的图像增强库。优势:速度快(基于 OpenCV)、支持同步变换图像和标注(边界框、掩码、关键点)、丰富的变换种类、与 PyTorch/TensorFlow 无缝集成。

基本用法:transform = A.Compose([A.HorizontalFlip(p=0.5), A.RandomBrightnessContrast(p=0.3), A.Normalize()])p 参数控制每个变换的应用概率。

性能提示:增强应在数据加载时在线执行(而非预先生成),这样每个 epoch 看到的增强版本都不同。使用多进程 DataLoader 并行执行增强,避免成为训练瓶颈。

Related Articles

目标检测概述 - YOLO、SSD 和 Faster R-CNN 架构与性能对比

全面解析目标检测技术,从 Faster R-CNN 到 YOLO 系列和 SSD,比较各架构的精度、速度和适用场景。

图像分割基础 - 理解区域划分原理与应用

系统介绍图像分割技术,从经典阈值法到深度学习方法 (U-Net、DeepLab、SAM),涵盖评估指标和浏览器端实现。

基于有限数据的图像分类迁移学习 - 微调实战指南

使用预训练模型仅凭 100 张图像构建高精度图像分类器。包含 PyTorch 代码示例和最佳实践的迁移学习实用指南。

语义分割入门 - 理解 U-Net 和 DeepLab 架构

详解语义分割的核心架构,从 FCN 开创性工作到 U-Net 的编码器-解码器结构和 DeepLab 的空洞卷积,涵盖训练数据准备和部署。

图像自动标注技术 - 目标检测、场景识别与字幕生成

详解图像自动标注技术,包括目标检测、场景识别和图像字幕生成的原理与实现方法。

图像标注工具对比 - CVAT、Label Studio 与 Roboflow 的选择

比较主流图像标注工具的功能、效率和成本,帮助选择最适合机器学习项目的标注方案。

Related Terms