ROZPOZNÁVANIE OBRAZU POMOCOU NEURÓNOVÝCH SIETÍ HOWTO

link: http://neuroph.sourceforge.net/image_recognition.html

Neurónové siete sú jednou z techník, ktoré môžu byť použité pre rozpoznávanie obrazu. Tento tutoriál vám ukáže, ako použiť multi layer perceptron neurónovú sieť pre rozpoznávanie obrazu. Na Neuroph má vstavaný podporu pre rozpoznávanie obrazu a špecializované sprievodca pre vzdelávanie rozpoznávanie obrazu neurónové siete. Jednoduché rozpoznávanie obrazu knižnice môžete nájsť v org.neuroph.contrib.imgrec balík, zatiaľ čo obraz recognitionwizard v Neuroph Studio canis nachádza v [Hlavné Menu > Súbor > Nový > rozpoznávanie Obrazu neurónové siete]

Tento tutoriál vám vysvetliť takto:

1. Základný princíp ako multi layer perceptrons sa používajú pre rozpoznávanie obrazu (jeden možný prístup je popísaný tu)
2. Ako trénovať neurónové siete pre rozpoznávanie obrazu s Neuroph Studio
3. Ako používať neurónové siete vyškolených pre rozpoznávanie obrazu vo vašej aplikácie

Tento návod je pre Neuroph v2.6.

1. Rozpoznávanie obrazu s Multi Layer Perceptron

Každý obrázok môže byť reprezentovaný ako dvojrozmerné pole, kde každý prvok že pole obsahuje farba informácie o jeden pixel. (obrázok 1)

Obrázok 1. farieb Obrazu

Každá farba môže byť reprezentovaný ako kombinácia troch základných farebných zložiek: červená, zelená a modrá.

Obrázok 2. RGB farebný systém

Tak, predstavujú určitý obrázok v RGB systém môžeme použiť tri dvojrozmerné polia, jeden pre každú farebnú zložku, kde každý prvok zodpovedá jednému obrazu pixel.

int [][] redValues
int [][] greenValues
int [][] blueValues

Napríklad, ak pixel na umiestnenie [20, 10] má farbu RGB[33, 66, 181] máme

redValues[10][20] = 33;
greenValues[10][20] = 66;
blueValues[10][20] = 181;

Rozmery každej z týchto polí sú [imageHeight][imageWidth]

Môžeme zlúčiť tieto tri polia do jedinej-rozmerné pole tak, aby obsahoval všetky červené hodnoty, potom všetky zelené a na konci všetkých modrá hodnoty. To je, ako vytvárame flattenedRgbValues [s] array.
Rozmer tohto poľa je [imageHeight * imageWidth * 3]
Teraz môžeme použiť jednorozmerné pole ako vstupu pre neurónovú sieť, a aby vlak neurónovú sieť rozpoznať alebo zaradenie nimi. Multi layer perceptrons sú typ neurónové siete vhodné na tejto úlohy (obrázok 3).

Obrázok 3. Kŕmenie multi layer perceptron s farbou informácie z obrazu. Každý vstupný neurón zodpovedá jednej farebnej zložky (RGB) jedného obrazu pixel na konkrétne miesto.

Každý výstup neurónu zodpovedá jednej snímky alebo snímky triedy. Takže ak sieť výstup je [1, 0, 0] to znamená, že vstup je uznávaný ako “obrázok”.
Môžeme vytvoriť vzdelanie ustanovené pre vzdelávanie neurónové siete ako nastaviť z dvojice vstup (vyrovnať rgb polia) a výstupné vektory (ak príslušný obrázok neurón je 1).
Sieť môže byť vyškolení pomocou Backpropagation algoritmus učenia. V ďalšej časti sa budeme poskytovať niektoré podrobnosti o neurónových netwok a learnig algoritmus.

2. Školenia Neurónovú Sieť pre Rozpoznávanie Obrazu s Neuroph Studio

Neuroph Studio poskytuje prostredie pre vytváranie a odbornej prípravy neurónové siete, ktoré môžu byť uložené ako ready-to-použitie java komponentov. Tiež poskytuje špecializované rozpoznávanie obrazu nástroj na vlak neurónové siete pre rozpoznávanie obrazu. Vytváranie a odbornej prípravy neurónovú sieť pre rozpoznávanie obrazu pozostáva z nasledujúcich krokov:

  1. Vytvoriť Neuroph projektu
  2. Vytvoriť rozpoznávanie obrazu neurónovú sieť
  3. Vlak siete
  4. Test siete
  5. Uložte a nasadzujte sieť

Krok 1. vytvoriť Neuroph Projektu kliknite na tlačidlo File > Nový Projekt

Vyberte Neuroph Projektu, a kliknite na tlačidlo Ďalej.

Zadajte názov projektu a jeho umiestnenie, kliknite na tlačidlo Dokončiť.

To vytvorí nové Neuroph Projektu.

Krok 2. Ďalej, ak chcete vytvoriť rozpoznávanie obrazu sieť, kliknite na tlačidlo File > Nový Súbor.

Vyberte položku Rozpoznávanie Obrazu typ súboru a kliknite na tlačidlo Ďalej.

Potom vyberte obrázky, ktoré chcete byť uznaná, výberom jednotlivých obrázkových súborov, alebo pridaním celý obrázok directoriey. Môžete to urobiť základné úpravy obrázkov, ako je orezanie a veľkosti, otvorením jednoduché
editor snímok s tlačítko upraviť.

Režim Farieb – môžete použiť rozpoznávanie obrazu v plnej farbe režime alebo v binárnych čiernobielom režime. Binárne čiernej a bielej, režim predstavuje pixel [0, 1] a tak to používa menej počet vstupných neurónov. Pre niektoré aplikácie (ako je rozpoznávanie znakov napríklad) binárny čiernej a bielej, režim môže byť optimálne riešenie.

V ďalšom kroku zvoľte obrázok, ktorý shoul dnot byť uznaná, ktoré vám pomôžu, aby sa zabránilo falošným uznanie. Zvyčajne sú tieto bloky všetky červený, zelený a všetky modré zábery, ale aj migh obsahovať iné.
Keď si vyskúšať svoje rozpoznávanie obrazu siete, môžete si zistiť, čo dáva zmysel, patrí tu.

Potom zadajte Školenia Nastaviť značky a Image Vzoriek Rozlíšenie a kliknite na tlačidlo Ďalej.

Školenia Nastaviť Label – Pretože si môžete vytvoriť rôzne tréningové súpravy pri experimentovaní s siete, je to dobrý zvyk na štítku nich.

Snímka vzoriek rozlíšenie (šírka x výška) – Všetko za predpokladu, obrázky bude zmenšený na túto veľkosť (šírka x výška). Mierka snímky sa, aby boli menšie, a oni budú jednoduchšie a rýchlejšie učiť. Obraz rozmery určiť veľkosť vstupných vektorov, a počet neurónov vo vstupnej vrstve. (ak ste si java haldy výnimky pre niektoré rozmer, skúste zvýšiť veľkosti haldy pre JVM)

Pre začiatok môžete použiť predvolené nastavenia (20×20 rozlíšenie a farebný režim), a práve poskytovať obrázky.

Ďalšia vec, ktorú urobiť, je vytvoriť neurónovú sieť.

Vytvoriť neurónových sieti, musíte zadať nasledovné:

Sieť label – označenie pre neurónovú sieť, ktorá je užitočné, keď si vytvoriť niekoľko neurónové siete pre ten istý problém, a vy ste porovnaním.
prenosová funkcia – Toto nastavenie určuje, ktoré prenosová funkcia sa používa neurónov. Vo väčšine prípadov môžete ponechať predvolené nastavenia “Sigmoid”, ale niekedy sa používa “Tanh” je vám lepšie výsledky.
Skrytý Neurón Vrstvy Počíta – To je najviac dôležité nastavenie, ktoré určuje počet skrytých vrstiev v sieti, a počet neurónov v každej skryté vrstvy. Skryté vrstvy sú vrstvy medzi vstupom a výstupom vrstvy. Trik je mať najmenší možný počet vrstiev a neurónov, ktoré môžu úspešne učiť školenia nastaviť. Menší počet neurónov – rýchlejšie učenie, lepšie zovšeobecnenie. Vhodný počet skrytých neurónov tiež závisí od počtu vstupných a výstupných neurónov, a najlepšiu hodnotu možno prišiel na to, ktoré experimentujú. Spustiť, skúste 8×8 snímky a jednu skrytú vrstvu s 12 neurónov, ktorá je predvolené nastavenie. Ak ste wany zvýšiť počet neurónov, stačí zadať číslo, napríklad ’12’ neurónov. Ak chcete pridať viac ako jednu vrstvu neurónov zadajte počet neurónov v každej vrstvy oddelený priestor. Napríklad, ak zadáte ’12 8 6′ to bude vytvoriť tri skryté vrstvy s 12, 8 a 6 neurónov.

Kliknite na tlačidlo ” Dokončiť‘ vytvoriť neurónovú sieť. Po kliknutí na tlačidlo nové okno s vytvorené neurónové siete sa otvorí.

Krok 3. Training network. Vlak siete vyberte školenia nastaviť z projektu strom, a kliknite na tlačidlo ” Vlak‘.

Otvorí sa dialógové okno pre nastavenie učenia parametre. Použite predvolený vzdelávania nastavenie a kliknite na tlačidlo Vlak tlačidlo.

To bude začiatok školenia a otvoriť sieťové vzdelávania graf a iterácia počítadlo, takže môžete obesrve v procese učenia. Ak vzdelávania uviazne (celková chyba siete nie ísť dole), môžete sa pokúsiť s rôznym počtom neurónov vrstvy alebo učenie parametre. Pre učenie rýchlosť a dynamiku používajú hodnoty od [0, 1] , a za chyby niektoré malé hodnoty nižšie ako 0,1 je odporúčané. Niektoré pravidlo palca hodnoty sú 0,2 pre vzdelávacie kurz a 0,7 pre hybnosť.

Krok 4. Test Siete

Po vyškolení siete môžete vyskúšať, ako to funguje v testovacom paneli. Kliknite na tlačidlo ” Vyberte položku Test Obrázok‘ nastaviť vstupný obrázok pre sieť a sieť bude výstup zobrazený ako zoznam obrázkových štítky a príslušný neurón výstupy. Rozpoznaný obrázok zodpovedá neurón s najvyšší výkon. Môžete otestovať celý súbor údajov kliknutím na tlačidlo ” Test celého súboru údajov,‘.

Krok 5. Uložiť neurónové siete

Ak chcete uložiť neurónové siete ako Java súčasť, kliknite na položku [main menu (Hlavné menu > Súbor > Uložiť] a pomocou .nnet rozšírenie. Sieť bude uložená ako seralized MultiLayerPerceptron objekt.

3. Použitie rozpoznávania obrazu Neuroph vo vašich aplikáciách

Tu je ukážkový kód, ktorý ukazuje, ako používať neurónovú sieť na rozpoznávanie obrázkov vytvorenú a vyškolenú v spoločnosti Neuroph Studio . Môžete spustiť túto vzorku, zadajte správne názvy súborov pre neurónovú sieť a niektoré testovacie obrázky.

import org.neuroph.core.NeuralNetwork; import org.neuroph.contrib.imgrec.ImageRecognitionPlugin; import java.util.HashMap; import java.io.File; import java.io.IOException;

verejná trieda ImageRecognitionSample {

public static void main (String [] args) {
// načítať vyškolenú neurónovú sieť uloženú s Neuroph Studio (zadajte niektoré existujúce neurónové súbory tu)
NeuralNetwork nnet = NeuralNetwork.load (“MyImageRecognition.nnet”); // zaťaženie vyškolená neurónová sieť uložená s Neurophom Studio
// získať plugin na rozpoznávanie obrázkov z neurónovej siete
ImageRecognitionPlugin imageRecognition = (ImageRecognitionPlugin) nnet.getPlugin (ImageRecognitionPlugin.class); // získajte plugin na rozpoznávanie obrázkov z neurónovej siete

skúste {
// rozpoznávanie obrázkov prebieha tu (zadajte niektoré existujúce súbory obrázkov)
HashMap <String, Double> výstup = imageRecognition.recognizeImage (nový súbor (“someImage.jpg”));
System.out.println (output.toString ());
} úlovok (IOException ioe) {
ioe.printStackTrace ();
}
}
}

Skutočné rozpoznávanie obrázkov sa vykonáva len s jedným volaním metódy z ImageRecognitionPlugin:

imageRecognition.recognizeImage (nový súbor (“someImage.jpg”));

ImageRecognitionPlugin poskytuje jednoduché rozhranie na rozpoznávanie obrazov na neurónovú sieť. Rozpoznávať obrázky z rôznych zdrojov, ako Súbor, BufferedImage alebo URL. Napríklad:

imageRecognition.recognizeImage (nová adresa URL (“http://www.example.com/someImage.jpg”));

Viac podrobností skontrolujte triedy v balíku org.neuroph.contrib.imgrec .
Ak chcete použiť triedy rozpoznávania obrázkov, musíte do svojho projektu pridať odkaz na projekt neuroph.jar (kliknite pravým tlačidlom myši na projekt> Vlastnosti> Knižnice> Pridať JAR / Priečinok)

RIEŠENIE PROBLÉMOV

1. Rozmery rozmerov obrázkov používané na tréning na rovnaké rozmery, aby sa zabránilo možným problémom.
2. Použite rovnaký farebný režim a rozmery obrázkov na výcvik a rozpoznávanie. Ak farba nie je dôležitá pre používanie čiernej a bielej, pretože výcvik je rýchlejší.
3. Ak máte výnimky z pamäte pre väčšie obrázky, zväčšite veľkosť pre JVM s možnosťami -Xms a -Xmx.

Leave a Reply

Your email address will not be published. Required fields are marked *