Как я могу запустить свою сеть Keras на неквадратных изображениях? - PullRequest
0 голосов
/ 31 октября 2019

Я обучил модель сегментации изображений на основе UNet в tf.keras, которая предсказывает, находится ли и где объект на данном изображении. Я тренируюсь с входной формой (None, 256, 256, 1) и выводю прогноз (None, 256, 256, 3).

Теперь я хочу прогнозировать большие изображения (например, (520, 696)) и хочу использовать ту же модель. Я знаю, что можно изменить форму ввода модели на размер (None, None, None, 1). Однако теперь он все еще может предсказывать только квадратные изображения - для упомянутого изображения он возвращает Dimensionality Error, поскольку фигуры не совпадают (520! = 696).

Кто-нибудь знает, как этого избежать илиесть рабочая функция для сшивания меньших квадратных выходов?

Шаги к ошибке:

img = skimage.io.imread(X)  # shaped (520, 696)
pred = model.predict(img[None,...,None])

InvalidArgumentError: _MklConcatOp: Размеры входов должны совпадать: shape [0] [1]= 64 против фигуры [1] [1] = 65 [[{{node concatenate_4 / concat}}]]

1 Ответ

0 голосов
/ 01 ноября 2019

Я нашел решение - из-за того, что я обучил UNet (со слоями конкатенации после повышения частоты дискретизации), он может комбинировать только степени 2 (например, 256/512). Поэтому мне нужно добавить заполнение, чтобы довести его до следующей степени два перед прогнозированием, и удалить заполнение из выходных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...