老周经营一家小饭馆,冰箱里只有一块五花肉、一把青菜、半瓶酱油。客人却来自天南海北:有人爱吃甜,有人嗜辣,有人要清淡。老周没有钱再去进货,但他有刀工——同一块肉切成片是回锅肉、切成块是红烧肉、剁成末是肉末茄子;同一种菜换油温、换火候、换摆盘,就能端出十几种花样,客人再多也能应付。 机器学习遇到的情况和老周一模一样:标注数据极其珍贵,收集一万张带标签的图片可能要花几个月、几十万预算。模型如果只“背”这些有限的样本,换个稍有差异的输入就会翻车——这就是过拟合。数据增强(Data Augmentation)就是老周的刀工:在不收集任何新数据的前提下,对已有样本做合情合理的随机变换,生成大量“长得像又不太一样”的新样本,让模型见过更多花样,从而真正学会判别背后的规律,而不是死记硬背。

岗位关联

数据增强是 AI 从业者的基本功,它能在不增加采样成本的前提下显著缓解过拟合,是每个深度学习项目训练管线里的标配环节。

目录
  1. 可视化演示
  2. 过拟合困局
  3. 图像增强
  4. 文本增强
  5. 混合增强
  6. 实践原则
  7. 工程落地
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示图像变换增强、文本替换增强与数据混合增强三种策略的原理与流程,支持模式切换交互。

本节配有交互动效(进入视口后自动加载,约 3KB)。

图像数据增强 翻转/裁剪/色彩抖动/旋转/模糊 不采集新数据即可扩充样本 x\' = T(x), T~{flip,crop,...} 图像变换增强。

过拟合困局

老周最拿手的是红烧肉,于是天天只练这一道。有一天店里来了个广东客人点清蒸鱼,老周傻眼了——他只会把一切东西都做成红烧的。这就是过拟合:模型在训练集上把每个细节都背得滚瓜烂熟,可一碰到没见过的新样本就原形毕露。

过拟合是监督学习中最常见也最头疼的问题。模型参数足够多时,它可以记住训练集中的每一个样本,包括其中的噪声。于是训练误差一路走低,测试误差却居高不下——训练表现好、测试表现差。而根本原因,是训练数据不足以约束模型的“自由度”:一条极其曲折的曲线能精确穿过所有训练点,但换一批新数据就会剧烈震荡。

要压住这种震荡,核心思路是给模型提供更多“约束”或“信息”。数据增强就是一种非常自然的约束:告诉模型“样本稍微翻转一下、颜色稍微变一变,它还是同一类”。它不改变模型结构、不增加参数量,只是让训练数据的分布覆盖更广。泛化误差可以拆成训练误差与泛化差距之和:

数据增强对模型的意义,就像老周的刀工对饭馆的意义——不是多进货,而是把手头有限的食材用出无限花样,让模型练出真功夫。

R(f)⏟泛化误差=R^(f)⏟训练误差+Gap(f)⏟泛化差距\displaystyle \underbrace{R(f)}_{\text{泛化误差}} = \underbrace{\hat{R}(f)}_{\text{训练误差}} + \underbrace{\text{Gap}(f)}_{\text{泛化差距}}
这个公式把模型的“真实水平”拆成两部分:在训练集上看到的水平,加上没被训练数据覆盖而造成的差距。数据增强就是在压低第三项。
  1. 泛化误差 R(f)模型在真实数据分布上的期望损失,衡量模型的真实水平。
    R(f)=E(x,y)∼p[ L(f(x),y) ]R(f) = \mathbb{E}_{(x,y)\sim p}\bigl[\,L(f(x), y)\,\bigr]
  2. 训练误差 \hat{R}(f)只在有限训练样本上取平均损失,通常比真实误差要低。
    R^(f)=1n∑i=1nL(f(xi),yi)\hat{R}(f) = \frac{1}{n}\sum_{i=1}^{n}L\bigl(f(x_i), y_i\bigr)
  3. 泛化差距 Gap(f)两者之差,差距越大说明过拟合越严重。
    Gap(f)=R(f)−R^(f)\text{Gap}(f) = R(f) - \hat{R}(f)
  4. 增强缩差距数据增强扩大训练样本的分布覆盖,让 \hat{R}(f) 更接近 R(f),从而压低泛化差距。

图像增强

老周做菜讲究刀工和摆盘:同一根黄瓜,切滚刀块、切细丝、削成薄片,配不同的盘子和摆放方向,端上桌就是完全不同的菜。图像增强正是这份“刀工”——图像内容本质没变,但呈现方式千变万化。

图像有一个天然优势:人对“什么是同一类”的理解非常宽容。一张猫的照片,水平翻转、旋转几度、裁掉一点背景、把颜色调暗,它仍然是一只猫。这种“宽容”让图像成为数据增强最肥沃的土壤。常见的招式有:翻转(水平或垂直镜像)、随机裁剪(截取局部再缩回原尺寸)、颜色抖动(改变亮度、对比度、饱和度、色相)以及小幅旋转缩放。

把这些随机变换纳入训练,模型的损失就不再是单个样本的损失,而是“在多种合理变换下都能正确分类”的期望损失:

学会了翻转、裁剪、颜色抖动这三板刀工,模型就像老周一样,能把一道菜做出十种卖相,客人怎么点都不慌。

Laug=ET∼p(T)[ℓ(fθ(T(x)),y)]\displaystyle \mathcal{L}_{\text{aug}} = \mathbb{E}_{T \sim p(T)}\Bigl[\ell\bigl(f_{\theta}(T(x)), y\bigr)\Bigr]
通俗地说:训练时不再只看菜的原样,还要保证它被“各种切法、各种摆盘”端上桌后,客人依然认得出这道菜。
  1. 变换分布 p(T)定义一组合理的随机变换,每次从里面采样一个来用。
    T∼p(T),T∈{翻转,裁剪,颜色抖动,…}T \sim p(T), \qquad T \in \{\text{翻转}, \text{裁剪}, \text{颜色抖动}, \ldots\}
  2. 样本变换 T(x)对原图施加随机变换,得到一张“变过花样”的新样本。
    x~=T(x)\tilde{x} = T(x)
  3. 模型预测 f_\theta用参数为 \theta 的模型对增强样本做预测。
    y^=fθ(x~)\hat{y} = f_{\theta}(\tilde{x})
  4. 期望损失对所有可能变换的损失求平均——相当于同时训练“各种摆盘下都认得出这道菜”的能力。

文本增强

老周钻研菜谱时发现,同一种菜在不同地方有不同的叫法:北方的“西红柿炒蛋”在南方叫“番茄炒蛋”。如果把菜谱上的说辞全部换成另一种表达,菜还是那道菜,但能打动更多客人。

文本数据同样稀缺且昂贵——请标注员给句子打标签是按条计费的。文本增强的目标是:保持句子的语义基本不变,改变它的表达形式,让模型看到更多样的句式。最常用的三种手段:同义词替换把关键词换成近义词,简单直接;回译先翻成外语再翻回来,机器翻译会自然改写句式;随机插入、删除、交换相邻词,制造轻微的“语病”样本,增强模型的鲁棒性。

回译是其中最强大的手段,其流程可以写成一个复合翻译操作:

回译就像老周把同一道菜的菜谱翻译成英文再翻译回来——细节变了,风味没变。模型吃过了各种“口音”的说法,自然更懂这句话的本质含义。

x′=TranslateL2(TranslateL1(x))\displaystyle x' = \text{Translate}_{L_2}\Bigl(\text{Translate}_{L_1}(x)\Bigr)
一句话先去外语世界“旅行”一圈再回来,大意不变,说法却换了一套——这就是回译。
  1. 原始句子 x我们手里的一句话。
    x="这道菜真好吃"x = \text{"这道菜真好吃"}
  2. 翻译到中间语 L_1先翻译到另一种语言(比如英文)。
    y="This dish is delicious"y = \text{"This dish is delicious"}
  3. 翻译回原语 L_2再从英文翻译回中文,得到全新的句式。
    x′="这道菜味道真不错"x' = \text{"这道菜味道真不错"}
  4. 语义不变大意一致但用词不同,是一个合格的增强样本。
    x′≠x,Sem(x′)≈Sem(x)x' \neq x, \qquad \text{Sem}(x') \approx \text{Sem}(x)

混合增强

老周最得意的创新菜是“肉末茄子”,把红烧肉的肉末和茄子的做法混在一起。混合增强也是这个思路:把两个样本按比例“炒”在一起,生成一个介于两者之间的新样本。

前面讲的翻转、裁剪、回译都是对单个样本施加变换。Mixup 走得更远:它把两张图、两个标签按比例线性混合,新样本既像 A 又像 B。另一个常用招数是 Cutout——随机挖去样本的一小块区域,强迫模型不要只盯着局部特征;还有噪声注入,给样本加上少量高斯噪声,模拟采集设备的随机误差。

Mixup 的核心是像素和标签同步混合:

Mixup 就像老周把红烧肉和清蒸鱼各取一半做实验菜——客人们尝到了前所未有的混合风味,而老周对两类客人的口味都有了更深的把握。

x~=λxi+(1−λ)xj,y~=λyi+(1−λ)yj\displaystyle \tilde{x} = \lambda x_i + (1 - \lambda) x_j, \qquad \tilde{y} = \lambda y_i + (1 - \lambda) y_j
两盘菜各舀一勺拌在一起,新菜的味道是七分 A、三分 B,标签也得按同样比例来写。
  1. 混合系数 \lambda从 Beta 分布采样,决定更偏向哪个样本。
    λ∼Beta(α,α),λ∈[0,1]\lambda \sim \text{Beta}(\alpha, \alpha), \qquad \lambda \in [0, 1]
  2. 像素混合 \tilde{x}两张图像的每个像素按比例加权相加。
    x~=λxi+(1−λ)xj\tilde{x} = \lambda x_i + (1 - \lambda) x_j
  3. 标签混合 \tilde{y}独热标签也用同一个比例加权。
    y~=λ yi+(1−λ) yj\tilde{y} = \lambda\,y_i + (1 - \lambda)\,y_j
  4. 软标签模型的目标不再是“全A”或“全B”,而是“七分A三分B”。
    y~=(0.7,0.3)⇒平滑的决策边界\tilde{y} = (0.7, 0.3) \Rightarrow \text{平滑的决策边界}

实践原则

老周定下规矩:菜必须在后厨做好再端上桌,上桌后绝不回锅加工;调味下手要知轻重,盐放多了整道菜就毁了。训练和测试也有这样的规矩。

数据增强虽然是“万能佐料”,用法却有讲究。第一条原则是测试不增强:训练时对样本做随机变换是为了让模型见得更多,但评估时如果把测试样本也做变换,等于“开卷考还改卷子”,指标不再反映真实水平。唯一的例外是 TTA(Test-Time Augmentation),它把同一测试样本做多次增强后对预测取平均,属于推理期技巧。第二条是强度控制:增强太弱没什么效果,太强则破坏样本语义。第三条是标签保持:普通几何变换必须保证类别不变,凡是可能改变语义的变换要坚决不用,或者改用 Mixup 这类同步修改标签的方法。

强度控制可以用一个带系数的噪声注入公式来理解:

训练是不停试菜的后厨,测试是把菜端给客人的餐桌。老周的规矩——上桌前不再加工、调味不过猛——正是数据增强的两条黄金法则。

xaug=(1−α) x+α ϵ,ϵ∼N(0,σ2)\displaystyle x_{\text{aug}} = (1 - \alpha)\, x + \alpha\, \epsilon, \qquad \epsilon \sim \mathcal{N}(0, \sigma^{2})
\alpha 就像盐勺的大小:一点点提鲜,一勺下去菜就咸得没法吃。
  1. 强度系数 \alpha取值在 0 到 1 之间,决定噪声占多大比例。
    α∈[0,1]\alpha \in [0, 1]
  2. 噪声 \epsilon从高斯分布采样的随机扰动,模拟采集误差。
    ϵ∼N(0,σ2)\epsilon \sim \mathcal{N}(0, \sigma^{2})
  3. 线性组合原样本与噪声按比例插值——\alpha 太小时增强几乎不起作用。
    α→0  ⇒  xaug→x\alpha \to 0 \;\Rightarrow\; x_{\text{aug}} \to x
  4. 语义边界\alpha 过大时样本彻底失真,可能不再属于原类别。
    α→1  ⇒  xaug→ϵ∉原类别\alpha \to 1 \;\Rightarrow\; x_{\text{aug}} \to \epsilon \notin \text{原类别}

工程落地

老周的饭馆要开连锁,不能靠他一个人手切——他建了中央厨房:切菜机、调料罐、装盘流水线,每道菜按标准流程处理,出餐又快又稳。深度学习训练也一样,需要把增强流程“流水线化”。

现代深度学习框架(如 PyTorch)已经把数据增强做成了标准模块。训练时,每一个 batch 的样本都会在送入模型前被“在线”随机变换一次,这意味着每个 epoch 模型看到的都是“新”的数据集。相比离线增强(先扩充存储再训练),在线增强不占磁盘空间,还天然提供了无限多样性。实现上把翻转、裁剪、颜色抖动等操作串成 transforms 管道,配合 DataLoader 的多进程加载,增强在 CPU 上并行完成,不拖累 GPU 训练。增强强度也可以设计成随训练轮数衰减:前期强增强探索更大区域,后期减弱帮助模型收敛。

在线增强的数学描述很简洁——每个样本独立采样各自的变换:

在线增强就是老周的中央厨房——每个 epoch 都自动换着花样把食材“再切一遍”。中央厨房一开,模型想训多久就训多久,想开几家连锁店都行。

B~={ Ti(xi)  ∣  xi∈B,  Ti∼p(T) }\displaystyle \tilde{\mathcal{B}} = \bigl\{\, T_{i}(x_{i}) \;\big|\; x_{i} \in \mathcal{B},\; T_{i} \sim p(T) \,\bigr\}
流水线上每个食材经过时,机器都会随机换一种切法——中央厨房每开动一次,产出的都是全新的一批菜。
  1. 原始批次 \mathcal{B}DataLoader 取出的一批原始样本。
    B={x1,x2,…,xn}\mathcal{B} = \{x_{1}, x_{2}, \ldots, x_{n}\}
  2. 独立采样变换 T_i每个样本各自随机采样一个变换,互不干扰。
    Ti∼p(T)T_{i} \sim p(T)
  3. 逐样本增强每个样本独立变换,得到增强后的批次。
    x~i=Ti(xi)\tilde{x}_{i} = T_{i}(x_{i})
  4. 送入模型训练用增强批次计算损失、反向传播,下一个 epoch 重新采样出全新的一批。

AI 应用场景

医学影像诊断增强

阶段:数据预处理 / 模型训练

解决的问题:罕见病 CT 影像非常稀少,收集成本高且涉及患者隐私,难以对外共享。传统做法是硬凑数据或接受欠拟合。AI 通过旋转、镜像、对比度调整、弹性形变扩充影像集,让模型在有限病灶样本上学到稳定特征。

具体案例:某三甲医院的新冠 CT 分类项目,只有 800 张阳性 CT,通过 8 倍在线增强(翻转 + 旋转 + 色调抖动)后训练 ResNet,测试 AUC 从 0.81 提升到 0.89,相当于老周用一小块肉喂饱了一大桌客人。

客服意图识别语料增强

阶段:数据准备 / 模型训练

解决的问题:标注一句意图要几毛钱,几万条标注语料成本高昂。传统做法靠人工多写几个模板句,覆盖不到用户千奇百怪的真实表达。AI 用同义词替换加回译(中文→英文→中文)自动生成数十种说法,让意图分类模型见多识广。

具体案例:某银行智能客服的“查询余额”意图仅有 120 条种子语料,通过回译扩充到 3000 条,线上意图识别准确率从 82% 升到 93%——像老周把一道菜谱翻译成多种方言版本,客人都听得懂。

自动驾驶极端场景模拟

阶段:模型训练 / 测试

解决的问题:雨天、大雾、夜间等极端驾驶场景很难采集,路测成本按公里计算。传统做法是等真实事故数据,风险极高。AI 通过颜色抖动模拟不同光线、加高斯噪声模拟传感器误差、Cutout 模拟遮挡,让感知模型提前“见过”恶劣环境。

具体案例:某自动驾驶公司的目标检测模型,夜间低对比度样本的 mAP 只有 0.52,加入亮度抖动与噪声增强后提升到 0.68,雨天样本的召回率也显著上升——相当于老周提前演练过各种挑食客人的口味。

Python 演示

python53 行
import numpy as np rng = np.random.RandomState(42)  def flip_horizontal(img):    # 水平翻转, 左右镜像, 样本内容不变    return img[:, ::-1]  def random_crop(img, crop_size=(6, 6)):    # 随机裁剪: 从图上任意位置截取局部区域    h, w = img.shape    ch, cw = crop_size    y = rng.randint(0, h - ch + 1)    x = rng.randint(0, w - cw + 1)    return img[y:y + ch, x:x + cw]  def color_jitter(img, strength=0.3):    # 颜色抖动: 随机缩放亮度并截断到合法区间    factor = 1 + rng.uniform(-strength, strength)    return np.clip(img * factor, 0, 1)  def mixup(x1, x2, y1, y2, lam=0.5):    # Mixup: 像素与标签按同一比例线性插值    return lam * x1 + (1 - lam) * x2, lam * y1 + (1 - lam) * y2  def main():    # 构造两个不同类别的 8x8 二值样本    x_a = np.zeros((8, 8))    x_a[1:5, 1:5] = 1.0      # 左上角方块    x_b = np.zeros((8, 8))    x_b[4:8, 4:8] = 1.0      # 右下角方块    y_a = np.array([1.0, 0.0])    y_b = np.array([0.0, 1.0])     print("原始样本 A 形状:", x_a.shape)    print("翻转增强后形状:", flip_horizontal(x_a).shape)    print("裁剪增强后形状:", random_crop(x_a).shape)    jittered = color_jitter(x_a)    print("颜色抖动后像素范围:",          round(jittered.min(), 2), round(jittered.max(), 2))     x_mix, y_mix = mixup(x_a, x_b, y_a, y_b, lam=0.7)    print("Mixup 新样本像素总和:", round(x_mix.sum(), 2))    print("Mixup 混合标签:", y_mix)  if __name__ == "__main__":    main()
目的:用 NumPy 从零实现图像增强四大招——翻转、裁剪、颜色抖动和 Mixup,演示如何在不收集新数据的情况下生成多样化样本。
  1. return img[:, ::-1]把列索引整体反向,一行代码实现左右镜像
  2. y = rng.randint(0, h - ch + 1)随机决定裁剪窗口的起始行,每次裁的位置都不同
  3. return img[y:y + ch, x:x + cw]按窗口切片,得到随机的局部区域
  4. factor = 1 + rng.uniform(-strength, strength)生成 0.7 到 1.3 的随机亮度因子
  5. return np.clip(img * factor, 0, 1)乘法调亮度后用 clip 保证像素值合法
  6. return lam * x1 + (1 - lam) * x2, lam * y1 + (1 - lam) * y2像素与标签用同一个 \lambda 混合,保证监督信号不矛盾
  7. if __name__ == "__main__":脚本既可被导入复用,也可以直接运行演示

常见误区

误区数据增强不就是翻转图片、裁剪图片吗?我做 NLP 或者表格数据的,这个技术跟我没关系。

正解数据增强的本质是“用领域知识生成合理的新样本”,任何模态都有对应的变换。文本可以用同义词替换和回译,语音可以变速加噪,表格数据可以做特征扰动。老周的刀工不止能切肉,切菜、切鱼、雕花样样都行。

为何常见:深度学习的公开教程大多用图像分类举例,翻转、裁剪这些操作出现频率太高,让新手误以为增强是图像专属。

误区过拟合严重?那我把对比度拉到极限、裁剪只剩一个角、同义词全换一遍,增强得越狠模型越强。

正解增强不是越猛越好,而是“越像真实世界的合法变化越好”。颜色抖到失真、裁剪只剩局部、所有词都换成生僻同义词,样本会脱离真实分布,模型学到的反而是现实中不存在的“怪样本”。调味要知轻重,盐放多了整道菜就毁了。

为何常见:过拟合时人们本能地加大一切正则化手段的力度,而“增强”这个词本身听起来像多多益善。

误区训练时做了翻转裁剪,测试时也应该做同样的增强,这样两边预处理一致,模型表现更好。

正解测试的目标是衡量模型在真实数据上的表现,一旦给测试样本加了增强,得到的指标就不再是真实水平。训练增强是为了扩大训练分布覆盖,两者目的完全不同。TTA 是唯一例外,但它取多次预测的平均,本质仍是“原始样本输入、多次投票”。

为何常见:很多入门教程强调“训练和测试的预处理要一致”,新手把这个原则错误地推广到了数据增强上。

误区Mixup 把两张图混合了,标签随便取其中一个就行,反正模型只要学会大致类别。

正解像素变成了“七分 A、三分 B”,标签就必须同步变成 0.7·y_A + 0.3·y_B,否则模型会收到自相矛盾的监督信号:输入长得像 A 却要求输出 B。只有翻转、裁剪这类“标签保持型”增强才允许标签不变。

为何常见:日常接触的几何增强几乎都不改标签,让人默认“增强 = 标签不变”,遇到 Mixup 这种会改变样本内容的增强时惯性思维就失效了。

面试题

Q1. 数据增强的核心目标是什么?

单选题 · easy

  • A.增加模型的参数量
  • B.不增数据下提升泛化← 正确答案
  • C.加快单次训练的速度
  • D.缩短模型的推理时间

答案:B。数据增强通过对已有样本施加合理变换生成多样化新样本,本质是扩大训练集的数据分布覆盖,从而提升泛化能力。它不增加参数量,也不直接加速训练或推理。

Q2. 下列哪项属于图像数据增强?

单选题 · easy

  • A.同义词替换法
  • B.回译生成新句
  • C.随机裁剪图像← 正确答案
  • D.词向量拼接法

答案:C。随机裁剪是对图像局部区域截取后缩放回原尺寸,属于典型的图像几何增强。同义词替换和回译属于文本增强,词向量拼接属于特征工程,均与图像无关。

Q3. 测试阶段对样本做增强,正确做法是什么?

单选题 · mid

  • A.测试时必须做同样增强
  • B.测试增强一定提升效果
  • C.测试通常保持原始样本← 正确答案
  • D.测试增强能替代训练增强

答案:C。测试的目的是衡量模型在真实数据上的水平,所以通常保持原始样本不增强。训练增强是为了扩大分布覆盖;测试增强会让指标失真。TTA 是例外,但它是多次预测取平均,不属于常规做法。

Q4. Mixup 混合两个样本时,标签应该如何处理?

单选题 · mid

  • A.直接沿用原来的标签
  • B.增强过程中丢弃标签
  • C.按混合比例线性插值← 正确答案
  • D.随机保留其中一个标签

答案:C。Mixup 把像素按 \lambda 比例线性混合,标签也必须按同一比例混合成软标签,否则输入与监督信号矛盾。这就像七分 A 三分 B 的菜,账本上必须记成七三开。

Q5. 回译属于哪一类数据增强?

单选题 · easy

  • A.图像增强方法
  • B.文本增强方法← 正确答案
  • C.语音增强方法
  • D.混合增强方法

答案:B。回译是把句子翻译成另一种语言再翻译回来,产生语义不变、句式不同的新样本,属于文本增强。它不涉及图像像素、语音波形或样本间混合。

Q6. 数据增强为什么能缓解过拟合?

单选题 · hard

  • A.增大模型容量参数
  • B.扩大样本分布覆盖← 正确答案
  • C.降低模型的复杂度
  • D.减小损失函数数值

答案:B。过拟合源于训练数据不足以约束模型自由度。数据增强生成大量变换样本,让训练分布覆盖更广,模型学到的是规律而非死记硬背,从而缩小泛化差距。它不改变模型容量、不降低复杂度,也不直接减小损失。

Q7. 增强强度过大会带来什么问题?

单选题 · hard

  • A.训练速度显著变慢
  • B.样本失真偏离分布← 正确答案
  • C.模型产生梯度消失
  • D.参数数量剧烈膨胀

答案:B。增强强度过大时,变换后的样本会脱离真实数据分布,模型学到的是现实中不存在的“怪样本”,反而损害泛化。就像盐放多了整道菜没法吃——调味的目的是提鲜,不是毁掉食材。

Q8. 下列属于常用文本增强方法的有哪些?

多选题 · mid

  • A.同义词的替换← 正确答案
  • B.回译生成句式← 正确答案
  • C.图像的随机裁剪
  • D.随机插入与删除← 正确答案

答案:ABD。同义词替换、回译、随机插入与删除都是在保持语义基本不变的前提下改写句子,属于文本增强。随机裁剪作用于图像像素,与文本无关。

Q9. 下列属于图像几何变换增强的有哪些?

多选题 · mid

  • A.图像的水平翻转← 正确答案
  • B.像素值的亮度抖动
  • C.图像的随机旋转← 正确答案
  • D.图像的边缘裁剪← 正确答案

答案:ACD。水平翻转、随机旋转、边缘裁剪都改变图像的几何结构,属于几何变换。亮度抖动属于颜色/光度变换(photometric),它改变像素值而非几何形状。

Q10. 关于数据增强的实践原则,正确的有?

多选题 · extreme

  • A.训练增强测试不变← 正确答案
  • B.增强越强效果越好
  • C.不改变样本语义标签← 正确答案
  • D.针对任务定制增强方案← 正确答案

答案:ACD。训练增强、测试保持原样是黄金法则;绝大多数几何与颜色增强必须保持语义标签不变;增强方案要针对任务定制,比如数字识别不能旋转 180 度。增强并非越强越好,强度过大会导致样本失真,故 B 错误。