深度学习模型通常需要数百 GB 的数据才能在未见过的样本上获得良好的泛化能力。数据扩充(Data Augmentation)能有效增加训练集中样本的多样性。然而,传统的手动设计扩充策略依赖工程师的领域知识和直觉。自动增强方法(如 AutoAugment、RandAugment、TrivialAugment)通过概率选择与自动调整减少了人工干预,但也给数据预处理带来了更高的复杂度。本文以 NVIDIA DALI 为核心工具,详细讲解如何实现并利用 GPU 加速的自动增强,同时深入介绍 DALI 中的条件执行特性——这正是实现自动增强的关键基石。
自动数据扩充方法
自动增强基于标准图像变换(如旋转、剪切、模糊、亮度调整)。大多数操作都接受一个称为 幅值(magnitude) 的控制参数,幅度越大,变换对图像的影响越明显。传统策略是工程师手工编写的固定操作序列;而自动增强策略的不同之处在于:增强与参数的选择不是固定的,而是随机的(概率性的)。
AutoAugment
- 采用强化学习从数据中学习最佳概率增强策略,将目标模型的泛化性能视为奖励信号。
- 为 ImageNet、CIFAR-10、SVHN 等数据集发现了新策略,超越当时最先进精度。
- 策略由一组增强对(pair)组成,每个增强用“应用或跳过”的概率、幅值参数化。运行时,对每个样本独立随机选择并应用其中一对。
- 主要缺点:策略搜索需要多次重新训练目标模型,计算成本巨大。
RandAugment
- 将策略搜索简化为只调整两个数字:N(序列中随机选择的增广操作数)和 M(所有操作共享的幅值)。
- 尽管简单,但结合相同增强集时,该方法效果优于 AutoAugment 的已学策略。
- 注意:M 通常在 0~30 之间可调。
TrivialAugment
- 进一步移除 N 和 M 两个超参数,对每个样本随机选择一个增广,且幅值随机均匀采样。
- 实验表明,随机采样增强本身对泛化能力的贡献可能大于精细搜索策略。
