文章目录
一、Data Augmentation
随着人工智能和计算机算力的持续跟进和发展,海量数据已经成为各行各业追逐的资源,但数据量仍然不能完全满足和适应AI的发展,深层神经网络需要大量的训练数据才能获得比较理想的结果。在数据量有限的情况下,往往达不到预期的优化效果,在这种情况可以通过数据增强(Data Augmentation)来增加训练样本的多样性, 提高模型鲁棒性,避免过拟合。通过对训练图片进行变换可以得到泛化能力更强的网络,更好的适应应用场景。
二、Data Augmentation分类
数据增强可以分为两类,一类是离线增强,一类是在线增强。
(1)离线增强 (offline augmentation): 直接对数据集进行处理,数据的数目会变成增强因子 * 原数据集的数目 ,这种方法常常用于数据集数量少的情况。此列数据增强会成倍增加数据量。
(2)在线增强(online augmentation) : 这种增强的方法用于,获得 batch 数据之后,然后对这个 batch 的数据进行增强,典型的数据增强方法有翻转(Flip),旋转(Rotat ),缩放(Scale),随机裁剪或补零(Random Crop or Pad),色彩抖动(Color jittering),加噪声(Noise),由于有些数据集不能接受线性级别的增长,这种方法主要用于大的数据集,很多机器学习框架已经支持了这种数据增强方式,并且可以使用 GPU 优化计算。
三、常用的数据增强技术
3.1 翻转(Flip)
翻转就是沿着水平或者垂直方向翻转图像。
3.2 旋转 | 反射变换(Rotation/reflection)
旋转|反射就是随机旋转图像一定角度; 改变图像内容的朝向。
3.3 平移(shift)
平移就是在图像平面上对图像以一定方式进行平移。
3.4 缩放(Scale)
缩放就是按照一定的比例放大或者缩小图像。
3.5 随机裁剪或补零(Random Crop or Pad)
就是可以采用随机或人为定义的方式对图像进行裁剪或者补零。
3.6 色彩抖动(Color jittering)
在图像通道上添加随机扰动
3.7 加噪声(Noise)
对图像的每个像素RGB进行随机扰动, 常用的噪声模式是椒盐噪声和高斯噪声
应用如下:
data_transforms={
'train':transforms.Compose([
transforms.RandomRotation(45),#随机旋转-45-45°之间任意度数
transforms.CenterCrop(200),#中心开始裁剪
transforms.RandomHorizontalFlip(p=0.5),#随机水平翻转 概率0.5
transforms.RandomVerticalFlip(p=0.5)