Если вы еще не знаете, CNN (сверточная нейронная сеть) - это класс глубокой нейронной сети, которая обычно применяется для классификации изображений. Он принимает входное изображение, применяет фильтры, выравнивает изображение и «голосует» для классификации изображения. Но каковы строительные блоки CNN?

Входное изображение

Прежде всего, входное изображение будет разбито на пиксели. Если это черно-белое изображение, у него будет только один слой, а пиксели будут интерпретироваться как 2D-массив со значением от 0 до 255. Если это цветное изображение, оно будет иметь 3 слоя (красный, зеленый, синий) и будет интерпретироваться как 3D-массив.

Слой свертки

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

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

На этом слое есть два типа результатов:
· Same Padding - когда размер выходных карт объектов такой же, как у входных карт объектов
· Valid Padding - когда размер выходных объектов - карты имеют тот же размер, что и ядро

Уровень объединения

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

Полностью подключенный входной слой (сглаживание)

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

Полностью связанный слой

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