заглушки Что такое CNN (сверточные нейронные сети)? - Unite.ИИ
Свяжитесь с нами:
Мастер-класс по ИИ:

AI 101

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

mm
обновленный on

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

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

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

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

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

Какие «извилины» происходят в сверточной нейронной сети? Свертка — это математическая операция, которая создает набор весов, по сути создавая представление частей изображения. Этот набор весов называется ядро или фильтр. Создаваемый фильтр меньше, чем все входное изображение, и охватывает только часть изображения. Значения в фильтре умножаются на значения на изображении. Затем фильтр перемещается, чтобы сформировать представление новой части изображения, и процесс повторяется до тех пор, пока не будет покрыто все изображение.

Другой способ подумать об этом — представить себе кирпичную стену, где кирпичи представляют собой пиксели входного изображения. Вдоль стены двигается вперед-назад «окно», которое является фильтром. Кирпичи, видимые через окно, представляют собой пиксели, значение которых умножается на значение внутри фильтра. По этой причине этот метод создания весов с помощью фильтра часто называют методом «скользящих окон».

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

Почему свертки необходимы

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

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

Фото: cecebur через 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. Плотно связанные слои — это то, как выглядит традиционная нейронная сеть с прямой связью, ряд узлов, объединенных в слои, которые связаны друг с другом. Данные проходят через эти плотно связанные слои, которые изучают шаблоны, извлеченные сверточными слоями, и при этом сеть становится способной распознавать объекты.