Привет, читатели, надеюсь, у вас все хорошо, в целости и сохранности. Надеюсь, вы уже читали предыдущий блог. В предыдущем блоге кратко обсуждался 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:
- Входной слой. Вводом в сеть является RGB-изображение размером 224 x 224 x 3.
- Сверточный слой. Первый слой представляет собой сверточный слой с 64 фильтрами размером 7 x 7 и шагом 2. Этот слой выполняет извлечение локальных признаков на входном изображении.
- Слой максимального объединения: выходные данные первого сверточного слоя проходят через слой максимального объединения с размером фильтра 3x3 и шагом 2. Этот слой уменьшает пространственные размеры выходных данных и обеспечивает инвариантность перевода. .
- Слой нормализации локального ответа. Выходные данные слоя максимального объединения проходят через слой нормализации локального ответа (LRN), который нормализует реакцию соседних нейронов для предотвращения переобучения.
- Сверточный слой. Выходные данные слоя LRN проходят через другой сверточный слой с 64 фильтрами размером 1x1. Этот слой выполняет уменьшение размерности на выходе предыдущего слоя.
- Сверточный слой. Выходные данные предыдущего сверточного слоя проходят через другой сверточный слой со 192 фильтрами размером 3x3.
- Слой максимального объединения: выходные данные второго сверточного слоя проходят через другой слой максимального объединения с размером фильтра 3x3 и шагом 2.
- Начальные модули. Выходные данные второго максимального уровня объединения проходят через серию из девяти начальных модулей. Каждый начальный модуль состоит из нескольких ветвей сверточных слоев и слоев пула с различными размерами фильтров, которые объединяются и передаются на следующий уровень. Модуль Inception позволяет эффективно использовать глубину и ширину сети.
- Вспомогательные классификаторы. Три промежуточных слоя сети включают вспомогательные классификаторы, которые способствуют изучению отличительных признаков и предотвращают переоснащение. Каждый вспомогательный классификатор состоит из слоя глобального среднего пула, полносвязного слоя, слоя softmax и слоя кросс-энтропийных потерь.
- Слой среднего пула. Выходные данные последнего начального модуля проходят через слой среднего пула с размером фильтра 7x7 и шагом 1. Этот слой вычисляет среднее значение каждой карты объектов, в результате чего одно скалярное значение для каждой карты объектов.
- Слой исключения: выходные данные слоя среднего пула проходят через слой исключения, который случайным образом исключает некоторые нейроны, чтобы предотвратить переобучение.
- Полностью подключенный слой. Выходные данные выпадающего слоя выравниваются и проходят через полностью подключенный слой с 1000 нейронами, по одному для каждого класса в наборе данных.
- Слой Softmax. Выходные данные полносвязного слоя проходят через слой softmax, который вычисляет распределение вероятностей по 1000 классам.
- Выходной слой.Последний слой — это выходной слой, который выводит прогнозируемую метку класса на основе наибольшей вероятности в слое 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, так как для ее реализации потребуется больше слов.
Итак, мы возьмем часть реализации в следующем блоге.
Если вы считаете, что мои блоги полезны, поделитесь ими с другими.
А пока следите за обновлениями в следующем блоге…
***Следующий блог***