3

Я читаю статью «Полностью сверточные сети для семантической сегментации Джонатана Лонга», Эвана Шелхамера * и Тревора Даррелла. CVPR 2015 и PAMI 2016 « Я хочу понять, почему он может работать для семантической сегментации. Давайте рассмотрим архитектуру fcn-32s, она включает в себя две фазы: извлечение функции (conv1-1-> pool5) и классификация функций (fc6-> score_fr). Сравнение с обычной классификационной сетью, основное отличие - вторая фаза. FCN-32 заменяет полностью связанный слой полностью сверлильными слоями (1 x 1) в fc7, чтобы сохранить пространственную карту (как подпись на рисунке 2 на бумаге). Таким образом, я был смущен кое-что об этом месте:Насколько полный сверточный слой может работать для задачи сегментации?

  1. Если мы заменим полностью связный слой, полностью свертке слоя, как он может узнать вес как традиционной классификации архитектуры?
  2. Почему мы можем сохранить пространственную карту (тепловую карту), используя полностью сверточный слой?

Благодарим вас заранее.

Update: Это цифра, чтобы показать, как конвертировать из полностью подключенных к полностью сверточных слоев enter image description here

+1

Можете ли вы предоставить дополнительную информацию/контекст, чтобы читатели не могли самостоятельно использовать Google? В его нынешнем виде, по-моему, только те, кто когда-либо читал бумагу и все еще помнили, ответили бы на этот вопрос. – javaLover

+0

Спасибо javaLover. Я обновил его – user8264

+0

Добро пожаловать. Иногда я хочу спросить что-то вроде этого. По этой теме сообщение выглядит как большой фрагмент абзаца (менее привлекательный). Можно ли отправить ссылку на бумагу? Он также цитирует о жаргоне (?), Подобном «FCN-32s», «pool5» и «сверточном слое». Я не знаю, какие из них являются обычными словами в этой области. Если кто-то не знает, то, что они делают/означает, может быть хорошей идеей. :) – javaLover

ответ

4

Если вы посмотрите на математику, "Convolution" слой и "InnerProduct" (так называемый «полностью подключен») слой, в основном очень похожи: они выполняют линейную операцию на своих соответствующих восприимчивых полях. Единственное отличие состоит в том, что "InnerProduct" берет весь ввод как свое «восприимчивое поле», а слой "Convolution" только смотрит на окно kernel_size на вход.

Что произойдет, если размер ввода изменится?
"Convolution" слой не может заботиться, он просто выводит карту функций с пространственными размерами, соответствующими новой форме ввода.
С другой стороны, слой "InnerProduct" терпит неудачу, так как количество весов, которое оно имеет, не соответствует новому размеру восприимчивого поля.

Замена верхних полностью подключенных слоев в модели с помощью слоев "Convolution" позволяет классифицировать изображение «скользящего окна»: таким образом, достижение грубой семантической сегментации - маркировка на пиксель, а не метка на изображение.

По-прежнему существует большая проблема разрыва шкалы между шкалой ввода и грубой шкалой выходных меток, но есть слои "Deconvolution", чтобы преодолеть этот промежуток.

+0

Спасибо Shai. Я показал форму каждого слоя: 'fc6: (1, 4096, 16, 16), fc7: (1, 4096, 16, 16), score_fr: (1, 21, 16, 16)' где 'fc6' использует размер ядра '7',' fc7' и 'score_fr' использует размер ядра' 1'. В 'fc7' есть карты функций' 4096', 'score_fr' имеет' 21' (количество классов).Как я понимаю, вход 49 (7x7) «fc6» подключен к выходу в 'fc7'. Хотя только 1 вход в 'fc7' подключен к 1 выходу в' score_fr', из-за размера ядра: 1. Правильно ли это? Кроме того, вес слоя свертки случайным образом инициализируется, например, гауссовское ядро, и как получается вес? – user8264

+0

все весовые модели являются init-random, его процесс обучения, который настраивает случайные веса во что-то полезное @ user8264 – Shai

+0

Это означает, что последние две свертки инициализируются случайным образом, а затем после тонких настроек он будет точно настраиваться. Или все свертки от 1 до 7? – user8264

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