..:: Ondra[sej] :: Projekty :: Implementace neuronových sítí ::..
Ondra[sej] Home

[Tady bude nějaké moudro]

Implementace neuronových sítí

Zápočtové programy vzniklé během kursu Implementace neuronových sítí II na MFF UK. Programy vznikly jako řešení úloh pro Kohonenovu a Hopfieldovu síť.

Implementace neuronových sítí :: Redukce barev

První řešená úloha byla redukce počtu barev v obrázku pomocí Kohonenovy sítě. Síti jsou na vstupu předkládány barvy náhodně vybraných pixelů z obrázku (s oddělenými složkami R, G a B) - síť tedy pracuje v trojrozměrném prostoru (přesněji v RGB krychli) a proto je možné ji snadno zobrazit na monitoru.

Po spuštění aplikace nechá uživatele vybrat obrázek, u kterého bude redukovat počet barev a topologii sítě. Na výběr je buď 2D čtvercová mřížka nebo 3D krychlová. V síti je každá barva v redukovaném obrázku reprezentována jedním neuronem, proto je počtem neuronů v síti určen i počet barev ve výsledném obrázku.


Ukázka výpočtu (1400x1022 PNG - 984kB)

Na obrázku výše je vidět ukázka z aplikace. Okno v levém horním rohu (Source image) zobrazuje zrdojový obrázek, pod ním je okno obsahující výsledný obrázek (Target image). Výsledný obrázek se neaktualizuje automaticky, ale až po stisknutí tlačítka Update target v okně zobrazujícím neuronovou síť. Na konzoli ve zbývajícím okně se zobrazují parametry sítě měnící se v čase.

Zobrazení sítě je možné v okně posunovat a rotovat pomocí kláves A, S, W, D, Q, E, R, F, Home, End, PgUp a PgDown.

Implementace neuronových sítí :: Dithering

Další úloha byla využití Hopfieldovy sítě k převodu obrázku ve stupních šedi do černobílé a k provedení ditheringu (tečkování navozující iluzi většího počtu barev). Program nejprve nechá uživatele vybrat obrázek ke zpracování, ten převede do stupňů šedi a pak nad ním provede výpočet.

V tomto případě je každý pixel obrázku reprezentován jedním neuronem, proto je konvergence sítě a tedy i výpočet pro větší obrázky poměrně pomalý. Při experimentování doporučuji trpělivost.


Ukázka výpočtu

Na obrázku je vidět ukázka zpracování stejného obrázku jako v předchozím případě. Pomocí posuvníku dole lze regulovat přesnost převodu. Pokud je posuvník úplně vpravo, síť provádí přesné zaokrouhlování podle jasu. Pro nejlepší výsledky doporučuji posuvník nastavit podobně jako na obrázku - tedy blízko k pravému okraji, ale ne úplně do krajní polohy.

Implementace neuronových sítí :: Download

Pro provoz obou programů je potřeba .NET Framework 2.0 nebo novější. Při redukci barev se pro zobrazení neuronové sítě používá OpenGL (potřebné knihovny jsou přiloženy).

Černobílý dithering (zip - 6kB)
Redukce barev (zip - 121kB)