Convolutional Neural Network

Что такое Convolutional Neural Network

Convolutional Neural Network — это тип глубокой нейронной
 сети, разработанный для анализа 
визуальных данных. Она применяется в основном к изображениям и видео, однако может использоваться и для других типов данных, имеющих пространственную структуру.

Convolutional Neural Network

CNN использует свёрточные слои, которые выполняют операцию свертки, чтобы обнаруживать различные признаки и структуры в данных. Затем слои пулинга уменьшают размер полученных данных, сохраняя важную информацию. Далее следуют полносвязные слои, которые обрабатывают выходные данные от предыдущих слоев и принимают окончательное решение о классификации или распознавании объектов.

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

Руководство по Convolutional Neural Network — свёрточным нейронным сетям — путь ELI5

Искусственный интеллект стал свидетелем колоссального роста в преодолении разрыва между возможностями людей и машин. Исследователи и энтузиасты работают над многими аспектами этой области, чтобы добиться удивительных результатов. Одной из многих таких областей является область компьютерного зрения.
Convolutional Neural Network
Что такое нейросеть Convolutional Neural Network

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

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

Введение в Convolutional Neural Network

Последовательность CNN для классификации рукописных цифр

Последовательность CNN для классификации рукописных цифр

Convolutional Neural NetworkСверточная нейронная сеть (ConvNet/CNN) — это алгоритм глубокого обучения , который может принимать входное изображение, назначать важность (обучаемые веса и смещения) различным аспектам/объектам изображения и иметь возможность отличать одно от другого. Предварительная обработка, необходимая в ConvNet, намного ниже по сравнению с другими алгоритмами классификации. Хотя в примитивных методах фильтры разрабатываются вручную, при достаточной подготовке ConvNets имеют возможность изучить эти фильтры/характеристики.

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

Почему ConvNets — Convolutional Neural Network предпочтительнее нейронных сетей с прямой связью?

Сведение матрицы изображения 3x3 в вектор 9x1.

Сведение матрицы изображения 3×3 в вектор 9×1.

Изображение — это не что иное, как матрица значений пикселей, верно? Так почему бы просто не сгладить изображение (например, матрицу изображения 3×3 в вектор 9×1) и не передать его в многоуровневый персептрон для целей классификации? Э-э… не совсем.

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

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

Входное изображение Convolutional Neural Network

RGB-изображение 4x4x3

RGB-изображение 4x4x3

На рисунке у нас есть изображение RGB, разделенное тремя цветовыми плоскостями — красной, зеленой и синей. Существует ряд таких цветовых пространств, в которых существуют изображения — оттенки серого, RGB, HSV, CMYK и т. д.

Вы можете себе представить, насколько интенсивными будут вычисления, когда изображения достигнут размеров, скажем, 8K (7680×4320). Роль ConvNet заключается в преобразовании изображений в форму, удобную для обработки, без потери функций, которые имеют решающее значение для получения хорошего прогноза. Это важно, когда мы хотим разработать архитектуру, которая не только хороша для изучения функций, но и масштабируется для огромных наборов данных.

Слой свертки — ядро Neural Network

Свертка изображения 5x5x1 с ядром 3x3x1 для получения свернутого объекта 3x3x1.

Свертка изображения 5x5x1 с ядром 3x3x1 для получения свернутого объекта 3x3x1.

Размеры изображения = 5 (Высота) x 5 (Ширина) x 1 (Количество каналов, например RGB)

В приведенной выше демонстрации зеленая часть напоминает наше входное изображение размером 5x5x1, I. Элемент, участвующий в операции свертки в первой части сверточного слоя, называется ядром/фильтром K и представлен желтым цветом. Мы выбрали K как матрицу 3x3x1.

    Kernel/Filter, K =

    1  0  1
    0  1  0
    1  0  1

Ядро сдвигается 9 раз из-за Stride length = 1 (Non-Strided) , каждый раз выполняя поэлементную операцию **умножения ( произведение Адамара ) между K и частью P изображения, над которой зависает ядро.

Движение ядра

Движение ядра

Фильтр перемещается вправо с определенным значением шага, пока не проанализирует всю ширину. Двигаясь дальше, он переходит к началу (слева) изображения с тем же значением шага и повторяет процесс до тех пор, пока не будет пройдено все изображение.

Операция свертки с матрицей изображений MxNx3 с ядром 3x3x3

Операция свертки с матрицей изображений MxNx3 с ядром 3x3x3

В случае изображений с несколькими каналами (например, RGB) ядро имеет ту же глубину, что и входное изображение. Умножение матриц выполняется между стеками Kn и In ([K1, I1]; [K2, I2]; [K3, I3]), и все результаты суммируются со смещением, чтобы дать нам сжатый вывод свернутых функций канала с одной глубиной.

Операция свертки с длиной шага = 2

Операция свертки с длиной шага = 2

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

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

<strong>ТО ЖЕ ЗАПОЛНЕНИЕ:</strong> изображение 5x5x1 дополняется нулями, чтобы создать изображение 6x6x1.

Когда мы увеличиваем изображение 5x5x1 до изображения 6x6x1, а затем применяем к нему ядро 3x3x1, мы обнаруживаем, что свернутая матрица имеет размеры 5x5x1. Отсюда и название — Same Padding .

С другой стороны, если мы выполним ту же операцию без заполнения, нам будет представлена матрица, имеющая размеры самого ядра (3x3x1) — Valid Padding .

В следующем репозитории содержится множество таких GIF-файлов, которые помогут вам лучше понять, как Padding и Stride length работают вместе для достижения результатов, соответствующих нашим потребностям.

vdumoulin/conv_arithmetic — Технический отчет по арифметике свертки в контексте глубокого обучения.

Слой пула

Объединение 3х3 по свернутому элементу 5х5

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

Существует два типа пула: максимальный пул и средний пул. Max Pooling возвращает максимальное значение части изображения, покрытой ядром. С другой стороны, метод Average Pooling возвращает среднее значение всех значений из части изображения, покрытой ядром.

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

Типы объединения

Типы объединения

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

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

Классификация Convolutional Neural Network — полносвязный уровень (уровень FC)

Классификация слоев FC

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

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

Доступны различные архитектуры CNN, которые сыграли ключевую роль в создании алгоритмов, которые будут способствовать и будут поддерживать ИИ в целом в обозримом будущем. Некоторые из них перечислены ниже:

  1. Ленет
  2. АлексНет
  3. ВГГНет
  4. ГуглЛеНет
  5. РесНет
  6. ZFNet

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *