为了尽量利用我们有限的训练数据, 我们将通过一系列随机变换对数据进行提升, 这样我们的模型将看不到任何两张完全相同的图片, 这有利于我们抑制过拟合, 使得模型的泛化能力更好。
在Keras中, 这个步骤可以通过keras.preprocessing.image.ImageDataGenerator来实现。
ImageDataGenerator class
keras.preprocessing.image.ImageDataGenerator(
featurewise_center=False,
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False,
zca_epsilon=1e-06,
rotation_range=0,
width_shift_range=0.0,
height_shift_range=0.0,
brightness_range=None,
shear_range=0.0,
zoom_range=0.0,
channel_shift_range=0.0,
fill_mode='nearest',
cval=0.0,
horizontal_flip=False,
vertical_flip=False,
rescale=None,
preprocessing_function=None,
data_format=None,
validation_split=0.0, dtype=None)
具体的代码如下:
class myAugmentation(object):
"""
一个用于图像增强的类:
首先:分别读取训练的图片和标签,然后将图片和标签合并用于下一个阶段使用
然后:使用Keras的预处理来增强图像
最后:将增强后的图片分解开,分为训练图片和训练标签
"""
def __init__(self, train_path="../deform/train", label_path="../deform/label", merge_path="../DataGen/merge", aug_merge_path="../DataGen/aug_merge",
aug_train_path="../DataGen/aug_train", aug_label_path="../DataGen/aug_label")

本文介绍了一种基于Keras的图像增强方法,通过随机变换训练数据,如旋转、平移、翻转等,有效避免了模型过拟合,提高了模型的泛化能力。文章详细展示了如何使用ImageDataGenerator类进行数据扩增,并提供了完整的代码实例。
最低0.47元/天 解锁文章
1380





