2017-02-15 2 views
7

Я хотел бы, чтобы моя модель keras изменила размер входного изображения с помощью cv2 или аналогичного.Изменение размера входного изображения в слое Keras Lambda

Я видел использование ImageGenerator, но я бы предпочел написать собственный генератор и просто изменить размер изображения в первом слое с помощью keras.layers.core.Lambda.

ответ

7

Если вы используете бэкэндер 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() 
+0

Я столкнулся с той же проблемой, как и раньше. Во время предсказания я получаю сообщение об ошибке, что 'ktf' не найден. Я применил тот же оператор import в моем сценарии предсказания, конечно. Я также перешел на полный путь как 'keras.backend.tf' и все еще' NameError': name 'keras' не определен –

+0

@SamHammamy Кажется, что среда, в которой выполняется сценарий прогнозирования, не имеет keras. Попробуйте импортировать только keras и посмотреть. Если он работает, посмотрите, какой бэкэнд использует его. Кроме того, вместо того, чтобы получать 'tf' из keras backend, вы можете использовать' import tensorflow as tf' и использовать его. – indraforyou

+0

Конечно, у него есть «керас». Я запустил предсказание, изменив размер в генераторе в течение нескольких недель. Это, однако, панель Raspberry Pi, и я установил TensorFlow на нее из пользовательского пика, который я нашел в Интернете. Как я уже сказал, это нормально работает, если я изменяю размер в генераторе. Я также нашел это решение, которое мне нужно исследовать сегодня. Https://gist.github.com/bzamecnik/a33052ec46ee7efeb217856d98a4fb5f –

Смежные вопросы