Tutorial för konvolutionella neurala nätverk

aug 18, 2021
admin

Artificiell intelligens har kommit långt och har sömlöst överbryggat klyftan mellan människans och maskinens potential. Och dataentusiaster över hela världen arbetar med många aspekter av artificiell intelligens och förvandlar visioner till verklighet – och ett sådant fantastiskt område är domänen Computer Vision. Detta område syftar till att möjliggöra och konfigurera maskiner så att de kan se världen som människor gör och använda kunskapen för flera uppgifter och processer (t.ex. bildigenkänning, bildanalys och klassificering och så vidare). Och framstegen inom Computer Vision med Deep Learning har varit en avsevärd framgång, särskilt med algoritmen Convolutional Neural Network.

I den här handledningen lär du dig om:

  • Introduktion till CNN
  • Vad är ett convolutional neural network?
  • Hur känner CNN av bilder?
  • Lager i CNN
  • Användningsfall som använder CNN

Introduktion till CNN

Yann LeCun, direktör för Facebooks AI Research Group, är pionjär inom konvolutionella neurala nätverk. Han byggde det första konvolutionella neurala nätverket kallat LeNet 1988. LeNet användes för teckenigenkänningsuppgifter som att läsa postnummer och siffror.

Har du någonsin undrat hur ansiktsigenkänning fungerar på sociala medier, eller hur objektsdetektering hjälper till vid byggandet av självkörande bilar, eller hur sjukdomsdetektering sker med hjälp av visuella bilder inom sjukvården? Allt är möjligt tack vare konvolutionella neurala nätverk (CNN). Här är ett exempel på konvolutionella neurala nätverk som illustrerar hur de fungerar:

Föreställ dig att det finns en bild på en fågel och du vill identifiera om det verkligen är en fågel eller något annat objekt. Det första du gör är att mata bildens pixlar i form av matriser till inmatningslagret i det neurala nätverket (flerskiktsnätverk som används för att klassificera saker). De dolda lagren utför utvinning av funktioner genom att utföra olika beräkningar och manipulationer. Det finns flera dolda lager, t.ex. konvolutionslagret, ReLU-lagret och poolinglagret, som utför utvinning av funktioner ur bilden. Slutligen finns det ett fullt sammankopplat lager som identifierar objektet i bilden.

Konvolutionärt neuralt nätverk för att identifiera bilden av en fågel

Fig: Konvolutionellt neuralt nätverk för att identifiera bilden av en fågel

Djupinlärningskurs (med TensorFlow & Keras)

Bemästra djupinlärningskoncept och modellerVisa kurs

Djupinlärningskurs (med TensorFlow Keras)

Vad är konvolutionellt neuralt nätverk?

Ett konvolutionellt neuralt nätverk är ett feed-forward neuralt nätverk som vanligtvis används för att analysera visuella bilder genom att bearbeta data med rutnätsliknande topologi. Det är också känt som ett ConvNet. Ett konvolutionellt neuralt nätverk används för att upptäcka och klassificera objekt i en bild.

Nedan visas ett neuralt nätverk som identifierar två typer av blommor: Orkidé och ros.

I CNN representeras varje bild i form av en matris av pixelvärden.

Falsningsoperationen utgör grunden för alla konvolutionella neurala nätverk. Låt oss förstå konvolutionsoperationen med hjälp av två matriser, a och b, med 1 dimension.

a =

b =

I konvolutionsoperationen multipliceras matriserna elementvis, och produkten summeras för att skapa en ny matris, som representerar a*b.

De tre första elementen i matrisen a multipliceras med elementen i matrisen b. Produkten summeras för att få resultatet.

Nästa tre element från matrisen a multipliceras med elementen i matrisen b, och produkten summeras.

Denna process fortsätter tills konvolutionsoperationen är klar.

Hur känner CNN igen bilder?

Tänk på följande bilder:

Rutorna som är färgade representerar ett pixelvärde på 1, och 0 om de inte är färgade.

När du trycker på backslash (\) behandlas bilden nedan.

När du trycker på forward-slash (/) bearbetas nedanstående bild:

Här är ett annat exempel som visar hur CNN känner igen en bild:

Som du kan se i diagrammet ovan är endast de värden upplysta som har värdet 1.

Lager i ett konvolutionellt neuralt nätverk

Ett konvolutionellt neuralt nätverk har flera dolda lager som hjälper till att extrahera information från en bild. De fyra viktiga lagren i CNN är:

  1. Konvolutionslagret
  2. ReLU-lagret
  3. Pooling-lagret
  4. Fullt sammankopplat lager

Konvolutionslagret

Det här är det första steget i processen för att utvinna värdefulla egenskaper från en bild. Ett konvolutionslager har flera filter som utför konvolutionsoperationen. Varje bild betraktas som en matris av pixelvärden.

Tänk på följande 5×5 bild vars pixelvärden antingen är 0 eller 1. Det finns också en filtermatris med dimensionen 3×3. Skjut filtermatrisen över bilden och beräkna punktprodukten för att få fram den konvolverade funktionsmatrisen.

ReLU-skikt

ReLU står för rectified linear unit. När funktionskartorna har extraherats är nästa steg att flytta dem till ett ReLU-skikt.

ReLU utför en elementvis operation och sätter alla negativa pixlar till 0. Det introducerar icke-linjäritet i nätverket, och det genererade resultatet är en rektifierad funktionskarta. Nedan visas grafen för en ReLU-funktion:

Originalbilden skannas med flera konvolutioner och ReLU-skikt för att lokalisera funktionerna.

Pooling Layer

Pooling är en down-sampling-operation som reducerar dimensionaliteten hos funktionskartan. Den rektifierade funktionskartan går nu genom ett poolningslager för att generera en poolad funktionskarta.

Poolningslagret använder olika filter för att identifiera olika delar av bilden som kanter, hörn, kropp, fjädrar, ögon och näbb.

Här ser strukturen för det neurala konvolutionsnätverket ut så här långt:

Nästa steg i processen kallas för utjämning. Flattening används för att omvandla alla resulterande tvådimensionella matriser från poolade funktionskartor till en enda lång kontinuerlig linjär vektor.

Den flattade matrisen matas in som indata till det fullt anslutna lagret för att klassificera bilden.

Här är exakt hur CNN känner igen en fågel:

  • Pixlarna från bilden matas till det konvolutionella lagret som utför konvolutionen
  • Det resulterar i en konvolverad karta
  • Den konvolverade kartan appliceras på en ReLU-funktion för att generera en rektifierad funktionskarta
  • Bilden behandlas med flera konvolutioner och ReLU-lager. för att lokalisera funktionerna
  • Differenta poolningslager med olika filter används för att identifiera specifika delar av bilden
  • Den poolade funktionskartan plattas ut och matas till ett fullt anslutet lager för att få det slutliga resultatet

GRATISKT Maskininlärningskurs

Lär dig In-demand Machine Learning Skills and ToolsStart Learning

FREE Machine Learning Course

Use case implementation using CNN

Vi kommer att använda datasetet CIFAR-10 från Canadian Institute For Advanced Research för att klassificera bilder i 10 kategorier med hjälp av CNN.

1. Ladda ner datamängden:

2. Importera CIFAR-datamängden:

3. Läs etikettnamnen:

4. Visa bilderna med hjälp av matplotlib:

5. Använd hjälpfunktionen för att hantera data:

6. Skapa modellen:

7. Tillämpa hjälpfunktionerna:

8. Skapa skikten för konvolution och poolning:

9. Skapa det tillplattade lagret genom att omforma poolningslagret:

10. Skapa ett helt anslutet lager:

11. Ange utgången till variabeln y_pred:

12. Tillämpa förlustfunktionen:

13. Skapa optimeraren:

14. Skapa en variabel för att initialisera alla globala variabler:

15. Kör modellen genom att skapa en grafsession:

Bygg djupinlärningsmodeller i TensorFlow och lär dig TensorFlow-ramverket med öppen källkod med kursen Djupinlärning (med Keras &TensorFlow). Registrera dig nu!

Lär dig mer om CNN och djupinlärning

Så här bygger du en CNN med flera dolda lager och identifierar en fågel med hjälp av dess pixelvärden. Du har också genomfört en demo för att klassificera bilder i 10 kategorier med hjälp av CIFAR-dataset.

Du kan också anmäla dig till Post Graduate Program in AI and Machine Learning med Purdue University och i samarbete med IBM, och förvandla dig själv till en expert på djupinlärningstekniker med hjälp av TensorFlow, det programvarubibliotek med öppen källkod som är utformat för att bedriva forskning om maskininlärning och djupa neurala nätverk. Detta program i AI och maskininlärning omfattar Python, maskininlärning, behandling av naturligt språk, taligenkänning, avancerad djupinlärning, datorseende och förstärkningsinlärning. Det kommer att förbereda dig för en av världens mest spännande tekniska gränser.

Lämna ett svar

Din e-postadress kommer inte publiceras.