Czy w CNN upsampling i transpozycja splotu są takie same?

12

Zarówno terminy „upsampling”, jak i „transponowanie splotu” są używane, gdy wykonujesz „dekonwolucję” (<- niezbyt dobry termin, ale pozwólcie, że użyję go tutaj). Początkowo myślałem, że oznaczają to samo, ale wydaje mi się, że różnią się po przeczytaniu tych artykułów. czy ktoś może wyjaśnić?

  1. Transponuj splot : wygląda na to, że możemy go użyć, gdy propagujemy straty za pośrednictwem splotowej sieci neuronowej.

    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 , sekcja 4 „Dla warstwy splotowej ...”

  2. Upsampling : wygląda na to, że używamy go, gdy chcemy upsamplować od mniejszych danych wejściowych do większych danych wejściowych w strukturze convnet-decovnet.

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

RockTheStar
źródło
1
Publikacja na stronie datascience.stackexchange.com/questions/15863/… . Nie wysyłaj postów, ale zdecyduj, w której witrynie chcesz znaleźć pytanie.
Scortchi - Przywróć Monikę
@Scortchi Och, są powiązane !? Przepraszam, usunąłem ten z danych.
RockTheStar
Ciekawy post na temat tak zwanych dekonwolucji
hans

Odpowiedzi:

9

Ponieważ nie ma szczegółowej i oznaczonej odpowiedzi, postaram się jak najlepiej.

Najpierw zrozumiemy, skąd bierze się motywacja do takich warstw: np. Autoencoder splotowy. Za pomocą splotowego autokodera można wyodrębnić elementy obrazów podczas szkolenia autokodera w zakresie rekonstrukcji oryginalnego obrazu. (Jest to metoda bez nadzoru.)

Taki autoencoder składa się z dwóch części: kodera, który wydobywa cechy z obrazu oraz dekodera, który rekonstruuje oryginalny obraz z tych funkcji. Architektura enkodera i dekodera jest zwykle dublowana.

W autokoderze splotowym koder działa z warstwami splotu i puli. Zakładam, że wiesz, jak one działają. Dekoder próbuje wykonać kopię lustrzaną kodera, ale zamiast „zmniejszać wszystko” ma na celu „powiększanie wszystkiego”, tak aby pasował do oryginalnego rozmiaru obrazu.

Przeciwieństwem warstw splotowych są transponowane warstwy splotowe (znane również jako dekonwolucja , ale poprawnie mówiąc matematycznie jest to coś innego). Działają z filtrami, jądrami, krokami tak jak warstwy splotu, ale zamiast mapować np. Z pikseli wejściowych 3x3 na 1 wyjście, mapują od 1 piksela wejściowego do 3x3 pikseli. Oczywiście również propagacja wsteczna działa nieco inaczej.

Przeciwieństwem warstw pulujących są warstwy próbkowania w górę, które w najczystszej postaci zmieniają rozmiar obrazu (lub kopiują piksel tyle razy, ile potrzeba). Bardziej zaawansowaną techniką jest odsprzęganie, które odwraca maxpooling, zapamiętując położenie maksimów w warstwach maxpooling i w warstwach unpooling kopiuje wartość do dokładnie tego miejsca. Cytat z tego ( https://arxiv.org/pdf/1311.2901v3.pdf ) referatu:

W sieci konwergentnej maksymalna operacja pulowania jest nieodwracalna, jednak możemy uzyskać przybliżoną odwrotność, rejestrując lokalizacje maksimów w każdym regionie puli w zestawie zmiennych przełączających. W dekonwnetrze operacja odpulowania wykorzystuje te przełączniki do umieszczania rekonstrukcji z warstwy powyżej w odpowiednich lokalizacjach, zachowując strukturę bodźca.

Aby uzyskać więcej informacji technicznych i kontekst, zapoznaj się z tym naprawdę dobrym, demonstracyjnym i szczegółowym wyjaśnieniem: http://deeplearning.net/software/theano/tutorial/conv_arithmetic.html

I spójrz na https://www.quora.com/What-is-the-difference-between-Deconvolution-Upsampling-Unpooling-and-Convolutional-Sparse-Coding

Maikefer
źródło
F. Chollet (twórca Keras) twierdzi, że jest to technika samonadzorowana .
hans
6

Może to zależeć od używanego pakietu.

W keras są różne. Upsampling zdefiniowano tutaj https://github.com/fchollet/keras/blob/master/keras/layers/convolutional.py Pod warunkiem, że używasz backendu tensorflow, tak naprawdę dzieje się tak, że keras wywołuje funkcję resize_images tensorflow , która zasadniczo jest interpolacją, a nie wyszkolony.

Transponowany splot jest bardziej zaangażowany. Jest zdefiniowany w tym samym skrypcie pythonowym wymienionym powyżej. Wywołuje funkcję tensorflow conv2d_transpose , ma jądro i można go trenować.

Mam nadzieję że to pomoże.

Jian
źródło
1

Dekonwolucja w kontekście splotowych sieci neuronowych jest równoznaczna z transpozycją splotu. Dekonwolucja może mieć inne znaczenie w innych dziedzinach.

Transponowanie splotu jest jedną ze strategii między innymi przeprowadzania próbkowania.

Franck Dernoncourt
źródło
tak, zgadzam się. ale wygląda na to, że sposób ich wyjaśnienia jest inny. Spójrz na wideo w No.2, a następnie spójrz na odniesienia w No.1 (osobiście
wybieram
@RockTheStar Którą koncepcję wyjaśniono inaczej? Transponować splot czy upsampling?
Franck Dernoncourt,
1
koncepcja upsamplowania / dekonwolucji wyjaśniona na wideo w nr 2. To około kilku minut.
RockTheStar
0

tutaj jest całkiem dobra ilustracja różnicy między 1) transpozycją splotu i 2) upsamplowaniem + splotem. https://distill.pub/2016/deconv-checkerboard/

Podczas gdy splot transponujący jest bardziej wydajny, artykuł opowiada się za upsamplingiem + splotem, ponieważ nie cierpi na artefakt szachownicy.

Shaobo Guan
źródło