当我们使用神经网络进行对一些图片进行分类的时候,由于自己的样本数太小,导致训练,分类的结果不太满意,因此本次使用keras自带的生成器产生所需要的图片进行保存,然后可以使用这些图片进行训练,提高神经网络的预测分辨率
#coding:utf8
import os
import cv2.cv as cv
import cv2
import re
from keras.preprocessing.image import ImageDataGenerator,array_to_img,img_to_array,load_img
datagen = ImageDataGenerator(
rotation_range = 40,
width_shift_range= 0.2,
height_shift_range = 0.2,
# rescale = 1.0/255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
fill_mode = 'nearest'
)
write_path = "/home/zhanghao/data/classification/prew/"
def eachFile(filepath):
count = 0
pathDir = os.listdir(filepath)
for allDir in pathDir:
child = os.path.join('%s%s' % (filepath,allDir))
write_child = os.path.join('%s%s' % (write_path,allDir))
img = load_img(child)
nul_num = re.findall(r"\d",child)
nul_num = int(nul_num[0])
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 = write_path,
save_prefix = nul_num,save_format = 'jpeg'):
count += 1
i += 1
if i >= 10 :
break
return count
count = eachFile("/home/zhanghao/data/classification/test_scale/")
print "一共产生了%d张图片"%count
程序运行结果和产生的图片
具体参数可参考文档http://keras-cn.readthedocs.io/en/latest/preprocessing/image/
程序代码https://github.com/zhanghao-JNU/keras-training/blob/master/generater.py