Шаг 205.
Глубокое обучение на Python. Введение ... в технологиях компьютерного зрения. Введение в сверточные нейронные сети. Операция свертывания

    На этом шаге мы рассмотрим, что представляет из себя эта операция.

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


Рис.1. Изображения можно разбить на локальные шаблоны, такие как края, текстуры и т. д.

    В предыдущем примере все такие окна имели размеры 3 × 3 .

    Эта ключевая характеристика наделяет сверточные нейронные сети двумя важными свойствами:


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

    Свертка применяется к трехмерным тензорам, называемым картами признаков, с двумя пространственными осями (высотой и шириной), а также с осью глубины (или осью каналов). Для изображений в формате RGB размерность оси глубины равна 3, потому что имеется три канала цвета: красный (red), зеленый (green) и синий (blue). Для черно-белых изображений, как в наборе MNIST, ось глубины имеет размерность 1 (оттенки серого). Операция свертывания извлекает шаблоны из своей входной карты признаков и применяет одинаковые преобразования ко всем шаблонам, производя выходную карту признаков. Выходная карта признаков также является трехмерным тензором: у нее есть ширина и высота. Ее глубина может иметь любую размерность, потому что выходная глубина является параметром слоя, и разные каналы на этой оси глубины больше не соответствуют конкретным цветам, как во входных данных в формате RGB; скорее, они соответствуют фильтрам. Фильтры представляют конкретные аспекты входных данных: на верхнем уровне, например, фильтр может соответствовать понятию "присутствие лица на входе".

    В примере MNIST первый сверточный слой принимает карту признаков размером (28, 28, 1) и выводит карту признаков размером (26, 26, 32): он вычисляет 32 фильтра по входным данным. Каждый из этих 32 выходных каналов содержит сетку 26 × 26 значений - карту ответов фильтра на входных данных, определяющую ответ этого шаблона фильтра для разных участков входных данных (рисунок 3).


Рис.3. Понятие карты ответов: двумерная карта присутствия шаблона на разных участках входных данных

    Вот что означает термин "карта признаков": каждое измерение на оси глубины - это признак (или фильтр), а двумерный тензор output[:, :, n] - это двумерная пространственная карта ответов фильтра на входных данных.

    Свертки определяются двумя ключевыми параметрами:

    В Keras эти параметры передаются в слои Conv2D в первых аргументах:

  Conv2D(выходная_глубина, (высота_окна, ширина_окна))  .

    Свертка работает методом скользящего окна: она двигает окно размером 3 × 3 или 5 × 5 по трехмерной входной карте признаков, останавливается в каждой возможной позиции и извлекает трехмерный шаблон окружающих признаков (с формой (высота_окна, ширина_окна, глубина_входа)). Каждый такой трехмерный шаблон затем преобразуется (путем умножения тензора на матрицу весов, получаемую в ходе обучения, которая называется ядром свертки) в одномерный вектор с формой (выходная глубина,). Все эти векторы затем собираются в трехмерную выходную карту с формой (высота, ширина, выходная глубина). Каждое пространственное местоположение в выходной карте признаков соответствует тому же местоположению во входной карте признаков (например, правый нижний угол выхода содержит информацию о правом нижнем угле входа). Например, для окна 3 × 3 вектор output[i, j, :] соответствует трехмерному шаблону input[i - 1:i + 2, j - 1:j + 2, :]. Полный процесс изображен на рисунке 4.


Рис.4. Принцип действия свертки

    Обратите внимание, что выходные ширина и высота могут отличаться от входных. На то есть две причины:

    Рассмотрим подробнее эти понятия.

    На следующем шаге мы рассмотрим эффекты границ и дополнение.




Предыдущий шаг Содержание Следующий шаг