Keras最佳图像数据生成器参数用于数据扩充

Keras best Image Data Generator parameters for data augmentation

我正在使用Keras进行面部表情识别,我正在使用的数据集没有大量可用数据,因此我将使用Keras的图像预处理进行数据增强。

我想知道ImageDataGenerator的最佳参数以生成可用于训练我的神经网络的正常人脸。

这是我用于数据扩充的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def data_augmentation(subdir):

    datagen = ImageDataGenerator(
        featurewise_center=False,
        samplewise_center=False,
        featurewise_std_normalization=False,
        samplewise_std_normalization=False,
        zca_whitening=False,
        rotation_range=30,
        width_shift_range=0.2,
        height_shift_range=0.2,
        horizontal_flip=True,
        vertical_flip=False)

    print ("\
Data augmentation...")
    print ("\
Process...")

    for file in glob.glob(subdir+"*/*.jpg"):
        img = load_img(file)
        print ("\
Processing..." + str(file))
        x = img_to_array(img)
        x = x.reshape((1,) + x.shape)

        i = 0
        for batch in datagen.flow(x, batch_size=1, save_to_dir='data_aug', save_prefix='Fig', save_format='jpg'):
            i += 1
            if i > 20:
                break

这是ImageDataGenerator的所有参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
                samplewise_center=False,
                featurewise_std_normalization=False,
                samplewise_std_normalization=False,
                zca_whitening=False,
                zca_epsilon=1e-6,
                rotation_range=0.,
                width_shift_range=0.,
                height_shift_range=0.,
                shear_range=0.,
                zoom_range=0.,
                channel_shift_range=0.,
                fill_mode='nearest',
                cval=0.,
                horizontal_flip=False,
                vertical_flip=False,
                rescale=None,
                preprocessing_function=None,
                data_format=K.image_data_format())

这是使用我的代码生成的图像的示例:

enter image description here

enter image description here

enter image description here

enter image description here

如您所见,图像失真并且不足以训练我的网络。

我想知道ImageDataGenerator对于人脸的最佳参数是什么,还是有更好的数据增强方法?


如果您仅处理面孔,请检查以下文章:
http://www.openu.ac.il/home/hassner/projects/augmented_faces/
它可以从一张人脸图像生成30张图像。
您也可以在python中使用虚拟构成实现。 它们易于使用且成功。


您还可以使用随机擦除功能,以便网络在整个训练过程中可以更多地了解某些特定区域,而不仅仅是专注于面部的某些特定部分。

可以在https://arxiv.org/abs/1708.04896上找到用于随机擦除的纸张
可以在https://github.com/yu4u/cutout-random-erasing中找到其实现。