Создание модели CNN в Керасе с картами объектов из каждого из предыдущих отфильтрованных изображений - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь реализовать искусственную сверточную нейронную сеть, чтобы выполнить двухклассовую классификацию по пикселям, как показано на прилагаемом рисунке (из Chen et al. Nature 2017).

Можете ли вы дать мне подсказку о том, как должен выглядеть третий и четвертый слои?

Вот как далеко я уже прошел:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D

model = Sequential()
model.add(Conv2D(40, (15, 15), activation='relu', 
          padding='same', input_shape = (64, 64, 1)))  # first layer
model.add(MaxPooling2D((2, 2), padding='same'))  # second layer
# model.add(...)  # third layer  <-- how to implement this?
# model.add(...)  # fourth layer <-- how to implement this?
print(model.summary())

Сколько ядер они использовали для оставшихся слоев и как я должен интерпретировать символы суммирования на изображении?

Заранее спасибо!

1 Ответ

0 голосов
/ 10 октября 2018

Актуальный вопрос довольно двусмысленный.Я правильно догадываюсь, что вы хотите, чтобы кто-то реализовал недостающие две строки кода для сети?

model = Sequential()
model.add(Conv2D(40, (15, 15), activation='relu', 
          padding='same', input_shape=(64, 64, 1)))
model.add(MaxPooling2D((2, 2), padding='same'))
model.add(Conv2D(40, (15, 15), activation='relu', padding='same'))  # layer 3
model.add(Conv2D(1, (15, 15), activation='linear', padding='same'))  # layer 4
print(model.summary())

Чтобы получить 40 карт характеристик после 3-го уровня, мы просто сворачиваем с 40 различными ядрами.После слоя 4 должна быть только одна карта / канал объектов, поэтому здесь достаточно 1 ядра.

Кстати, эта цифра, похоже, взята из Сверточные нейронные сети для автоматической аннотации клеточных крио-сигналов.электронные томограммы ( PDF ) от Chen et al., статья Nature от 2017 года.

Обновление:

Комментарий: [...] почему авторы говорят, что всего 1600 ядер и есть сумма?

На самом деле, авторы, похоже, придерживаются довольно странной записи здесь.У них есть (imho) неправильный способ подсчета ядер.То, что они скорее имеют в виду, это веса (если даны ядра 1x1 ...).

Возможно, они не поняли, что форма ядер на самом деле 3-D, из-за последнего измерения, равного числукарты характеристик.

Когда мы разбиваем его, для 1-го слоя

  • 40 ядер размером 15x15x1 (что составляет 40 * 15 ** 2 обучаемых веса)
  • Нет ядер во 2-м слое
  • 40 ядер размером 15x15x40 в 3-м слое (что составляет 1600 * 15 ** 2 обучаемых веса)
  • 1 ядро ​​размером 15x15x40 для 4-го слоя(что составляет 40 * 15 ** 2 тренировочных веса)
...