目录
2.1 通过ImageDataGenerator 对数据进行增强
1. 数据增强的实现方法
(1)归一化
把数据归一化到一定的区间内,使得网络更容易学习。
(2)图像变换
翻转,拉伸,裁剪,变形(丰富数据)
(3)色彩变换
对比度,亮度
(4)多尺度裁剪
2. 数据增强在tf中的实现
通过keras.preprocessing.image.ImageDataGenerator接口来实现数据增强
rescale = 1./255, # 将所有的像素点缩放到0——1,因为所有的像素点的值在0——255之间。
rotation_range = 40, # 图像增强的一种方式,比如 ratation_range = 40, 表示将图像随机旋转的角度为-40——40度之间。
width_shift_range = 0.2, # 水平方向上的位移,小于1,表示的就是位移的比例;大于1,就是移动的像素值。width_shift_range = 0.2,表示图像随机平移0——20%
height_shift_range = 0.2, # 竖直方向上的位移
shear_range = 0.2, # 剪切强度
zoom_range = 0.2, # 缩放强度
horizontal_flip = True, # 是否在水平方向上做随机反转
fill_mode = 'nearest') # 对图片做处理时,需要填充像素时使用。比如,对图像做放大操作,有些像素点需要填充。
2.1 通过ImageDataGenerator 对数据进行增强
# 训练数据
train_datagen= keras.preprocessing.image.ImageDataGenerator(
rescale = 1./255, # 将所有的像素点缩放到0——1,因为所有的像素点的值在0——255之间。
rotation_range = 40, # 图像增强的一种方式,比如 ratation_range = 40, 表示将图像随机旋转的角度为-40——40度之间。
width_shift_range = 0.2, # 水平方向上的位移,小于1,表示的就是位移的比例;大于1,就是移动的像素值。width_shift_range = 0.2,表示图像随机平移0——20%
height_shift_range = 0.2, # 竖直方向上的位移
shear_range = 0.2, # 剪切强度
zoom_range = 0.2, # 缩放强度
horizontal_flip = True, # 是否在水平方向上做随机反转
fill_mode = 'nearest') # 对图片做处理时,需要填充像素时使用。比如,对图像做放大操作,有些像素点需要填充。
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size = (height, width),
batch_size = batch_size,
seed = 7,
shuffle = True,
class_mode = "categorical")
# 验证数据
valid_datagen= keras.preprocessing.image.ImageDataGenerator(
rescale = 1./255 # 将所有的像素点缩放到0——1,因为所有的像素点的值在0——255之间。
)
valid_generator = train_datagen.flow_from_directory(
valid_dir,
target_size = (height, width),
batch_size = batch_size,
seed = 7,
shuffle = False,
class_mode = "categorical")
更多代码详见:本代码使用的是卷积神经网络作基础。