Архитектура VGGnet. Что такое множественная плотная оценка?

Я читал статью VGG16 очень глубокие сверточные сети для крупномасштабного распознавания изображений

В 3.2 ТЕСТИРОВАНИЕ говорится, что все полносвязные слои заменены некоторыми уровнями CNN.

А именно, полносвязные слои сначала преобразуются в сверточные слои (первый слой FC в сверточный слой 7 × 7, последние два слоя FC в сверточные слои 1 × 1). Полученная полностью сверточная сеть затем применяется ко всему (не обрезанному) изображению. Результатом является карта оценки классов с количеством каналов, равным количеству классов, и переменным пространственным разрешением, зависящим от размера входного изображения. Наконец, чтобы получить вектор оценок классов для изображения фиксированного размера, карта оценок классов пространственно усредняется (суммируется).

Таким образом, архитектура VGG16 (конфигурация D) при прогнозировании на тестовом наборе будет

input=(224, 224)
conv2d(64, (3,3))
conv2d(64, (3,3))
Maxpooling(2, 2)
conv2d(128, (3,3))
conv2d(128, (3,3))
Maxpooling(2, 2)
conv2d(256, (3,3))
conv2d(256, (3,3))
conv2d(256, (3,3))
Maxpooling(2, 2)
conv2d(512, (3,3))
conv2d(512, (3,3))
conv2d(512, (3,3))
Maxpooling(2, 2)
conv2d(512, (3,3))
conv2d(512, (3,3))
conv2d(512, (3,3))
Maxpooling(2, 2)
Dense(4096) is replaced by conv2d((7, 7))
Dense(4096) is replaced by conv2d((1, 1))
Dense(1000) is replaced by conv2d((1, 1))

Значит, эта архитектура используется только для тестирования?

Все ли последние 3 уровня CNN имеют 1000 каналов?

Результатом является карта оценки класса с количеством каналов, равным количеству классов.

Поскольку размер входных данных составляет 224 * 224, размер выходных данных после последнего слоя Maxpooling будет равен (7 * 7). Почему написано переменное пространственное разрешение? Я знаю, что у него есть мультиклассовое масштабирование, но перед вводом оно будет обрезано до изображения (224, 224).

И как VGG16 получает вектор (1000,)? Что здесь является пространственно средним (суммированным)? Добавляет ли он просто слой объединения сумм с размером (7, 7), чтобы получить массив (1, 1, 1000)?

карта оценок класса пространственно усреднена (суммирована)

В 3.2 ТЕСТИРОВАНИЕ

Кроме того, оценка нескольких культур дополняет плотную оценку из-за различных граничных условий свертки: при применении ConvNet к культуре свернутые карты функций дополняются нулями, тогда как в случае плотной оценки заполнение для той же культуры естественно появляется. от соседних частей изображения (как из-за сверток, так и из-за пространственного объединения), что существенно увеличивает общее воспринимающее поле сети, поэтому захватывается больше контекста.

Значит, оценка с несколькими культурами и плотностью будет использоваться только на проверочном наборе?

Допустим, размер входных данных равен (256, 256), при многократном кадрировании может быть получен размер изображения (224, 224), при этом центр кадрированного изображения может быть другим, например [0:223, 0:223] или [1:224, 1:224]. Правильно ли я понимаю, что такое мультикроп?

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


person Ruoyu Guo    schedule 20.04.2020    source источник


Ответы (1)


Основная идея изменения плотного слоя на сверточный - сделать размер входного изображения логического вывода независимым. Предположим, у вас есть изображение размера (224,224), тогда ваша сеть с FC будет работать нормально, но как только размер изображения будет изменен, ваша сеть начнет выдавать ошибку несоответствия размера (что означает, что ваша сеть зависит от размера изображения).

Следовательно, чтобы противостоять таким вещам, создается полная сверточная сеть, в которой функции хранятся в канале, в то время как размер изображения является средним с использованием среднего уровня объединения или даже сверточных шагов для этого измерения (channel = number_of_classification classes, 1,1). Итак, когда вы сгладите этот последний результат, он будет иметь вид * number_of_classes = channel * 1 * 1. *

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

person Pankaj Mishra    schedule 20.04.2020
comment
Спасибо за ваш ответ, как и ваши предложения, я потратил несколько раз на полностью подключенную сверточную сеть. Эти основы становятся более ясными. Только один вопрос: если размер ввода переменный, тогда сохраните архитектуру, вывод последнего сверточного слоя может быть другим, скажем (5,5) или (3, 3) или (1, 1). Это не ожидаемый размер (1, 1, количество классов). Как с этим бороться? - person Ruoyu Guo; 21.04.2020
comment
большой!! Приятно слышать. Теперь в случае, когда вы выполняете классификацию и когда ваше изображение проходит тщательное, свертка дает результат вроде (1,1, канал). затем просто сгладьте массив. вы должны убедиться, что output_channel вашего последнего сверточного слоя должен быть равен количеству классов. Опять же, если ваш размер из последнего слоя Conv равен (5,5, channel), вам нужно передать его через слой адаптивного объединения, а затем сгладить. Вот деталь адаптивного уровня в PyTorch - pytorch .org / docs / stable / - person Pankaj Mishra; 21.04.2020