Приглашаем вас ознакомиться с компьютерным видением серии статей -- VGG

компьютерное зрение
Приглашаем вас ознакомиться с компьютерным видением серии статей -- VGG

1. Свертка и объединение

свертка

Свертка изменяет только глубину изображения(глубина такая же, как и количество ядер свертки), глубина и высота изображения не изменяются (метод заполнения ТАКОЙ ЖЕ, то есть заполнение нулями)

Роль ядра свертки:входное изображение --> ядро ​​свертки --> Карта функций во время обработки изображения. Для входного изображения средневзвешенное значение пикселей в небольшой области входного массива становится пикселем выходного изображения.

каждый соответствующий пиксель. То есть значение пикселя в последней карте объектов Формула для расчета размера изображения после ядра свертки:out_size=(in_size-F_size+2P)/S+1Среди них: F_size — размер ядра свертки, P — размер заполнения, S — размер шага шага.

объединение

Объединение изменяет только высоту ядра глубины изображения., без изменения глубины изображения

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

Объединение: уменьшите количество выходов за счет уменьшения размера входа

Общие методы объединения: максимальное объединение и среднее объединение

В традиционном видении, чтобы гарантировать, что извлеченные признаки имеют трансляционную инвариантность, размытие по Гауссу обычно выполняется перед извлечением признаков, поэтому в сети на ранней стадии CNN обычно используется средний пул, а максимальный пул имеет лучший эффект ( обычно мы думаем, что чрезвычайно важно значение функции, о которой мы беспокоимся, и максимальное объединение увеличивает нелинейность и улучшает выразительную способность сети), а скорость выше, поэтомуНа более позднем этапе используется максимальный пул, но функции, извлеченные сетью CNN, не обладают инвариантностью к переводу.Решение состоит в том, чтобы увеличить операцию размытия.

Ссылка на документАР Вест V.org/ABS/1904.11…

2 Предыстория диссертации

Еще в 1989 г.Yann LeCun(сейчас профессор Нью-Йоркского университета) и его коллеги опубликовали работу о сверточных нейронных сетях (CNN). В течение долгого времени, хотя CNN достигала лучших в мире результатов в то время в мелкомасштабных задачах, таких как рукописные цифры, она не достигала больших успехов.

2012 г.,Алекс и ХинтонУчаствовал в конкурсе ILSVRC2012 и предложил AlexNet, а также впервые успешно применил такие приемы, как ReLU, Dropout и LRN в CNN. В то же время AlexNet также использует GPU для ускорения вычислений. AlexNet развил идею LeNet и применил основные принципы CNN к глубоким и широким сетям. AlexNet является чемпионом соревнований ILSVRC2012 и намного опережает второе место.

В 2014 году была предложена сеть VGG, основанная на AlexNet, она использовала меньшее ядро ​​свертки и углубляла сеть для достижения лучших результатов.

VGG был предложен в 2014 году группой визуальной геометрии Департамента науки и техники Оксфордского университета. Основная работа заключается в том, чтобы доказать, что увеличение глубины сети может в определенной степени повлиять на конечную производительность сети. VGG имеет две структуры, VGG16 и VGG19, которые практически одинаковы, за исключением разницы в глубине сети. По сравнению с AlexNet в 2012 году улучшение VGG заключается в использовании непрерывных небольших ядер свертки 3x3 для замены более крупных ядер свертки в AlexNet (AlexNet использует ядра свертки 11x11, 7x7 и 5x5). Суперпозиция двух ядер свертки 3x3 с шагом 1 имеет рецептивное поле, эквивалентное ядру свертки 5x5. Однако использование сложенных малых ядер свертки связано с большим ядром свертки, поскольку увеличение количества слоев увеличивает нелинейность сети, что позволяет сети обучаться более сложным моделям, а малое ядро ​​свертки имеет меньше параметров .

Сеть VGG: это глубокая CNN со всеми функциями CNN, которая часто используется для извлечения изображений признаков. Сеть использует 3 * 3 свертки для изучения сети с увеличением глубины, увеличивая глубину до слоев 6-19.

Большие достижения были достигнуты как в задачах локализации, так и в задачах классификации, и они имеют хорошую универсальность для других наборов данных.

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

Изучается глубина проектирования архитектуры ConvNet,управление одной переменной(глубина), зафиксировали другие параметры и постоянно увеличивали глубину сети, добавляя больше сверточных слоев, поскольку во всех слоях использовались очень маленькие (3×3) сверточные фильтры.

Сверточные фильтры небольшого размера ранее использовались Ciresan et al. Но их сети намного менее глубоки, чем наши, и они не оцениваются в крупномасштабном наборе данных ILSGVRC. Гудфеллоу и др. Примените глубокие ConvNets (11 весовых слоев) к задаче распознавания номеров улиц ипоказать, что увеличение глубины приводит к лучшей производительности. Помимо 3×3, они также используют свертки 1×1 и 5×5. Однако топология их сети более сложна, чем у сети VGG, а пространственное разрешение карт объектов более агрессивно снижается на первом уровне, чтобы сократить объем вычислений. Свертка 1x1 — это, по сути, линейная проекция на одномерное пространство (1x1 добавляет нелинейность с тем же количеством входных и выходных каналов).

бумага

Основные моменты сети VGG

по сравнению с AlexNet Особенности:1. Складывая два 3Ядро свертки 3 вместо 55 ядер свертки 2. Укладывая три 33 ядра свертки вместо 77 ядер свертки

выгода: можно уменьшить количество параметров

Предположим, что глубина (канал) матрицы входных признаков и матрицы выходных признаков равна C использовать 77 Параметры, необходимые для ядра свертки: 77CC=49CС использовать три 33 Параметры, необходимые для ядра свертки: 33CC+33CC+33CC=27CC

3 3от 3 до 1 77 сохранение (49-27)/27=81% параметра.

расчет рецептивного поля

рецептивные поля: размер области входного слоя, соответствующий единице на выходной карте объектов. Формула расчета: F(i) = [F(i+1)-1]*шаг+ksize Среди них: F(i) — рецептивное поле i-го слоя, stride — шаг i-го слоя, ksize — размер ядра свертки.

Например: выход последнего слоя равен одной единице: F = 1 усл3: F = (1-1)1 + 3 = 3 усл3: F = (3-1)1 +3 =5 На этот раз это два 3Ядро свертки 3 вместо 55 ядер свертки. усл3: F = (5-1)1 +3 =7 три 3 в это времяЯдро свертки 3 заменяет ядро ​​свертки 7*7.

网络结构

Архитектура

1. Вход фиксированного размера 224*224RGB; 2. Единственная предварительная обработка заключается в вычитании из каждого пикселя среднего значения RGB, рассчитанного на обучающем наборе; 3. Используйте фильтр с очень маленьким рецептивным полем: 3×3 (это минимальный размер для захвата понятий слева/справа, вверх/вниз, по центру); 4. Используется сверточный фильтр 1×1, который можно рассматривать как линейное преобразование входного канала (с последующей нелинейностью); 5. Размер шага свертки фиксируется на 1 пиксель, пространственное заполнение conv, то есть пространственное разрешение сохраняется после свертки, то есть заполнение 1 пиксель, свертка 3×3; 6. Пространственное объединение состоит из пяти слоев максимального объединения, и максимальное объединение выполняется в окне размером 2×2 пикселя с шагом 2; 7. Далее следуют три полносвязных слоя (уровни FC 4096-4096-1000): первые два слоя имеют по 4096 каналов каждый, третий выполняет 1000-канальную классификацию ILSVRC и, таким образом, содержит 1000 каналов (по одному на каждый канал) класса). Последний слой — это слой soft-max. Конфигурация полносвязного уровня одинакова во всех сетях.

Все скрытые слои настроены с помощью нелинейной функции ReLU.В сети не используется локальная нормализация ответов (LRN)., потому что эта нормализация неУлучшит производительность набора данных ILSVRC, но приведет к увеличению потребления памяти и времени вычислений.

在这里插入图片描述Параметры сверточного слоя обозначаются как "conv (размер рецептивного поля) - (количество каналов)Для краткости функция активации ReLU не показана.

Например: conv3-64 означает 64 размера 3.3 ядра свертки conv3: размер ядра свертки 33; шаг=1; отступ=1 maxpool: размер пула 2*2; шаг=2

Отличается только глубиной: от 11 весовых слоев (8 конв. и 3 слоя ФК) сети А до 19 весовых слоев (16 конв. и 3 слоя ФК) сети Е.

Сеть D: conv3+FC=2+2+3+3+3+3=16

maxpool и softmax не учитываются в количестве слоев

Между максимальным пулом и полносвязным слоем есть функция сглаживания, которая сглаживает многомерные пиксели в одномерные пиксели, что удобно для обработки полносвязного слоя. Первые два полносвязных слоя: ReLU и Dropout

Сеть можно рассматривать в двух слоях: последний полносвязный слой (не включенный) рассматривается как структура сети признаков извлечения, а три полносвязных слоя и softmax можно рассматривать как структуру классификации.

обучение сети

Процесс обучения ConvNet обычно следует методу Крижевского и др. (2012) (за исключением выборки входных культур из многомасштабных обучающих изображений). Обучение проводится с использованиемминимальный пакетный градиентный спуск(на основе обратного распространения) оптимизация цели логистической регрессии с несколькими ответвлениями с импульсом.размер партии 256, импульс 0,9. Обучение выполняется с помощью уменьшения веса (множитель штрафа L2 установлен на 5 10e-4) и регуляризации отсева для первых двух полносвязных слоев (Коэффициент отсева составляет 0,5.) для регуляризации, а скорость обучения равна 0,01. Затем, когда точность набора проверки больше не улучшается,Скорость обучения снижалась 3 раза и остановилась после 370 000 итераций (74).

Мы предполагаем, что хотя наша сеть имеет больше параметров и большую глубину по сравнению с сетью Alex Net,Сети требуется больше времени для сходимости, это происходит из-за (а) неявной регуляризации, вызванной большей глубиной и меньшим размером конв.фильтра, (б) предварительной инициализации некоторых слоев.

Инициализация сетевых весов важна, потому что плохая инициализация может затормозить обучение из-за нестабильности градиента в глубоких сетях.

сеть Адостаточно мелкий, чтобы использоватьслучайная инициализациятренировать. Затем при обучении более глубоких архитектур мы инициализируем первые четыре сверточных слоя и последние три полносвязных слоя слоями Сети А (средние слои инициализируются случайным образом).

Обработка изображения

Чтобы получить фиксированный размерВходное изображение ConvNet 224×224, которые случайным образом вырезаются из масштабированных обучающих изображений (один раз для каждой итерации SGD изображения). Чтобы еще больше увеличить тренировочный набор,Произвольно переворачивает изображение по горизонтали и сдвигает случайные цвета RGB.

S — наименьшая сторона после изменения размера, а размер обрезки — 224*224. Хотя размер обрезки зафиксирован на уровне 224×224, в принципе S может принимать любое значение не ниже 224: при S=224 обрезка будет захватывать статистику всего изображения, полностью закрывая наименьшую сторону обучающего изображения; при S намного больше, чем 224, обрезка будет соответствовать небольшой части изображения, содержащей небольшой объект или часть объекта.

Два способа установки тренировочной шкалы S. Во-первых, исправить S, что соответствует одномасштабному обучению. Два фиксированных размера: S=256 и S=384; сначала обучите сеть с S=256. Чтобы ускорить обучение сети S = ​​384, мы инициализируем с весами S = ​​256 и используем небольшую начальную скорость обучения 10 в степени 3.

Вторая установка С.Многомасштабный метод обучения, в котором каждое тренировочное изображениеСлучайная выборка в диапазоне [256, 512]S для индивидуального масштабирования. Потому что объекты на изображении могут иметь разный размер.

контрольная работа

1. При одинаковом масштабировании с Q, Q может быть ≠ S 2. Плотный метод тестирования: свертка переменной FC 3. Объединение среднего балла карты классов 4. Горизонтальное зеркало

Во время тестирования с учетом обученной ConvNet и входного изображения она классифицируется следующим образом. Во-первых, быть повторноМасштабирование до предопределенного минимального края изображения, обозначаемый Q (мы также называем его тестовой шкалой). мы заметилиQ не обязательно равен тренировочному размеру S. Затем сеть плотно применяется к измененному тестовому изображению. То есть полностью связанные слои сначала преобразуются в сверточные слои (первый слой FC преобразуется в сверточные слои 7×7, а последние два слоя FC преобразуются в сверточные слои 1×1). Полученная полностью сверточная сеть затем применяется ко всему (необрезанному) изображению. Результатом является карта оценок классов с количеством каналов, равным количеству классов, с переменным пространственным разрешением, в зависимости от размера входного изображения. Наконец, чтобы получить вектор оценок класса фиксированного размера для изображения,Средний пул на карте оценки класса. Тестовый набор также дополняется горизонтальным отражением изображений. правильноИсходное изображение и перевернутое изображениеАпостериоры класса soft-max усредняются для получения окончательной оценки изображения.

在这里插入图片描述Во-первых, мы заметили, что использование нормализации локального ответа (сеть A-LRN) не улучшило модель A без какого-либо слоя нормализации. Поэтому мы не используем нормализацию в более глубоких архитектурах (B-E).

Во-вторых, мы наблюдаемОшибка классификации уменьшается с увеличением глубины ConvNet: с уровня 11 в A до уровня 19 в E.

Стоит отметить, что, несмотря на одинаковую глубину, конфигурация C (содержащая три сверточных слоя 1×1) работает хуже, чем конфигурация D, использующая сверточные слои 3×3 по всей сети** (D лучше, чем C).. На приведенном выше рисунке также показаноНелинейность действительно помогает (C лучше, чем B)**, но захват пространственного контекста также важен.Уровень ошибок нашей архитектуры насыщается, когда глубина достигает 19 слоев, но более глубокие модели могут быть полезны для больших наборов данных. Подтверждено, что глубокие сети с фильтрами меньшего размера превосходят мелкие сети с фильтрами большего размера.

在这里插入图片描述Масштабирование джиттера во время тестирования приводит к повышению производительности. Самые глубокие конфигурации (D и E) работают лучше и масштабируют джиттер лучше, чем обучение с фиксированным минимальным фронтом S. Наилучшая производительность одной сети в проверочном наборе составляет 24,8%/7,5% ошибок первой и пятой точек (выделено жирным шрифтом в таблице выше). На тестовом наборе конфигурация E достигает ошибки топ-5 в 7,3%.在这里插入图片描述 在这里插入图片描述Как видно из таблицы выше, при использованиимультикроп немного лучше, чем плотная оценка, но их комбинация лучше, чем один подход (мультикультурный и плотный дополняют друг друга). мультикроп: 150 листов (552*3=150).在这里插入图片描述показывают, что глубокие ConvNets значительно превосходят модели предыдущего поколения.

анализ развития

узкое место

VGG потребляет больше вычислительных ресурсов и использует больше параметров, что приводит к большему использованию памяти (140 МБ). Большинство параметров поступает из первого полносвязного слоя. А простое увеличение глубины нейронной сети принесет трудности в обучении, и возникнут такие проблемы, как исчезновение градиента и несходимость.

Будущее направление

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

在这里插入图片描述