在Keras Lambda层中调整输入图像的大小

我希望我的keras模型使用cv2或类似格式来调整输入图像的大小。

我已经看到了的用法ImageGenerator,但是我更愿意编写自己的生成器,并简单地使用调整第一层图像的大小keras.layers.core.Lambda

我该怎么做?

回答:

如果您正在使用tensorflow后端,则可以使用tf.image.resize_images()函数调整Lambda图层中图像的大小。

这是一个演示相同情况的小例子:

import numpy as np

import scipy.ndimage

import matplotlib.pyplot as plt

from keras.layers import Lambda, Input

from keras.models import Model

from keras.backend import tf as ktf

# 3 channel images of arbitrary shape

inp = Input(shape=(None, None, 3))

try:

out = Lambda(lambda image: ktf.image.resize_images(image, (128, 128)))(inp)

except :

# if you have older version of tensorflow

out = Lambda(lambda image: ktf.image.resize_images(image, 128, 128))(inp)

model = Model(input=inp, output=out)

model.summary()

X = scipy.ndimage.imread('test.jpg')

out = model.predict(X[np.newaxis, ...])

fig, Axes = plt.subplots(nrows=1, ncols=2)

Axes[0].imshow(X)

Axes[1].imshow(np.int8(out[0,...]))

plt.show()

以上是 在Keras Lambda层中调整输入图像的大小 的全部内容, 来源链接: utcz.com/qa/403501.html

回到顶部