Zjišťoval jsem literaturu týkající se plně konverzačních sítí a narazil jsem na následující frázi ,

Plně konvoluční sítě je dosaženo nahrazením plně propojených vrstev bohatých na parametry ve standardních architekturách CNN konvolučními vrstvami za $ 1 \ krát 1 $ jádra.

Mám dvě otázky.

  1. Co se rozumí výrazem bohatým na parametry ? Říká se tomu bohatý na parametry, protože plně propojené vrstvy předávají parametry bez jakéhokoli „prostorového“ zmenšení?

  2. Jak také fungují jádra $ 1 \ krát 1 $ ? Neznamená to jádro „t $ 1 \ krát 1 $ jednoduše to, že jeden posune po obraze jeden pixel? Jsem z toho zmatený.

Odpověď

Plně konvoluční sítě

A plně konvoluční síť (FCN) je neurální síť, která provádí pouze operace konvoluce (a převzorkování nebo převzorkování). Ekvivalentně je FCN CNN bez plně propojených vrstev.

Konvoluční neuronové sítě

Typická konvoluční neuronová síť (CNN) není zcela konvoluční, protože často obsahuje plně spojené vrstvy (které neprovádějí operaci konvoluce), které jsou bohaté na parametry v tom smyslu, že mají mnoho parametrů (ve srovnání s jejich ekvivalentní konvolucí) vrstvy), i když lze plně propojené vrstvy zobrazit také jako konvoluce s ker nely, které pokrývají celé vstupní oblasti , což je hlavní myšlenka převodu CNN na FCN. Podívejte se na toto video Andrew Ng, které vysvětluje, jak převést plně spojenou vrstvu na vrstvu konvoluční.

Příklad FCN

Příkladem plně konvoluční sítě je U-net (takto se volá kvůli jeho tvaru U, který vidíte na obrázku níže), což je slavná síť, která se používá pro sémantiku segmentace , tj. klasifikovat pixely obrázku tak, aby pixely, které patří do stejné třídy (např. osoby), byly spojeny se stejným štítkem (tj. osobou), alias pixelovým ( nebo hustá) klasifikace.

zde zadejte popis obrázku

Sémantická segmentace

Takže při sémantické segmentaci chcete přiřadit štítek ke každému pixelu (nebo malé části pixelů) vstupního obrazu. Zde je sugestivnější ilustrace neuronové sítě, která provádí sémantickou segmentaci.

zde zadejte popis obrázku

Segmentace instancí

Existuje také segmentace instancí , kde také chcete odlišit různé instance stejné třídy (např. chcete odlišit dva lidi na stejném obrázku jejich odlišným označením). Příkladem neuronové sítě, která se používá například pro segmentaci, je maska R-CNN . Příspěvek na blogu Segmentace: U-Net, Mask R-CNN a lékařské aplikace (2020) od Rachel Draelos velmi dobře popisuje tyto dva problémy a sítě.

Zde je příklad obrázku, kde byly instance stejné třídy (tj. osoby) označeny odlišně (oranžově a modře).

zde zadejte popis obrázku

Sémantická i instanční segmentace jsou husté klasifikační úkoly (konkrétně spadají do kategorie segmentace obrázků ), to znamená, že chcete klasifikovat každý pixel nebo mnoho malých skvrn pixelů obrázku.

$ 1 \ krát 1 $ konvoluce

Ve výše uvedeném grafu U-net vidíte, že existují pouze konvoluce, kopírování a oříznutí, max. sdružování a operace převzorkování. Neexistují žádné plně spojené vrstvy.

Jak tedy přiřadíme štítek ke každému pixelu (nebo malou opravu p ixels) vstupu? Jak provedeme klasifikaci každého pixelu (nebo patche) bez konečné plně spojené vrstvy?

To je místo, kde $ 1 \ krát 1 $ operace konvoluce a převzorkování jsou užitečné!

V případě výše uvedeného diagramu U-net (konkrétně v pravém horním rohu diagramu, který je pro přehlednost níže uveden), dva na vstupní svazek se použijí jádra $ 1 \ krát 1 \ krát 64 $ (ne obrázky!) k vytvoření dvou map funkcí o velikosti 388 $ \ krát 388 $ . Použili dvě $ 1 \ krát 1 $ jádra, protože v jejich experimentech byly dvě třídy (buňka a ne buňka). Zmíněný blogový příspěvek vám také dává intuici, která by za tím měla být, proto byste si jej měli přečíst.

zde zadejte popis obrázku

Pokud jste se pokusili pečlivě analyzovat diagram U-net, zjistíte, že výstupní mapy mají jiné prostorové rozměry (výška a hmotnost) než vstupní obrázky, které mají rozměry 572 $ krát 572 \ krát 1 $ .

To je fajn, protože naším obecným cílem je provést hustou klasifikaci (tj. klasifikovat patche obrázku, kde patche mohou obsahovat pouze jeden pixel ), i když jsem řekl, že bychom provedli pixelovou klasifikaci, takže jste možná očekávali, že výstupy budou mít stejné přesné prostorové rozměry vstupů. Všimněte si však, že v praxi můžete mít také výstupní mapy stejný prostorový rozměr jako vstupy: prostě byste ne ed provést jinou operaci převzorkování (dekonvoluce).

Jak funguje $ 1 \ krát 1 $ konvoluce?

A $ 1 \ times 1 $ konvoluce je jen typická 2d konvoluce, ale s $ 1 \ times1 $ jádrem.

Jak již pravděpodobně víte (a pokud jste to nevěděli, nyní to víte), pokud máte $ g \ times g $ jádro, které se aplikuje na vstup o velikosti $ h \ times w \ times d $ , kde $ d $ je hloubka vstupního objemu (což je například v případě obrázků ve stupních šedi $ 1 $ ), jádro má ve skutečnosti tvar $ g \ times g \ times d $ , tj. třetí dimenze jádra se rovná třetí dimenzi vstupu, na kterou je aplikována. To je vždy případ, s výjimkou 3d konvolucí, ale nyní mluvíme o typických 2v konvolucích! Další informace najdete v této odpovědi .

Takže v případě, že chceme použít $ 1 \ krát 1 $ konvoluce na vstup tvaru $ 388 \ krát 388 \ krát 64 $ , kde $ 64 $ je hloubka vstupu, pak skutečná $ 1 \ krát 1 $ jádra, která budeme muset použít, mají tvar $ 1 \ krát 1 \ krát 64 $ (jak jsem řekl výše pro U-net). Způsob, jakým snížíte hloubku vstupu pomocí $ 1 \ krát 1 $ , je určen počtem $ 1 \ krát 1 $ jádra, která chcete použít. Je to přesně to samé jako u jakékoli operace 2D konvoluce s různými jádry (např. $ 3 \ times 3 $ ).

V případě U-net, prostorové rozměry vstupu jsou zmenšeny stejným způsobem, jako jsou zmenšeny prostorové rozměry jakéhokoli vstupu do CNN (tj. 2D konvoluce následovaná operacemi převzorkování). Hlavní rozdíl (kromě nepoužívání plně propojených vrstev) mezi sítí U a jinými CNN spočívá v tom, že síť U provádí operace převzorkování, takže ji lze zobrazit jako kodér (levá část) a následně dekodér (pravá část) .

Komentáře

  • Děkuji za vaši podrobnou odpověď, opravdu si toho vážím!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *