В одном из постов уже упоминали о ключевой роли сверточных (или, конволюционных) нейронных сетей в различных приложениях для распознавания лиц, включая MDVR. Для дальнейшего обсуждения сверточных нейронных сетей, мы должны сначала кратко описать, что на самом деле является «обычной» нейронной сетью, и определить термин «свертка». Основная цель нейронной сети состоит в том, чтобы моделировать множество клеток реального мозга внутри компьютера и «обучать» его распознавать модели и особенности, учиться вещам и принимать решения «по-человечески», позволяя ему развиваться аналогично человеческому мозгу. Нейронные сети, построенные таким образом, часто называют искусственными нейронными сетями (ANN), чтобы отличить их от «реальных» нейронных сетей в мозге человека. Важно иметь в виду, что ANN по своей сути — программный симулятор, который включает в себя коллекции алгебраических переменных и математических уравнений, связывающих их вместе и т.д. Он не имеет ничего общего с «воображаемым реальным компьютером», построенным на транзисторах, который выглядит и работает точно так же, как человеческий мозг.

Типичная нейронная сеть состоит из множества искусственных нейронов (обычно их от нескольких сотен до нескольких миллионов), называемых единицами. Эти блоки расположены в наборах слоев, каждый из которых соединяется с обеих сторон с другими слоями. Блоки ввода получают различные формы информации, о которых нейросеть попытается узнать. Выходные устройства, расположенные на противоположной стороне сети, сигнализируют о том, как они реагируют на полученную информацию. Скрытые единицы расположены между входными и выходными и составляют основную часть «искусственного мозга». Соединения между единицами представлены «весом», который формализуется положительным или отрицательным числом . Более высокое значение веса соответствует более высокому влиянию одной единицы на другую.

artificial neural network

Существует два способа распространения информационного потока по сети: прямая сеть и обратная передача. Первая, это так называемая прямая сеть связи: информация проходит через блоки ввода, переключает уровень скрытого блока и поступает на выход . Каждый из блоков получает информацию от блоков слева, и входы умножаются на веса соединений, через которые они проходят . Если значение превышает пороговое значение, устройство срабатывает, вызывая срабатывание устройств, к которым оно подключено справа. В случае обратной передачи информация поступает с выхода на вход. Выходной сигнал, полученный сетью, сравнивается с выходным сигналом, который она должна была получить, и разность между ними применяется для изменения весов соединений. Таким образом, обратная передача помогает сети обучаться, уменьшая разницу между предполагаемым и фактическим результатами. После того, как данная сеть снабжена большим количеством примеров, пользователь может предоставить ей новый набор входных данных, с которыми система ещё не знакома, и наблюдать, как она будет реагировать.

«Обычные» и конволюционные нейронные сети

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

1) ввод представляет собой 3-D изображение, а не вектор.

2) CNN использует свертку и основаны на другой архитектуре.

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

При обработке изображения целью свертки является локальное извлечение признаков объекта. Упрощенная процедура свертки может быть описана следующим образом: мы рассматриваем изображение как матрицу, элементами которой являются числа от 0 до 255. Размер этой матрицы равен (высота изображения) x (ширина изображения) x (количество каналов изображения). Программа сканирует часть изображения, обычно размером 3×3, и умножает ее на фильтр, как показано на рисунке ниже. Мы умножаем все выделенные элементы матрицы изображения на соответствующие элементы матрицы ядра, суммируем все выходные данные и ставим результат в ту же позицию в выходной матрице, что и центр ядра в матрице изображения. Процедура повторяется до тех пор, пока не будет отсканировано все изображение. Обычно CNN имеет один или несколько слоев блоков свертки.

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

convolution

Как правило, CNN содержит 4 слоя: слой свертки, слой ReLU, слой пула и слой с полным подключением. Слой свертки использует операцию свертки для создания карты элементов свертки. Следующий слой — ReLu, который содержит функцию активации, допускающую нелинейность. На практике он заменяет все пиксели с отрицательным значением на «0». Целью объединения слоев является использование различных фильтров для идентификации частей изображения, таких как углы и края. На практике объединение использует максимальное значение карты элементов для уменьшения размерности входного изображения, что приводит к уменьшению вычислительной сложности, т.е. к уменьшению пространственного размера свернутого элемента. Результирующая карта элементов пула затем преобразуется в длинный непрерывный линейный вектор с использованием процесса, называемого выравниванием, или сглаживанием. В качестве последнего шага необходимо дополнительно построить «обычную» искусственную нейронную сеть.

CNN layers

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

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

Используемые источники

  1.  Machine Learning Projects for Mobile Applications, Karthikeyan, N. G., 2018.
  2.  www.machinelearningguru.com
  3.  https://www.nist.gov
  4.  www.quora.com
  5.  http://cs231n.github.io/convolutional-networks/#overview