Почему в свертках всегда используются нечетные числа в качестве filter_size

13

Если мы посмотрим на 90-99% статей, опубликованных с использованием CNN (ConvNet). Подавляющее большинство из них использует размер фильтра нечетных чисел : {1, 3, 5, 7} для наиболее часто используемых.

Эта ситуация может привести к некоторой проблеме: при таких размерах фильтров операция свертки обычно не идеальна с заполнением 2 (обычное заполнение), и некоторые ребра поля input_field теряются в процессе ...

Вопрос 1. Почему для размеров сверточного фильтра используются только odd_numbers?

Вопрос 2: действительно ли проблема пропускать небольшую часть поля input_ во время свертки? Почему так / нет?

Джонатан ДЕХТЯР
источник

Ответы:

14

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

A.1. Однако целью свертки является кодирование матрицы исходных данных (всего изображения) в терминах фильтра или ядра. Более конкретно, мы пытаемся кодировать пиксели в окрестности пикселей привязки / источника. Посмотрите на рисунок ниже: как введите описание изображения здесь правило, мы рассматриваем каждый пиксель исходного изображения как пиксель привязки / источника, но мы не обязаны делать это. На самом деле, нередко включать шаг, где якорь / исходные пиксели разделены определенным количеством пикселей.

Итак, каков исходный пиксель? Это точка привязки, в которой центрируется ядро, и мы кодируем все соседние пиксели, включая пиксель привязки / источника. Поскольку ядро ​​имеет симметричную форму (не симметричную по значениям в ядре), имеется одинаковое количество (n) пикселей со всех сторон (4-связность) пикселя привязки. Поэтому, каким бы ни было это количество пикселей, длина каждой стороны нашего ядра симметричной формы составляет 2 * n + 1 (каждая сторона якоря + пиксель якоря), и, следовательно, фильтр / ядра всегда имеют нечетные размеры.

Что если мы решили порвать с «традицией» и использовать асимметричные ядра? Вы будете страдать от ошибок псевдонимов, и поэтому мы этого не делаем. Мы считаем пиксель самой маленькой сущностью, то есть здесь нет подпиксельной концепции.

А.2. Граничная проблема решается с использованием разных подходов: некоторые игнорируют ее, некоторые обнуляют ее, некоторые отражают ее. Если вы не собираетесь вычислять обратную операцию, то есть деконволюцию, и не заинтересованы в идеальной реконструкции исходного изображения, то вам нет дела до потери информации или введения шума из-за проблемы с границами. Как правило, операция объединения (среднее или максимальное объединение) в любом случае удалит ваши граничные артефакты. Поэтому не стесняйтесь игнорировать часть своего «поля ввода», ваша операция объединения сделает это за вас.

-

Дзен свертки:

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

Эти компоненты сигнала являются информацией. Некоторые компоненты более информативны, чем другие. Единственная причина этого заключается в том, что мы заинтересованы в извлечении информации более высокого уровня; Информация, относящаяся к некоторым семантическим классам. Соответственно, те компоненты сигнала, которые не предоставляют информацию, в которой мы заинтересованы, могут быть исключены. Поэтому, в отличие от догм старой школы о свертке / фильтрации, мы свободны объединять / сокращать реакцию свертки, как нам хочется. Мы стремимся к тому, чтобы тщательно удалить все компоненты данных, которые не способствуют улучшению нашей статистической модели.

Динамическая Звездная пыль
источник
Спасибо за ваше объяснение, но не легче ли понять это, взглянув на определение свертки в математических терминах? en.wikipedia.org/wiki/Convolution#Discrete_convolution Поскольку здесь мы видим, что у нас всегда будет m терминов слева и справа от источника ... следовательно, это всегда приведет к неравномерному количеству.
Zwep
@zwep Согласен! Форумы Q & A не заменяют энциклопедии; но просто дополняю их. Тем не менее, более широкая перспектива для вашего комментария: определение, как правило, просто проверяется лучшим выбором среди доступных вариантов; это не евангельская правда Тем не менее, правила должны быть изучены прежде, чем их нарушать, чтобы они могли четко сообщить сообществу, как и почему вы делаете это по-разному. Причины и альтернативные решения, стоящие за определенным определением, содержатся в исследовательских работах, а не в энциклопедии.
Динамическая Звездная пыль
5

1) Предположим, input_fieldчто все ноль, кроме одной записи в индексе idx. Нечетный размер фильтра будет возвращать данные с пиком по центру idx, а четный размер фильтра не будет - рассмотрим случай однородного фильтра с размером 2. Большинство людей хотят сохранить расположение пиков при фильтрации.

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

Дэйв Килпински
источник
2

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

Почему фильтры четного размера не будут работать

источник: https://towardsdatascience.com/deciding-optimal-filter-size-for-cnns-d6f7b56f9363

Сашант
источник