Python 如何使用ImageDataGenerator将图像从[0255]重新缩放到[-1,1]?
我正在使用ImageDataGenerator和flow_from_dataframe加载数据集 ImageDataGenerator允许您指定如下的重缩放因子Python 如何使用ImageDataGenerator将图像从[0255]重新缩放到[-1,1]?,python,tensorflow,keras,Python,Tensorflow,Keras,我正在使用ImageDataGenerator和flow_from_dataframe加载数据集 ImageDataGenerator允许您指定如下的重缩放因子 datagen = ImageDataGenerator(rescale=1./255) 但是如果我想在[-1,1]范围内重新缩放图像,该怎么办?我应该先做减法,再做除法 images -= 128.0 images /= 128.0 如何在ImageDataGenerator的重缩放中执行这两个操作?您可以使用如下预处理功能: d
datagen = ImageDataGenerator(rescale=1./255)
但是如果我想在[-1,1]范围内重新缩放图像,该怎么办?我应该先做减法,再做除法
images -= 128.0
images /= 128.0
如何在ImageDataGenerator的重缩放中执行这两个操作?您可以使用如下预处理功能:
def rescale_img(img):
img = img.astype(np.float32) / 255.0
img = (img - 0.5) * 2
return img
datagen = ImageDataGenerator(rescale=2/255.0,
featurewise_center=True,
samplewise_center=True,)
然后在“重缩放”部分,您可以执行以下操作:
datagen = ImageDataGenerator(rescale=rescale_img())
Keras imagedatagen rescale参数将数据与给定值相乘。这就是为什么它被用作1/255.0等 执行此操作时:
datagen = ImageDataGenerator(rescale=1./255)
数据的平均值为0.5,范围为0到1。现在是棘手的部分,首先要将平均值设置为0。为此,可以使用featurewise\u center和samplewise\u center。现在,它完成了,但是您的数据在-0.5和0.5之间缩放
为了确保它介于-1和1之间,我们将按2/255.0重新缩放它。最后一段代码应该是这样的:
def rescale_img(img):
img = img.astype(np.float32) / 255.0
img = (img - 0.5) * 2
return img
datagen = ImageDataGenerator(rescale=2/255.0,
featurewise_center=True,
samplewise_center=True,)
有关_center参数的更多详细信息,可以参考尝试使用rescale=1/127.5-1,也可以使用预定义的处理器功能,如
preprocessing_function=tf.keras.applications.mobilenet.preprocess_input