Vejledning i konvolutionelle neurale netværk

aug 18, 2021
admin

Kunstig intelligens er kommet langt og har uden problemer bygget bro over kløften mellem menneskers og maskiners potentiale. Og dataentusiaster over hele verden arbejder på adskillige aspekter af AI og gør visioner til virkelighed – og et af disse fantastiske områder er Computer Vision-området. Dette område har til formål at gøre det muligt for og konfigurere maskiner til at se verden på samme måde som mennesker og bruge denne viden til forskellige opgaver og processer (f.eks. billedgenkendelse, billedanalyse og -klassificering osv.). Og fremskridtene inden for Computer Vision med Deep Learning har været en betydelig succes, især med algoritmen Convolutional Neural Network.

I denne tutorial lærer du om:

  • Indledning til CNN
  • Hvad er et convolutional neural network?
  • Hvordan genkender CNN’er billeder?
  • Lag i CNN
  • Use case-implementering ved hjælp af CNN

Indledning til CNN

Yann LeCun, direktør for Facebooks AI Research Group, er pioner inden for konvolutionelle neurale netværk. Han byggede det første konvolutionelle neurale netværk kaldet LeNet i 1988. LeNet blev brugt til tegngenkendelsesopgaver som f.eks. læsning af postnumre og tal.

Har du nogensinde undret dig over, hvordan ansigtsgenkendelse fungerer på sociale medier, eller hvordan objektdetektion hjælper med at bygge selvkørende biler, eller hvordan sygdomsdetektion foregår ved hjælp af visuelle billeder i sundhedssektoren? Det er alt sammen muligt takket være convolutional neural networks (CNN). Her er et eksempel på konvolutionelle neurale netværk, der illustrerer, hvordan de fungerer:

Forestil dig, at der er et billede af en fugl, og du ønsker at identificere, om det virkelig er en fugl eller et andet objekt. Det første, du gør, er at sende billedets pixels i form af arrays til inputlaget i det neurale netværk (flerlagsnetværk, der bruges til at klassificere ting). De skjulte lag udfører feature ekstraktion ved at udføre forskellige beregninger og manipulationer. Der er flere skjulte lag som f.eks. konvolutionslaget, ReLU-laget og pooling-laget, som udfører udtrækningen af funktioner fra billedet. Endelig er der et fuldt forbundet lag, der identificerer objektet i billedet.

Convolutional Neural Network to identify the image of a bird

Fig: Konvolutionelt neuralt netværk til at identificere billedet af en fugl

Dybindlæringskursus (med TensorFlow & Keras)

Mestre dybe læringskoncepter og modellerSe kursus

Dybindlæringskursus (med TensorFlow Keras)

Hvad er et konvolutionelt neuralt netværk?

Et convolutional neural network er et feed-forward neural network, der generelt bruges til at analysere visuelle billeder ved at behandle data med gitterlignende topologi. Det er også kendt som et ConvNet. Et konvolutionelt neuralt netværk bruges til at registrere og klassificere objekter i et billede.

Nedenfor vises et neuralt netværk, der identificerer to typer blomster: Orkidé og Rose.

I CNN er hvert billede repræsenteret i form af et array af pixelværdier.

Foldningsoperationen danner grundlaget for ethvert konvolutionelt neuralt netværk. Lad os forstå konvolutionsoperationen ved hjælp af to matricer, a og b, af 1 dimension.

a =

b =

I konvolutionsoperationen multipliceres arrays elementvis, og produktet summeres for at skabe et nyt array, som repræsenterer a*b.

De tre første elementer i matrix a multipliceres med elementerne i matrix b. Produktet summeres for at få resultatet.

De næste tre elementer fra matrix a multipliceres med elementerne i matrix b, og produktet summeres.

Denne proces fortsætter, indtil konvolutionsoperationen er afsluttet.

Hvordan kan CNN genkende billeder?

Opnå følgende billeder:

Kasserne, der er farvede, repræsenterer en pixelværdi på 1, og 0, hvis de ikke er farvede.

Når du trykker på backslash (\), bliver nedenstående billede behandlet.

Når du trykker på forward-slash (/), behandles nedenstående billede:

Her er et andet eksempel til at skildre, hvordan CNN genkender et billede:

Som du kan se af ovenstående diagram, er kun de værdier oplyst, der har værdien 1.

Lag i et konvolutionelt neuralt netværk

Et konvolutionelt neuralt netværk har flere skjulte lag, der hjælper med at udtrække oplysninger fra et billede. De fire vigtige lag i CNN er:

  1. Konvolutionslag
  2. ReLU-lag
  3. Pooling-lag
  4. Fuldt forbundet lag

Konvolutionslag

Dette er det første trin i processen med at udtrække værdifulde funktioner fra et billede. Et konvolutionslag har flere filtre, der udfører konvolutionsoperationen. Hvert billede betragtes som en matrix af pixelværdier.

Tænk på følgende 5×5-billede, hvis pixelværdier enten er 0 eller 1. Der er også en filtermatrix med en dimension på 3×3. Skub filtermatrixen over billedet, og beregn prikproduktet for at få den konvolverede funktionsmatrix.

ReLU-lag

ReLU står for den rektificerede lineære enhed. Når featurekortene er udtrukket, er det næste skridt at flytte dem til et ReLU-lag.

ReLU udfører en elementvis operation og sætter alle de negative pixels til 0. Det indfører ikke-linearitet i netværket, og det genererede output er et rektificeret funktionskort. Nedenfor er grafen for en ReLU-funktion:

Det originale billede skannes med flere konvolutioner og ReLU-lag til lokalisering af funktionerne.

Pooling Layer

Pooling er en down-sampling-operation, der reducerer dimensionaliteten af funktionskortet. Det rektificerede feature map går nu gennem et pooling-lag for at generere et pooled feature map.

Pooling-laget bruger forskellige filtre til at identificere forskellige dele af billedet som f.eks. kanter, hjørner, krop, fjer, fjer, øjne og næb.

Sådan ser strukturen af det neurale konvolutionsnetværk ud indtil videre:

Det næste trin i processen kaldes flattening. Flattening bruges til at konvertere alle de resulterende 2-dimensionelle matricer fra poolede feature maps til en enkelt lang kontinuerlig lineær vektor.

Den flattenede matrix føres som input til det fuldt forbundne lag, der skal klassificere billedet.

Her er præcis, hvordan CNN genkender en fugl:

  • Pixels fra billedet føres til det konvolutionelle lag, der udfører konvolutionsoperationen
  • Det resulterer i et konvolveret kort
  • Det konvolverede kort anvendes på en ReLU-funktion for at generere et rektificeret funktionskort
  • Billedet behandles med flere konvolutions- og ReLU-lag til lokalisering af funktionerne
  • Differente poolinglag med forskellige filtre anvendes til at identificere specifikke dele af billedet
  • Det poolede funktionskort udflades og føres til et fuldt forbundet lag for at få det endelige output

FRIE Machine Learning Course

Lær In-demand Machine Learning Skills and ToolsStart Learning

FREE Machine Learning Course

Use case implementation using CNN

Vi vil bruge CIFAR-10 datasættet fra Canadian Institute For Advanced Research til at klassificere billeder på tværs af 10 kategorier ved hjælp af CNN.

1. Download datasættet:

2. Importer CIFAR-datasættet:

3. Læs etiketnavne:

4. Vis billederne ved hjælp af matplotlib:

5. Brug hjælpefunktionen til at håndtere data:

6. Opret modellen:

7. Anvend hjælpefunktionerne:

8. Opret lagene til konvolution og pooling:

9. Opret det fladtrykte lag ved at omforme poolinglaget:

10. Opret et fuldt forbundet lag:

11. Indstil output til y_pred-variablen:

12. Anvend tabsfunktionen:

13. Opret optimizer:

14. Opret en variabel til at initialisere alle de globale variabler:

15. Kør modellen ved at oprette en grafsession:

Byg deep learning-modeller i TensorFlow, og lær open source-rammen TensorFlow med Deep Learning-kurset (med Keras &TensorFlow). Tilmeld dig nu!

Lær mere om CNN og Deep Learning

Sådan bygger du en CNN med flere skjulte lag, og sådan kan du identificere en fugl ved hjælp af dens pixelværdier. Du har også gennemført en demo om at klassificere billeder på tværs af 10 kategorier ved hjælp af CIFAR-datasættet.

Du kan også tilmelde dig Post Graduate Program in AI and Machine Learning med Purdue University og i samarbejde med IBM og omdanne dig selv til en ekspert i dybe læringsteknikker ved hjælp af TensorFlow, det open source-softwarebibliotek, der er designet til at udføre forskning i maskinlæring og dybe neurale netværk. Dette program i AI og maskinlæring dækker Python, maskinlæring, behandling af naturligt sprog, talegenkendelse, avanceret dyb læring, computervision og forstærkende læring. Det vil forberede dig på en af verdens mest spændende teknologiske fronter.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.