Найти в Дзене
Машинное обучение

Как Padding помогает в CNN?

Оглавление

Подход к построению эффективной модели.

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

Для изображения в градациях серого (nxn) и (fxf) фильтра / ядра размеры изображения, полученного в результате операции свертки, равны (n - f + 1) x (n - f + 1). Например, если мы используем изображение 8x8 и фильтр 3x3, после свертки вывод будет 6x6. Это означает, что после каждой свертки изображение сжимается. Это может накладывать ограничение для построения более глубоких сетей, но мы можем решить это, добавив отступы.

Есть несколько типов заполнения недостающих пикселей, таких как Valid, Same, Causal, Constant, Reflection и Replication. Из них самые популярные - Valid padding и Same padding. Давайте посмотрим на них более детально.

Допустимое заполнение (или отсутствие заполнения): допустимое заполнение - это просто отсутствие заполнения. Когда используется изображение (n x n) и используется фильтр (f x f) с допустимым заполнением, размер выходного изображения будет (n-f + 1) x (n-f + 1).

[(n x n) image] * [(f x f) filter] -> [(n — f + 1) x (n — f + 1) image]

-2

То же заполнение: такое же заполнение используется, когда нам нужен вывод той же формы, что и вход. Это значение вычисляет и добавляет заполнение пикселей, необходимое для входного изображения, чтобы гарантировать форму до и после. Если значения для заполнения нулевые, это можно назвать нулевым заполнением. Когда заполнение нулевое , тогда каждый пиксель в заполнении имеет нулевое значение. Если для нулевого отступа установлено значение 1, то к изображению добавляется граница в 1 пиксель со значением 0. Когда мы используем изображение (n x n) и фильтр (f x f), и мы добавляем отступ (p) к изображению. Размер выходного изображения будет (n x n). Это означает, что он восстанавливает размер изображения. Следующее уравнение представляет размеры ввода и вывода с одинаковым заполнением.

[(n + 2p) x (n + 2p) image] * [(f x f) filter] -> [(n x n) image].

значение p = (f-1)/2 since (n+2p-f+1) = n

Мы можем использовать приведенную выше формулу и вычислить, сколько слоев заполнения можно добавить, чтобы получить тот же размер исходного изображения. Например, если мы используем изображение 6x6 и фильтр 3x3, нам понадобится 1 слой заполнения [P = (3 -1) / 2 = 1], чтобы получить выходное изображение 6x6. Этот пример представлен на следующей диаграмме.

-3

Заключение

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

Оригинал https://www.numpyninja.com/post/how-padding-helps-in-cnn