Keras: подача изображений в CNN и получение вывода изображения - PullRequest
0 голосов
/ 06 июля 2018

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

У меня есть данные тренировок в виде массивов фигуры (602, 2048, 2048, 1). 602 изображения размером 2048х2048 с одним каналом. Массив выходных масок имеет одинаковые размеры.

Что я не могу понять, так это как определить первый слой или как правильно подать данные в модель. Буду очень признателен за помощь в этом вопросе

1 Ответ

0 голосов
/ 06 июля 2018

Что ж, это не «правило», но, вероятно, вы будете использовать в основном двумерные конвы и связанные с ними слои.

Вы кормите все как массивы, как обычно, возможно, нормализуя значения. Общие параметры:

  • От 0 до 1 (просто разделите на 255.)
  • От -1 до 1 (разделить на 255., умножить на 2, вычесть 1)
  • Стиль кафе: вычитайте из каждого канала определенное значение, чтобы «центрировать» значения на основе их обычного среднего значения без их масштабирования.

Ваша модель должна начинаться с чего-то вроде:

inputTensor = Input((2048,2048,1))
output = Conv2D(filters, kernel_size, .....)(inputTensor)    

Или, в последовательных моделях: model.add(Conv2D(...., input_shape=(2048,2048,1))

Позже вам решать, какие слои использовать.

  • Conv2D
  • MaxPooling2D
  • Upsampling2D

Собираетесь ли вы создать линейную модель или собираетесь разделять ветви, объединять ветви и т. Д. - это также ваш вызов.

Модели в стиле U-Net должны стать хорошим началом для вас.

Что вы не можете сделать :

  • Не используйте Сглаживать слои (на самом деле вы можете, если позже вы измените форму для получения размеров изображения ... но почему?)
  • Не используйте слои Global Pooling (вы не хотите жертвовать своими пространственными измерениями)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...