Rozpoznávání objektů pomocí neuronových sítí

Podobné dokumenty
Rosenblattův perceptron

Umělé neuronové sítě

ANALÝZA A KLASIFIKACE BIOMEDICÍNSKÝCH DAT. Institut biostatistiky a analýz

5. Umělé neuronové sítě. neuronové sítě. Umělé Ondřej Valenta, Václav Matoušek. 5-1 Umělá inteligence a rozpoznávání, LS 2015

5. Umělé neuronové sítě. Neuronové sítě

Algoritmy a struktury neuropočítačů ASN P4. Vícevrstvé sítě dopředné a Elmanovy MLNN s učením zpětného šíření chyby

Fiala P., Karhan P., Ptáček J. Oddělení lékařské fyziky a radiační ochrany Fakultní nemocnice Olomouc

Neuronové sítě v DPZ

Neuronové sítě Ladislav Horký Karel Břinda

Algoritmy a struktury neuropočítačů ASN - P11

Architektura - struktura sítě výkonných prvků, jejich vzájemné propojení.

Vytěžování znalostí z dat

Využití neuronové sítě pro identifikaci realného systému

Trénování sítě pomocí učení s učitelem

Asociativní sítě (paměti) Asociace známého vstupního vzoru s daným výstupním vzorem. Typická funkce 1 / 44

Státnice odborné č. 20

Úloha - rozpoznávání číslic

Algoritmy a struktury neuropočítačů ASN P3

Algoritmy a struktury neuropočítačů ASN - P10. Aplikace UNS v biomedicíně

NG C Implementace plně rekurentní

3. Vícevrstvé dopředné sítě

Neuronové časové řady (ANN-TS)

U Úvod do modelování a simulace systémů

Rozpoznávání písmen. Jiří Šejnoha Rudolf Kadlec (c) 2005

Úvod do optimalizace, metody hladké optimalizace

Moderní systémy pro získávání znalostí z informací a dat

Globální matice konstrukce

Už bylo: Učení bez učitele (unsupervised learning) Kompetitivní modely

Algoritmy a struktury neuropočítačů ASN P9 SVM Support vector machines Support vector networks (Algoritmus podpůrných vektorů)

INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Příklady použití tenkých vrstev Jaromír Křepelka

Neuropočítače. podnět. vnímání (senzory)

Jasové transformace. Karel Horák. Rozvrh přednášky:

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Kybernetika a umělá inteligence, cvičení 10/11

Samoučící se neuronová síť - SOM, Kohonenovy mapy

Modelování a simulace Lukáš Otte

Lineární klasifikátory

PV021: Neuronové sítě. Tomáš Brázdil

Časová a prostorová složitost algoritmů

5. Lokální, vázané a globální extrémy

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA STROJNÍHO INŽENÝRSTVÍ

Emergence chování robotických agentů: neuroevoluce

Pro tvorbu samostatně spustitelných aplikací je k dispozici Matlab library.

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

7. Rozdělení pravděpodobnosti ve statistice

Automatická detekce anomálií při geofyzikálním průzkumu. Lenka Kosková Třísková NTI TUL Doktorandský seminář,

Semestrální projekt. Vyhodnocení přesnosti sebelokalizace VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií

Neuronové sítě AIL002. Iveta Mrázová 1 František Mráz 2. Neuronové sítě. 1 Katedra softwarového inženýrství. 2 Kabinet software a výuky informatiky

13 Barvy a úpravy rastrového

Ambasadoři přírodovědných a technických oborů. Ing. Michal Řepka Březen - duben 2013

SIGNÁLY A LINEÁRNÍ SYSTÉMY

Zpracování digitalizovaného obrazu (ZDO) - Segmentace

Automatizace je proces při němž je řídicí funkce člověka nahrazována činností

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Rozvoj tepla v betonových konstrukcích

Aplikovaná numerická matematika

Algoritmy a struktury neuropočítačů ASN - P1

1 Modelování systémů 2. řádu

2. RBF neuronové sítě

1 Tyto materiály byly vytvořeny za pomoci grantu FRVŠ číslo 1145/2004.

Nastavení parametrů PID a PSD regulátorů

OPTIMALIZACE. (přehled metod)

Klasifikace předmětů a jevů

1. Vlastnosti diskretních a číslicových metod zpracování signálů... 15

Numerické metody a programování. Lekce 8

Regresní analýza 1. Regresní analýza

Úvod do modelování a simulace. Ing. Michal Dorda, Ph.D.

AVDAT Nelineární regresní model

1. Soutěživé sítě. 1.1 Základní informace. 1.2 Výstupy z učení. 1.3 Jednoduchá soutěživá síť MAXNET

Přednáška 13 Redukce dimenzionality

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

K možnostem krátkodobé předpovědi úrovně znečištění ovzduší statistickými metodami. Josef Keder

II. Úlohy na vložené cykly a podprogramy

CW01 - Teorie měření a regulace

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

ROZ1 CVIČENÍ VI. Geometrická registrace (matching) obrazů

Analýza a zpracování digitálního obrazu

Operace s obrazem II

Principy počítačů I Netradiční stroje

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Algoritmy a struktury neuropočítačů ASN - P2. Topologie neuronových sítí, principy učení Samoorganizující se neuronové sítě Kohonenovy mapy

Čas (s) Model časového průběhu sorpce vyplývá z 2. Fickova zákona a je popsán následující rovnicí

GIS Geografické informační systémy

SYLABUS 9. PŘEDNÁŠKY Z INŢENÝRSKÉ GEODÉZIE

Profilová část maturitní zkoušky 2013/2014

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Projekční algoritmus. Urychlení evolučních algoritmů pomocí regresních stromů a jejich zobecnění. Jan Klíma

Text úlohy. Která barva nepatří do základních barev prostoru RGB? Vyberte jednu z nabízených možností: a. Černá b. Červená c. Modrá d.

DOKUMENTACE Identifikace pomocí otisků prstů

Triangulace. Význam triangulace. trojúhelník je základní grafický element aproximace ploch předzpracování pro jiné algoritmy. příklad triangulace

Nelineární problémy a MKP

Úvod do zpracování signálů

TSO NEBO A INVARIANTNÍ ROZPOZNÁVACÍ SYSTÉMY

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Odpružená sedačka. Petr Školník, Michal Menkina. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

Statistika pro geografy

základní vlastnosti, používané struktury návrhové prostředky MATLAB problém kvantování koeficientů

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

Transkript:

MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY DIPLOMOVÁ PRÁCE Rozpoznávání objektů pomocí neuronových sítí Bc. Petr Šťastný Brno, 2014

Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj.... Poděkování Rád bych poděkoval panu prof. RNDr. Jiřímu Hřebíčkovi, CSc. za podporu při řešení mé diplomové práce.

Shrnutí Cílem diplomové práce bylo provedení analýzy vhodných typů neuronových sítí pro rozpoznávání objektů u aplikací, které probíhají v reálném čase. Práce obsahuje implementaci vybraných typů umělých neuronových sítí včetně návrhu a implementace metod pro přípravu vstupních dat v prostředí MATLAB s využitím knihovny Neural Network toolbox. Výsledkem práce je zhodnocení výsledků provedených simulačních experimentů použitých typů neuronových sítí s vlastními navrženými objekty. Klíčová slova Objekt, neuronová síť, prahování, příznakový vektor, binární obraz, rozpoznání objektu.

Obsah 1 Úvod...2 2 Zpracování obrazu...3 2.1 Úvodní pozmánky...3 2.2 Segmentace obrazu...4 2.2.1 Segmentace prahováním...4 3 Umělé neuronové sítě...8 3.1 Základy umělých neuronových sítí... 8 3.2 Vrstvené perceptronové sítě...11 3.2.1 Algoritmus Back-propagation...12 3.3 Hopfieldova síť...15 3.4 Kohonenova síť...17 4 Praktická část...22 4.1 Implementační prosředí...22 4.2 Testovací objekty...23 4.3 Tvorba vstupních dat...24 4.3.1 Tvorba dat pro MLP síť a Kohonenovu síť...24 4.3.2 Tvorba dat pro Hopfieldovu síť...26 4.4 Příprava trénovacích dat...27 4.5 Učení neuronových sítí...29 4.6 Rozpoznání objektů...32 4.7 Zhodnocení výsledků...35 5 Závěr...38 Literatura...39 Přílohy...40 Elektronická příloha...40 Příloha A...41 Příloha B...43

Příloha C...45 Příloha D...47 Příloha E...49 Příloha F...51 Příloha G...53 Příloha H...55

1 Úvod Současná doba je charakteristická snahou o automatizování složitých úloh, které jsou náročné především na rozpoznávání nejrůznějších objektů. Dynamický vývoj v oblasti zvyšování výpočetního výkonu počítačů a vývoj senzorických systémů klade zvýšené nároky na tzv. real time aplikace, tj. aplikace probíhající v reálném čase, kde jedním z klíčových kritérií je čas. U těchto aplikací jsou také požadovány efektivní a rychlé algoritmy pro klasifikaci objektů, kde se stále častěji prosazují metody umělé inteligence, kam patří i umělé neuronové sítě. Cílem diplomové práce byla analýza vhodných typů umělých neuronových sítí pro rozpoznávání objektů v reálném čase. Pro provedení simulačních experimentů v prostředí MATLAB byla použita vrstvená perceptronová neuronová síť, Hopfieldova neuronová síť a Kohonenova neuronová síť. Tyto sítě jsou vhodné pro řešení úloh klasifikace (rozpoznávání). Úvod práce je věnován stručnému seznámení s problematikou zpracování obrazu. Následující kapitoly obsahují charakteristiku použitých neuronových sítí. Jedná se o vrstvenou perceptronovou síť pro spojitý vstup s typem učení s učitelem, Kohonenovu neuronovou síť pro spojitý vstup s typem učení bez učitele a Hopfieldovu neuronovou síť pro binární vstup. Úvodní kapitoly realizační části práce se zabývají stručným seznámením s implementačním prostředím včetně ukázky trénování použité vrstvené perceptronové sítě, návrhem testovacích objektů a popisem realizovaných algoritmů pro tvorbu spojitých a binárních vstupů. Další kapitoly zahrnují přípravu trénovacích dat a proces učení neuronových sítí. Ve finální části práce jsou uvedeny ukázky rozpoznání objektů jednotlivými neuronovými sítěmi a zhodnocení dosažených výsledků provedených simulačních experimentů v prostředí MATLAB. 2

2 Úvod do zpracování obrazu 2.1 Úvodní poznámky Zpracování obrazu (image processing) rozpoznávaného objektu se skládá z řady kroků. Nejdříve je potřeba provést snímání a digitalizaci obrazu a následně pak použít pro vylepšení obrazu metody předzpracování obrazu (image preprocessing), které jsou zejména zaměřeny na převod na stupně šedi, nastavení jasu a kontrastu, na ekvalizaci histogramu, na ostření obrazu a na nejrůznější metody filtrace [1]. Dalším důležitým krokem je použití segmentačních metod pro odlišení rozpoznávaného objektu od pozadí. Je to především segmentace prahováním, algoritmy barvení obrazu, metody pro detekci a spojování hran a různé algoritmy pro vyplňování objektů [2, 3]. Následující fází zpracování obrazu je popis objektu. K nejznámějším metodám popisu objektu patří momentová metoda, Fourierovy deskriptory a také řetězové kódy, které lze použít i pro tzv. strukturální popis objektů [2]. Finální fází procesu zpracování obrazu je klasifikace (rozpoznání) objektu. Úkolem klasifikace je zařazení objektů nalezených v obraze do skupiny předem známých tříd. Metody klasifikace objektů se dělí do dvou základních skupin, které souvisí se způsobem popisu objektů. Jedná se o příznakovou klasifikaci a strukturální klasifikaci [1, 3]. Vzhledem k charakteru zadaného projektu zaměřeného na rozpoznávání objektů v reálném čase v prostředí MATLAB nelze z důvodu časové náročnosti metody předzpracování obrazu využít. Z metod segmentace obrazu byla použita metoda prahování obrazu, která je nejrychlejší segmentační metodou, a proto je vhodná pro použití u metod rozpoznávání objektů v reálném čase. Pro potřeby klasifikace (rozpoznávání) objektů pomocí neuronových sítí byly implementovány dva algoritmy pro popis objektu, které generují potřebné číselné vektory. Jedná se o algoritmus popisu objektu pomocí ramen objektu, který generuje tzv. příznakový vektor objektu (viz kap. 4.3.1) a algoritmus popisu objektu pomocí binárního obrazu objektu, který generuje číselný vektor objektu s hodnotami 1 a -1 (viz kap. 4.3.2). 3

2.2 Segmentace obrazu Pod pojmem segmentace obrazu se obvykle rozumí takový soubor procesů, kdy dochází k analýze obsahu zpracovávaných dat obrazu. Jedním z nejdůležitějších faktorů pro správnou segmentaci je také charakter vstupního obrazu [4]. Úkolem segmentace je rozdělení obrazu na části, které mají nějakou souvislost s realitou. Pro tuto množinu oblastí je nezbytná jejich vzájemná disjunktnost. Podle míry shody mezi nalezenými segmenty a skutečnými objekty se segmentace dělí na kompletní a částečnou. U částečné segmentace je míra shody menší než u segmentace kompletní [5]. U kompletní segmentace je nutné využít vyšší úroveň zpracování a dostatečné množství znalostí o řešeném problému. Můžeme však nalézt i úlohy, které se obejdou bez nutnosti použití této vyšší úrovně. S výhodou se pak používá nižší úroveň zpracování. Příkladem pro použití této nižší úrovně může být situace, kdy jsou zkoumané objekty na pozadí s konstantním jasem [3]. Pokud použijeme segmentaci částečnou, dostaneme obraz rozdělený na několik samostatných částí. K hlavním výhodám částečné segmentace patří schopnost zpracovat i složité scény. Výsledkem je pak konečný soubor homogenních oblastí s určenými vlastnostmi barvy, jasu apod. Takto vzniklé oblasti se mohou vzájemně překrývat. Nevýhodou částečné segmentace je nutnost použití dalších postupů pro získaní relevantních výsledků. Výhodou částečné segmentace je rychlé snížení objemu zpracovávaných dat [2]. Segmentaci obrazu lze rozdělit do tří základních metod podle použitých vlastností. Do první skupiny patří metody založené na globální znalosti obrazu nebo jeho částí. Tyto metody jsou reprezentované pomocí histogramu. Ve druhé skupině jsou algoritmy založené na určování hranic mezi oblastmi. Třetí skupina obsahuje algoritmy, které tyto oblasti vytvářejí [4]. 2.2.1 Segmentace prahováním Segmentace prahováním patří k nejstarším známým postupům. Základní princip této metody vychází ze skutečnosti, že objekty v obraze lze charakterizovat pomocí pohltivosti nebo odrazivosti jejich povrchu. Dá se proto využít určité jasové konstanty, tzv. prahu a oddělit tak objekty a pozadí. K hlavním výhodám této metody patří malé výpočetní a hardwarové nároky a zejména možnost zpracování obrazu v reálném čase. Segmentace prahováním patří mezi nejčastěji používané metody [2]. 4

Prahování je dáno transformací vstupního obrazu f obrazového bodu (i,j) na segmentovaný výstupní binární obraz g podle vztahů: g i, j = 1 pro f i, j T (2.1) g i, j = 0 pro f i, j T (2.2) kde T je předem určená konstanta (práh), funkce g(i,j) = 1 platí pro obrazové elementy patřící po segmentaci k objektům a g(i,j) = 0 pro elementy pozadí (nebo naopak). Správná volba prahu má klíčový význam pro úspěšný výsledek. Hodnotu prahu lze volit automaticky nebo je možné ji uživatelsky nastavit [4]. Na obr. 2.1, obr. 2.2 a obr. 2.3 je ukázka správného, nízkého a vysokého nastavení prahu. Obr. 2.1 Správný práh Obr. 2.2 Nízký práh Obr. 2.3 Vysoký práh Algoritmus pro prahování je založen na postupném testování každého obrazového elementu (i,j) obrazu f. Segmentovaný obrazový element g(i,j) výstupního obrazu náleží objektu pokud platí, že f(i,j) T, jinak je součástí pozadí (lze nastavit i opačně): 5

prah:= T; // hodnota prahu for x := 0 to sizex do begin for y := 0 to sizey do begin c := getpixel (hn1,x,y); // ziskani barvy r := (c and $0000FF); g := (c and $00FF00) shr 8; // podil RGB slozek b := (c and $FF0000) shr 16; svetlost := round ( r*rpodil + g*gpodil + b*bpodil ); if svetlost > prah then begin // prevod na binarni obraz obraz [x,y] := 0; // bila = 0 end else begin obraz [x,y] := 1; // cerna = 1 end; Charakter vstupního obrazu nemusí být vždy vhodný pro použití jedné prahové konstanty pro celý obraz. V takových případech je nutné využít více prahových konstant. V případě použití globálního prahu na celý obraz je práh určen jako T=T(f), zatímco v případě lokální varianty se celkový obraz rozdělí na několik nezávislých částí obrazu, ze kterých je postupně určena vhodná hodnota prahu T=T(f, fc). Každá z nezávislých částí obrazu je tedy prahována lokální prahovou konstantou [5]. Vedle metod pro určování prahu s nezbytnou přítomností člověka existují také metody pro automatickou detekci prahu. Tento typ metod je použitelný pouze za určitých okolností. Nejjednodušší je situace v případě, kdy jsou známé paramentry, které musí obraz po segmentaci splňovat. Práh se pak určí tak, aby byly požadované parametry splněny. Mezi metody řešící naznačený přístup patří procentní prahování nebo také metody založené na analýze histogramu obrazu [4]. Metoda procentního prahování je založena na apriorní znalosti o tom, kolik procent plochy obrazu pokrývají objekty, například průměrné pokrytí plochy stránky textem. Práh potom nastavíme tak, aby právě známé procento obrazových bodů mělo barvu objektů a zbytek pak barvu pozadí. V praxi však apriorní znalost procentuálního zastoupení není obvykle k dispozici, ale známe jinou veličinu, např. průměrnou šířku čar znaků. Práh T je potom možné volit tak, aby šířka čar v segmentovaném obraze odpovídala apriorní znalosti. 6

Metody prahování pomocí histogramu jsou založeny na analýze tvaru histogramu obrazu. Jsou-li v obraze objekty přibližně téhož jasu odlišné od pozadí, je histogram jasu dvouvrcholový (bimodální). Jeden vrchol odpovídá četnosti obrazových elementů pozadí, druhý četnosti obrazových elementů objektů viz obr.2.4. Hodnota prahu Obr. 2.4 Bimodální histogram s naznačeným prahem V ideálním případě je histogram dvouvrcholový a to tehdy, jsou-li v obraze zastoupeny objekty téhož jasu odlišné od pozadí. Výsledný práh by měl splňovat požadavek na co nejmenší segmentační chyby, a proto se hodnota prahu určuje jako hodnota jasu s nejmenší četnosti ležící mezi vrcholy. Existují také histogramy s více vrcholy, kde je možné určit více hodnot prahu. V takových případech již není jednoduché určit správnou hodnotu prahu [4]. 7

3 Umělé neuronové sítě 3.1 Základy umělých neuronových sítí Umělá neuronová síť představuje síť mnoha navzájem propojených jednoduchých procesorů. Graf propojení je obvykle označován jako topologie sítě. Procesory se pak nazývají neurony, neboť zjednodušeně modelují skutečné neurony v lidské centrální nervové soustavě. Základem matematického modelu umělé neuronové sítě je formální neuron označovaný jako perceptron. Perceptron stejně jako biologický neuron má vstupy (v biologii nazývané dendrity). Struktura perceptronu, znázorněna na obr. 3.1, obsahuje n obecně reálných vstupů x1, x2,..., xn [6, 7]. Obr. 3.1 Model perceptronu [6] Vstupy jsou ohodnoceny odpovídajícími obecně reálnými tzv. synaptickými váhami w1, w2,..., wn, které určují propustnost vstupů. Nelineární nárůst výstupní hodnoty y při dosažení prahové hodnoty potenciálu h je dán aktivační (nebo také přenosovou) funkcí. Formální úpravou je možné stanovit nulový práh pro aktivační funkci a vlastní práh perceptronu se záporným znaménkem lze chápat jako váhu, tzv. bias w0 = h dalšího formálního vstupu x0 = 1 s konstantní jednotkovou hodnotou. Zjednodušeně se tedy dá říci, že práh h se nahradí fiktivním vstupem číslo nula, který má vždy hodnotu 1 a synaptickou váhu w0 (bias) [6, 8]. 8

Nejjednodušším typem aktivační funkce je tzv. ostrá nelinearita (skoková funkce), která patří do skupiny sigmoidních aktivačních funkcí. Aktivační funkce může být skoková (ostrá nelinearita), spojitá lineární, standardní (logistická) sigmoida nebo hyperbolický tangens. Jako aktivační funkce není vhodná skoková ani lineární funkce. Hlavním požadavkem na aktivační funkci je schopnost transformovat vstupní reálnou hodnotu do intervalu 0,1 popřípadě 1,1 tak, že v blízkosti nuly velmi prudce stoupá, zatímco u vysokých hodnot stoupá jen nepatrně, takže případný rozdíl je minimální. Tato vlastnost byla převzata z biologických neuronů. Výše zmíněné požadavky splňuje logistická sigmoida nebo hyperbolický tangens. Obě funkce jsou si velmi podobné, liší se především oborem hodnot, kdy logistická sigmoida nabývá hodnot z intervalu 0,1, zatímco hyperbolický tangens z intervalu 1,1. Další výhodou obou zmíněných funkcí je fakt, že jejich derivaci lze snadno vyjádřit. Tato vlastnost je s výhodou využita při učení metodou Back-Propagation. [6, 8]. Umělé neuronové sítě mají dvě pracovní fáze. Jedná se o fázi adaptivní, ve které se síť učí, a fázi aktivní, v níž vykonává naučenou činnost. Při učení neuronové sítě dochází k adaptaci sítě na řešení určitého problému. Učení neuronové sítě je obvykle realizováno nastavováním vah vstupů jednotlivých neuronů. Přímý výpočet synaptických vah neuronů je nevhodný a ve většině případů neuskutečnitelný, a proto nastupuje proces učení. Rozlišují se dva typy učení neuronových sítí. Jedná se o tzv. učení s učitelem a učení bez učitele. Při učení s učitelem existuje nějaké vnější kritérium, které určuje, který výstup je správný. V praxi se to řeší tak, že je k dispozici sada testovacích příkladů (trénovací množina), k nimž je známé řešení. Tyto příklady se postupně předkládají na vstup neuronové sítě a srovnává se požadovaná odezva sítě se skutečnou. Na základě odlišnosti skutečného výstupu od očekávaného se pak pomocí zpětné vazby upraví v neuronové síti váhy. Metodiku úpravy vah určuje učící algoritmus. Je dokázáno, že po provedení velkého počtu učících se kroků se síť naučí poskytovat stabilní výstup jako reakci na naučené vstupy [8]. Při typu učení bez učitele neexistuje žádné vnější kritérium správnosti. Algoritmus učení je navržen tak, že hledá ve vstupních datech určité vzorky se společnými vlastnostmi. Tomuto typu učení se říká samoorganizace. Do učení bez učitele není zapojen žádný vnější atribut a celé učení je založeno pouze na informacích, které samotná síť během celého procesu získala. Učící proces může 9

probíhat opakovaně nebo jednorázově. Neuronové sítě se mohou učit nejen změnou synaptických vah, ale i přizpůsobováním přenosové funkce, počtu neuronů, případně i změnou topologie sítě [6, 8]. Po přivedení vstupního vektoru na vstup neuronové sítě zareaguje síť na výstupu podle aktuálního nastavení prahů a vah. Pokud je známé požadované řešení, lze aktuální vstup srovnat s požadovaným a stanovit tak chybu neuronové sítě. Na základě chyby sítě pak lze měnit váhy tak, aby byla při opakovaném řešení stejného problému velikost chyby menší [6, 8]. 1 1 2 2 p p Trénovací množina je dána: T { x, d, x, d,, x, d } = L (3.1) p p p p p kde: x = ( x1, x2,..., x m ) je vstupní vektor a p p p d ( d1, d2,..., d m ) odezva sítě na vstupní vektor p x. Střední kvadratická chyba (SSE, Sum Squared Error) je dána: 1 E d u = je očekávaná n q q q 2 = ( k k ) (3.2) 2 k= 1 p p p p kde: u ( u1, u2,..., u m ) =. Po předložení všech příkladů z trénovací množiny neuronové síti lze určit chybu přes všechny vzory, tzv. celkovou střední kvadratickou chybu: p n 1 q q E = ( dk uk ) 2 q= 1 k= 1 2 (3.3) Pro střední kvadratickou chybu (popřípadě i celkovou střední kvadratickou chybu) se také používá název energetická funkce [8]. Neuronové sítě jsou často nasazovány na řešení problémů, které nedokážeme analyticky popsat. Důvody jsou různé. Vstupní data mohou být poškozená nebo neúplná, řešení je natolik komplikované, že popis je prakticky nemožný apod. Jediným způsobem popisu pro takové problémy je stanovení množiny některých možných zadání a jim odpovídajících řešení. Taková množina je pak označována jako trénovací množina řešeného problému. Velkou předností umělých neuronových sítí je schopnost učení se na vzorech a schopnost odhalit nelineární závislosti. Tyto předností umožňují využití umělých neuronových sítí v různých oblastech [9]. 10

3.2 Vrstvená perceptronová neuronová síť Mezi nejrozšířenější způsoby propojení spojitých perceptronů lze zařadit tzv. vrstvené (vícevrstvé) neuronové sítě, jejichž topologie je uvedena na obr 3.2, kde je neuronová síť tvořena minimálně třemi vrstvami neuronů. Jedná se o vstupní vrstvu, vnitřní (skrytou) vrstvu a výstupní vrstvu. Mezi sousedními dvěma vrstvami se vždy nachází tzv. úplné propojení neuronů, tedy každý neuron nižší vrstvy je propojen se všemi neurony z vrstvy vyšší. Ve vrstvené perceptronové síti probíhá dopředné šíření signálu (feedforward) tímto způsobem [8]: Neurony vstupní vrstvy jsou excitovány na odpovídající úroveň (v rozsahu 0 až 1). Excitace jsou pak pomocí vazeb přivedeny k následující vrstvě a upraveny (zesíleny nebo zeslabeny) pomocí synaptických vah. Každý neuron vyšší vrstvy provede sumaci upravených signálů od neuronů nižší vrstvy a je excitován na úroveň danou svou aktivační funkcí. Tento proces probíhá přes všechny vnitřní vrstvy až k vrstvě výstupní, kde se získají excitační stavy všech neuronů. Vrstvená perceptronová síť je typem dopředné vícevrstvé sítě, která se v angličtině označuje jako Multi Layer Perceptron (MLP). Základní struktura sítě je znázorněna na obr. 3.2. Obr. 3.2 Vrstvená perceptronová síť [7] Protože přímý výpočet synaptických vah neuronů je nevhodný a často neuskutečnitelný, používá se právě učení sítě za použití sady vzorů. Metoda učení pomocí zpětného šíření chyby (tzv. back-propagation) přinesla způsob jak efektivně 11

měnit synaptické váhy. V praxi se však nastavení vah provádí postupně. Síti se předloží jeden vzor, upraví se všechny váhy a pak se teprve předloží další vzor. Vzory je vhodné vybírat náhodně, což zaručí náhodný výběr cesty v prostoru a umožní i jeho hlubší prozkoumání. Výhodou metody zpětného šíření je, že pro výpočet změny konkrétní váhy je potřeba jen hodnota šířené chyby na jednom jejím konci a hodnota přenášeného signálu na konci druhém. To vede na paralelní výpočet metodou back-propagation [7]. Nejčastěji používaným algoritmem pro učení vrstvené perceptronové neuronové sítě je iterační algoritmus Back-propagation. 3.1.1 Algoritmus Back-propagation Učící algoritmus Back-propagation je v podstatě optimalizační algoritmus, který je schopen nalézt pro danou neuronovou síť a trénovací množinu váhové koeficienty a prahy. Protože neurony mohou mít různou strukturu a různé výstupní funkce, je třeba nejprve specifikovat konkrétní typ sítě, pro kterou budou rovnice odvozeny. Podstata algoritmu Back-propagation spočívá v hledání minima funkce chyby E, viz vztah (3.3). Struktura algoritmus Back-propagation [8]: náhodná_inicializace_vah; opakuj opakuj vyber_vzor_z_trénovací_množiny; přilož_vybraný_vzor_na_vstup_sítě; vypočti_výstupy_sítě; porovnej_výstupy_s_požadovanými_hodnotami; modifikuj_váhy; dokud nejsou vybrány_všechny_vzory_z_trénovací_množiny; dokud není globální_chyba < kritérium; Vlastní algoritmus: 1. Inicializace Nastaví všechny váhy v síti na náhodné malé hodnoty. Doporučený rozsah je z intervalu 0.3, 0.3. 2. Předložení vzoru 12

Z trénovací množiny se vybere vzor a vloží na vstupy sítě. Dále po vrstvách směrem od vstupní k výstupní se počítají výstupy jednotlivých neuronů dle vztahu: u (3.4) n = σ xiwi i= 0 kde σ ( ϕ ) 1 = je aktivační funkce. 1 + e ϕ 3. Srovnání Vypočte se energie (chyba) sítě dle vztahu: E = 1 2 n ( u i d i ) i= 1 2, kde n je počet neuronů výstupní vrstvy, ui je skutečná odezva i-tého neuronu ve výstupní vrstvě na vstupní vektor a di je očekávaný výstup i-tého neuronu ve výstupní vrstvě. Tato energie bude využita jako přírůstek k celkové energii počítané přes všechny vzory. Dále se vypočte chyba pro výstupní vrstvu: u i u u ( d )( ) u i ui ui ui δ = 1 (3.5) 4. Zpětné šíření chyby Pro všechny neurony ve vrstvě l se vypočtou váhy: 1 ( ) ηδ ( ) ( ) µ ( 1) w t = t u t + w t (3.6) l l l l ij i j ij ( t) ( t) ( t 1) θ = ηδ + µ θ (3.7) l l l i i i kde η je koeficient učení a µ je koeficient vlivu změny vah z předchozího kroku. Oba dva koeficienty nabývají hodnot z intervalu 0,1. Pokud je µ = 0, pak minulé nastavení váhy nemá vliv na nové nastavení a hodnota změny synaptické váhy je dána pouze aktuálním krokem. Čím větší je koeficient učení η, tím větší budou změny v neuronové síti a naopak. Pak se podle vztahu: 13

δ ( 1 ) 1 1 1 n h h h h h i yi ui wkiδ k k = 1 = (3.8) chyba šíří zpětně do vrstvy, která je blíže vstupům. Na závěr tohoto kroku se modifikují váhy: ( 1) ( ) ( ) w t + = w t + w t (3.9) l l l ij ij ij ( t 1) ( t) ( t) θ + = θ + θ (3.10) l l l i i i Krok 4 se opakuje pro všechny vrstvy sítě. Začíná se vrstvou výstupní a pak následují skryté vrstvy. V případě, že se zpracovává skrytá vrstva, která je nejblíže vstupní vrstvě, nahradí se hodnotou, tedy xj. Pak platí: l 1 u j ve vztahu (6.3) odpovídající vstupní ( ) ηδ ( ) ( ) µ ( 1) w t = t x t + w t (3.11) l l l ij i j ij 5. Konec výběru vzorů z trénovací množiny Jestliže jsme předložili síti všechny vzory z trénovací množiny, pak se pokračuje krokem 6, jinak návrat na krok 2. 6. Konec učení Jestliže byla energie neuronové sítě po posledním výpočtu menší než zadané kritérium, učení se ukončí, jinak se pokračuje krokem 2. Existují také případy, kdy se nepodaří síť naučit s dostatečně malou chybou. V takovém případě dosáhne energetická funkce určité hodnoty a dál už neklesá. Tomuto stavu se říká uvíznutí v lokálním minimu. Každý další krok potom vede k vzestupu hodnoty energetické funkce. Problém uvíznutí v lokálním minimu lze řešit několika způsoby [10]: Vhodnou volbou parametrů η (koeficient učení) a µ (koeficient vlivu změny vah z předchozího kroku) z intervalu 0,1. Volbou větší hodnoty parametru η bude krok tak velký, že malá lokální minima budou přeskočena. Se zvětšováním hodnoty parametru η ale vzrůstá riziko oscilace. Účinnější je koeficient µ. Ten přidává do postupu váhovým prostorem setrvačnost. Při dosažení lokálního minima zajistí tato 14

setrvačnost udržení směru, kterým se došlo do tohoto minima. Tento směr se zachovává i přes nárůst energie a lokální minimum bude překonáno. Vhodnou strategií výběru vzorů z trénovací množiny. Nejméně odolnou strategií z hlediska uvíznutí v lokálním minimu je sekvenční výběr vzorů. Naopak účinnější metodou se jeví náhodný výběr. Vhodným počátečním nastavením vah. Ty musí být dostatečně malé, náhodně generované a z doporučeného intervalu 0.3, 0.3. 3.3 Hopfieldova neuronová síť Hopfieldova síť patří mezi modely využívající asociativní paměť. Na rozdíl od klasických pamětí, kde se vyhledává položka v paměti podle adresy, u asociativní paměti vybavení určité informace probíhá na základě její částečné znalosti (asociace) [6]. V zásadě se rozlišují dva hlavní typy asociativní paměti. Paměť autoasociativní a paměť heteroasociativní. Autoasociativní paměť upřesňuje nebo zkvalitňuje vstupní informaci. U heteroasociativní paměti dochází k vybavení určité sdružené informace na základě vstupní asociace [6]. Obr. 3.3 Struktura Hopfieldovy sítě 15

Hopfieldův model neuronové sítě je tvořen neurony, které jsou spojeny symetrickými spoji každý s každým (obr. 3.3). V základním modelu se nepracuje s biasy, tj. všechny prahy neuronů jsou nulové a žádný neuron není spojen sám se sebou. Proces učení Hopfieldovy sítě je založen na několika krocích. Pro každý vzor se vytvoří dílčí matice dimenze N 2, kde N je počet vstupů. Tato matice bude tvořena prvky, které vzniknou vynásobením i-tého vstupu j-tým vstupem (metodou každý z každým), přičemž pokud se jedná o stejný vstup (i=j), je váhový koeficient nulový. Tím vznikne symetrická matice obsahující +1 a -1 s výjimkou nulové diagonály. Výsledná čtvercová matice vah, vznikne součtem všech dílčích matic jednotlivých vzorů, kterých je M [8]. Algoritmus učení Hopfieldovy sítě lze popsat v následujících několika krocích: Krok 1. Nastavení vah podle vstupních vzorů w ij = 0 M 1 s = 0 s x x i s j (3.12) Váha wij se rovná sumě pro i různé od j. Nulovou hodnotu má pro i =j. V této rovnici wij je váha mezi neuronem i a j (jedná se o čtvercovou matici vah) a xi je i-tý (j-tý) element s-tého vstupního vzoru, který nabývá hodnoty +1 a -1. Krok 2.Opakování učícího procesu Pokud ještě nebyly předloženy všechny trénovací vzory, přejde se na Krok 1, jinak konec učení. Jakmile jsou všechny obrazce naučeny, tj. zakódovány ve váhové matici, může síť přejít k fázi vybavování. Z předchozího algoritmu je patrné, že učení sítě je jednorázové, ale vybavování je opakovaný děj. Ve fázi vybavování se předloží nový neznámý obrazec na vstup sítě a postupně se počítají výstupy podle algoritmu. Po každém průběhu jsou výstupy poopraveny a slouží opět jako vstupy do sítě. Tento postup se opakuje tak dlouho, až se výstupy během dvou cyklů nezmění ani na jednom neuronu, tj. nynější a předchozí stavy jsou shodné. Takto získané výstupy přímo odpovídají vybavenému vzoru. Princip celé Hopfieldovy sítě je založen na porovnávání obrazců pomocí Hammingovy metriky a za správnou odpověď se bere ten obrazec, který má tuto vzdálenost nejmenší [8]. 16

Algoritmus vybavování Hopfieldovy sítě lze popsat v následujících několika krocích: Krok 1. Inicializace stavů Nastavení počátečních stavů podle předloženého vzoru µ i i ( 0) = x, 0 i N 1 (3.13) V této rovnici je µ i ( t) výstup z i-tého neuronu a čase t a xi je element obrazce, který může nabývat hodnot jen +1 nebo -1. Krok 2. Iterace až do nalezení odpovědí N 1 µ i ( t + 1) = f h wij µ j( t), 0 i N 1 (3.14) i = 0 Funkce fh je nelinearita bez posunutí. Krok 2. se provádíme tak dlouho, až se přestanou měnit stavy, tj. rozdíl mezi tímto a předchozím stavem je nulový. Výstupy neuronů y = µ ( t ) jsou přímo jednotlivé body výstupního obrazce. i i poslední Krok 3. Opakování procesu Po skončení iterace je možné zadat nový vzor a přejít na Krok 1. V opačném případě algoritmus končí. Na rozdíl od vícevrstvých sítí Hopfieldova síť neodpovídá okamžitě. Potřebuje určitý čas k ustálení do stabilního stavu. Kromě základního modelu existují jeho rozšíření, které umožňují používat místo binárních reálné hodnoty, příp. si místo jednotlivých stabilních stavů pamatují celé sekvence stavů [6, 8]. 3.4 Kohonenova neuronová síť Kohonenova neuronová síť představuje neuronovou architekturu vycházející ze soutěžního učení, z čehož plyne její další známé označení jako Kohonenova samoorganizační mapa (SOM, Self Organizing Map). Samoorganizační mapa je tvořena vrstvou n vstupních neuronů, které slouží pouze k načtení vstupních podnětů představovaných n prvkovými vektory x = (x1; x2,:. : : ; xn) a druhou vrstvou Kohonenových neuronů. Ty jsou vzájemně spojeny vazbami tzv. laterální inhibice [7]. Laterální znamená vrstvový a inhibice znamená působení, které něco snižuje. Dalo by se tedy říci, že laterální inhibice je vzájemné tlumení v rámci jedné síťové vrstvy [6]. Při laterální inhibici jsou neurony v jedné vrstvě vzájemně propojeny. Každý neuron je propojen kladnou vazbou sám se sebou a zápornou (inhibiční) vazbou s ostatními neurony. Tím aktivovaný neuron svojí vlastní aktivaci posiluje a aktivaci 17

ostatních neuronù tlumí. Nejsilněji aktivovaný neuron ve výsledku utlumí všechny ostatní a zůstane tak jediným aktivovaným neuronem. Tato strategie je výhodná v případě, kdy mnoho neuronù reaguje na stejný podnět a je potřeba zjistit, který z nich reagoval nejvíce [7]. Obr. 3.4 Struktura Kohonenovy sítě Struktura neuronu v Kohonenově síti (obr. 3.4) je odlišná od neuronu v perceptronové síti. Počet vstupů, které přicházejí do neuronu, je roven počtu vstupů do Kohonenovy sítě. Váhy těchto vstupů zakódují vzory, které reprezentují vzory obdobně jako u perceptronu. Rozdíl je v tom, že neurony Kohonenovy sítě nemají vlastní přenosovou funkci. Neuron provádí pouze výpočet vzdálenosti (odchylky) předloženého vzoru od vzoru zakódovaného ve vahách daného neuronu podle vztahu (3.15) Výstupní neurony jsou mezi sebou vzájemně propojeny, ale jen se sousedními neurony. Každý vstup je spojen s každým neuronem mřížky. Každý neuron na mřížce je pak výstupem. Počet výstupů je roven počtu neuronů. Počet neuronů přímo závisí na konkrétní aplikaci a je prakticky libovolný. Obecně však platí čím větší počet neuronů, tím je pokrytí vstupního prostoru lepší, ovšem za cenu růstu výpočetního času. [8]. Kohonenova síť je tedy aktivována vstupním vektorem, resp. vstupní vektor aktivuje všechny neurony. Největší excitaci má ten neuron, který je nejblíže vstupu. Kohonenovy neurony se tedy navzájem ovlivňují tzv. laterální inhibicí, takže po 18

krátké době se ustálí ve stavu, kdy je aktivní pouze jeden neuron, který byl nejblíže vstupu. Výsledkem tedy je, že v Kohonenově síti reaguje na vstup jen neuron, který je vstupu nejblíže. Tento neuron se adaptuje podle vztahu (3.17). Neuron se tak přesune směrem k bodu představujícímu vstup. O kolik záleží na daném parametru. Při malé hodnotě parametru se síť učí rychle, ale kvůli novým poznatkům zapomíná staré, při velké hodnotě parametru je to naopak. Jedná se o tzv. konflikt stability a plasticity [7]. Kohonenova síť se učí za provozu. Nemá fázi učení a fázi aktivace jako předchozí sítě. Snahou Kohonenovy sítě je vystihnout charakter množiny vstupů. Množina vstupů tvoří shluky, tzv. clustery. Pokud je stejný počet shluků jako Kohonenových neuronů, umístí se každý neuron ve středu příslušného shluku a stává se jeho typickým zástupcem [8]. Snahou procesu učení Kohonenovy sítě je uspořádat neurony v mřížce do určitých oblastí tak, aby byly schopny klasifikovat předložená vstupní data. Takové organizování neuronů si lze představit jako rozprostření původně zmačkaného papíru do roviny tak, aby pokryl celý vstupní prostor. Proces učení je autonomní, to znamená bez přítomnosti vnější pomocné informace. Učení sítě je iterativní, tj. v každém kroku učení dochází k adaptaci vah. Adaptace vah je založena na porovnávání vstupních vzorů s vektory, které jsou uloženy v neuronech. Když je nalezen vektor, který nejlépe odpovídá vstupnímu vzoru, je upraven tento vektor a také všechny vektory, které se nalézají v okolních neuronech vybraného neuronu. Celá mřížka je tedy postupně optimalizována tak, aby co nejlépe odpovídala vstupnímu prostoru trénovacích dat. Na začátku trénování jsou všechny neurony náhodně uspořádány a teprve učícím procesem dostanou konkrétní tvar, reprezentující vstupní data [8]. Algoritmus učení v Kohonenově síti lze popsat v následujících několika krocích: Krok 1. Inicializace Nastavení vah wij, 0 i N 1, 0 i M 1 pro všechny spoje z N vstupů do M výstupních neuronů na malé náhodné počáteční hodnoty. Parametr učení se nastaví na hodnotu blízkou jedné. Hodnota tohoto parametru leží v intervalu 0 η (t) 1 a slouží k řízení rychlosti učení. Je také třeba nastavit počáteční velikosti všech okolí kolem každého výstupního neuronu. Velikosti okolí se v praxi volí pro všechny neurony stejná tak, aby okolí pokrývalo všechny neurony, tj. poloměr okolí bude roven dimenzi mřížky (počtu neuronů). Je třeba také nastavit minimální hodnotu okolí, na kterém se dále zmíněné snižování okolí zastaví (většinou je tímto 19

minimálním okolím právě konkrétní jediný vybraný neuron, kolem něhož se okolí redukuje). Krok 2. Předložení vzoru Předložení nového trénovacího vzoru X ( t) = { x 0(t), x1(t),...,xn-1(t)} na vstup neuronové sítě. Krok 3. Výpočet vzdálenosti vzorů Vypočet vzdálenosti (podobnosti) dj mezi předloženým vzorem a všemi výstupními neurony j podle vztahu: N 1 d = [ x ( t) w ( t)] j i i, j i= 0 2 (3.15) kde xj jsou jednotlivé elementy vstupního vzoru X(t) a wij(t) jsou váhy mezi i-tým vstupem a j-tým výstupním neuronem, které představují zakódované vzory. Krok 4. Výběr nejbližšího (nejpodobnějšího) neuronu Výběr výstupního neuronu j *, který splňuje následující podmínku a odpovídá tak nejpodobnějšímu neuronu: d * = min( d ) (3.16) j j j Krok 5. Přizpůsobení vah Přizpůsobení váhy pro neuron j * a jeho okolí N uvnitř tohoto okolí podle následujícího vztahu: t j * ( ), tj. pro všechny neurony ležící w ( t + 1) = w ( t) + η ( t)[ x ( t) w ( t)] (3.17) ij ij i ij kde j jsou všechny neurony ležící v okolí N ( t) a i jsou vstupy, 0 i N 1. Na j * začátku se hodnota váhy volí blízko jedné a postupně se zmenšuje k nule. Nezbytné je také provádět postupné snižování velikosti okolí až na předem definované minimální okolí (většinou je tímto minimálním okolím právě jeden konkrétní vybraný neuron). Krok 6. Pokračování učícího procesu Pokud nejsou vyčerpány všechny vzory pro naučení sítě nebo není vyčerpán požadovaný počet trénovacích kroků, tj. není dosaženo požadované přesnosti, algoritmus přejde na Krok 2. V opačném případě, kdy je síť naučena na všechny trénovací vzory, algoritmus končí. Algoritmus vybavování v Kohonenově síti představuje správné zařazování nových předložených vzorů do odpovídajících tříd. Pracuje podobně jako algoritmus 20

učení. Při vybavování již nemusí proběhnout fáze inicializace, protože váhové vektory byly nejen nastaveny, ale také správně naučeny, takže inicializací by byly naopak poškozeny. Rovněž není potřeba řešit koeficient přizpůsobení nebo okolí neuronů, protože aktuální váhy se už nebudou modifikovat [8]. Algoritmus vybavování v Kohonenově síti lze popsat v následujících několika krocích: Krok 1. Předložení nového vzoru Na vstup je předložen nový neznámý vzor X(t) = {x0(t), x1(t),..., xn-1(t)}, který má být zařazen do odpovídající třídy. Krok 2. Vypočet nejbližšího vzoru Nejprve spočítáme všechny vzdálenosti dj daného předloženého výstupu od všech váhových vektorů výstupních neuronů podle známého Euklidova vztahu: N 1 d = [ x ( t) w ( t)] j i i, j i= 0 2 (3.18) Následně se vybere takový neuron j *, který splňuje podmínku: d * = min( d ) (3.19) j j j Tento j * tý neuron představuje odpověď sítě na předložený vzor. Určuje třídu, do které nový vzor patří. Krok 3. Opakování procesu Pokud je třeba klasifikovat další vzory, algoritmus přejde na Krok 1. V opačném případě končí. Kohonenova neuronová síť se používá pro třídění vstupních dat do skupin (klasifikace), které si sama volí. Nevýhodou Kohonenových sítí je potřeba předem stanovit počet neuronů [7]. Základní typ Kohonenovy neuronové sítě je v principu samoorganizující se, tj. nepotřebuje ke své funkci přítomnost učitele. Novější verze Kohonenovy neuronové sítě je však schopna pracovat s pomocí učitele. Tato modifikovaná síť se nazývá Learning Vector Quantization (LVQ). Tím, že nově modifikované typy sítí mohou znát k trénovacím vorům jejich správné třídy, mohou klasifikovat do odpovídajících tříd i neznámé objekty. Kromě toho mohou na základě informace o správnosti hodnocení zlepšit chování sítě [8, 11]. 21

4 Praktická část 4.1 Implementační prostředí Práce byla vytvořena v implementačním prostředí MATLAB (MATrix LABoratory), které představuje výkonný interaktivní systém pro vědecké výpočty, který spojuje technické výpočty, vizualizaci dat a programovací jazyk. Systém MATLAB vyvíjí a dodává s celou řadou rozšíření a knihoven firma MathWorks. Velkou předností prostředí MATLAB je velmi rychlé výpočetní jádro s optimálními algoritmy a s implementací pro všechny významné platformy (Windows, Linux, Solaris, Mac) [12]. Vedle interaktivní práce v příkazovém okně prostředí MATLAB lze ukládat vytvořený programový kód v podobě tzv. m files (m souborů). M soubory jsou soubory typu *.m, které obsahují kód jazyka systému MATLAB a lze s nimi vytvářet skripty i funkce. Otevřená architektura systému MATLAB umožňuje využití řady knihoven funkcí, tzv. toolboxů. Toolboxy rozšiřují použití programu v různých aplikačních oblastech. V podstatě se jedná o m soubory vytvořené pro podporu řešení nejrůznějších úloh. Tyto toolboxy, vytvořené v programovacím jazyce systému MATLAB, obsahují předzpracované specializované funkce, které je možné různě rozšiřovat a modifikovat [12]. Pro potřeby rozpoznávání objektů pomocí umělých neuronových sítí byla využita knihovna Neural Network toolbox. Neural Networks toolbox poskytuje nástroje pro návrh, tvorbu, trénování, simulaci a vizualizaci umělých neuronových sítí. Knihovna Neural Networks toolbox poskytuje grafická uživatelská rozhraní, která usnadňují návrh a implementaci umělých neuronových sítí. Otevřená, modulární a rozšiřitelná stavba knihovny Neural Networks toolbox umožňuje tvorbu vlastních funkcí a rovněž obsahuje funkce pro automatickou tvorbu simulačních bloků neuronových sítí do simulačního modulu Simulink. Současné verze systému MATLAB umožňují práci s novými metodami z knihovny Neural Networks toolbox, které obsahují také nové učící algoritmy [13]. Na obr. 4.1 je ukázka trénování (učení) perceptronové neuronové sítě s 10 30 neurony ve skryté vrstvě po proběhnutí 2000 iterací, která byla implementována s využitím knihovny Neural Networks toolbox. 22

Obr. 4.1 Ukázka trénování v Neural Network toolboxu Cílem praktické části práce bylo navrhnout testovací objekty a implementovat programové soubory pro přípravu vstupních dat a pro algoritmy vhodných typů umělých neuronových sítí pro potřeby rozpoznávání objektů. Všechny programové soubory (m -files) byly vytvořeny v kódu vývojového prostředí MATLAB s využitím knihovny Neural Network toolbox pro testování tří typů neuronových sítí. Implementovány byly typy sítí vhodné pro rozpoznávání (klasifikaci): Vrstvená perceptronová neuronová síť (MLP), Hopfieldova neuronová síť a Kohonenova neuronová síť. 4.2 Testovací objekty V rastrovém formátu *.png byly vytvořeny dvě sady testovacích dvourozměrných obrazových objektů, testovací sada Objects1 (obr. 4.2) a testovací sada Objects2 (obr. 4.3). Vedle zcela odlišných objektů byly záměrně navrženy a vytvořeny také objekty tvarově blízké. Na základě vytvořených objektů pak byla pomocí implementovaných algoritmů připravena vstupní data pro testování vybraných neuronových sítí. 23

Obr. 4.2 Ukázka testovacích objektů Objects1 4.3 Tvorba vstupních dat Obr. 4.3 Ukázka testovacích objektů Objects2 Příprava vstupních dat pro testování neuronových sítí spočívá ve vytvoření číselných vektorů, které představují jednotlivé testované objekty. Charakter číselného vektoru je určen typem příslušné umělé neuronové sítě. 4.3.1 Tvorba dat pro MLP síť a Kohonenovu síť Vstupní data pro vrstvenou perceptronovou neuronovou síť a Kohonenovu neuronovou síť jsou připravena v podobě příznakového vektoru číselných charakteristik objektu, který jednoznačně určuje daný objekt. Vytvoření příznakového vektoru vychází z metody popisující objekty pomocí ramen, která mají počátek v těžišti a končí na vnější hranici objektu. Tato metoda je založena na skutečnosti, že jednotlivé složky příznakového vektoru jsou určeny z délek ramen vektorů v polárním souřadnicovém systému s počátkem v těžišti aktuálně rozpoznávaného objektu. Je tedy třeba nejdříve určit těžiště objektu. Těžiště objektu se určí z bodů, které tvoří hranu objektu [10]. Algoritmus výpočtu těžiště lze popsat následujícími body: 1. nastavení proměnných pro součet souřadnic x a y 2. pro každý prvek matice s hodnotou 1 se přičte do proměnných x a y index 24

prvku ki resp. li a proměnná c se zvýší o hodnotu 1 3. určení souřadnic bodu těžiště je vypočteno ze vztahů (4.1) a (4.2) x t = n 1 c k i (4.1) y t = n l i 1 (4.2) c Následuje spuštění ramen z bodu těžiště do všech směrů (obr. 4.4) a uložení délky po dosažení posledního nenulového prvku matice objektu. Obr. 4.4 Ramena pro popis objektu Uřčení příznakového vektoru pak vychází z následujícího algoritmu [10]: 1. Jestliže nebyly prohledány všechny objekty, vyber další objekt a pokračuj bodem 2, jinak konec. 2. V daném úhlu prodlužuj rameno z těžiště tak dlouho, dokud není dosažena hrana objektu a zapiš jeho délku. Ve vytvořeném programu se uvažuje 72 ramen pro každý objekt (úhlový krok je 5 ). 3. Jestliže je celkové úhlové otočení ramene menší než 360, otoč rameno o daný úhel a pokračuj bodem 2, jinak pokračuj bodem 4. 4. Vyhlaď vektor příznaků. Vyhlazení vektoru příznaků znamená nahrazení 25

jednotlivých složek vektoru aritmetickým průměrem z N sousedních ramen. V programu je nastavena hodnota 3 (aktuální rameno + 1 rameno z každé strany). Tím je zajištěno vyhlazení obrysové křivky, která obsahuje chyby způsobené nepravidelností. 5. Zjisti velikost nejdelšího ramene a touto hodnotou vyděl všechny příznaky. Transformuj výsledné podíly do intervalu <0, 1>. Tím je zajištěna invariance vůči změně měřítka. 6. Pokračuj bodem 1. Příznakový vektor objektu se vyhladí tím způsobem, že je místo každého ramene vypočten průměr z (n - 1)/2 sousedních ramen (obr. 4.5, zelená křivka je nevyhlazená a modrá vyhlazená). V programu bylo použito n = 3, vezme se tedy jedno rameno z každé strany. Obr. 4.5 Ukázka příznakového vektoru objektu 4.3.2 Tvorba dat pro Hopfieldovu síť Vstupní data pro Hopfieldovu neuronovou síť jsou připravena v podobě číselného vektoru, vytvořeného z binárního obrazu objektu. Binární obraz objektu pro Hopfieldovu síť se vytvoří pomocí funkce MATLABu pro prahování (getnormalizedimage.m): 26

function [imgresized, croppedimage, img] = getnormalizedimage(fname, imgsize, level) if nargin < 3 level = 0.8; end img = im2bw(imread(fname), level); croppedimage = cropimage(img); imgresized = imresize(croppedimage, [imgsize, imgsize]); end Číselný vstupní vektor pro naučení Hopfieldovy sítě je vytvořen z binárního obrazu pomocí funkce, která převede binární obraz obsahující hodnoty true a false na vektor hodnot -1 (false) a 1 (true): function vec = imgtohopfieldvector(img) vec = double(img(:)); for i = 1:length(vec) if vec(i) > 0 vec(i) = 1; else vec(i) = -1; end end end 4.4 Příprava trénovacích dat Pro trénování neuronových sítí je třeba vytvořit konfigurační soubor, kterým je určena velikost sítě, její struktura (topologie) a rozsah procesu učení (počet iterací). Ukázka nastavení konfiguračního souboru: % konfigurace addpath('./functions'); configdata = struct; % ------------------------------------------------------------------------- configdata.binary_img_size = 30; % velikost binarnich obrazu, velikost Hopfieldovy site 27

configdata.ff_train_neuron_counts = [10:2:30]; % pocty neuronu ve skryte vrstve vrstvene perceptronove site configdata.ff_train_iter_count = 2000; % pocet iteraci treningu vrstvene perceptronove site configdata.som_train_iter_count = 400; % pocet iteraci treningu Kohonenovy site Příprava trénovacích dat spočívá ve spuštění souborů prepare_training_data_*.m, které zajistí načtení objektů zadaných proměnnou samples. Z načtených objektů jsou pak vytvořeny popisy (číselné vektory) jednotlivých objektů, které jsou uloženy do souboru trainign_data.mat. Příprava dat pro vrstvenou perceptronovou neuronovou síť a Kohonenovu neuronovou síť v podobě příznakového vektoru je zajištěna pomocí vytvořeného souboru prepare_training_data_dist_vect.m (viz příloha A). Na obr. 4.6 je ukázka zobrazení jednotlivých kroků přípravy dat pro vrstvenou perceptronovou síť a Kohonenovu neuronovou síť. Jedná se o vytvoření prahovaného obrazu z načteného vzoru, určení těžiště, výpočet příznakového vektoru a vytvoření zrekonstruované obrysové hrany objektu pro vstup do učícího procesu neuronových sítí. Obr. 4.6 Ukázka přípravy dat Příprava dat pro Hopfieldovu neuronovou síť v podobě číselného vektoru, vytvořeného z binárního obrazu objektu, je zajištěna pomocí vytvořeného souboru prepare_training_data_binary_img.m (viz příloha B). 28

Na obr. 4.7 je ukázka zobrazení jednotlivých kroků přípravy dat pro Hopfieldovu neuronovou síť. Jedná se o načtení vzorového objektu, ořezání obrazu a vytvoření binárního obrazu objektu pro vstup do učícího procesu neuronové sítě. Obr. 4.7 Ukázka přípravy dat 4.5 Učení neuronových sítí Po proběhnutí programů prepare_training_data_*.m jsou připravena vstupní data pro všechny tři typy testovaných neuronových sítí a je tedy možné přistoupit k jejich trénování (učení). Učení vrstvené perceptronové sítě je realizováno pomocí vytvořeného souboru trainffiter.m (viz příloha C)., který zajistí naučení této sítě pro potřeby rozpoznávání objektů bez rotace i s rotací. Na obr. 4.8 je ukázka zobrazení učícího procesu vrstvené perceptronové neuronové sítě, kde proběhlo naučení vzorového objektu a přidělení číselného identifikátoru s hodnotou 6 tomuto objektu. 29

Obr. 4.8 Ukázka učení MLP sítě Učení Hopfieldovy neuronové sítě je realizováno pomocí vytvořeného souboru trainhopfield.m: close all; clc; config disp('trening Hopfieldovy site'); load('training_data_binary_img'); % Hopfieldova sit pracuje pouze s hodnotami 1 a -1, je ulozen binarni obraz nettraindata = []; for c = 1:length(trainingDataBinaryImg) img = trainingdatabinaryimg{c}; figure(); imshow(img); [m, n] = size(img); nettraindata(1:m*n, c) = imgtohopfieldvector(img); end hopnet = newhop(nettraindata); save('net_hop', 'hopnet'); 30

Na obr. 4.9 je ukázka naučeného objektu Hopfieldovou sítí v podobě binárního obrazu s hodnotami 1 a -1. Obr. 4.9 Ukázka naučení objektu Hopfieldovou sítí Učení Kohonenovy neuronové sítě je realizováno pomocí vytvořeného souboru trainsom.m (viz příloha D). Na obr. 4.10 je ukázka jedné z fází učení Kohonenovy sítě, která barevně odlišuje různé vzdálenosti vah neuronů. Obr. 4.10 Ukázka učení Kohonenovy sítě 31

4.6 Rozpoznání objektů Soubory *.mat (net_ff.mat, net_hop.mat, net_som.mat, training_data_dist_vect.mat, training_data_binary_img.mat) obsahuji ulozene vahy siti a predzpracovana trenovaci data. Po ukončení procesu učení jednotlivých neuronových sítí může být spuštěna jejich výkonná fáze pro rozpoznání objektů. Rozpoznání objektů je aktivováno spuštěním vytvořeného souboru recog_pn.m (viz příloha E) pro vrstvenou perceptronovou neuronovou síť, souboru recog_kn.m (viz příloha F) pro Kohonenovu neuronovou síť a souboru recog_hn.m (viz příloha G) pro Hopfieldovu neuronovou síť. Vrstvená perceptronová síť (na rozdíl od Kohonenovy a Hopfieldovy sítě) umožňuje rozpoznávat také objekty s rotací, tj. objekty, které jsou nějak natočeny vůči poloze, v níž bylo provedeno naučení neuronové sítě. Pro rozpoznání natočených objektů byl vytvořen soubor recog_pn_rot.m (viz příloha H). Vrstvenou perceptronovou neuronovou sítí je konkrétní objekt rozpoznán (soubor recog_pn.m) pomocí příznakového vektoru složeného z ramen vyslaných z těžiště objektu do 72 směrů po 5 stupních. Na obr. 4.11 je ukázka zobrazení procesu rozpoznání testovaného objektu, kde je vidět shoda aktuálního vstupního objektu a objektu rozpoznaného. Obr. 4.11 Ukázka rozpoznání MLP sítí 32

Kohonenova neuronová sít rozpoznává (soubor recog_kn.m) konkrétní objekt na základě určitého neuronu, jehož odezva nejvíce odpovídá testovanému objektu. Tento neuron je určen po daném počtu iterací sítě tak, že nejvíce odpovídá určitému vstupu. Na obr. 4.12 je ukázka zobrazení procesu rozpoznání testovaného objektu Kohonenovou sítí, kde je vidět shoda aktuálního vstupního objektu a objektu rozpoznaného. Obr. 4.12 Ukázka rozpoznání Kohonenovou sítí Hopfieldovou neuronovou sítí je konkrétní objekt rozpoznán (soubor recog_hn.m), při určitém nastavení počtu iterací sítě, na základě porovnání posledního výstupu sítě s jedním z trénovacích vektorů. Podle tohoto porovnání se pak určí třída, do níž patří testovaný obraz. Rozpoznání je možné také řešit tak, že se síť nechá běžet tak dlouho, dokud se výstup nerovná jednomu z trénovacích vektorů. Na obr. 4.13 je ukázka zobrazení procesu rozpoznání testovaného objektu Hopfieldovou sítí, kde je na vstup přiveden neznámý zdeformovaný binární obraz a v průběhu pěti nastavených iterací lze pozorovat postupný přechod výstupu do jednoho z uložených vzorů, které byly v podobě binárních obrazů uloženy do sítě. 33

Obr. 4.13 Ukázka rozpoznání objektu Hopfieldovou sítí Vrstvenou perceptronovou neuronovou sítí je konkrétní natočený objekt rozpoznán (soubor recog_pn_rot.m), podobně jako objekt nenatočený, pomocí příznakového vektoru složeného z ramen vyslaných z těžiště objektu do 72 směrů po 5 stupních, s tím rozdílem, že se tento krok provede 72 krát. Na obr. 4.14 je ukázka zobrazení procesu rozpoznání natočeného testovaného objektu vrstvenou perceptronovou sítí, kde je vidět nejlepší shoda aktuálního vstupního objektu a v síti uloženého vzoru s hodnotou číselného identifikátoru 1. Na obrázku je rovněž vidět, že během procesu rozpoznávání byl v některém okamžiku aktuálně rozpoznán objekt s hodnotou číselného identifikátoru 8, což nepředstavuje chybu, protože rozhodující je porovnání až po proběhnutí všech 72 opakování (znázorněno na obr. 4.14 vlevo dole). 34

Obr. 4.14 Ukázka rozpoznání natočeného objektu MLP sítí 4.7 Zhodnocení dosažených výsledků Vyladění všech sítí (nastavení optimální konfigurace parametrů sítě) je možné provést tak, že sítě bezchybně rozpoznávají všechny objekty. Nejsnadnější vyladění pro úspěšné rozpoznávání bylo u Hopfieldovy neuronové sítě. Srovnání sítí pak lze provést podle rychlosti rozpoznávání, což je spolu s úspěšností rozpoznávání klíčové kriterium pro použití u aplikací, které pracují v reálném čase. Úspěšnost rozpoznání objektu je vyhodnocena na základě číselných identifikátorů, které jsou před startem procesu učení neuronové sítě přiděleny jednotlivým testovaným objektům Pro úspěšné testování výše uvedených typů neuronových sítí s danými objekty bylo provedeno několik stovek simulačních experimentů, v rámci nichž byla prokázána úspěšnost rozpoznávání všech navržených objektů a také byly měřeny časy rozpoznávání jednotlivými neuronovými sítěmi. Na obr. 4.15 je ukázka dosaženého času při rozpoznání objektu Hopfieldovou sítí. 35

Obr. 4.15 Rychlost rozpoznání Hopfieldovou sítí Porovnání všech tří typů implementovaných neuronových sítí z hlediska rychlosti rozpoznávání je uvedeno v tab. 4.1, kde hodnota času představuje průměrný čas rozpoznání jednoho objektu po provedení několika stovek simulačních experimentů (rozdíl času rozpoznání všech testovaných objektů u jednoho typu sítě byl maximálně 0,01 s). Typ neuronové sítě Čas rozpoznání (s) Hopfieldova neuronová síť 0,14 Neuronová síť MLP 0,15 Kohonenova neuronová síť 0,17 Neuronová síť MLP (natočené objekty) 0,94 Tab. 4.1 Rychlost rozpoznání neuronových sítí Dosažené časy rozpoznání objektu prokazují možnost použití Hopfieldovy sítě, vrstvené perceptronové sítě a Kohonenovy neuronové sítě u aplikací s potřebou rozpoznávání nenatočených objektů, které pracují v reálném čase. Jako nejlepší lze doporučit Hopfieldovu, příp. vrstvenou perceptronovou síť. 36