Чому згортки завжди використовують непарні числа як filter_size


13

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

Ця ситуація може призвести до певної проблеми: За таких розмірів фільтрів, як правило, операція згортання не є ідеальною, якщо прокладка 2 (звичайна прокладка), а деякі краї вхідного поля втрачаються в процесі ...

Запитання1: Чому для розмірів фільтрів згортків використовуються лише непарні числа?

Запитання2: Чи насправді проблема опускати невелику частину вхідного поля під час згортки? Чому так / ні?

Відповіді:


14

Операція згортки, простіше кажучи, - це комбінація елементарного добутку двох матриць. Поки ці дві матриці узгоджуються за розмірами, не повинно виникнути проблем, і тому я можу зрозуміти мотивацію вашого запиту.

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

Гаразд, так що ж таке вихідний піксель? Це точка прив’язки, в якій ядро ​​зосереджено, і ми кодуємо всі сусідні пікселі, включаючи піксель якоря / джерела. Оскільки ядро ​​має симетричну форму (не симетрична за значеннями ядра), є однакове число (n) пікселів з усіх боків (4- підключення) якорного пікселя. Отже, якою б не була ця кількість пікселів, довжина кожної сторони нашого симетрично сформованого ядра становить 2 * n + 1 (кожна сторона якоря + піксель якоря), і тому фільтр / ядра завжди мають непарні розміри.

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

A.2 Кордонна проблема вирішується з використанням різних підходів: деякі ігнорують її, деякі нульову панель, деякі дзеркально відображають її. Якщо ви не збираєтеся обчислювати зворотну операцію, тобто деконволюцію, і не зацікавлені в ідеальній реконструкції вихідного зображення, то вас не хвилює ні втрата інформації, ні введення шуму через граничну проблему. Зазвичай операція об’єднання (середнє об'єднання чи максимум об'єднань) все одно видалить ваші граничні артефакти. Отже, сміливо ігноруйте частину свого "поля введення", ваша операція об'єднання зробить це за вас.

-

Дзен згортки:

У домені обробки сигналів старої школи, коли вхідний сигнал згортався або проходив через фільтр, не було можливості судити заздалегідь, які компоненти згорнутої / відфільтрованої відповіді є релевантними / інформативними, а які - ні. Отже, метою було збереження в цих перетвореннях сигнальних компонентів (усіх).

Ці компоненти сигналу є інформацією. Деякі компоненти більш інформативні, ніж інші. Єдиною причиною цього є те, що ми зацікавлені в отриманні інформації вищого рівня; Інформація, що стосується деяких семантичних класів. Відповідно, ті компоненти сигналу, які не надають інформації, яка нас конкретно цікавить, можуть бути викреслені. Тому, на відміну від старошкільних догм про згортання / фільтрування, ми вільні об'єднати / обрізати реакцію на згортання так, як нам здається. Як ми це робимо, це жорстке видалення всіх компонентів даних, які не сприяють покращенню нашої статистичної моделі.


Дякую вам за ваше виснаження, але хіба не простіше зрозуміти це, дивлячись на визначення згортки в математичному плані? en.wikipedia.org/wiki/Convolution#Discrete_convolution Тому що тут ми бачимо, що у нас завжди будуть m терміни зліва та справа від походження ... отже, це завжди призведе до нерівномірної кількості.
zwep

@zwep Погодився! Форуми питань і відповідей не замінюють енциклопедії; а лише доповнюють їх. Однак ширший погляд на ваш коментар: Визначення, як правило, є лише рецензованим найкращим вибором серед доступних варіантів; це не євангельська правда. Тим не менш, правила потрібно спочатку вивчити, перш ніж їх порушувати, щоб можна було чітко повідомляти громаді, як саме і чому ви це робите по-іншому. Причини та альтернативний вибір, що стоїть за певним визначенням, є в наукових роботах, а зазвичай не в енциклопедії.
Динамічний зоряний

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.