本文主要是介绍Tensorflow 图像增强(ImageDataGenerator),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当我们训练一个较为复杂的网络,并且我们的训练数据集有限时,网络十分容易陷入过拟合的状态。
解决这个问题的一个可能的有效方法是:进行数据增强,即通过已有的有限的数据集,通过图像处理等方法(旋转,剪切,缩放…),获得更多的,类似的,多样化的数据。
数据增强处理,不会占用更多的存储空间,即在数据增强过程中,原始的数据不会被修改,所有的处理过程都是在内存中 即时(on-the-fly) 的处理。
注意:
数据增强不一定是万能药(虽然数据多了),数据增强提高了原始数据的随机性,但是若 测试集或应用场景 并不具有这样的随机性,那么它将不会起到作用,还会增加训练所需的时间。
使用方法:
train_datagen = ImageDataGenerator(rescale=1./255, #数据值除以255,[0-255] ->[0,1]shear_range=0.2, #剪切强度(逆时针方向的剪切角度,以度为单位)zoom_range=0.2, #随机缩放范围horizontal_flip=True) #水平翻转test_datagen = ImageDataGenerator(rescale=1./255)train_generator = train_datagen.flow_from_directory('data/train',target_size=(150, 150),batch_size=32,class_mode='binary')validation_generator = test_datagen.flow_from_directory('data/validation',target_size=(150, 150),batch_size=32,class_mode='binary')model.fit_generator(train_generator,steps_per_epoch=2000,epochs=50,validation_data=validation_generator,validation_steps=800)
参考:https://keras.io/preprocessing/image/
这篇关于Tensorflow 图像增强(ImageDataGenerator)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!