Узнайте, как работают CNN, не глядя на сложные математические уравнения.

Введение

Каждый раз, когда вы разблокируете свой смартфон с помощью Face ID или используете Google Translate в режиме реального времени с камерой, за кулисами происходит что-то безумное! CNN являются основой многих замечательных приложений и инструментов, которые мы постоянно используем. Этот пост объяснит интуицию, лежащую в основе работы CNN, не углубляясь в сложные функции вероятности и математические уравнения. У каждого должна быть возможность изучить основы этих инструментов, учитывая, насколько они глубоко укоренились в нашей жизни сейчас. Для ботаников здесь — одно из лучших объяснений, предоставленных Стэнфордским университетом.

Сверточные нейронные сети (CNN) — это решение для любой задачи классификации изображений или обнаружения объектов сегодня. Глядя на производительность ImageNet с течением времени, мы видим, что точность классификации действительно выросла с 63% в 2013 году по AlexNet до более чем 88% в 2020 году!

Что такое изображения?

CNN можно разделить на две основные части: экстрактор признаков и классификатор. Чтобы понять это, мы должны сначала узнать, что создает образ. На рисунке ниже показано очень простое изображение рукописной цифры «8». Мы видим, что все изображения в основном представляют собой сетку пикселей, в данном случае это сетка 18 x 18. Затем каждый пиксель принимает значение от 0 до 255, указывающее, насколько он «яркий». Пиксели со значением = 0 полностью черные, а белые пиксели имеют значение 255. По сути, мы можем представить это изображение всего 18 * 18 = 324 числа!

Отсюда мы также можем перейти к цветным и более сложным изображениям. Основными отличиями будут: больший размер сетки из-за более высокого разрешения, и будет 3 значения данных для каждого пикселя, соответствующие красной, зеленой и синей яркости. Здесь вы можете прочитать больше о том, как мы используем эти 3 основных цвета для представления почти всех цветов, которые мы видим на наших экранах!

Основы CNN

Теперь, когда мы знаем, из чего состоит изображение, давайте посмотрим на обзор функции CNN. Часть извлечения признаков обработает изображение и выведет Nколичество признаков. Это просто числа, описывающие определенные характеристики каждого изображения, и обычно люди не могут их легко понять. Для этой задачи по распознаванию рукописных цифр некоторые из возможных признаков могут быть следующими: прямолинейность/«изогнутость» краев, количество петель и т. д. Для цифры 8 у нее будут сильные черты, когда речь идет о изогнутых краях, но слабые черты. для прямых кромок.

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

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

Что такое свертки в CNN?

Было бы странно объяснять CNN без упоминания сверток, так как это заложено в названии самой техники. Не вдаваясь слишком глубоко в математику (вы можете ознакомиться с отличной статьей здесь) или в подробности, свертки — это, по сути, операции сопоставления шаблонов. Они включают в себя перемещение фильтра или ядра (обычно размером 3x3) и вычисление совпадения в каждой позиции входного изображения! Используя различные типы ядер, мы можем определять положение многих различных форм, краев и текстур.

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

Вывод

Интуитивная идея, лежащая в основе CNN, довольно проста: сложите несколько фильтров, каждый с небольшими рецептивными полями, чтобы извлечь важные функции из изображений, а затем используйте линейную модель для классификации изображения. CNN великолепны, поскольку они имеют хороший баланс между вычислительными затратами и точностью задачи. Недавно для задач обработки изображений были представлены трансформеры, которые могут угрожать господству CNN! Однако методы на основе трансформаторов по-прежнему требуют огромной вычислительной мощности, которая недоступна для таких слабаков, как мы с вами. Подробнее об этом можно прочитать здесь и здесь.