LARS ULVELAD HOPFIELDÄTVERK FÖR IGEKÄIG AV DEGRADERADE BILDER OCH HADSKRIVA TECKE E PROJEKTRAPPORT FÖR PROJEKTKURSE I BILDAALYS HT 02
Teori för Hopfieldnätverk Hopfieldmodellen är en typ av neuronnät, där vare neuron återkopplas till alla andra neuroner med en enhetsfördröning. Vare neuron är en överföringsfunktion av de viktade utsignalerna från de andra neuronerna, fördröda ett steg. Vikterna är alltid symmetriska. Typiskt använder man här tangens hyperbolicus, där derivatan i origo betecknas neuronens förstärkning. Om förstärkningen är oändlig blir funktionen en stegfunktion, och modellen blir diskret. Hopfieldnätverkets dynamik beskrivs av en uppsättning icke-linära differentialekvationer av första ordningen. Systemets Lyapunovfunktion definieras av: E = 2 i= = w x x Vars derivata ges av: i i + = R x 0 ϕ ( x) dx = I x de dt = = i= v wi xi R + I dx dt Där R och v kommer från den neurodynamiska modellen för neuronen, som bygger på en beskrivning av neuronen som en elektrisk förstärkare Existensen av en Lyapunovfunktion innebär att modellen är stabil, enligt Lyapunov s första teorem. Vidare kan man visa att derivatan bar är 0 i fixpunkterna, och positiv i alla andra punkter. Hopfieldnätverket är då asymptotiskt stabilt, och attraktorns fixpunkter är minima i energifunktionen. Den i Matlab implementerade Hopfieldmodellen använder överföringsfunktionen Satlin, som är linär mellan och, och sign-funktionen för alla andra x. För att lagra en bild kodar man den binärt med tillstånden och, och presenterar den för nätverket. Presentationen går till så att noderna fixeras till bilden, och vikterna beräknas enligt: w i = M µ = ξ µ, ξ µ, i Där M är antalet bilder som ska läras in. En viktig egenskap vid denna inlärning är att den bara görs en gång. Beräkningskomplexiteten är dock ganska hög, eftersom antalet vikter är 2 -. En bild med 32x32 pixlar har 24 punkter, och därmed 047 2 vikter. En normalstor bild på t ex 2x2 pixlar skulle kräva en viktmatris med 2 36 element. Om vare vikt är ett 32-bitars flyttal kommer nätverket att kräva 26 Gigabyte minne. En komplikation som uppstår i nätverket är sporadiska tillstånd, fixpunkter som inte svarar mot någon av de presenterade bilderna. Utöver bilderna finns alltid de negativa bilderna, samt ett varierande antal linärkombinationer av bilderna och deras negativ samt origo, som alltid är en ganska stark attraktor. Det finns ett antal metoder att minimera antalet sporadiska tillstånd, och i de experiment ag gorde var problemet litet. Genom omfattande statistiska beräkningar kan man visa att det största antalet stabila bilder är 0.4 gånger antalet noder. Det går alltså att packa ihop ca 40 stabila bilder i på 32x32 pixlar. Med bilder på 2x2 går det att lagra 36700 st, eller totalt Gigabyte data. Sannolikheten att lyckas återskapa bilden ökar kraftig när M minskar mot ca 0.7, varefter nätverket är mycket stabilt även för kraftigt störda bilder. 2
EXPERIMETE Jag genomförde 2 olika försök med hopfieldmodellen. Det första gick ut på att undersöka hur kraftigt störda bilder som kunde återställes i ett nätverk med stor redundans. Som testbilder valde ag windowsikoner eftersom dessa oftast är lika stora och enkelt uppbyggda med olika geometrier. Då bilderna var 32x32 pixlar säger teorin att ca 40 bilder kan lagras i nätverket. Jag fann 37 lämpliga bilder och inkluderade dessa i försöket. Bilderna visade en god spridning, med allt ifrån enstaka kraftigt avvikande utseende till grupper med nästan identiska bilder. I det andra försöket använde ag en databas med ca 9000 handskrivna siffror för att undersöka om Hopfieldnätverket kunde användas för OCR. Båda försöken utfördes i Matlab. För att kunna genomföra bildrestaurering på degraderade ikoner skrev ag ett matlabprogram som läste in bilderna, trösklade dem och skalade om dem till binära bilder på intervallet -... ätverket tränades sedan med dessa bilder. Jag degraderade sedan indatabilderna på två olika sätt, dels med peg-kompression, dels med wavelettransformen. Alla bilder komprimerades med samma inställningar för kvalitet, oavsett vad resultatet blev för den aktuella bilden. Tabellen nedan visar hur många bilder som återkallades korrekt beroende på kompressionsgrad. För JPEG anges hur många procent av koefficienterna som behölls, för wavelet anges tröskeln. För trösklar över 2 behölls i allmänhet inga koefficienter utöver det globala medelvärdet. Två av bilderna förstördes totalt under förbehandlingen, men finns med ändå. De flesta felklassificerade bilder klassades som tomma, vilket innebär att de hamnat i fixpunkten i origo, som är mycket start. I flera fall berodde det också på att kompressionen kollapsade och bara en tom bild blev kvar. KOMPRESSIO FEL KOMPRESSIO FEL JPEG % WAVELET 0 JPEG % 3 WAVELET. 0 JPEG 2% 4 WAVELET 2 3 edan visas några exempel med originalbild, degraderingar och de återskapade bilderna. Överst till vänster visas de originalbilderna, behandlade för att utgöra lämpliga indata till ett Hopfieldnätverk. Mittenkolumnen visar underst bilden efter wavelet-kompressionen, överst den restaurerade bilden. Höger visas motsvarande peg-bilder. 2 2 2 2 2 2 2 2 2 2 Wavelettröskeln är här, och JPEG-kvaliteten %. Trots detta ser nätverket lätt skillnad på bilderna. Även med lägsta kvaliteten klarar nätet detta bildpar 3
2 2 2 2 2 2 2 2 2 2 Wavelettröskel:, JPEG-kvalitet: %. Till vänster visas ett exempel på felklassificering av JPEGbilden. 2 2 2 2 2 2 2 2 2 2 Exempel på bilder komprimerade med JPEG 2 % och tröskel 2 för Wavelet. Den högra bilden klassades korrekt trots att tre liknande ikoner förekom bland bilderna. Det andra experimentet undersökte hur bra Hopfieldmodellen var på att känna igen handskrivna siffror. Till mitt förfogande stod en databas med ca 90 handskrivna siffror som kom ifrån riktiga brev. Då Hopfieldmodellen inte har några speciella parametrar att ändra på, och arkitekturen helt beror på storleken av vare bild är förbehandlingen av indata den enda möligheten att påverka prestanda. I mitt första försök skapade ag konstgorda typiska siffror och tränade nätverket med. Senare prövades att plocka de tre första siffrorna av vare sort och träna nätverket med. Då tränades nätverket med siffror, och testades sedan genom att resultatet efter iterering matchade något av de tre alternativen. Om så var fallet godkändes identifieringen. Bilderna var 6 x 6 pixlar stora och nätverket hade således 26 noder och 6 280 vikter. Att stoppa in bilder, som dessutom måste få ha stora inbördes likheter, t ex 8:or och :or, innebär att felsannolikheten inte längre är försumbar. ätverket var dock stabilt och presterade lite bättre än den första. är inte heller detta gav tillräckliga prestanda genomfördes en annan åtgärd, nämligen en omskalning som innebar att alla siffror, ettor som nollor, fyllde ut bilden helt. Detta medförde dock att nätet med bilder ur träningsdata inte längre fungerade speciellt bra, och prestanda sönk. är alla tester genomförts visade det sig att de nätverk som tränats med st slumpmässigt valda exempel presterat bäst. u ligger den stora flaskhalsen istället i antalet noder. Genom att studera antalet felklassificeringar till sporadiska tillstånd ser man att dessa är ett allvarligt problem då av maximalt 37 mönster, varav många likartade, lärts in. Två stora problem som försämrade prestanda kraftigt var dels fel i facit, enstaka siffror som klassats felaktigt, ofta på grund av total oläslighet, dels felvända siffror. Det må finnas rotationsinvarianta OCR-metoder, men Hopfieldnätverk hör inte till dessa. Uppskattningsvis ett par procent av siffrorna var felaktiga på ett sätt eller annat. 4
ÄTVERK FEL I PROCET typsiffror 48,9 % exempel 43,3 % typsiffror, kvadratiserade 48,9 % exempel, kvadratiserade 42, % För att förbättra prestanda ytterligare bör man läsa in bilderna med högra upplösning. Antalet siffror som går att träna in ökar kvadratiskt, och med upplösningen 32 x 32 är det maximala antalet 43, och det rekommenderade runt 70. Väler man sedan dessa 7 exemplar av vare siffra noggrant och representativt kan man ytterligare öka prestanda. Man kan t ex låta ett Hopfieldnätverk avgöra vilka som är lämpliga att använda genom att studera hur snabbt olika siffror konvergerar mot ett visst exempel. Det skulle även vara möligt att bygga en klustringsmaskin på detta vis. Man kan också förbättra identifiering av itererade tillstånd genom att inte kräva :-matchning, utan istället mäta avståndet mellan tillståndet och närmaste äkta tillstånd, t ex i minsta kvadratmening. Man kommer då inte bara att täcka in de siffror som lärts in, utan även ett stort antal linärkombinationer av dessa. Dessutom kommer man kunna använda ytterligare ett neuralt nätverk för att tolka resultaten från Hopfieldnätverket. Om en skriven siffra är ett gränsfall mellan två siffror kan den med viss sannolikhet antas iterera till ett tillstånd som ligger nära båda dessa siffror, och därmed ge information om två alternativ för den siffran. edan visas några exempel på hur siffrorna såg ut.
6