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()) |
这是使用我的代码生成的图像的示例:
如您所见,图像失真并且不足以训练我的网络。
我想知道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中找到其实现。