PV021 Vícevrstvá neuronová síť pro rozeznávání mikroteček Matúš Goljer, Maroš Kucbel, Michal Novotný, Karel Štěpka 2011
Úkol sítě Rozeznávat obrázky obsahující fluorescenční mikrotečky od obrázků s nespecifickým pozadím Síť by pokud možno měla pracovat i v případě, že jsou obrázky degradovány šumem
Zpracovávaná data 3D obrázky mikroteček nebo nespecifického pozadí (buď ploché, nebo náhodný gradient) Testovací data jsou generována simulátorem mikroskopických snímků (využívá údaje naměřené na reálném mikroskopu) K dispozici jsou data v několika stupních kvality (úroveň šumu/kontrast)
Předzpracování a organizace dat Navzorkováno do rozměru 10 10 20 voxelů (menší rozlišení, než jakého lze reálně dosáhnout; bylo zvoleno s ohledem na velikost sítě) Normalizace intenzit do rozsahu 1.. 1 Předzpracovaná data jsou uložena v adresářích /data0.. /data9 (vyšší číslo značí vyšší úroveň šumu) Adresáře jsou dále rozděleny na /pos, /neg (trénovací data) a /test/pos, /test/neg (testovací data)
Zpracovávaná data ukázka Nahoře pozitivní příklady, dole negativní Zleva doprava rostoucí úroveň šumu
Použitý model Vícevrstvá neuronová síť se zpětnou propagací Použita obecná implementace Konkrétní parametry zvolené pro tuto úlohu: dvouvrstvá síť počty neuronů 2000, 7, 1 aktivační funkce: na vstupních neuronech identita, ve zbytku sítě tanh vstupní neurony odpovídají jednotlivým voxelům vstupu ( 1.. 1), výstupní neuron reprezentuje přítomnost/nepřítomnost tečky ( 1 / 1)
Vývojové nástroje C++ Standard Template Library (odladěno pro platformy Linux a Windows)
Implementace 1 Základní třídy: Neuron, Net, DataItem Neuron Net uchovává informace o vahách a své aktivační funkci (a dočasné delta údaje při zpětné propagaci) je zodpovědný za dopřednou propagaci své hodnoty organizuje neurony do vrstev podporuje ukládání/načítání konfigurace sítě zodpovědná za spouštění dopředné a spouštění a organizaci zpětné propagace
Implementace 2 DataItem třída zodpovědná za načítání dat a jejich zprostředkování síti obecně reprezentuje libovolný vektor dat použitá specializace Image slouží k popisu 3D obrázků zvoleného typu (v tomto případě float) délka vektoru (v tomto případě počet voxelů jednotlivých obrázků) musí odpovídat počtu vstupních neuronů sítě
Spouštění programu parametry 1 Parametry pro spouštění z příkazového řádku: -c, --createnet <x 0 >:<func 0 >,<x 1 >:<func 1 >,<x 2 >:<func 2 >,... Vytvoří novou síť s <x i > neurony v i-té vrstvě. Neuronům v dané vrstvě je přiřazena aktivační funkce s názvem <func i >. Pro nultou vrstvu by měla být specifikována identická akt. funkce ( id ). V současné verzi jsou implementované funkce id, tanh. Vzhledem k aplikaci je očekáván právě 1 výstupní neuron. -l, --loadnet <file_name> Nahraje síť ze souboru <file_name>. Parametry -c, -l se navzájem vylučují. -s, --savenet <file_name> Po skončení uloží síť do souboru <file_name>.
Spouštění programu parametry 2 -t, --train <dir_name> Natrénuje síť na datech v adresáři <dir_name>. Adresář musí obsahovat dva podadresáře: /pos (s pozitivními obrázky) a /neg (s negativními). Trénink je možné ovlivnit parametry -i, -x -i, --iters <x> Udává počet tréninkových průchodů vstupními daty. Integer, přednastavená hodnota je 1. -x, --rate <x> Rychlost učení, dále konstantní po celou dobu tréninku. Float, přednastavená hodnota je 0,05.
Spouštění programu parametry 3 -r, --run <dir_name> Spustí síť na obrázcích v adresáři <dir_name> a vypíše výsledky na standardní výstup. Výsledky jsou řádky ve tvaru: <file_name>: <net_output> -h, --help Vytiskne nápovědu.
Spouštění programu příklady./main -c 2000:id,7:tanh,1:tanh -t traindata -i 100 -x 0.1 -s bar.net Vytvoří síť s 2000, 7 a 1 neurony, natrénuje ji ve 100 iteracích s rychlostí učení 0,1 na datech z adresáře traindata a výslednou konfiguraci sítě uloží do souboru bar.net./main -l bar.net -r traindata Načte síť ze souboru bar.net a spustí ji na data v adresáři traindata../main -c 2000:id,7:tanh,1:tanh -t traindata -i 10 -x 0.01 -s bar.net -r rundata/pos Vytvoří, natrénuje, uloží a spustí síť. Pomocí skriptů pak lze vytvářet komplikovanější chování, např. učení až do dosažení optimální úspěšnosti
Vliv počtu skrytých neuronů a rychlosti Rychlost učení Počet skrytých neuronů F1 skóre = 2 (precision recall) / (precision + recall)
Vliv počtu skrytých neuronů a rychlosti (raw data jsou k dispozici v souboru /raw/results.txt, popis jejich struktury v raw/_readme.txt )