图像增强简介
train_datagen = ImageDataGenerator(rescale=1./255)
之前学的图像生成器就有图像增强的功能,上面代码中已经完成了一点图像增强的功能----图像加载的时候就可以完成重新缩放
train_datagen = ImageDataGenerator(
rescale=1./255,
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')
上面提供了一些图像增强的选项:
- 重新缩放;
- 旋转范围是从0-180,用于随机旋转图像,上述代码中图像将旋转介于0-40度之间的随机数;
- 移位: 将图像在其框架内移动,参数指定为图像尺寸的一部分,随机移动物体多少(水平和垂直方向);
- 剪切;
- 缩放(Zoom);
- 水平翻转;
- 填充.
更多内容参考链接
猫狗识别案例
①更长的周期使用较小的数据集
epochs=100;不采用图像增强
存在过拟合现象: 训练集的精度达到了100%,而验证集的才70%~80%.
②训练中添加图像增强
train_datagen = ImageDataGenerator(
rescale=1./255,
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')
训练初期的精度不如非增强版的原因: 代码正在执行图像增强.
解决了过拟合问题.
人-马分类案例
引入图像增强
train_datagen = ImageDataGenerator(
rescale=1./255,
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')
validation_datagen = ImageDataGenerator(rescale=1./255)
图像增强并不能解决所有的过拟合问题.
分析:
①训练集上的精度在稳定地上升,而验证集上的在不断地波动;
②图像增强给训练图像引入了随机元素,但是如果验证集没有相同的随机性,就会出现上图中这样的波动;
③不仅需要大量的图像进行培训,同时也需要它们进行测试,否则图像增强没有太大的帮助.
然后又试了下在验证集上运用图像增强(不知道有没有这种操作)
train_datagen = ImageDataGenerator(
rescale=1./255,
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')
validation_datagen = ImageDataGenerator(
rescale=1./255,
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')
得到的结果图如下:
好像也没有什么用??