В этой истории рассматривается GoogLeNet [1], который стал победителем ILSVRC (Конкурс крупномасштабного визуального распознавания ImageNet) 2014, конкурса классификации изображений, который имеет значительное улучшение по сравнению с ZFNet (Победитель в 2013 году) [2] и AlexNet (Победитель в 2012 году) [3], и имеет относительно более низкий уровень ошибок по сравнению с VGGNet (1-е место, занявшее второе место в 2014 году) [4].

Из названия «GoogLe Net» мы уже знаем, что это от Google. А «Goog LeNet» также содержит слово «LeNet», чтобы отдать дань уважения LeNet профессора Яна ЛеКуна [5]. Это статья 2015 CVPR с около 9000 цитирований, когда я писал эту статью. (Сик-Хо Цанг @ средний)

Он также называется Inception v1, так как позже появятся v2, v3 и v4.

Сетевая архитектура в этой статье сильно отличается от VGGNet, ZFNet и AlexNet. Он содержит 1 × 1 свертку в середине сети. А глобальный средний пул используется в конце сети вместо использования полносвязных слоев. Эти два метода взяты из другой статьи «Сеть в сети» (NIN) [6]. Другой метод, называемый начальным модулем, заключается в том, чтобы иметь разные размеры / типы сверток для одного и того же входа и складывать все выходные данные.

Авторы также упомянули, что идея названия «Начало» исходит от NIN и известного интернет-мема, приведенного ниже: НАМ НЕОБХОДИМО ИДТИ ГЛУБЖЕ.

ImageNet - это набор данных, включающий более 15 миллионов изображений с высоким разрешением и около 22 000 категорий. ILSVRC использует подмножество ImageNet из примерно 1000 изображений в каждой из 1000 категорий. Всего существует примерно 1,2 миллиона обучающих изображений, 50 000 изображений для проверки и 100 000 изображений для тестирования.

Что мы расскажем:

  1. Свертка 1 × 1
  2. Начальный модуль
  3. Объединение глобального среднего значения
  4. Общая архитектура
  5. Вспомогательные классификаторы для обучения
  6. Подробности тестирования

1. Свертка 1 × 1

Свертка 1 × 1 введена NIN [6]. Свертка 1 × 1 используется с ReLU. Таким образом, изначально NIN использует его для введения большей нелинейности, чтобы увеличить репрезентативную мощность сети, поскольку авторы NIN считают, что данные имеют нелинейную форму. В GoogLeNet свертка 1 × 1 используется в качестве модуля уменьшения размерности для сокращения вычислений. Уменьшая количество вычислительных ресурсов, можно увеличить глубину и ширину.

Я выбрал простой пример, чтобы проиллюстрировать это. Предположим, нам нужно выполнить свертку 5 × 5 без использования свертки 1 × 1, как показано ниже:

Количество операций = (14 × 14 × 48) × (5 × 5 × 480) = 112,9 млн.

При использовании свертки 1 × 1:

Количество операций для 1 × 1 = (14 × 14 × 16) × (1 × 1 × 480) = 1,5M
Количество операций для 5 × 5 = (14 × 14 × 48) × ( 5 × 5 × 16) = 3,8 млн.

Общее количество операций = 1,5 млн + 3,8 млн = 5,3 млн
, что намного меньше 112,9 млн !!!!! !!!!!!!!!!

Действительно, в приведенном выше примере вычисляется 5 × 5 конв. На начальном этапе (4a).

(Мы можем подумать, что, когда размерность уменьшается, на самом деле мы работаем над преобразованием высокой размерности в низкую нелинейным способом. Напротив, для PCA он выполняет уменьшение линейной размерности.)

Таким образом, начальный модуль может быть построен без увеличения количества операций по сравнению с модулем без свертки 1 × 1!

Свертка 1 × 1 может помочь уменьшить размер модели, что также может каким-то образом помочь уменьшить проблему переобучения !!

2. Начальный модуль

Начальный модуль (простая версия, без свертки 1 × 1) выглядит следующим образом:

Ранее, например, в AlexNet и VGGNet, размер свертки был фиксированным для каждого уровня.

Теперь: 1 конв. Х 1, 3 х 3 конв., 5 х 5 конв. и максимальное объединение 3 х 3 выполняются вместе для предыдущего ввода и снова складываются вместе на выходе. При поступлении изображения пробуются разные размеры сверток, а также максимальное объединение. Затем извлекаются различные типы функций.

После этого все карты функций на разных путях объединяются вместе в качестве входных данных для следующего модуля.

Однако без свертки 1 × 1, как указано выше, мы можем представить, насколько велико количество операций!

Таким образом, свертка 1 × 1 вставляется в начальный модуль для уменьшения размерности!

3. Объединение глобального среднего значения

Ранее в конце сети использовались полносвязные (FC) уровни, например, в AlexNet. Все входы подключены к каждому выходу.

Количество весов (соединений) выше = 7 × 7 × 1024 × 1024 = 51,3M

В GoogLeNet глобальный средний пул используется почти в конце сети путем усреднения каждой карты функций от 7 × 7 до 1 × 1, как на рисунке выше.

Количество весов = 0

Авторы обнаружили, что переход от уровней FC к среднему объединению улучшил точность первого уровня примерно на 0,6%.

Это идея NIN [6], которая может быть менее подвержена переобучению.

4. Общая архитектура

Зная основные элементы, описанные выше, мы можем говорить об общей сетевой архитектуре.

Всего 22 слоя!

Это уже очень глубокая модель по сравнению с предыдущими AlexNet, ZFNet и VGGNet. (Но не так глубоко по сравнению с ResNet, изобретенной впоследствии.) И мы видим, что существует множество начальных модулей, связанных вместе, чтобы идти глубже. (Посередине есть несколько промежуточных ветвей softmax, о них мы расскажем в следующем разделе.)

Ниже приведены подробные сведения о параметрах каждого слоя. Фактически мы можем расширить пример свертки 1 × 1, чтобы вычислить количество операций самостоятельно. :)

5. Вспомогательные классификаторы для обучения

Как мы видим, в середине есть несколько промежуточных ветвей softmax, они используются только для обучения. Эти ветви являются вспомогательными классификаторами, которые состоят из:

Средний пул 5 × 5 (шаг 3)
Конв. 1 × 1 (128 фильтров)
1024 FC
1000 FC
Softmax

Потеря добавляется к общей потере с весом 0,3.

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

И это НЕ используется во время тестирования или вывода.

6. Подробности тестирования

7 GoogLeNet используются для ансамблевого прогнозирования. Это уже своего рода метод повышения со стороны LeNet, AlexNet, ZFNet и VGGNet.

Многомасштабное тестирование используется так же, как VGGNet, с более короткими размерами 256, 288, 320, 352 (4 шкалы)

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

Во-первых, для каждой шкалы требуются левый, центральный и правый или верхний, средний и нижний квадраты (3 квадрата). Затем для каждого квадрата обрезаются 4 угла и центр, а также квадрат измененного размера (6 обрезков), а также создаются соответствующие им перевороты (2 версии).

Итого: 4 масштаба × 3 квадрата × 6 кадрирования × 2 версии = 144 кадра / изображение.

Вероятности Softmax усреднены по всем культурам.

Для 7 моделей и 144 культур ошибка первой пятерки составляет 6,67%.

По сравнению с 1 моделью + 1 урожай, наблюдается значительное снижение с 10,07%.

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

И эти техники в этой статье на самом деле не новы!

Наконец, GoogLeNet превосходит другие предыдущие сети глубокого обучения и победил в ILSVRC 2014.

Позже я рассмотрю другие сети глубокого обучения, а также начальные версии. Если интересно, посетите также обзоры LeNet [7], AlexNet [8], ZFNet [9] и VGGNet [10].

использованная литература

  1. [2015] [CVPR] [GoogLeNet]
    Углубляясь в свертки
  2. [2014 ECCV] [ZFNet]
    Визуализация и понимание сверточных сетей
  3. [2012 NIPS] [AlexNet]
    Классификация ImageNet с глубокими сверточными нейронными сетями
  4. [2015 ICLR] [VGGNet]
    Очень глубокие сверточные сети для распознавания крупномасштабных изображений
  5. [1998 Proc. IEEE] [LeNet-1, LeNet-4, LeNet-5, Boosted LeNet-4]
    Градиентное обучение, применяемое для распознавания документов
  6. [2014 ICLR] [NIN]
    Сеть в сети
  7. Обзор LeNet-1, LeNet-4, LeNet-5, Boosted LeNet-4 (Классификация изображений)
  8. Обзор AlexNet, CaffeNet - Победитель ILSVRC 2012 (Классификация изображений)
  9. Обзор ZFNet - Победитель ILSVRC 2013 (Классификация изображений)
  10. Обзор VGGNet - 1-е место, занявшее второе место на ILSVLC 2014 (классификация изображений)

Также прочтите

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