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

Ядра изображений / фильтры:

Если вы когда-либо использовали программное обеспечение для редактирования фотографий, вы наверняка видели фильтры, например фильтр размытия. Но как они работают?

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

По сути, мы перемещаем ядро ​​по входной матрице, то есть изображению, которое умножается на веса фильтра и сумму этих результатов, чтобы получить окончательную функцию. Обратите внимание, как уменьшается разрешение, потому что мы берем 9 входных значений и выводим одно значение. Посетите этот сайт, чтобы получить представление о том, как работает ядро ​​deep lizard. Эти фильтры называются ядрами свертки. Процесс их наложения на изображение известен как свертка. Движение ядра в шаге называется шаганием, как правило, оно одно. Если размер шага увеличивается, размер изображения уменьшается. Основное использование свертки - найти особенности в изображении с помощью детектора признаков, поместить их на карту признаков, которая по-прежнему сохраняет важность исходного изображения.

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

→ Общая формула для определения размера матрицы свертки без заполнения: (N x N) * (F x F) = (N-F + 1) x (N-F + 1). Этого можно добиться, указав значение «действительно» для заполнения параметра.

→ Формула размера матрицы свертки с заполнением: (N + 2p-F + 1) x (N + 2p-F + 1). Если размер заполнения равен единице, размер результирующей матрицы такой же, как и размер входной матрицы. Этого можно добиться, задав для заполнения параметра «same».

→ Чтобы определить правильный размер отступа, используется эта формула p = (F-1) / 2.

Недостатки использования ИНС для изображений:

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

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

Свертка фокусируется на локальном фильтре, где разные фильтры начинают определять разные части изображения. Объединение фильтров вместе приведет к созданию сверточных слоев. Для цветных изображений у нас есть значения интенсивности RGB, они представлены как (1280, 720, 3) (Высота, Ширина, Цвет). В цветных изображениях мы получаем 3D-фильтры, в которых часто сверточные слои передаются в другие сверточные слои, это позволяет сетям обнаруживать шаблоны в шаблонах, обычно более сложных для последующих сверточных слоев.

Слои объединения:

Зачем нужен пул?

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

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

Доступно несколько типов пулов, таких как Максимальный пул, Средний пул, Суммарный пул.

Max Pooling принимает максимальное значение поля, которое перемещается по матрице с размером фильтра (2 x 2) и длиной шага 2.

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

Пул значительно сокращает количество наших параметров. Этот уровень объединения в конечном итоге приведет к удалению большого количества информации, даже небольшое «ядро» объединения (2x2) с шагом 2 удалит 75% входных данных. Однако общие тенденции будут сохраняться на всем уровне объединения, с помощью которого создается обобщенная модель, уменьшающая переобучение.

Сплющивание:

Объединенная карта функций выравнивается до вектора-столбца перед передачей ее в плотно подключенную искусственную нейронную сеть.

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

CNN поддерживает все типы архитектуры. Не существует большого правила для проектирования архитектуры, все основано на показателях ошибок и сценариях использования.

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

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

Посетите этот веб-сайт, чтобы понять, как работает архитектура CNN Райерсон

Надеюсь, вы получили общее представление о работе CNN и обратитесь к github для создания CNN с использованием python.