Привет, читатели, надеюсь, у вас все хорошо, в целости и сохранности. Надеюсь, вы уже читали предыдущий блог. В предыдущем блоге кратко обсуждался VGGNet CNN и реализовывался код Python. Если вы не читали, то можете пройти по этой ссылке. В этом блоге мы обсудим GoogLeNet CNN, работу и ключевые функции.

Введение

GoogleNet, также известная как Inception-v1, представляет собой архитектуру сверточной нейронной сети, разработанную Google для задач классификации изображений. Впервые он был представлен в 2014 году и в том же году выиграл конкурс ImageNet Large Scale Visual Recognition Challenge (ILSVRC) с коэффициентом ошибок в пятерке лучших 6,67%, что было значительным улучшением по сравнению с победителем предыдущего года.

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

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

Модуль Inception позволяет найти компромисс между глубиной и шириной сети, что может значительно уменьшить количество параметров, необходимых для достижения высокой точности. Кроме того, GoogleNet использует вспомогательные классификаторы на промежуточных уровнях, чтобы поощрять изучение отличительных признаков и предотвращать переоснащение.

Архитектура и работа GoogleNet CNN

Давайте подробнее рассмотрим архитектуру GoogleNet и то, как она работает.

Архитектура GoogleNet состоит из 22 уровней, включая сверточные уровни, уровни пула, начальные модули, полносвязные слои и уровни softmax. Вход в сеть — это RGB-изображение размером 224x224x3, а выход — распределение вероятностей по 1000 классам.

Ниже приводится краткий обзор архитектуры GoogleNet:

  1. Входной слой. Вводом в сеть является RGB-изображение размером 224 x 224 x 3.
  2. Сверточный слой. Первый слой представляет собой сверточный слой с 64 фильтрами размером 7 x 7 и шагом 2. Этот слой выполняет извлечение локальных признаков на входном изображении.
  3. Слой максимального объединения: выходные данные первого сверточного слоя проходят через слой максимального объединения с размером фильтра 3x3 и шагом 2. Этот слой уменьшает пространственные размеры выходных данных и обеспечивает инвариантность перевода. .
  4. Слой нормализации локального ответа. Выходные данные слоя максимального объединения проходят через слой нормализации локального ответа (LRN), который нормализует реакцию соседних нейронов для предотвращения переобучения.
  5. Сверточный слой. Выходные данные слоя LRN проходят через другой сверточный слой с 64 фильтрами размером 1x1. Этот слой выполняет уменьшение размерности на выходе предыдущего слоя.
  6. Сверточный слой. Выходные данные предыдущего сверточного слоя проходят через другой сверточный слой со 192 фильтрами размером 3x3.
  7. Слой максимального объединения: выходные данные второго сверточного слоя проходят через другой слой максимального объединения с размером фильтра 3x3 и шагом 2.
  8. Начальные модули. Выходные данные второго максимального уровня объединения проходят через серию из девяти начальных модулей. Каждый начальный модуль состоит из нескольких ветвей сверточных слоев и слоев пула с различными размерами фильтров, которые объединяются и передаются на следующий уровень. Модуль Inception позволяет эффективно использовать глубину и ширину сети.
  9. Вспомогательные классификаторы. Три промежуточных слоя сети включают вспомогательные классификаторы, которые способствуют изучению отличительных признаков и предотвращают переоснащение. Каждый вспомогательный классификатор состоит из слоя глобального среднего пула, полносвязного слоя, слоя softmax и слоя кросс-энтропийных потерь.
  10. Слой среднего пула. Выходные данные последнего начального модуля проходят через слой среднего пула с размером фильтра 7x7 и шагом 1. Этот слой вычисляет среднее значение каждой карты объектов, в результате чего одно скалярное значение для каждой карты объектов.
  11. Слой исключения: выходные данные слоя среднего пула проходят через слой исключения, который случайным образом исключает некоторые нейроны, чтобы предотвратить переобучение.
  12. Полностью подключенный слой. Выходные данные выпадающего слоя выравниваются и проходят через полностью подключенный слой с 1000 нейронами, по одному для каждого класса в наборе данных.
  13. Слой Softmax. Выходные данные полносвязного слоя проходят через слой softmax, который вычисляет распределение вероятностей по 1000 классам.
  14. Выходной слой.Последний слой — это выходной слой, который выводит прогнозируемую метку класса на основе наибольшей вероятности в слое softmax.

В архитектуре Google Net есть 22 параметризованных слоя; это сверточные слои и полносвязные слои; если мы включим непараметризованные слои, такие как Max-Pooling, всего в модели GoogleNet будет 27 слоев.

В приведенной ниже архитектуре каждый блок представляет собой слой,

  • Синяя рамка — сверточный слой
  • Зеленая рамка — конкатенация функций
  • Красное поле — слой MaxPool
  • Желтая рамка — Слой Softmax

Ввод — модель GoogLeNet принимает входное изображение размером 224 x 224.

Вывод —выходной слой (или слой softmax) имеет 1000 узлов, соответствующих 1000 различным классам объектов.

Ключевые особенности GoogLeNet CNN

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

Идея модуля Inception состоит в том, чтобы уменьшить количество параметров в Deep Neural Network; начальный модуль построен с множеством мелких извилин.

Такие модели, как AlexNet, имеют 60 миллионов параметров, тогда как GoogleNet также имеет только 4 миллиона параметров; архитектура GoogleNet была намного глубже, чем AlexNet.

Модель GoogleNet состоит из девяти идентичных блоков, известных как начальные блоки или начальные модули.

В начальном модуле есть сверточные ядра разных форм 1x1, 3x3 и 5x5. Вывод всех этих ядер складывается вместе в конце начальной единицы. Большие сверточные ядра покрывают большую область изображения для получения информации, а меньшие ядра работают с меньшей областью изображения.

Таким образом, сверточное ядро ​​1x1 даст нам более мелкие детали изображения по сравнению со сверточным ядром 5x5.

Вспомогательный классификатор

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

Каждый вспомогательный классификатор имеет средний объединяющий слой 5x5, сверточный слой 1x1, два полносвязных слоя с 1024 единицами и слой softmax с 1000 единицами.

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

Преимущества модели GoogleNet

В современном мире мы используем GoogleNet для различных приложений Computer Vision, включая обнаружение объектов, классификацию изображений и т. д.

Около 18% приложений GoogleNet основаны на классификации изображений, а около 10–10% — на обнаружении объектов и квантовании.

  • GoogleNet оказался быстрее по сравнению с другими моделями классификации изображений, такими как VGG.
  • GoogleNet намного короче, размер предварительно обученной модели VGG16 составляет 528 МБ, а модели VGG19 — 549 МБ, тогда как размер предварительно обученной GoogleNet — 96 МБ, а InceptionV3 — 92 МБ.
  • GoogleNet достигает более высокой эффективности за счет сжатия входного изображения и одновременного сохранения важных функций/информации.

Заключение

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

Использование среднего пула и сверток 1x1 также помогло снизить вычислительную сложность сети при сохранении высокой точности. GoogleNet добилась самой современной производительности в наборе данных ImageNet, превзойдя предыдущие модели, но будучи более эффективной в вычислительном отношении.

Идеи и методы, разработанные в GoogleNet, повлияли на разработку последующих архитектур CNN.

На этом пока все… Надеюсь, вам понравился мой блог, и вы узнали о GoogLeNet CNN, о том, как он работает, и об основных функциях этого CNN.

В следующем блоге я буду обсуждать реализацию GoogleNet CNN, так как для ее реализации потребуется больше слов.

Итак, мы возьмем часть реализации в следующем блоге.

Если вы считаете, что мои блоги полезны, поделитесь ими с другими.

А пока следите за обновлениями в следующем блоге…

***Следующий блог***