数据增强是从现有的训练样本中生成更多的训练数据,其方法是利用多种能够生成可信图像的随机变换来增加样本,其目标是让模型在训练时不会两次查看完全相同的图像。
对于一张图片的样本数据,每次迭代时都会先随机变换,然后再输入网络,所以使用数据增强来训练一个新网络,那么该网络将不会两次看到同样的输入。
在Keras中使用数据增强:
from keras.preprocessing.image import ImageDataGenerator
generator = ImageDataGenerator(rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest')
rotation_range: 角度值(0,180),表示图像随机旋转的角度范围。
width_shift_range和height_shift_range: 是图像在水平或垂直方向上平移的范围(相对于总宽度或总高度的比例)。
shear_range: 随机错切变换的角度。
zoom_range: 是图像随机缩放的范围。
horizontal_flip: 是随机将一半图像水平翻转。如果没有水平不对称的假设(比如真实世界的图像),这种做法是有意义的。
fill_mode: 是用于填充新创建像素的方法,这些新像素可能来自于旋转或宽度/高度平移。
参考:
1、弗朗索瓦·肖莱《Python深度学习》