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

Теперь давайте посмотрим, как эти фильтры извлекают функции из изображения, но перед этим давайте разберемся, что же такое фильтры на самом деле?

Что такое фильтры?

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

Разные фильтры имеют разные конкретные значения для обнаружения разных функций.

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

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

Страйд

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

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

Предположим, у вас есть изображение размером 32X32X3, и мы передаем сверточный фильтр размером 5X5X3. Таким образом, выходная форма будет 28X28X3.

Теперь снова, если мы применим этот фильтр, форма будет 24X24X3, а если мы применим фильтр еще раз, форма будет 20X20X3. Вы можете посмотреть на изображение ниже для лучшего понимания.

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

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

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

Чтобы решить проблему уменьшения размерности и потери информации, мы используем заполнение.

Прокладка

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

Итак, давайте предположим, что изображение 32X32X3, и мы добавили отступ 2 вокруг этого изображения. Итак, теперь размер входного изображения изменился на 36X36X3, и теперь, если мы применим фильтр 5X5X3, выходной размер будет 32X32X3. Таким образом, мы сохраняем размер вывода в качестве ввода.

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

В CNN используются две стратегии заполнения.

  • Действителен: когда «заполнение = действительно», это означает, что к изображению не будет применено заполнение или к изображению не будут добавлены нули.
  • То же: когда «заполнение = то же самое», это означает, что к изображению будет применено заполнение или к изображению будут добавлены нули.

Здесь следует отметить, что заполнение будет сохранять выходной размер таким же, как и входной, только если шаг равен 1. Если шаг отличается от 1, выходной размер будет уменьшен.

Итак, это о фильтре CNN, шаге и отступах. Я надеюсь, вы хорошо понимаете эти термины и то, как они работают? Узнайте об операции объединения в этой статье или узнайте, как вычисляется средняя средняя точность при обнаружении объектов с помощью кода Python.