Ett Neuralt Nätverk Tittar På Kläder

Relevanta dokument
729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann

Liswi948, Lisa Widerberg, liswi948 Fördjupningsarbete Linköpings Universitet 729G43, Artificiell Intelligens

729G43 Artificiell intelligens (2016) Maskininlärning 3. Marco Kuhlmann Institutionen för datavetenskap

Neurala nätverk och språkigenkänning. Henrik Linnarsson. Linköping University

Sub-symbolisk kognition & Konnektionism. Kognitionsvetenskaplig Introduktionskurs (729G01) Mats Andrén,

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA

Artificiell Intelligens Lektion 7

729G43 Artificiell intelligens (2016) Maskininlärning 2. Marco Kuhlmann Institutionen för datavetenskap

Word2Vec. Högkvalitativa vektorrepresentationer av ord tränat på stora mängder data. Innehåll LINKÖPINGS UNIVERSITET. 1. Inledning...

Statistisk mönsterigenkänning

729G43. Neurala faltningsnät MASKINSYN PÅ SVENSKA VENDELA FOLKER ÅKERLIND

Vad är Artificiell Intelligens (AI) Olika typer av AI och deras användningsområden Innovation med hjälp av AI Framtiden och etiska frågeställningar

Comparing artificial neural network algorithms for classification of reviews

Artificiell Intelligens den nya superkraften

Google Assistant & WaveNet

ARTIFICIELLA NEURALA NÄT. MARCO KUHLMANN Institutionen för datavetenskap

Hierarchical Temporal Memory Maskininlärning

Tentamen Bildanalys (TDBC30) 5p

Ansiktsigenkänning med MATLAB

de var svåra att implementera och var väldigt ineffektiva.

Histogram över kanter i bilder

Objektorienterad programmering

med hjälp av Deep Reinforcement Learning

Registerforskning Oktober 2018, Stockholm City Conference Centre. Möjligheter med Artificiell Intelligens inom registerforskningen

Vindkraft och ML. - hur kan vindkraft dra nytta avml

Linköpings universitet

Modeller och simulering av språkprocessning

Introduktion till programmering. Programspråk och paradigmer

2D Potentialen i en nervcell definieras normalt som skillnaden i spänning mellan dess axon och dendrit.

Perception och Maskininärning i Interaktiva Autonoma System. Michael Felsberg Institutionen för systemteknik Linköpings universitet

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Igenkänning av bilddata med hjälp av Kohonen-nätverk, samt beskrivning av program

Föreläsning 7: Klassificering, minsta kvadratproblem, SVD, forts.

729G43 Artificiell intelligens / Maskininlärning 2. Marco Kuhlmann

Matematik inom tekniksektorn Adam Andersson, MY-dagen 2016

Kognitionsvetenskap C, HT-04 Mental Rotation

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Optimering av hyperparametrar till artificiella neurala nätverk med genetiska algoritmer.

Genetisk programmering i Othello

Introduktionsmöte Innehåll

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Bildmosaik. Bilddatabaser, TNM025. Anna Flisberg Linne a Mellblom. linme882. Linko pings Universitet

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Matcha rätt hjärta till rätt patient med AI. Dennis Medved

Martin Burström [dit02mbm] Robert Eriksson [dit02ren] Filip Sjögren [dit02fsn] Handledare: Therese Edvall Daniel Ölvebrink :13

3.0. Tips och Trix Sida 1 av 18

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Laboration 2: Designmönster

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

LUNG-SEGMENTERING FÖRBEHANDLING AV MEDICINSK DATA VID

Maskininlärning med boostrapping. Maskininlärningslabb i Språkteknologi

Skapa om geometriskt na tverk

Att programmera en Beethoven

Visuell GUI Testning

TANA17 Matematiska beräkningar med Matlab

Enlagersnät Flerlagersnät Generalisering. Artificiella Neuronnät

Shakey s värld med HTNplanering

Obligatoriska uppgifter i MATLAB

DEEP LEARNING I STARCRAFT 2 AUTOENCODERS FÖR ATT FÖRBÄTTRA END-TO-END LEARNING

Projektion av träningsdata på aktuell underrum av dim 1. Föreläsning 7: Klassificering, minsta kvadratproblem, SVD, forts.

Artificiella Neuronnät

TEM Projekt Transformmetoder

Virtuella assistenter för bättre kundupplevelser

Gränssnitt för FakeGranska. Lars Mattsson

Big Data för Fordon och Transport! Vår Digitala Framtid, Trafikverket!! Björn Bjurling, SICS Swedish ICT, !

Dependensregler - Lathund

ATT ARBETA MED VEKTORGRAFIK

EnBlightMe! - ett automatiserat stödsystem för upptäckt av potatisbladmögel

Algoritmer och maskininlärning

Projekt i bildanalys Trafikövervakning

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

LARS ULVELAND HOPFIELDNÄTVERK FÖR IGENKÄNNING AV DEGRADERADE BILDER OCH HANDSKRIVNA TECKEN

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Project Specification: Analysis of voting algorithms

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

Användarverifiering från webbkamera Sami Alajarva

Självlärande Othello-spelare

Neural bas för kognition

SHAZAM! En!smart!musiktjänst! Linha108! Fördjupningsarbete!729G43!

Programmeringsappar. Av Alex

Övningsuppgifter kapitel 8

EDAA01 Programmeringsteknik - fördjupningskurs

Hantering av hazards i pipelines

Att använda Weka för språkteknologiska problem

Användargränssnitt för proaktiv störningshantering för utilities

Bildbehandling, del 1

Grundkurs i programmering - intro

Medicinska Bilder, TSBB31. Lab: Mätvärden på Medicinska Bilder

Self-Organizing Maps

Att referera till objekt

Projekt 3: Diskret fouriertransform

Introduktion BAS On-Line

Laboration 2: Designmönster

ARTIFICIELL INTELLIGENS (DEL 2)

Examensarbete Kandidatexamen En jämförelse mellan två öppna ramverk för objektigenkänning

Transkript:

[Skriv här] [Skriv här] [Skriv här] 2019 Ett Neuralt Nätverk Tittar På Kläder ETT KONVOLUTIONELLT NEURALT NÄTVERK KATEGORISERAR FASHION MNIST DATASETET WILHELM BRODIN, WILBR797

1.1 Inledning En människas förmåga att se och förstå grundar sig i det neurologiska system som finns i den mänskliga hjärnan. Där visuella percept formas och förståelse skapas. Datorseende är ett sätt som en dator kan efterlikna det med program för objektigenkänning. De fungerar genom mönsterigenkänning som liknar den mänskliga perceptuella processen. The British Machine Vision Association and Society for Pattern Recognition beskriver datorseende som en process att automatiskt extrahera och analysera bilder och video för att uppnå visuell förståelse (What is computer vision, 2018). En annan datorbaserad teknik som liknar processer är neurala nätverk. Med introduktionen av gradient back propagation och enorma mängder data öppnades möjligheterna för neurala nätverk (Schmidhuber, 2014). En av dem är användandet av convolutional neurala nätverk för objektigenkänning(p & Raj, 2018). Denna rapport är ett exempel på hur detta kan implementeras. Rapporten består av två huvuddelar, en inledande del där begrepp som är relevanta för implementationen förklaras och den andra delen där implementationen läggs ut. Detta avslutas sedan med en utvärderande diskussion kring implementationen. 1.2 Vad är CNN Ett convolutional neuralt nätverk är ett nätverk som itererar över den data som pixlarna i en bild utgör och plockar ut de särdrag som framstår i bilden. För att detta ska vara möjligt behöver den bilddata som ska behandlas av nätverket vara i vektorform (P & Raj, 2018). En bild i RGB format är varje pixel i bilden en vektor med tre dimensioner, en för varje värde i färguppsättningen. Bilder i gråskala behöver enbart en vektor med en dimension för varje pixel. Det är sedan möjligt att ta ut särdrag i bilden med hjälp av siffervärdena på bildens utseende. Denna särdragsdetektering är var nätverket ser formerna som finns i bilden. I det första lagret av noder som utgör särdragsdetektering plockas de mest fundamentala formerna ut (P & Raj, 2018). Till exempel, horisontella eller vertikala linjer, kanter eller enklare geometriska former. Om nätverket innehåller fler convolutional lager så kombineras de tidigare detekterade särdragen och mer komplicerade mönster kan detekteras ju fler lager som implementeras. Detta görs genom att applicera ett filter bestående av en viktad matris som utgör det särdrag som den noden i nätverket ska detektera. Storleken på matrisen avgör storleken på särdraget som kan detekteras, vanligast idag är matriser mellan 2x2 och 5x5 när data i två dimensioner behandlas (Heravi, 2017). 1.3 Vilka delar har ett CNN För att ett nätverk ska kunna utföra effektiv objektigenkänning med lager av convolutional noder krävs en stödstruktur av lagren innan och efter. Andra lager av noder som är vanliga tillsammans med convolutional noder är poolinglager och aktiveringslager med ReLU som aktiveringsfunktion. En poolingnod är en nod som flyttar en matris längs en bild, som en convolutional nod gör, men i retur 1

ger den värdet på den pixeln med högst värde. Förutsatt att det är ett maxpooling lager, minpooling lager ger istället den vektor med lägst värde. Resultatet efter ett maxpool lager är en bild där mönster och särdrag som är tydliga i bilden blir förstärkta medan de mindre framträdande särdragen minskar eller försvinner helt. Detta gör ett maxpooling lager till ett bra komplement till ett convolutional lager i och med att convolutional lagret plockar ut särdrag och maxpooling lagret förstärker dem (Coors, 2016). Aktiveringslager är helt sammansatta lager. Det betyder att alla noder i föregående lager är kopplade till alla noder i aktiveringslagret, och att alla noder i aktiveringslagret är kopplade till alla noder i nästkommande lager. Aktiveringslagret används för att sätta alla negativa värden från föregående lager till noll medan den behåller positiva värden som de är. Detta sker genom att använda ReLU (Rectified Linear Unit) som aktiveringsfunktion. Ett aktiveringslager med ReLU som aktiveringsfunktion gör det möjligt att hantera både linjärt separerbara och icke linjärt separerbara samband i informationen från tidigare lager. Ett sista lager som är vanligt förekommande vid objektidentifiering är ett klassificeringslager. Antalet noder i ett sådant lager är samma antal klasser som data kan sorteras in i och de är fullt sammankopplade med det föregående lagret. Det som sedan avgör vad nätverket har klassat en bild som är vilken av de noder som har högst värde. Den klass som noden med högst värde representerar är den klass som nätverket har klassat bilden som (Adit, 2019) 1.4 Syfte Denna rapport är ett exempel på implementation av objektidentifiering med ett convolutional neuralt nätverk. Det är alltså inte ett försök att flytta några gränsar för vad som är möjligt med neurala nätverk eller deep learning. Det nätverk som redovisas i denna rapport skapas för att klassificera bilder på kläder ur MNIST fashion datasetet i 10 olika klasser. 2.1 Metod Nätverket skrevs i Google Colabs python notebook miljö i programmeringsspråket python version 2.7. Programmeringsbiblioteken tensorflow (Google, 2019) och keras (Keras, 2019) användes för att bygga själva nätverket och strukturen utgår ifrån tensorflows tutorial i feedforward nätverk (Google, 2019). Det dataset som används är MNIST fashion (Xiao, 2019). Plattformen Google Colab är en notebook som compilerar, exekverar python(python2.7 eller python3.6) kod och visar resultatet av den i samma notebook utan att behöva använda en terminal. Den är användbar för att skriva enklare program som är avgränsade till ett dokument. Google Colab ger även möjligheten att dela upp koden i mindre celler för att exekvera dem separat (Google, 2019). Därför skrevs koden i python version 2.7. Men det krävs mer än enbart Google Colab och python för att göra ett nätverk på ett tidseffektivt 2

sätt. Därför användes programmeringsbiblioteken Tensorflow och Keras. Tensorflow är ett flexibelt interface för maksininlärning från Google. Det går att framställa neurala nätverk med modulerna i tensorflow men det finns andra bibliotek som är inriktade på just convolutional neruala nätverk delen av maskininlärning. Keras är ett sådant bibliotek, vilket stödjer convolutional neurala nätverk och är kompatibelt med python verions 2.7, samt med tensorflow. Istället för att behöva manuellt räkna ut storleken på matrisen av pixla efter varje lager så håller keras reda på det och anpassar följande lagren efter. Mjukvarubiblioteket är uppbyggd så att användaren ska snabbt kunna sätta ihop olika moduler till sitt nätverk och är även designat för att minska kognitiv belastning (Keras, 2019). 2.2 Data MNIST fashion var det dataset som valdes för att träna och forma nätverket runt. Det är ett nätverk som tillhandahålls av nätbutiken Zalandos forskningsgrupp (Xiao, 2019). Setet består av 60 000 träningsexempel och 10 000 testexempel på olika klädesplagg som har 10 olika klasser. Det ursprungliga MNIST datasetet har använts väldigt flitigt, till exempel i introduktionskurser för artificiell intelligens och maskininlärning. MNIST Fashion är ett försök att skapa ett alternativt dataset med samma form. Denna form är 28x28 pixlar i gråskala. Gråskalan innebär att den vektor som pixeln omvandlas till endast har ett värde, nämligen det värde som är pixelns värde på gråskalan. Bilder som är i RGB-skala skulle ha pixlar med tre värden, ett för det röda värdet i pixeln, ett för det gröna och ett för det blåa värdet i pixeln. 2.3 Utformning av nätverket Uppgiften att sätta upp en struktur för att kunna ta in data, forma den så att den passar för maskininlärning kan ta en hel rapport i sig själv att beskriva. Därför beslutade jag att använda en del av koden i en av Tensorflows tutorials som är fri att användas av alla. Den ligger under en MIT lisens och François Chollet äger upphovsrätten på koden (Chollet, 2019). Den delen av koden laddar ner tidigare nämnda MNIT fashion datasetet, delar upp data i träningsbilder och testbilder tillsammans med deras respektive kategori. Sedan sker två saker med data för att forma den till detta nätverket. Först divideras varje pixels värde med 255.0. Detta görs för att den gråskala som används går från 0 till 255 så varje pixel har ett värde mellan 0 och 255. När de sedan divideras så får de ett värde mellan 0 och 1. En reshape funktion körs också på tränings och testdata för att lägga till antalet dimensioner på vektorn för varje pixel, vilket är 1 i detta fall. Det neurala nätverket börjar med ett Conv2D lager med 40 noder och en kernel på 3x3 pixlar. Lagret har också ReLU som aktiveringsalgoritm och definierar bildens ursprungliga storlek och hur många värden pixelvektorerna har (28, 28, 1). Efter convolutions lagret så kommer ett Dense lager som är fullt sammankopplat med 128 noder och igen ReLU som aktiveringsalgoritm. Efter det föl er ett MaxPooling2D lager som har en 3

poolsize på 2x2 pixlar och en stride på 2 pixlar. Ett till Dense lager som är utformat likadant som det tidigare nämnda lagret. De sista två lagren består av ett Flatten lager som tar den data som tidigare var i matrisformat och gör om den till en enda lång lista med alla pixelvektorer efter varandra och ett Dense lager med 10 noder och softmax som aktiveringsfunktion. I processen att skapa nätverket så testades en rad olika kombinationer av hyperaparametrar. Hyperparametrar är samlingsnamnet för de variabler som nätverket inte kan justera själv för att göra sig själv mer precist i sin uppgift att identifiera klädesplaggen. Två av de olika variablerna som justerades är antalet omgångar convolution med stödlager i nätverket och antalet neuroner i varje lager. Det slutgiltiga valet att ha en omgång av conlvoltion och stödlager istället grundade sig i att nätverkets precision försämrades med fler omgångar, samtidigt som träningstiden ökade avsevärt. Detta innebär att nätverket inte kan identifiera komplexa mönster med kombinationer av särdrag. Utan enbart enkla mönster som kanter och profiler på objekt. Istället gjordes valet att använda 40 noder i convolution lagret. Detta efter tester att använda väldigt för noder (10st) till många (upp till 784st). Kombinationen av att använda en omgång convolution med 40 noder i detta lager samt en kernel storlek på 3 (3x3) innebar för att nätverket som tidigare nämnt inte kan upptäcka komplexa mönster men att det har möjlighet att särskilja 40st olika enklare särdrag. Efter att alla lager i nätverket specificerats angavs hur nätverket ska tränas med en compile funktion. Tre parametrar definierades vid kompileringen: vilken steglängd som ska användas vid felkorrigering, hur loss räknas ut. Samt vad som ska mätas för att utvärdera nätverket, i detta fall accuracy. För att avgöra steglängd användes AdamOptimizer. Det är en algoritm som gör steglängden (korrigeringen av vikter hos noderna i nätverket) mindre allteftersom felet blir mindre i nätverket (Kingma & Ba, 2015). Loss avser hur stor sannolikhet nätverket lade på fel alternativ. Ett större loss-tal visar att nätverket är mer osäker på vilken klass objektet på bilden har och kan tyda på att nätverket undertränats. Medan ett litet loss-tal kan visa på att nätverket har övertränats och helt enkelt memorerat all data (Coors, 2016). Den algoritm som valdes för att räkna ut loss i nätverket var sparse categorical crossentropy. 2.4 Träning av nätverket Nätverket tränades på bilderna och etiketterna som är benämnda train_images och train_labels. Detta gjordes i batches (omgångar) på 32st då den variabeln lämnades på sitt default värde. Hela testmängde nittererades över fem gånger (5 epochs). 2.5 Test av nätverket När nätverket tränats på alla 60 000 träningsbilder så ska det testas. Tidigare definierades vilket attribut som nätverket skulle testas på, accuracy, med evaluate funktionen följer visas även loss. Nätverket testas genom att de bilder som tingats för testning (test_images) körs genom nätverket och visar hur stor andel bilder som klassades korrekt och hur många som klassades fel. Det utgör 4

accuracy. Loss är som tidigare beskrivet hur stor sannolikhet som nätverket lägger vid fel klassifikation. Med dessa två värden, accuracy och loss, utvärderades utformningen av nätverket. Förändringar gjorde på val och placering av lager, samt hyperprametrars värde för att få accuracy så hög som möjligt medan loss skulle vara låg men inte för låg. 3.1 Resultat Nätverket visade en accuracy på 0.917 0ch en loss på 0.237 vid den senaste versionen, se bilaga 1. Dessa resultat kan variera vid olika omgångar av träning då vikterna på noderna sätts slumpvis varje gång noderna skapas. Vilket de gör med den kod som används i denna artikel. I och med att värdet på vikterna sätts slumpvis så blir träningen lite annorlunda varje gång och det resulterar i marginellt olika resultat. Slumpen används för att det ska gå att använda gradient back propogation då den förlitar sig på att felet hos en vikt står i relation till felet hos vikterna tidigare i nätverket. Så det enklaste sättet att försäkra sig om att vikterna inte likadana är att använda sig av slump. 4.1 Diskussion Syftet med att bygga detta nätverk var inte att göra det mest effektiva eller få bäst resultat, men det finns ändå ett värde i att jämföra accuracy med andra lösningar på fashion mnist datasetet. Zalando research tillhandahåller en benchmark lista från andras lösningar (Xiao, 2019). Nätverket i denna studie nåde som tidigare sagt omkring 0.917 accuracy. Vilket innebär att 91.7% av bilderna från testdatasetet klassificerades korrekt och att en bild kommer klassificeras korrekt med 91.7% sannolikhet. Den bäst presterande lösningen som Zalando research har testat är en SVC (Support Vektor Classifier) som med 4 snarlika version när 0.897 till 0.893 accuracyc (Xiao, 2019). Men de hänvisar även till resultat som de tagit del av från andra parter där convolutional nätverk testats. Dessa nätverk presterar bättre än nätverket i denna artikel. De flesta med accuracy mellan 0.91 och 0.93 (Zalando Research, 2019). Värt att notera är att ett inrapporterat resultat är från en individ som kallas Leo. Han testade en del av data på mänsklig kapacitet och nådde där en accuracy på 0.835. Så även om nätverket från denna studie inte kunde nå samma resultat som andra lösningar så var den klart bättre än en människa på att lösa uppgiften. 5

Referenser Adit, D. (2019, 01 10). A Beginner's Guide To Understanding Convolutional Neural Networks. Retrieved from https://adeshpande3.github.io/a-beginner%27s-guide-to-understanding- Convolutional-Neural-Networks/ Chollet, F. (2019, 01 10). Train your first neural network: basic classificer. Retrieved from https://www.tensorflow.org/tutorials/keras/basic_classification Google. (2019, 01 10). Colaboratory-Google. Retrieved from https://research.google.com/colaboratory/faq.html Google. (2019, 01 10). TensorFlow. Retrieved from https://www.tensorflow.org/ Google. (2019, 01 10). Train your first neural network: basic classification. Retrieved from https://www.tensorflow.org/tutorials/keras/basic_classification Home - Keras Dcumentation. (2019, 01 10). Retrieved from https://keras.io/ Keras. (2019, 01 10). Keras. Retrieved from Home - Keras Documentation: https://keras.io Keras. (2019, 01 10). User experience design for APIs. Retrieved from https://blog.keras.io/userexperience-design-for-apis.html What is computer vision. (2018, 12 28). Retrieved from http://www.bmva.org/visionoverview Xiao, K. R. (2019, 01 10). Fashion-MNIST. Retrieved from Zalando Research: https://research.zalando.com/welcome/mission/research-projects/fashion-mnist/ Zalando Research. (2019, 01 10). Github - Zalando Research Fashion MNIST. Retrieved from https://github.com/zalandoresearch/fashion-mnist Coors, B. (2016). Navigation of Mobile Robots in Human Environments with Deep Reinforcement Learning. KTH ROYAL INSTITUTE OF TECHNOLOGY. Kingma, D. P., & Ba, J. L. (2015). ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION. ICLR, 1 15. P, S. D., & Raj, S. (2018). Object Recognition in Images using Convolutional Neural Network. 2018 2nd International Conference on Inventive Systems and Control (ICISC), (Icisc), 718 821. Schmidhuber, J. (2014). Deep Learning in Neural Networks : An Overview, 1 88. 6