Традиционные системы машинного обучения используют методы искусственного интеллекта, которые изучают большие объемы данных и применяют образцы для поиска подходящих решений различных проблем. Как правило, они используют кластеризацию, чтобы найти группы данных на основе сходства.
Сверточная нейронная сеть основана на специальной архитектуре, предназначенной для эффективного распознавания образов. Архитектура нейронных сетей была предложена Яном Лекуном в 1988 году.
Ниже специалисты Grapherex собрали основные характеристики сверточных нейронных сетей и описали, как они работают.
Что такое сверточные нейронные сети?
Сверточные нейронные сети (CNN) — это модели машинного обучения, используемые в компьютерном зрении для распознавания изображений и видео, их сегментации и обнаружения целевых объектов.
CNN — это модели глубокого обучения с несколькими скрытыми слоями, которые позволяют им изучать сложные представления для различных задач. Наряду с другими нейронными сетями CNN имитируют структуру и функции человеческого мозга.
Давайте посмотрим, что именно они делают. Распознавание изображений и видео фокусируется на классификации или распознавании объектов, сцен или действий на фотографиях или видео. Обнаружение объектов направлено на то, чтобы точно определить определенные элементы на изображении или видео. Сегментация изображения, в свою очередь, предполагает разделение изображения на отдельные сегменты или области, релевантные для последующего анализа.
Как работают сверточные нейронные сети?
CNN состоят из узловых слоев, содержащих входной слой, несколько скрытых слоев и выходной слой. Логически информация переходит от входа к выходу, трансформируясь из своей первоначальной формы и производя осмысленный результат.
По мере того, как CNN проходит через уровни растущей сложности, сеть может обнаруживать большие части изображения. Начальные слои концентрируются на основных функциях, таких как цвета и края. По мере продвижения по последовательным слоям он постепенно различает более значимые компоненты и формы объекта. В конечном итоге достигается распознавание предполагаемого предмета.
Допустим, вы загружаете изображение животного. Нейронная сеть послойно проверяет соответствие и несовпадение характеристик, которые есть в ее базе данных, и выдает результат. Например, он решает, что у вас есть изображение кота. Давайте узнаем больше о каждом из слоев.
Входной слой
Это первый слой в CNN. Нейронная сеть принимает входные данные — изображение или видео — и отправляет их на следующий слой. Первый слой ничего не обрабатывает. Входные данные (любые данные, которые вы передаете CNN для обработки) будут отфильтрованы сверточными слоями, а результаты будут отправлены на уровни дальнейшей обработки.
Сверточный слой
Этот слой извлекает ключевые элементы, такие как края, углы и формы. Для этого он применяет набор фильтров или ядер. Сверточный слой является основным строительным блоком CNN, где происходит большая часть вычислений.
Для этого требуется детектор функций, который перемещается по полям изображения, проверяя, присутствует ли желаемая функция. Это называется свертка. Детектор (фильтр) обычно представляет собой матрицу 3×3, которая, в свою очередь, определяет размер рецептивного поля. Затем он вычисляет скалярное произведение между входными пикселями и фильтром и отправляет его в выходной массив.
Затем фильтр смещается на строку, повторяя процесс до тех пор, пока он не покроет все изображение. Конечный результат серии точечных произведений называется картой признаков, картой активации или свернутой картой. За первым слоем свертки может следовать больше слоев, так что структура CNN может быть иерархической. Таким образом сеть распознает шаблоны более низкого уровня (например, пиксели определенного цвета) и более высокого уровня (например, части автомобиля).
Слой ReLU
Часто бывает полезно увидеть промежуточные результаты. Вот почему за операцией свертки может следовать преобразование выпрямленной линейной единицы (ReLU). В случае применения мы получаем модель из нелинейности.
Функция ReLU — обычное явление в CNN, поскольку она помогает обеспечить нелинейность на выходе и повышает производительность сети. ReLU выводит входное значение напрямую, если оно положительное, и выводит ноль, если оно отрицательное.
Слой пула или понижающая дискретизация
Сверточные карты объектов генерируются с использованием слоя объединения, также известного как субдискретизация. Это уменьшает их размерность, потому что уменьшает количество входных параметров.
Есть два способа сделать это: максимальный пул и средний пул. Максимальный пул используется чаще, так как в качестве выходных данных он принимает максимальное значение в каждом разделе карты объектов. Среднее объединение принимает среднее значение в рецептивном поле.
Несмотря на то, что мы теряем много информации, слой по-прежнему имеет много преимуществ. Это помогает снизить сложность, повысить эффективность и ограничить риск переобучения.
Полносвязный слой
В частично связанных слоях значения пикселей входного изображения не связаны напрямую с выходным слоем. Однако в полносвязном слое каждый узел выходного слоя напрямую связан с узлом предыдущего слоя.
Этот слой выполняет задачу классификации на основе признаков, извлеченных предыдущими слоями и их различными фильтрами. Слои FC обычно используют функцию активации softmax для надлежащей классификации входных данных, создавая вероятность от 0 до 1. Уровень FC создает конечный результат, который используется для задач классификации или прогнозирования.
Как CNN классифицирует изображения: пошаговый процесс
Чтобы отойти от технических объяснений того, как работает сеть, давайте рассмотрим пример из реальной жизни. Вот как изображение проходит через каждый слой и что там происходит.
- На входной слой поступает изображение собаки. Стандартный формат изображения — 3-х канальный (RGB).
- Сверточный слой использует фильтры и детекторы признаков для понимания краев, углов и форм.
- Слой ReLU превращает вывод сверточного слоя в нелинейный.
- Слой объединения принимает максимальное значение в каждом разделе, чтобы уменьшить размерность карт объектов, созданных слоем свертки.
- Процесс идет по кругу, чтобы получить сложные характеристики из входных данных.
- Полносвязный слой получает сглаженный вывод последнего объединяющего слоя и применяет набор весов для вывода результата. Здесь CNN определяет, является ли изображение собакой или нет.
Каждая CNN обучается на наборе помеченных или помеченных изображений. Он учится минимизировать ошибку между предсказанными и фактическими метками. После обучения CNN может точно классифицировать новые невидимые изображения.
Типы CNN
Существует несколько типов сверточных нейронных сетей: традиционные, рекуррентные, полностью сверточные и пространственные преобразовательные сети. Ниже мы кратко обсудим каждый из них.
Традиционные CNN
Традиционные CNN, известные как «ванильные» CNN, состоят из сверточных слоев и слоев объединения, за которыми следуют полносвязные слои. Они эффективны для задач распознавания изображений и широко используются в компьютерном зрении. Это было продемонстрировано архитектурой Ленет-5 для распознавания рукописных цифр.
Рекуррентные нейронные сети
Рекуррентные нейронные сети (RNN) обрабатывают последовательные данные и обрабатывают входные данные различной длины, отслеживая предыдущие входные данные (контекст). Они обычно используются в задачах обработки естественного языка (NLP), таких как генерация текста и языковой перевод.
Полностью сверточные сети
Полностью сверточные сети (FCN) специально используются для задач компьютерного зрения, таких как сегментация/классификация изображений и обнаружение объектов. Они основаны исключительно на сверточных слоях и являются вычислительно эффективными и адаптируемыми, поскольку не имеют полностью связанных слоев. FCN обучаются с использованием обратного распространения для категоризации изображений.
Пространственные трансформаторные сети
Сети пространственных преобразователей (STN) используются в задачах компьютерного зрения для улучшения способности сети распознавать шаблоны или объекты независимо от их положения, ориентации или масштаба. Они применяют изученные пространственные преобразования к входным изображениям, чтобы повысить производительность сети для конкретных задач, включая выравнивание, исправление искажения перспективы или пространственные изменения (переворот, вращение или перемещение изображения).
Нейронные сети и компьютерное зрение
Как мы уже упоминали, сверточные нейронные сети используются в задачах компьютерного зрения, которые применяют сверточные слои для извлечения признаков из входных данных. Компьютерное зрение — это область ИИ, которая позволяет машинам интерпретировать визуальные данные и давать рекомендации на основе значимой информации, которую они извлекают из изображений.
Компьютерное зрение применяется в маркетинге в социальных сетях, здравоохранении (радиологические технологии) и электронной коммерции. Современные беспилотные автомобили и производители автомобилей начинают применять компьютерное зрение в своей сфере.