Размер восприимчивого поля и предмета в глубоком обучении - PullRequest
0 голосов
/ 03 мая 2018

Я могу рассчитать размер рецептивного поля 500 x 500 входного изображения для VGGNet.

Размеры рецептивного поля следующие.

Layer Name = conv1, Output size = 500, Stride =   1, RF size =   3
Layer Name = relu1_1, Output size = 500, Stride =   1, RF size =   3
Layer Name = conv1_2, Output size = 500, Stride =   1, RF size =   5
Layer Name = relu1_2, Output size = 500, Stride =   1, RF size =   5
Layer Name = pool1, Output size = 250, Stride =   2, RF size =   6
Layer Name = conv2_1, Output size = 250, Stride =   2, RF size =  10
Layer Name = relu2_1, Output size = 250, Stride =   2, RF size =  10
Layer Name = conv2_2, Output size = 250, Stride =   2, RF size =  14
Layer Name = relu2_2, Output size = 250, Stride =   2, RF size =  14
Layer Name = pool2, Output size = 125, Stride =   4, RF size =  16
Layer Name = conv3_1, Output size = 125, Stride =   4, RF size =  24
Layer Name = relu3_1, Output size = 125, Stride =   4, RF size =  24
Layer Name = conv3_2, Output size = 125, Stride =   4, RF size =  32
Layer Name = relu3_2, Output size = 125, Stride =   4, RF size =  32
Layer Name = conv3_3, Output size = 125, Stride =   4, RF size =  40
Layer Name = relu3_3, Output size = 125, Stride =   4, RF size =  40
Layer Name = pool3, Output size =  62, Stride =   8, RF size =  44
Layer Name = conv4_1, Output size =  62, Stride =   8, RF size =  60
Layer Name = relu4_1, Output size =  62, Stride =   8, RF size =  60
Layer Name = conv4_2, Output size =  62, Stride =   8, RF size =  76
Layer Name = relu4_2, Output size =  62, Stride =   8, RF size =  76
Layer Name = conv4_3, Output size =  62, Stride =   8, RF size =  92
Layer Name = relu4_3, Output size =  62, Stride =   8, RF size =  92
Layer Name = pool4, Output size =  31, Stride =  16, RF size = 100
Layer Name = conv5_1, Output size =  31, Stride =  16, RF size = 132
Layer Name = relu5_1, Output size =  31, Stride =  16, RF size = 132
Layer Name = conv5_2, Output size =  31, Stride =  16, RF size = 164
Layer Name = relu5_2, Output size =  31, Stride =  16, RF size = 164
Layer Name = conv5_3, Output size =  31, Stride =  16, RF size = 196
Layer Name = relu5_3, Output size =  31, Stride =  16, RF size = 196

Я смотрю только до conv5_3.

Например, если размер моего объекта составляет 150 x 150, а размер моего изображения - 500 x 500.

Могу ли я сказать, что карты объектов для более ранних слоев от conv1 до conv4_2 несут только частичные признаки моего объекта и от conv5_2 до conv5_3, они несут признаки почти всего объекта.

Верно ли мое мнение?

Но в conv5_3 мой output_size имеет размер только 31 x 31, поэтому я не могу представить, как он представляет весь объект на изображении, но каждый пиксель этого слоя conv5_3 представляет размер 196 x 196 исходного изображения 500 x 500 .

Верно ли мое мнение?

1 Ответ

0 голосов
/ 13 мая 2018

Теоретически ...

Могу ли я сказать, что карты объектов для более ранних слоев от conv1 до conv4_2 несут только частичные признаки моего объекта, а от conv5_2 до conv5_3 - почти весь объект. Верно ли мое мнение?

Да! Вы даже сами рассчитали воспринимающее поле (в случае CNN - это пиксели изображения, которые теоретически могут влиять на значение одной ячейки карты объектов)!

Но в conv5_3 мой output_size имеет размер только 31 x 31, поэтому я не могу представить, как он представляет весь объект на изображении, но каждый пиксель этого слоя conv5_3 представляет размер 196 x 196 исходного изображения 500 x 500 , Мое мнение верно?

Да! Но не забывайте, что, хотя размер карты объектов составляет всего 31x31, шаг ваших объектов равен 16. Поэтому каждая ячейка карты объектов conv5_3 представляет область 196x196 на изображении (имейте в виду, что если окно ввода "" "не помещается внутри изображения, остальная часть" окна ввода "будет черной, например, заполненной нулями), и будет иметь шаг 16x16 между собой. Таким образом, карта объектов 31x31 по-прежнему полностью захватывает изображение (просто шаг огромен).


Эффективно ...

Хорошо, выше мы говорили о теоретическом восприимчивом поле , то есть о пикселях в изображении, которые имеют вероятность больше 0 воздействовать на одну ячейку (или пиксель) в карте объектов (31x31) , в таком случае). Однако на практике это сильно зависит от веса ваших ядер свертки.

Посмотрите на этот пост об эффективном рецептивном поле (ERF) CNN (или, если у вас есть достаточно времени, перейдите прямо к оригинальной статье ).

Теоретически, когда вы укладываете больше слоев, вы можете линейно увеличивать свое рецептивное поле, однако на практике все не так просто, как мы думали: не все пиксели в рецептивном поле одинаково влияют на отклик выходного блока.

Что еще более интересно, так это то, что это восприимчивое поле динамично и изменяется во время тренировки. Влияние этого на обратное распространение состоит в том, что центральные пиксели будут иметь большую величину градиента по сравнению с граничными пикселями.

Вот некоторые цифры из бумаг, которые представляют ERF:

Here are some images of ERF enter image description here

Как видите, рецептивное поле совсем не покрывает весь патч! Так что не удивляйтесь, если ERF conv5_3 намного меньше, чем 196x196.


Кроме того ...

Помимо размера рецептивного поля, которое в основном гласит: «эта ячейка на карте объектов сжимает ценные данные из этого фрагмента изображения», вам также необходимо, чтобы эти функции были достаточно выразительными. Итак, взгляните на этот пост или воспользуйтесь поиском "vgg visualization" в Google, чтобы узнать о выразительности функций .

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