36- 数据增广
36 数据增广
目录
数据增广不仅用于处理图片,也可用于文本和语音,这里只涉及到图片。
1. 使用增强数据训练
采集数据得到的训练场景与实际部署场景不同是常见的问题,这种变化有时会显著影响模型表现。在训练集中尽可能模拟部署时可能遇到的场景对模型的泛化性十分重要。
数据增强是指在一个已有数据集上操作使其有更多的多样性。对语音来说可以加入不同的背景噪音,对图片而言可以改变其颜色,形状等。
一般来说不会先将数据集做增广后存下来再用于训练;而是直接在线生成,从原始数据中读图片并随机做数据增强,再进入模型训练。通常只在训练时做数据增强而测试时不用。可以将数据增强理解为一个正则项。
2. 增强手段
2.1 翻转
一些例子:左右翻转,上下翻转
要注意不是所有增强策略都总是可行,如建筑图片上下翻转就不太合适,而之前的树叶分类竞赛中的树叶图片就没关系。

2.2 切割
从图片中切割一块然后变形到固定形状。一般做法是随机取一个高宽比,随机取图片大小(切下部分占原图的百分数

2.3 颜色
改变色调,饱和度,明亮度。

2.4 其他
还可以有很多种不同的方法,如高斯模糊,部分像素变黑,图片变形,锐化等等。理论上讲

3. 总结
- 数据增广通过变形数据来获取多样性从而使得模型泛化性能更好
- 常见图片增广包括翻转,切割,变色
4. QA
是的,但实际情况中很难有足够多样性的图片能覆盖测试的所有情况。
数据量大也不一定意味着足够多样,可能简单情况已经很充分,但对于很难的情况覆盖率不够。
Q2: (代码实现中的)
是。
这里老师还提到虽然深度学习主要用
GPU ,但CPU 也不能太差,否则可能数据预处理跟不上,CPU 的内存带宽和到显卡的带宽不够。具体决定num_worker 可以自己定一个值然后跑一个epoch 看看耗时。
可以,类似地震预测等等正样本少的情况都可以尝试对正样本做增广,负样本可以不用。
一般不对测试集做增广。也可以对一张测试图像做增广,将每个增广出的图片都做一次预测最后取平均,会一定程度改善精度。但这样会使得对每张图片预测计算量成倍增长,所以使用较少。
没有。
是的,课堂演示时往往跑的
epoch 较少,另外训练到后期gap 一般不会减少。
不用全看,大概看看效果即可。
首先多数图片增广手段不改变数据分布,因为亮度变化等是随机的,数据的均值不变,翻转不影响分布,
crop 可能会有改变但影响不大。后面还有问题提到对增广不改变数据分布的理解,可理解成增广不改变均值但稍微增大方差。很多时候讨论训练集和测试集分布是否相同不是看原始的像素分布而是看各
label 比例或图片色调等是否差不多。
图神经网络很强大但不好训练,目前落地还太早了
把多张图片拼起来训练。这里老师理解错了问题,提到了加马赛克和本节代码中一次展示八张图片只是一起显示而不是使用了
crop 方法。
可以这么认为,但拍视频是很贵的事情,获取视频往往划不来。
是的,这种方法叫
mix-up ,非常有用。后面有问到为什么
mix-up 有用,老师也不清楚。
lable 的叠加是对两张图片label 按特定分布随机取权重加权求和
是,可以考虑将实际部署时识别错误的数据加入训练集使得训练集测试集分布趋同
那倒不会。可以考虑不要
crop 太小的区域。
都差不多