Krátký přehled nejlepších článků o klasifikaci obrazu za posledních deset let, abyste se mohli začít učit. Počítačové vidění
Počítačové vidění je předmět, který převádí obrázky a videa do strojověsrozumitelné signály. Pomocí těchto signálů mohou programátoři dále řídit chování stroje na základě tohoto porozumění na vysoké úrovni. Mezi mnoha úlohami počítačového vidění je klasifikace obrazu jednou z nejzákladnějších. Nejenže ji lze využít v mnoha reálných produktech, jako je označování fotografií Google a moderování obsahu umělou inteligencí, ale otevírá také dveře pro spoustu pokročilejších úloh vidění, jako je detekce objektů a porozumění videu. Vzhledem k rychlým změnám v této oblasti od průlomu hlubokého učení je pro začátečníky často příliš náročné se ji naučit. Na rozdíl od typických předmětů softwarového inženýrství neexistuje mnoho skvělých knih o klasifikaci obrazu pomocí DCNN a nejlepším způsobem, jak tomuto oboru porozumět, je četba akademických článků. Ale jaké články číst? Kde začít? V tomto článku vám představím 10 nejlepších článků pro začátečníky, které si můžete přečíst. Díky těmto článkům můžeme vidět, jak se tento obor vyvíjí a jak vědci přišli s novými myšlenkami na základě výsledků předchozího výzkumu. Přesto je pro vás užitečné utřídit si celkový obraz, i když už v této oblasti nějakou dobu pracujete. Začněme tedy.
1998: LeNet
Učení založené na gradientu aplikované na rozpoznávání dokumentů
Zaveden v roce 1998, LeNet položila základ pro budoucí výzkum klasifikace obrazů pomocí konvoluční neuronové sítě. K extrakci rysů a klasifikaci se používá mnoho klasických technik CNN, jako jsou vrstvy sdružování, plně propojené vrstvy, vycpávky a aktivační vrstvy. Se ztrátovou funkcí Mean Square Error a 20 epochami trénování může tato síť dosáhnout 99,05% přesnosti na testovací sadě MNIST. I po 20 letech se mnoho nejmodernějších klasifikačních sítí obecně stále řídí tímto vzorem.
2012: AlexNet
Klasifikace obrazové sítě pomocí hlubokých konvolučních neuronových sítí
Přestože LeNet dosáhl skvělého výsledku a ukázal potenciál CNN, vývoj v této oblasti po desetiletí stagnoval kvůli omezenému výpočetnímu výkonu a množství dat. Vypadalo to, že CNN dokáže řešit pouze některé snadné úlohy, jako je rozpoznávání číslic, ale pro složitější rysy, jako jsou obličeje a objekty, byl preferovanějším přístupem HarrCascade nebo extraktor rysů SIFT s klasifikátorem SVM.
V roce 2012 však v soutěži ImageNet Large Scale Visual Recognition Challenge Alex Krizhevsky navrhl pro tuto výzvu řešení založené na CNN a drasticky zvýšil přesnost testovací sady ImageNet top-5 ze 73,8 % na 84,7 %. Jejich přístup zdědil myšlenku vícevrstvé sítě CNN od sítě LeNet, ale značně zvětšil velikost sítě CNN. Jak je vidět z výše uvedeného diagramu, vstup má nyní rozměry 224×224 oproti 32×32 u sítě LeNet, také mnohá konvoluční jádra mají 192 kanálů oproti 6 u sítě LeNet. Přestože se konstrukce příliš nezměnila, se stokrát větším počtem parametrů se stokrát zlepšila i schopnost sítě zachytit a reprezentovat složité rysy. K trénování tak velkého modelu Alex použil dva grafické procesory GTX 580 s 3 GB RAM pro každý z nich, čímž se stal průkopníkem trendu trénování na GPU. Také použití nelinearity ReLU pomohlo snížit náklady na výpočet.
Kromě toho, že přinesl mnohem více parametrů pro síť, zkoumal také problém s přiléhavostí, který přináší větší síť, pomocí vrstvy Dropout. Jeho metoda Local Response Normalization si později nezískala příliš velkou popularitu, ale inspirovala další důležité normalizační techniky, jako je BatchNorm, které bojují s problémem nasycení gradientu. Shrnuto a podtrženo, síť AlexNet de facto definovala rámec klasifikační sítě na dalších 10 let: kombinace Konvoluce, nelineární aktivace ReLu, MaxPoolingu a Husté vrstvy.
2014: VGG
Velmi hluboké konvoluční sítě pro velko-Scale Image Recognition
S tak velkým úspěchem použití CNN pro vizuální rozpoznávání, celá výzkumná komunita vybuchla a všichni začali zkoumat, proč tato neuronová síť tak dobře funguje. Například v článku „Visualizing and Understanding Convolutional Networks“ (Vizualizace a porozumění konvolučním sítím) z roku 2013 se Matthew Zeiler zabýval tím, jak CNN vybírá rysy a vizualizuje mezilehlé reprezentace. A najednou si všichni začali uvědomovat, že CNN je budoucností počítačového vidění od roku 2014. Ze všech těchto bezprostředních následovníků nejvíce upoutala síť VGG od společnosti Visual Geometry Group. Získala pozoruhodný výsledek 93,2% přesnosti top-5 a 76,3% přesnosti top-1 na testovací sadě ImageNet.
Po vzoru sítě AlexNet má síť VGG dvě hlavní aktualizace: VGG používá nejen širší síť jako AlexNet, ale také hlubší. VGG-19 má 19 konvolučních vrstev ve srovnání s 5 vrstvami sítě AlexNet. 2) VGG také ukázala, že několik malých konvolučních filtrů 3×3 může nahradit jeden filtr 7×7 nebo dokonce 11×11 z AlexNet, dosáhnout lepšího výkonu a zároveň snížit výpočetní náklady. Díky této elegantní konstrukci se VGG stala také páteřní sítí mnoha průkopnických sítí v dalších úlohách počítačového vidění, jako je FCN pro sémantickou segmentaci a Faster R-CNN pro detekci objektů.
S hlubší sítí se mizení gradientu z vícevrstvé zpětné propagace stává větším problémem. Aby se s ním VGG vypořádala, diskutovala také důležitost předtrénování a inicializace vah. Tento problém omezuje výzkumníky, aby neustále přidávali další vrstvy, jinak bude síť opravdu těžko konvergovat. Lepšího řešení se však dočkáme až za dva roky.
2014: GoogLeNet
Going Deeper with Convolutions
VGG má dobře vypadající a snadno pochopitelnou strukturu, ale jeho výkon není nejlepší ze všech finalistů soutěže ImageNet 2014. Finálovou cenu získal GoogLeNet alias InceptionV1. Stejně jako u VGG je jedním z hlavních přínosů sítě GoogLeNet posunutí hranice hloubky sítě se strukturou 22 vrstev. Tím se opět ukázalo, že jít do hloubky a do šířky je skutečně správný směr ke zlepšení přesnosti.
Na rozdíl od VGG se GoogLeNet pokusil řešit problémy s výpočtem a zmenšováním gradientu přímo, místo aby navrhl řešení pomocí lepšího předtrénovaného schématu a inicializace vah.
Nejprve zkoumal myšlenku asymetrického návrhu sítě pomocí modulu nazvaného Inception (viz schéma výše). V ideálním případě by chtěli sledovat řídké konvoluce nebo husté vrstvy pro zlepšení účinnosti funkcí, ale moderní návrh hardwaru nebyl pro tento případ přizpůsoben. Domnívali se tedy, že řídkost na úrovni topologie sítě by také mohla pomoci fúzi funkcí při využití stávajících možností hardwaru.
Druhé, útočí na problém vysokých výpočetních nákladů tím, že si vypůjčili myšlenku z článku nazvaného „Síť v síti“. V podstatě se zavádí konvoluční filtr 1×1, aby se zmenšily rozměry rysů předtím, než se projde těžkou výpočetní operací, jako je konvoluční jádro 5×5. Tato struktura se později nazývá „Bottleneck“ a široce se používá v mnoha následujících sítích. Podobně jako „Síť v síti“ použila také vrstvu průměrného sdružování, která nahradila konečnou plně propojenou vrstvu, aby dále snížila náklady.
Zatřetí, aby pomohla gradientům proudit do hlubších vrstev, použila síť GoogLeNet také dohled na některých výstupech mezivrstvy nebo pomocný výstup. Tato konstrukce není později v síti pro klasifikaci obrazu kvůli složitosti zcela populární, ale stává se populárnější v jiných oblastech počítačového vidění, například v síti přesýpacích hodin při odhadu polohy.
V návaznosti na to napsal tento tým společnosti Google další dokumenty pro tuto sérii Inception. „Dávková normalizace: InceptionV2: „Accelerating Deep Network Training by Reducing Internal Covariate Shift“. „Rethinking the Inception Architecture for Computer Vision“ z roku 2015 znamená InceptionV3. A „Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning“ z roku 2015 znamená InceptionV4. Každý článek přidal další vylepšení oproti původní síti Inception a dosáhl lepšího výsledku.
Síť Inception pomohla výzkumníkům dosáhnout nadlidské přesnosti na datové sadě ImageNet. Jako statistická metoda učení je však CNN velmi omezena statistickou povahou konkrétní trénovací sady dat. Proto k dosažení lepší přesnosti obvykle potřebujeme předem vypočítat průměr a směrodatnou odchylku celé datové sady a použít je k normalizaci našich vstupů jako první, abychom zajistili, že většina vstupů vrstev v síti si bude blízká, což se projeví v lepší reaktivitě aktivace. Tento přibližný přístup je velmi těžkopádný a někdy pro novou strukturu sítě nebo nový soubor dat vůbec nefunguje, takže model hlubokého učení je stále považován za obtížně trénovatelný. Aby tento problém vyřešili, rozhodli se Sergej Ioffe a Chritian Szegedy, člověk, který vytvořil GoogLeNet, vymyslet něco chytřejšího, co se nazývá dávková normalizace.