Почему в свертках всегда используются нечетные числа в качестве 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.