Сверточные нейронные сети (ConvNet/CNN) — это тип нейронных сетей, которые в основном используются для классификации и распознавания изображений. Архитектура ConvNet вдохновлена ​​организацией Visual Cortex.

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

ConvNet выполняет четыре функции.

1. Сверточный

2. РеЛУ

3. Объединение

4. Полностью подключенный слой.

Сверточная операция:

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

РеЛУ:

ReLU расшифровывается как Rectified Linear Units. Как и любая другая нейронная сеть, CNN также должна поддерживать нелинейность. Блок ReLU имеет выход 0, если вход отрицательный, в противном случае он будет таким же, как и вход. За результатом сверточной операции следует функция активации ReLU для удаления всех отрицательных значений из матрицы.

Объединение:

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

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

Полностью подключенный слой:

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

Оптимизация производительности/настройка гиперпараметров:

У нас есть 4 гиперпараметра в сверточной нейронной сети

1. Размер фильтра

2. Шаг

3. Количество используемых фильтров.

4. Прокладка

5. Увеличение изображения

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

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

Шаг. Как уже упоминалось выше, шаг — это шаг, перемещаемый фильтром по матрице изображения.

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

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

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