Keras ImageDataGenerator如何重新缩放参数?

时间:2018-04-27 15:21:03

标签: python keras

我总是使用此参数将原始图像像素值的数组缩放到[0,1]之间,并指定参数rescale=1./255

然后当我这样做时:

from keras.preprocessing.image import load_img, img_to_array, ImageDataGenerator

img = load_img('val_00009301.JPEG')
img_arr = img_to_array(img)
datagen = ImageDataGenerator(rescale=1./255)
for batch in datagen.flow(img_arr, 
                            batch_size=1, 
                            save_to_dir='path/to/save', 
                            save_prefix='1_param', 
                            save_format='jpeg'):......`

当我检查“path / to / save”目录时,我看到ImageDataGenerator类生成的图片完全正常。怎么会发生?我应该看到几乎完全黑色的图像。

2 个答案:

答案 0 :(得分:2)

这是因为当您将其保存到磁盘时,array_to_img()函数将其重新缩放,然后返回到图像范围,即uint8为0-255。有关详细信息,请参阅the keras image data generator implementation

答案 1 :(得分:2)

我稍微修改了你的例子以绘制图像并打印了一个像素值,似乎图像在绘制时会自动重新缩放,因为我没有注意到my input image和绘制的图像之间存在任何差异。我假设保存时会发生同样的情况。

TypeError: Cannot read property 'setState' of undefined
    at index.js:47

打印值为:from keras.preprocessing.image import load_img, img_to_array, ImageDataGenerator import numpy as np from matplotlib import pyplot img = load_img('capture102.jpg') img_arr = np.expand_dims(img_to_array(img), axis=0) datagen = ImageDataGenerator(rescale=1./255) for batch in datagen.flow(img_arr, batch_size=1, save_to_dir='path/to/save', save_prefix='1_param', save_format='jpeg'): print(batch[0][0][0]) pyplot.imshow(batch[0]) pyplot.show() break