Введение в сверточные нейронные сети

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

Как наш мозг распознает предметы и людей вокруг нас или на изображениях?

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

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

Оптические иллюзии возникают, когда наш мозг и глаза говорят друг с другом на простом языке, но интерпретация путается.

Начнем с короткой игры в оптические иллюзии. Посмотрите на следующие изображения и угадайте, что вы видите!

Все эти изображения иллюстрируют работу мозга; он обрабатывает определенные функции и классифицирует их.

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

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

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

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

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

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

Зачем нам нужна сверточная нейронная сеть?

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

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

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

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

Одна из проблем компьютерного зрения заключается в том, что входные данные могут быть очень большими. Например, если мы работаем с изображениями 64 на 64. Итак, это 64 на 64 на три, потому что есть три цветовых канала. И если вы умножите это, получится 12288. Итак, X, входные объекты имеют размерность 12288. И это не так уж плохо. Но 64 на 64 на самом деле крошечное изображение. Если вы работаете с большими изображениями, возможно, это изображение размером 1000 на 1000 пикселей, а на самом деле это всего лишь один мегапиксель. Но размер входных объектов будет 1000 на 1000 на три, потому что у вас есть три канала RGB, а это три миллиона.

Итак, если у вас есть три миллиона входных признаков, то это означает, что X здесь будет трехмиллионным. Итак, если в первом скрытом слое у вас всего 1000 скрытых единиц, то эта матрица будет 1000 на 3 миллиона размерных матриц.

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

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

Как работают сверточные нейронные сети?

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

Работа сверточных нейронных сетей состоит в следующем:

  • Входной слой: содержит входное изображение
  • Сверточная нейронная сеть
  • Выходной слой: содержит класс изображения

Информационный поток выглядит следующим образом:

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

Например, обученные сверточные нейронные сети можно использовать для обнаружения человеческих эмоций на изображении. Вы предоставляете им чью-то фотографию, и они производят классификацию того, что, по-видимому, чувствует этот человек. Он свяжет это с вероятностью, например, 98 % счастья или 80 % грусти, подобно тому, как наш мозг пытается понять, счастлив кто-то или грустен; мы не можем быть на 100% уверены в его эмоциях.

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

Как сверточные нейронные сети сканируют изображения

Все начинается на фундаментальном уровне. Допустим, у вас есть два изображения: черно-белое изображение 2 на 2 пикселя и цветное изображение 2 на 2 пикселя. Нейронные сети используют тот факт, что черно-белое изображение представляет собой двумерный массив. То, как это видит CNN, — это просто визуальное представление. Но с компьютерной точки зрения это на самом деле двумерный массив, в котором каждый из этих пикселей имеет значение от 0 до 255, а это 8 бит информации. А так как это черно-белое изображение, то 0 будет черным пикселем, а единица будет полностью белым пикселем, а между ними будет шкала серого с возможными вариантами, и на основе этой информации компьютеры смогут работать с изображением .

В цветном изображении это на самом деле трехмерный массив. У нас есть синий, зеленый и красный слои, обозначающие RGB, и каждый из них имеет свою интенсивность. Каждому пикселю присвоено три значения; каждое из них находится в диапазоне от 0 до 255, и мы можем узнать, какого цвета этот пиксель, объединив эти три значения.

Это означает, что красный слой представлен числом от 0 до 255, как и синий и зеленый слои. Затем они представляются в формате RGB. Например, «бордовый» пиксель будет представлен нейронной сети как (128, 0, 0).

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

Таким образом, для обнаружения улыбки на черно-белом изображении CNN будут искать внутри изображения пиксель со значением 1.

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

На этом мы подошли к концу этой истории. В следующем рассказе я подробно расскажу о работе сверточных нейронных сетей. Следите за обновлениями!