Technológia

Úvod do konvolučných neurónových sietí

Úvodný obrázok zdroj: PIRO4D, Pixabay

Konvolučná neurónová sieť predstavuje veľmi efektívny nástroj počítačového videnia v oblastiach ako rozpoznávanie obrazu a klasifikácia. Ich vznik sa datuje do roku 1980, do popredia sa však dostali až v roku 2012. V tomto roku sa metóda pod názvom Alexnet zúčastnila každoročne konanej súťaže Imagenet Visual Recognition Challengekde súťažili algortimy pre klasifikáciu obrazu. Metóda Alexnet, založená na konvolučnej sieti, súťaž vyhrala s obrovským náskokom, keď presnosťou predbehla druhú najlepšiu metódu o takmer 11%. Odvtedy sa konvolučné siete stali masovo používaným algoritmom. Dnes ich nájdeme v systémoch na rozpoznávanie tváre, pri spracovaní textu, v robotike či v autonómnych vozidlách.

Vstupom do konvolučnej siete môže byť obraz, zvuk alebo aj text. Používajú sa v nich spravidla nasledovné operácie:

  1. Konvolúcia
  2. Nelineárna aktivačná funkcia (napríklad ReLU)
  3. Pooling
  4. Klasifikácia

Tieto operácie sú základným stavebným kameňom takmer každej konvolučnej siete a vykonávajú sa nasledovne. Riešme úlohu klasifikácie, kde chceme určiť aký objekt sa nachádza na obrázku. V prípade názornej ukážky konvolučnej siete na nasledujúcom obrázku sa najskôr niekoľkokrát zopakujú operácie 1. až 3., aby zo vstupného obrázku extrahovali potrebné obrazové príznaky. Tie sa následne spoja do jednej spoločnej príznakovej mapy v rámci plne prepojených vrstiev a vykoná sa záverečná operácia, ktorou je klasifikácia. Ukážka sledu operácií je znázornená na nasledujúcom obrázku:

klasifikacia;konvolucne neuronove siete

Zdroj: vlastné

Konvolúcia

Vstupom je tu obrázok o rozmeroch výška x šírka x hĺbka, kde pre obyčajný farebný RGB obrázok je podľa počtu farebných kanálov hĺbka 3. Prvou vrstvou je vstupná vrstva, ktorá môže, ale nemusí, mať pevne určené rozmery. Potom nasleduje niekoľko po sebe idúcich konvolučných vrstiev.

Vrstvy sa skladajú z množiny filtrov, ktoré sa používajú na extrahovanie lokálnych obrazových príznakov prostredníctvom operácie konvolúcia. Nie je to nič iné len sčítanie hodnôt niekoľkých pixelov (podľa veľkosti filtra) vynásobených hodnotami filtra. Vypočíta sa tak nová hodnota stredového pixelu na základe jeho okolia použitím nasledujúceho vzťahu:

hodnota stredoveho pixelu; konvolúcia; matica

Zdroj: vlastné

V prvej matici zľava sú hodnoty pixelov vstupného obrázka, v druhej matici hodnoty filtra a do poslednej sa uložia výstupné hodnoty operácie. Možno vám napadlo, čo spraviť s pixelmi na okrajoch obrázka, kde pre konvolúciu chýbajú krajné hodnoty. To sa dá vyriešiť jednoducho, napríklad skopírovaním, resp. duplikovaním krajných hodnôt (padding) alebo doplnenie nulami (zero-padding) na okraje obrázka. Keď potom aplikujeme konvolúciu na všetky pixely obrázku, výsledok je na nasledovný:

obrazok po konvolucii; výstup

Zdroj: vlastné

V rámci jednej konvolučnej vrstvy je aplikovaných niekoľko filtrov. Platí, že koľko filtrov, toľko výstupných príznakových máp. Práve hodnoty týchto filtrov sú parametre, ktoré sa sieť musí naučiť pri tréningu. 

Nelineárna aktivačná funkcia a Pooling

Na každú vytvorenú mapu príznakov je následne aplikovaná nelineárna funkcia, pričom medzi najpoužívanejšie patrí ReLU. Jej predpis je f (x) = max(0, x), čiže len zmení záporné hodnoty na 0 a kladné ponechá bez zmeny. Následne prebehne operácia Pooling, ktorá sa používa na zmenšenie dimenzionality príznakových máp, ale tak, aby sa zachovali najrelevantnejšie získané informácie. Na nasledujúcom obrázku je ukážka tzv. MaxPooling-u:

Max Pooling; operácia

Zdroj: vlastné

Pri operácii Pooling sa mapa príznakov rozdelí na niekoľko pod-okien veľkosti RxR s nulovým prienikom akýchkoľvek 2 okien. Z každého okna sa potom ponechá len jeho maximálna hodnota. Výstupy z jednotlivých okien sa spoja a vytvoria novú zmenšenú príznakovú mapu. Keď toto aplikujeme na všetky mapy, vznikne nová množina príznakových máp, ktorá poputuje ako vstup do ďalšej konvolučnej vrstvy, kde sa celý tento postup zopakuje. Inou technikou na zmenšenie dimenzionality výstupnej mapy je preskakovanie pixelov (stride). Pri konvolúcii používame pri spracovaní veľkej vstupnej mapy posuvné okno o veľkosti filtra. Zníženie veľkosti výstupnej mapy teda môžeme dosiahnuť tak, že posuvné okno po vstupe nebudeme posúvať o jeden, ale o viac pixelov. Posun však môže byť maximálne o veľkosti filtra, aby sme na vstupe nenechali nespracované pixely.

Ako ďalej?

Po niekoľkých konvolučných vrstvách príde na rad malý počet plne prepojených vrstiev. V prvej z nich dôjde k spojeniu výstupných príznakových máp do 1 spoločnej vrstvy. Tu ešte môžu, ale nemusia, nasledovať ďalšie plne prepojené vrstvy na extrakciu globálnych obrazových príznakov. Nakoniec už zostáva len vykonať záverečnú klasifikáciu. Možno to spraviť viacero spôsobmi, jedným z nich je Softmax funkcia. Predstavme si, že navrhnutá sieť vie klasifikovať K tried objektov (auto, motorka, človek, …). Softmax funkcia priradí každej triede pravdepodobnosť, že vstupný obrázok patrí do príslušnej triedy. Súčet všetkých pravdepodobností je rovný 1. Nech K je počet tried, z je výstupný vektor z predposlednej vrstvy vstupujúci do Softmax vrstvy. Potom:

softmax; funkcia; klasifikacia;

Zdroj: vlastné

Každej triede sme takto priradili pravdepodobnosť, že vstupný obrázok patrí do danej triedy. Ako výsledok klasifikácie teda zoberieme triedu s najvyššou pravdepodobnosťou.

Zhrnutie

Presne na takomto pricípe funguje architektúra Alexnet, ktorá “rozbehla” popularitu konvolučných neurónových sietí. Od jej publikovania v roku 2012 však konvolučné siete prešli mnohými vylepšeniami a vznikli desiatky nových architektúr s lepšími výsledkami. Na spomenutej súťaži vyhrala v roku 2012 architektúra Alexnet s chybovosťou na úrovni 16%, čím porazila víťaza predošlého ročníka o celých 10%. Architektúra SeNet ktorá vyhrala súťaž ILSVRC v roku 2017, kedy sa súťaž konala naposledy, dosiahla chybovosť 2,3%, čím prekonala človeka, ktorý dosahuje zhruba 5%.

 

Zdroje:

KARN, Ujjwal: An Intuitive Explanation of Convolutional Neural Networks, 2016, Data Science Blog

KRIZHEVSKY, Alex, SUTSKEVER, Ilya, HINTON, E. Geoffrey: ImageNet Classification with Deep Convolutional Neural Networks, 2012

ALBELWI, Saleh, MAHMOOD, Ausif: A Framework for Designing the Architectures of Deep Convolutional Neural Networks, 2017, MDPI

One thought on “Úvod do konvolučných neurónových sietí

  • Pingback: Autonómne drony pomáhajú hľadať meteority - Mám Dron

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *