У CNN, чи збільшити вибір та перенести згортку однаково?


12

І терміни "upsampling" і "transpose convolution" вживаються, коли ви робите "деконволюцію" (<- не гарний термін, але дозвольте мені тут його використовувати). Спочатку я думав, що вони означають те саме, але мені здається, що вони різні, після того, як я прочитав ці статті. хто-небудь може уточнити?

  1. Транспоніруйте згортання : схоже, ми можемо використовувати його, коли пропонуємо втрати за допомогою суглобової нейронної мережі.

    http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/#Backward-Propagation

    https://github.com/vdumoulin/conv_arithmetic

    https://arxiv.org/pdf/1312.6034v2.pdf , розділ 4 "Для згорткового шару ..."

  2. Підвищення розміру : схоже, ми використовуємо його, коли хочемо збільшити вибірку від менших вхідних даних до більших вхідних даних у структурі convnet-decovnet.

    https://www.youtube.com/watch?v=ByjaPdWXKJ4&feature=youtu.be&t=22m


1
Поперечний відправлений в datascience.stackexchange.com/questions/15863 / ... . Будь ласка, не переписуйте, але вирішіть, на якому веб-сайті ви хочете поставити своє запитання.
Scortchi

@Scortchi Ой вони пов'язані !? Вибачте, я видаляю цю в науці даних.
RockTheStar

Цікавий пост про так звані деконволюції
Ханс

Відповіді:


9

Оскільки немає детальної і помітної відповіді, я постараюся.

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

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

У згортковому автокодері кодер працює з згортанням та об'єднанням шарів. Я припускаю, що ви знаєте, як це працює. Декодер намагається віддзеркалити кодер, але замість "зробити все меншим" він має на меті "зробити все більшим", щоб він відповідав оригінальному розміру зображення.

Протилежністю згорткових шарів є перекладені шари згортки (також відомі як деконволюція , але правильно математично кажучи, це щось інше). Вони працюють з фільтрами, ядрами, кроками так само, як шари згортки, але замість відображення, наприклад, 3x3 вхідних пікселів на 1 вихід, вони відображають від 1 вхідного пікселя до 3x3 пікселів. Звичайно, також зворотне розмноження працює дещо інакше.

Протилежність об'єднання шарів є Upsampling шари , які в їх чистому вигляді лише змінити розмір зображення (або копіювати піксель стільки раз , скільки це необхідно). Більш досконалою технікою є розкручування, яке відновлює maxpooling, запам'ятовуючи розташування максимумів у шарах maxpooling, а в шарах, що розгортаються, копіюють значення саме в це місце. Цитувати з цього ( https://arxiv.org/pdf/1311.2901v3.pdf ) документа:

У convnet операція об'єднання максимумів неперевернена, проте ми можемо отримати приблизну обернену, записуючи розташування максимумів у кожній області об'єднання в набір змінних комутаторів. У деконвентній операції розгортання цих перемикачів використовуються ці комутатори для розміщення реконструкцій із шару вище у відповідні місця, зберігаючи структуру подразника.

Для отримання додаткового технічного вкладу та контексту ознайомтеся з цим дійсно хорошим, наочним та глибоким поясненням: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html

Подивіться на https://www.quora.com/What-is-the-difference-bet between-Deconvolution-Upsampling-Unpooling- and-Convolutional-Sparse- Coding


Ф. Чоллет (творець Кераса) стверджував би, що це техніка самоконтролю .
Хан

6

Це може залежати від пакета, який ви використовуєте.

У керах вони різні. Upsampling визначається тут https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py умови , що ви використовуєте tensorflow бекенд, що на насправді відбувається, keras викликів tensorflow resize_images функції, яка по суті є інтерполяцією і не тренований.

Транспонована згортка більше задіяна. Він визначений у тому ж сценарії python, що вказаний вище. Він викликає функцію tensorflow conv2d_transpose, вона має ядро ​​і відстежується.

Сподіваюсь, це допомагає.


1

Деконволюція в контексті згорткових нейронних мереж є синонімом транспозиції згортки. Деконволюція може мати інше значення в інших сферах.

Транспонируемая згортка - це одна з стратегій серед інших для здійснення перемотки.


Так, я згоден. але, схоже, те, як посилання пояснюють їх, відрізняється. Погляньте на відео в №2, а потім подивіться посилання в №1 (особисто я йду на пояснення № 1)
RockTheStar

@RockTheStar Яке поняття пояснюється по-різному? Перенести згортку чи перемолоти?
Франк Дернонкурт

1
концепція розгортання / деконволюції пояснюється у відео у №2. Це приблизно кілька хвилин.
RockTheStar

0

ось досить гарна ілюстрація про різницю між переносом згортки та 2) перекруткою + згорткою. https://distill.pub/2016/deconv-checkerboard/

У той час як транспоноване згортання є більш ефективним, ця стаття виступає за підвищення рівня збірки + згортання, оскільки воно не страждає від артефакту шахівниці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.