Connect with us

ИИ 101

Что такое CNN (Свёрточные Нейронные Сети)?

mm

Может быть, вы когда-нибудь задумывались, как Facebook или Instagram могут автоматически распознавать лица на изображении, или как Google позволяет искать изображения в сети, просто загружая фотографию. Эти функции являются примерами компьютерного зрения, и они работают на основе свёрточных нейронных сетей (CNN). Но что же такое свёрточные нейронные сети? Давайте глубже погрузимся в архитектуру CNN и поймём, как они работают.

Что такое Нейронные Сети?

Прежде чем мы начнём говорить о свёрточных нейронных сетях, давайте определим, что такое обычная нейронная сеть. Есть другая статья на эту тему, поэтому мы не будем слишком глубоко погружаться в них здесь. Однако, чтобы кратко определить их, они являются вычислительными моделями, вдохновлёнными человеческим мозгом. Нейронная сеть работает, принимая данные и манипулируя ими, регулируя “веса”, которые являются предположениями о том, как входные признаки связаны между собой и классом объекта. Когда сеть обучается, значения весов регулируются, и они, надеюсь, сходятся к весам, которые точно отражают отношения между признаками.

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

Что такое Свёрточные Нейронные Сети (CNN)?

Что такое “свёртки”, которые происходят в свёрточной нейронной сети? Свёртка – это математическая операция, которая создаёт набор весов, по сути, создаёт представление частей изображения. Этот набор весов называется ядром или фильтром. Фильтр, который создаётся, меньше всего входного изображения, покрывая только часть изображения. Значения в фильтре умножаются на значения в изображении. Затем фильтр перемещается, чтобы сформировать представление новой части изображения, и процесс повторяется до тех пор, пока всё изображение не будет покрыто.

Другой способ подумать об этом – представить себе кирпичную стену, где кирпичи представляют пиксели входного изображения. “Окно” перемещается вдоль стены, которое является фильтром. Кирпичи, видимые через окно, являются пикселями, значения которых умножаются на значения внутри фильтра. По этой причине этот метод создания весов с помощью фильтра часто называют техникой “плавающих окон”.

Выход из фильтров, перемещающихся по всему входному изображению, является двумерным массивом, представляющим всё изображение. Этот массив называется “картой признаков”.

Почему Свёртки Необходимы

Какова цель создания свёрток вообще? Свёртки необходимы, потому что нейронная сеть должна уметь интерпретировать пиксели изображения как числовые значения. Функция свёрточных слоёв – преобразовать изображение в числовые значения, которые нейронная сеть может интерпретировать и затем извлечь из них релевантные закономерности. Задача фильтров в свёрточной сети – создать двумерный массив значений, который можно передать в более поздние слои нейронной сети, которые научатся распознавать закономерности в изображении.

Фильтры и Каналы

Фото: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)

CNN не используют только один фильтр, чтобы научиться распознавать закономерности из входных изображений. Используются несколько фильтров, поскольку разные массивы, созданные разными фильтрами, приводят к более сложному, богатому представлению входного изображения. Обычные числа фильтров для CNN – 32, 64, 128 и 512. Чем больше фильтров, тем больше возможностей у CNN есть, чтобы изучить входные данные и научиться на них.

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

Архитектура Свёрточной Нейронной Сети (CNN)

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

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

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

Блогер и программист с специализацией в Machine Learning и Deep Learning темах. Daniel надеется помочь другим использовать силу ИИ для социального блага.