keras在使用时候扩充数据集图片,但是图片出现了一定的问题,四周出现了长条状东西,更换了填充模式还是存在
import os
from keras.preprocessing.image import ImageDataGenerator,img_to_array,load_img
data_generator=ImageDataGenerator(
rotation_range=45,
width_shift_range=0.2,
height_shift_range=0.3,
brightness_range=(0.5,0.9),
zoom_range=[0.5,1.1],
horizontal_flip=True,
vertical_flip = True,
#fill_mode=' '
)
path=r"C:\Users\PC\Desktop\koutu\baiyunyan"
for i in os.listdir(path):
address=os.path.join(path,i)
img=load_img(address)
image=img_to_array(img)
image=image.reshape((1,)+image.shape)#需要四维
j=0
for i in data_generator.flow(image,batch_size=1,
save_to_dir=r"C:\Users\PC\Desktop\koutu\456",
save_prefix='baiyunyan',
save_format='png'):
j+=1
if(j>=5):
break;
print("全部完成")
问题已经找到了:原来是做zoom_range命令时会出现长条状,此时,我们可以将模式调整为“
wrap“或者我们调整其代表值,将值改为大于1的数。此方法生成图片数量太慢。我们使用flow_from_directory批量快速扩充:
from keras.preprocessing import image
datagen = image.ImageDataGenerator(shear_range=0.5, horizontal_flip=True, vertical_flip=True)
gen_data = datagen.flow_from_directory(r"D:/论文/123",#扩充图片数据集的父目录处即可
batch_size=1,
shuffle=False,
save_to_dir=r"D:/论文/kuochong", #扩充图片放置的地方
save_prefix='b_h',
save_format='jpg',
target_size=(1024,1024)
)
for i in range(6):
gen_data.next()