数据增强
线下:事先执行所有转换,实质上会增加的数据集的大小,适用于较小的数据集。
线上:在送入机器学习之前,在小批量(mini-batch)上执行这些转换,适用于较大的数据集,一些机器学习框架支持在线增强,可以在GPU上加速。
主要有以下几类:
- 几何变换:例如平移、旋转、翻转、缩放等。(有小目标,必须裁剪
- 颜色变换:①噪声:为了让模型更加鲁棒,可以考虑在训练集内加入高斯噪声、椒盐噪声等对模型进行干扰。② 颜色扰动:改变亮度、灰度、饱和度、对比度等,色调归一化
- 类别不平衡(待补充):重采样;实例平衡增强
- 去模糊:中值/高斯/动态模糊、去雾算法(GCANet、FFA-Net、AOD-Net等等)、MSRCR等
- 目标遮挡或重叠:Cutout、Random Erasing、Mixup、Cutmix等
- 其他:使用copy-paste 、泊松融合等增加数据量,使用标签平滑等防止过拟合,……
细节补充
-
实例平衡增强
实例平衡增强(Instance-Balanced Augmentation)技术,即对图像按照特定的尺度(如 1.5 倍和 2 倍大小)进行缩放操作,即定义了一批大小不同的「滑窗」。同时也会定义滑窗的步长。定义后,使用滑动窗口在样本图像中滑动,产生滑动区域。在这些滑窗中,选择包含少量目标的最优数据加入到训练集中。
选择滑窗注意:①参考数据集已有样本的类别分类情况选择滑窗目标;②可根据分辨率和尺度等对选出的滑窗目标加入一些随机扰动,达到增强原有数据集的目的
-
遮挡重叠方法比较
Cutout:利用固定大小的矩形对图像进行遮挡,在矩形范围内,所有的值都被设置为0,或者其他纯色值。而且擦除矩形区域存在一定概率不完全在原图像中的(文中设置为50%)。motivation是“遮挡”,即删除的矩形区域可以看成是被遮挡的位置
Random Erasing:通过均匀分布取样得到擦除矩形面积,以及长宽值。选择一个满足所有矩形部分都在图像内的左上角坐标,将这个矩形区域都设置为统一的和图像其他区域无关的纯色值。
(最主要的区别在于在cutout中,擦除矩形区域存在一定概率不完全在原图像中的。而在Random Erasing中,擦除矩形区域一定在原图像内。Cutout变相的实现了任意大小的擦除,以及保留更多重要区域。)
Mixup:两张图像每个位置的像素根据一定比例进行叠加,label根据像素叠加比例进行分配。/从训练样本中随机抽取两个样本进行简单的随机加权求和,同时样本的标签也对应加权求和,然后预测结果与加权求和之后的标签求损失,在反向求导更新参数。
Cutmix:随机删除一个矩形区域,并通过另一张图像的同一位置像素值填充,label根据像素所占比例进行分配
- github数据增强
Image augmentation for machine learning experiments.
Fast image augmentation library and an easy-to-use wrapper around other libraries.
Image augmentation library in Python for machine learning.
参考: