что собой представляет генераторная матрица сверточного кода

Сверточный слой: методы оптимизации основанные на матричном умножении

Введение

Данная статья является продолжением серии статей описывающей алгоритмы лежащие в основе
Synet — фреймворка для запуска предварительно обученных нейронных сетей на CPU.

Если смотреть на распределение процессорного времени, которое тратится на прямое распространение сигнала в нейронных сетях, то окажется что зачастую более 90% всего времени тратится в свёрточных слоях. Поэтому если мы хотим получить быстрый алгоритм для нейронной сети – нам нужен, прежде всего, быстрый алгоритм для свёрточного слоя. В настоящей статье я хочу описать методы оптимизации прямого распространения сигнала в свёрточном слое. Причем начать хочется с наиболее широко распространенных методов, основанных на матричном умножении. Изложение я буду стараться вести в максимально доступной форме, чтобы статья была интересна не только специалистам (они и так про это все знают), но и более широкому кругу читателей. Я не претендую на полноту обзора, так что любые замечания и дополнения только приветствуются.

Параметры свёрточного слоя

Начать описание хотелось бы с описания параметров, которые есть в свёрточном слое. Специалисты могут смело пропустить этот раздел.

Размеры входного и выходного изображения

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Размеры ядра свертки

Операция свертки по своей сути — это взвешенная сумма некой окрестности данной точки изображения. Размер ядра свертки — характеризует величину этой окрестности и описывается двумя параметрами:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Шаг свертки

Еще один важный параметр — шаг свертки:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Растяжение свертки

Ядро свертки можно растянуть (увеличить эффективный размер окна, при сохранении количества операций) при помощи следующих параметров:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Паддинг входного изображения

Если применить свертку с окном, отличным от единичного к изображению, то выходное изображение будет меньше на величину kernel — 1. Свертка как бы «съедает» края. Чтобы сохранить размер изображения, входное изображение часто дополняют по краям нулями. За это отвечают еще четыре параметра:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Группы каналов

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Смещение и активационная функция

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

Базовая реализация алгоритма

Для начала хотелось бы привести базовую реализацию алгоритма:

В этой реализации я предполагал, что входное и выходное изображение имеет формат NCHW:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

веса свертки хранятся в формате DCYX, а активационная функция у нас это ReLU. В общем случае это не так, но для базовой реализации такие предположения вполне уместны — надо же от чего-то отталкиваться.

Мы имеем 8 вложенных циклов и общее количество операций:

при этом количество данных во входном:

Источник

Принцип работы свёрточной нейронной сети. Просто о сложном

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

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода
2D Свёрточная нейронная сеть

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

Структура сверточных нейронных сетей

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

На входе получаем образцы аудио в разные моменты времени. Образцы равномерно распределены.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Более сложный подход учитывает некоторую симметрию в свойствах, которые которая находится в данных. Мы уделяем много внимания локальным свойствам данных: какая частота звука в течение определенного времени? Увеличивается или уменьшается? И так далее.

Мы учитываем те же свойства во все моменты времени. Полезно знать частоты вначале, середине и в конце. Обратите внимание, что это локальные свойства, поскольку нужно только небольшое окно аудиопоследовательности, чтобы определить их.

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

В приведенном выше примере A обрабатывало только сегменты, состоящие из двух точек. Это редко встречается на практике. Обычно, окно слоя свертки намного больше.

В следующем примере A получает на вход 3 отрезка. Это тоже маловероятно для реальных задач, но, к сожалению, сложно визуализировать A, соединяющее множество входов.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

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

В следующем примере есть новая группа нейронов B. B используется для создания еще одного сверточного слоя, уложенного поверх предыдущего.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Сверточные слои часто переплетены pooling (объединяющими) слоями. В частности, есть вид слоя, называемый max-pooling, который чрезвычайно популярен.

Часто, нас не волнует точный момент времени, когда присутствует полезный сигнал в данных. Если изменение частоты сигнала происходит раньше или позже, имеет ли это значение?

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

Max-pooling слоев — это «уменьшение». Оно позволяют более поздним сверточным слоям работать на больших участках данных, потому что небольшие патчи после слоя объединения соответствует гораздо большему патчу перед ним. Они также делают нас инвариантными к некоторым очень небольшим преобразованиям данных.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

В наших предыдущих примерах использовались одномерные сверточные слои. Однако сверточные слои могут работать и с более объемными данными. Фактически самые известные решения на базе сверточных нейронных сетей используют двумерные сверточные нейронные сети для распознавания образов.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

В двумерном сверточном слое вместо того, чтобы смотреть на сегменты, A будет смотреть патчи.

Для каждого патча, A будет вычислять функции. Например, она может научиться обнаруживать наличие края, или текстуру, или контраст между двумя цветами.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Мы, также можем выполнять max-pooling в двух измерениях. Здесь мы берем максимум фичей из небольшого патча.

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Также, иногда используются трехмерные сверточные сети для таких данных, таких как видео или объемные данные (например, 3D-сканирование в медицине). Однако, такие сети не очень широко используются, и гораздо сложнее в визуализации.

Ранее, мы говорили, что A — группа нейронов. Будем более точными в том: что такое А?
В традиционных сверточных слоях A представляет собой параллельную связку нейронов, все нейроны получают одинаковые входные сигналы и вычисляют разные функции.

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

В статье ‘Network in Network’ (Lin et al. (2013)) предлагается новый слой «Mlpconv». В этой модели, A имеет несколько уровней нейронов, причем последний слой выводит функции более высокого уровня для обрабатываемого региона. В статье, модель достигает впечатляющих результатов, устанавливая новый уровень техники в ряде эталонных наборов данных.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

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

Результаты сверточных нейронных сетей

В 2012 году Alex Krizhevsky, Ilya Sutskever, и Geoff Hinton достигли существенного улучшения качества распознавания в сравнении с известными на тот момент решениями (Krizehvsky et al. (2012)).

Прогресс был результатом объединения нескольких подходов. Использовались графические процессоры для обучения большой (по меркам 2012 года), глубокой нейронной сети. Использовался новый тип нейронов (ReLU) и новая техника для уменьшения проблемы, называемой «overfitting» (DropOut). Использовали большой набор данных с большим количеством категорий изображений (ImageNet). И конечно же, это была сверточная нейронная сеть.
Архитектура, показанная ниже, была глубокой. Она имеет 5 сверточных слоев, 3 pooling с чередованием и три полносвязных слоя.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

From Krizehvsky et al. (2012)
Сеть была обучена классификации фотографий в тысячи разных категорий.

Модель Крижевского и др. была способна дать правильный ответ в 63% случаев. Кроме того, правильный ответ из 5 лучших ответов, присутствует 85% прогнозов!

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Проиллюстрируем, что узнает первый уровень сети.

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Фильтры, полученные первым сверточным слоем. Верхняя половина соответствует слою на одном графическом процессоре, нижняя — на другом. From Krizehvsky et al. (2012)
Нейроны с одной сторону, фокусируются на черно-белом цвете, учась обнаруживать края разных ориентаций и размеров. Нейроны с другой стороны, специализируются на цвете и текстуре, обнаруживают цветовые контрасты и узоры. Помните, что нейроны случайным образом инициализируются. Ни один человек не пошел и не поставил их пограничными детекторами, или разделил таким образом. Это произошло при обучении сети классификации изображений.

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

Формализация сверточных нейронных сетей

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Сравнительно легко описать результаты в терминах входных данных:

Например, в приведенном выше примере:

у0 = А (х0, х1)
y1 = А (x1, x2)

Аналогично, если мы рассмотрим двумерный сверточный слой с входами и выводами :

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Сеть можно представить двумерной матрицей из значений.

Источник

Сверточная нейронная сеть, часть 1: структура, топология, функции активации и обучающее множество

Предисловие

Данные статьи (часть 2) являются частью моей научной работы в ВУЗе, которая звучала так: «Программный комплекс детектирования лиц в видеопотоке с использованием сверточной нейронной сети». Цель работы была — улучшение скоростных характеристик в процессе детектирования лиц в видеопотоке. В качестве видеопотока использовалась камера смартфона, писалось десктопное ПС (язык Kotlin) для создания и обучения сверточной нейросети, а также мобильное приложение под Android (язык Kotlin), которая использовала обученную сеть и «пыталась» распознать лица из видеопотока камеры. Результаты скажу получились так себе, использовать точную копию предложенной мной топологии на свой страх и риск (я бы не рекомендовал).

Введение

Наилучшие результаты в области распознавания лиц показала Convolutional Neural Network или сверточная нейронная сеть (далее – СНС), которая является логическим развитием идей таких архитектур НС как когнитрона и неокогнитрона. Успех обусловлен возможностью учета двумерной топологии изображения, в отличие от многослойного персептрона.

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

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

Структура сверточной нейронной сети

СНС состоит из разных видов слоев: сверточные (convolutional) слои, субдискретизирующие (subsampling, подвыборка) слои и слои «обычной» нейронной сети – персептрона, в соответствии с рисунком 1.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода
Рисунок 1 – топология сверточной нейронной сети

Первые два типа слоев (convolutional, subsampling), чередуясь между собой, формируют входной вектор признаков для многослойного персептрона.

Свое название сверточная сеть получила по названию операции – свертка, суть которой будет описана дальше.

Сверточные сети являются удачной серединой между биологически правдоподобными сетями и обычным многослойным персептроном. На сегодняшний день лучшие результаты в распознавании изображений получают с их помощью. В среднем точность распознавания таких сетей превосходит обычные ИНС на 10-15%. СНС – это ключевая технология Deep Learning.

Основной причиной успеха СНС стало концепция общих весов. Несмотря на большой размер, эти сети имеют небольшое количество настраиваемых параметров по сравнению с их предком – неокогнитроном. Имеются варианты СНС (Tiled Convolutional Neural Network), похожие на неокогнитрон, в таких сетях происходит, частичный отказ от связанных весов, но алгоритм обучения остается тем же и основывается на обратном распространении ошибки. СНС могут быстро работать на последовательной машине и быстро обучаться за счет чистого распараллеливания процесса свертки по каждой карте, а также обратной свертки при распространении ошибки по сети.

На рисунке ниже продемонстрирована визуализация свертки и подвыборки:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Топология сверточной нейросети

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

Можно выделить следующие этапы влияющие на выбор топологии:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода
Рисунок 2 — Топология сверточной нейросети

Входной слой

Входные данные представляют из себя цветные изображения типа JPEG, размера 48х48 пикселей. Если размер будет слишком велик, то вычислительная сложность повысится, соответственно ограничения на скорость ответа будут нарушены, определение размера в данной задаче решается методом подбора. Если выбрать размер слишком маленький, то сеть не сможет выявить ключевые признаки лиц. Каждое изображение разбивается на 3 канала: красный, синий, зеленый. Таким образом получается 3 изображения размера 48х48 пикселей.

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

Входные данные каждого конкретного значения пикселя нормализуются в диапазон от 0 до 1, по формуле:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Сверточный слой

Сверточный слой представляет из себя набор карт (другое название – карты признаков, в обиходе это обычные матрицы), у каждой карты есть синаптическое ядро (в разных источниках его называют по-разному: сканирующее ядро или фильтр).

Количество карт определяется требованиями к задаче, если взять большое количество карт, то повысится качество распознавания, но увеличится вычислительная сложность. Исходя из анализа научных статей, в большинстве случаев предлагается брать соотношение один к двум, то есть каждая карта предыдущего слоя (например, у первого сверточного слоя, предыдущим является входной) связана с двумя картами сверточного слоя, в соответствии с рисунком 3. Количество карт – 6.

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

Размер у всех карт сверточного слоя – одинаковы и вычисляются по формуле 2:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Ядро представляет из себя фильтр или окно, которое скользит по всей области предыдущей карты и находит определенные признаки объектов. Например, если сеть обучали на множестве лиц, то одно из ядер могло бы в процессе обучения выдавать наибольший сигнал в области глаза, рта, брови или носа, другое ядро могло бы выявлять другие признаки. Размер ядра обычно берут в пределах от 3х3 до 7х7. Если размер ядра маленький, то оно не сможет выделить какие-либо признаки, если слишком большое, то увеличивается количество связей между нейронами. Также размер ядра выбирается таким, чтобы размер карт сверточного слоя был четным, это позволяет не терять информацию при уменьшении размерности в подвыборочном слое, описанном ниже.

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Неформально эту операцию можно описать следующим образом — окном размера ядра g проходим с заданным шагом (обычно 1) все изображение f, на каждом шаге поэлементно умножаем содержимое окна на ядро g, результат суммируется и записывается в матрицу результата, как на рисунке 4.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода
Рисунок 4 — Операция свертки и получение значений сверточной карты (valid)

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода
Операция свертки и получение значений сверточной карты. Ядро смещено, новая карта получается того же размера, что и предыдущая (same)

При этом в зависимости от метода обработки краев исходной матрицы результат может быть меньше исходного изображения (valid), такого же размера (same) или большего размера (full), в соответствии с рисунком 5.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода
Рисунок 5 — Три вида свертки исходной матрицы

В упрощенном виде этот слой можно описать формулой:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

При этом за счет краевых эффектов размер исходных матриц уменьшается, формула:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Подвыборочный слой

Подвыборочный слой также, как и сверточный имеет карты, но их количество совпадает с предыдущим (сверточным) слоем, их 6. Цель слоя – уменьшение размерности карт предыдущего слоя. Если на предыдущей операции свертки уже были выявлены некоторые признаки, то для дальнейшей обработки настолько подробное изображение уже не нужно, и оно уплотняется до менее подробного. К тому же фильтрация уже ненужных деталей помогает не переобучаться.
В процессе сканирования ядром подвыборочного слоя (фильтром) карты предыдущего слоя, сканирующее ядро не пересекается в отличие от сверточного слоя. Обычно, каждая карта имеет ядро размером 2×2, что позволяет уменьшить предыдущие карты сверточного слоя в 2 раза. Вся карта признаков разделяется на ячейки 2х2 элемента, из которых выбираются максимальные по значению.

Обычно в подвыборочном слое применяется функция активации RelU. Операция подвыборки (или MaxPooling – выбор максимального) в соответствии с рисунком 6.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода
Рисунок 6 — Формирование новой карты подвыборочного слоя на основе предыдущей карты сверточного слоя. Операция подвыборки (Max Pooling)

Формально слой может быть описан формулой:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Полносвязный слой

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Нейроны каждой карты предыдущего подвыборочного слоя связаны с одним нейроном скрытого слоя. Таким образом число нейронов скрытого слоя равно числу карт подвыборочного слоя, но связи могут быть не обязательно такими, например, только часть нейронов какой-либо из карт подвыборочного слоя быть связана с первым нейроном скрытого слоя, а оставшаяся часть со вторым, либо все нейроны первой карты связаны с нейронами 1 и 2 скрытого слоя. Вычисление значений нейрона можно описать формулой:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Выходной слой

Выбор функции активации

В данной работе в качестве функции активации в скрытых и выходном слоях применяется гиперболический тангенс, в сверточных слоях применяется ReLU. Рассмотрим наиболее распространенные функций активации, применяемые в нейронных сетях.

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Функция активации сигмоиды

Эта функция относится к классу непрерывных функций и принимает на входе произвольное вещественное число, а на выходе дает вещественное число в интервале от 0 до 1. В частности, большие (по модулю) отрицательные числа превращаются в ноль, а большие положительные – в единицу. Исторически сигмоида находила широкое применение, поскольку ее выход хорошо интерпретируется, как уровень активации нейрона: от отсутствия активации (0) до полностью насыщенной активации (1). Сигмоида (sigmoid) выражается формулой:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

График сигмоидальной функции в соответствии с рисунком ниже:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

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

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

Сигмоидальная функция является:

Функция активации гиперболический тангенс

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

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Функция активации ReLU

Известно, что нейронные сети способны приблизить сколь угодно сложную функцию, если в них достаточно слоев и функция активации является нелинейной. Функции активации вроде сигмоидной или тангенциальной являются нелинейными, но приводят к проблемам с затуханием или увеличением градиентов. Однако можно использовать и гораздо более простой вариант — выпрямленную линейную функцию активации (rectified linear unit, ReLU), которая выражается формулой:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

График функции ReLU в соответствии с рисунком ниже:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Преимущества использования ReLU:

Обучающие выборки использующиеся в экспериментах

Обучающая выборка состоит из положительных и отрицательных примеров. В данном случае из лиц и “не лиц”. Соотношение положительных к отрицательным примерам 4 к 1, 8000 положительных и 2000 отрицательных.

В качестве положительной обучающей выборки использовалась база данных LFW3D [7]. Она содержит цветные изображения фронтальных лиц типа JPEG, размером 90×90 пикселей, в количестве 13000. База данных предоставляется по FTP, доступ осуществляется по паролю. Для получения пароля необходимо заполнить на главной странице сайта простую форму, где указать свое имя и электронную почту. Пример лиц из базы данных показан в соответствии с рисунком ниже:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

В качестве отрицательных обучающих примеров использовалась база данных SUN397 [8], она содержит огромное количество всевозможных сцен, которые разбиты по категориям. Всего 130000 изображений, 908 сцен, 313000 объектов сцены. Общий вес этой базы составляет 37 GB. Категории изображений весьма различны и позволяют выбирать более конкретную среду, где будет использоваться конечное ПС. Например, если априори известно, что детектор лиц предназначен только для распознавания внутри помещения, то нет смысла использовать обучающую выборку природы, неба, гор и т.д. По этой причине автором работы были выбраны следующие категории изображений: жилая комната, кабинет, классная комната, компьютерная комната. Примеры изображений из обучающей выборки SUN397 показаны в соответствии с рисунком ниже:

что собой представляет генераторная матрица сверточного кода. Смотреть фото что собой представляет генераторная матрица сверточного кода. Смотреть картинку что собой представляет генераторная матрица сверточного кода. Картинка про что собой представляет генераторная матрица сверточного кода. Фото что собой представляет генераторная матрица сверточного кода

Результаты

Прямое распространение сигнала от входного изображения размером 90х90 пикселей занимает 20 мс (на ПК), 3000 мс в мобильном приложении. При детектировании лица в видеопотоке в разрешении 640х480 пикселей, возможно детектировать 50 не перекрытых областей размером 90х90 пикселей. Полученные результаты с выбранной топологией сети хуже по сравнению с алгоритмом Виолы-Джонса.

Выводы

Сверточные нейронные сети обеспечивают частичную устойчивость к изменениям масштаба, смещениям, поворотам, смене ракурса и прочим искажениям.

Ядро — представляет из себя фильтр, который скользит по всему изображению и находит признаки лица в любом его месте (инвариантность к смещениям).

Подвыборочный слой дает:

Обучение сверточной нейронной сети описано во второй части.

Ссылки

— Виды нейронных сетей (подобная схема классификации нейронных сетей)

— Нейронные сети для начинающих: раз и два.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *