Umelá inteligencia v rozpoznávaní obrazu.

15.03.2020 | 17:17 | Žumpa | bedňa

Keď som v minulom zápisku písal, že pokiaľ sa Feedforwardová sieť naučí na mamu zprava, tak ju spozná aj zľava, tak to som klamal.

Musíme jej tak trochu pomôcť, pretože váhy sa vo Feedforwardových sieťach natáčajú podľa toho v ktorej časti obrazu sme objekt videli.

Problém sa dá vyriešiť tak, že si z našich fotiek mamy vyrobíme ďalšie, tým, že ich preklopíme, posunieme, pootočíme, stmavíme, zosvetlíme, deformujeme, zašumíme, rozostríme, zväčšíme, lebo zmenšíme.


Táto technika (data augmentation) celkom dobre funguje napríklad na statických kamerách, kde očakávame objekty z nejakého pohľadu.

Ak chceme naše "počítačové videnie" viac poľudštiť, budeme musieť vytiahnuť z obrázkov vlastnosti predmetov. Keď chceme napríklad rozpoznávať mamu, tak z nej musíme vytiahnuť "mamovitosť".

Toto riešia konvolučné neurónové siete.

Použijeme príklad z Wikipédie https://en.wikipedia.org/wiki/Convolutional_neural_network Tomu štvorčeku na robotovi úplne vľavo sa hovorí kernel ten prebehne celý obrázok a výsledok uloží do mapy vlastností. Spravidla je tých kernelov (filtrov) viacej a každý ťahá z obrázku nejaké vlastnosti. Nejaký kernel sa chytí na anténke, nejaký na očiach a nejaký zas na nohách a rukách, tomuto procesu sa hovorí konvolúcia.

Potom tam máme podvzorkovanie (subsampling) aby sa nám tie dáta sploštili, znova konvolúciu a ďalšie podvzorkovanie. Postupne sa nám dáta splošťujú, ale zas naťahujú do dĺžky. Skoro na konci je naša stará známa plne prepojená sieť (väčšinou od 512 do 4096 neurónov)

Úplne na konci sedí už len pár neurónov. Keď napríklad chceme rozpoznávať desať kategórií, bude tam desať neurónov. Aby sa pri obrázku robota rozsvietil ten s robotom o to sa stará funkcia Softmax.

Vlastnosti ktoré sa ukladajú do nižších vrstiev vyzerajú takto:

Ešte malý príklad z Wikipedie, ako sploštíme Max poolingom dáta z 4x4 na 2x2.
Máme kernel (filter) veľký 2x2 sním zoberieme dáta vľavo hore vyberieme najväčšiu hodnotu a uložíme. Potom skočíme (stride) o dva pixely doprava zas vyberieme najväčšiu hodnotu a ideme ďalej.

Prílohy