2. Классификатор слэшей

2. Классификатор слэшей#

У Маши есть куча картинок размера \(4 \times 4,\) на которых нарисованы прямые и обратные слэши.

../_images/img02_slash_01.png

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

Решение

Нужно придумать свёртку так, чтобы она находила либо прямые, либо обратные слэши. В примере ниже мы применили свёртку к исходной картинке и получили новую картинку. В ней записана информация о том, что именно свёртка разглядела на исходной картинке. Результат применения свёртки – это составные признаки, полученные из исходной картинки (feature map).

cnn9

Попробуем применить эту же свёртку к обратному слэшу.

cnn9

Видно, что для обратного слэша, в результате применения свёртки есть число \(2\). Для прямого слэша максимальное число – это единица. Попробуем передвинуть обратный слэш в какое-нибудь другое место и посмотрим, что получится после применения свёртки.

cnn9

Снова самое большое число – это двойка. Получается следующий алгоритм:

  1. Применяем к картинке ядро в виде обратного слэша.

  2. Находим на получившейся картинке максимальное число.

  3. Если это двойка, у нас обратный слэш, если единица, у нас прямой слэш.

Такой алгоритм будет работать независимо от того, где именно находится наш слэш. Получается, что свёртка – инвариантна к местоположению объекта на картинке. Каждая свёртка пытается искать на изображении какой-то конкретный образ. Если на изображении, полученном после применения свёртки, у нас есть большие числа, они сигнализируют о том, что свёртка нашла то, что искала.

Обратите внимание, что если бы наши слэши были бы размера \(3 \times 3,\) свёртка размера \(2 \times 2\) не могла бы найти их. Зато две применённые по очереди свёртки, спокойно бы справились с такой задачей. Это происходит из-за того, что свёртка \(2 \times 2\) не охватывает нужную нам часть изображения полностью. Она видит только квадрат размера \(2 \times 2\).

Вторая свёртка применяется к уже свернутому изображению. В каждой клетке у нас записано число, которое представляет из себя сумму четырёх пикселей. Получается, что вторая свёртка косвенно, через первую свёртку, будет понимать, что находится в квадрате размера \(4 \times 4\).

Область, которую разглядели наши свёртки, называют полем обзора (receptive field). В одной из следующих задач мы узнаем, что если просто применять свёртки друг за другом, мы будем растить поле обзора слишком долго. Чтобы это происходило быстрее, обычно используют пулинг.