Convolutional Neural Network Tutorial

aug 18, 2021
admin

Artificial Intelligence heeft een lange weg afgelegd en heeft naadloos de kloof overbrugd tussen het potentieel van mensen en machines. En dataliefhebbers over de hele wereld werken aan talrijke aspecten van AI en zetten visies om in realiteit – en één zo’n verbazingwekkend gebied is het domein van Computer Vision. Dit gebied is erop gericht machines in staat te stellen en te configureren om de wereld te bekijken zoals mensen dat doen, en de kennis te gebruiken voor verschillende taken en processen (zoals beeldherkenning, beeldanalyse en -classificatie, enzovoort). En de vooruitgang in Computer Vision met Deep Learning is een aanzienlijk succes, met name met het Convolutional Neural Network-algoritme.

In deze tutorial leert u over:

  • Inleiding tot CNN
  • Wat is een convolutioneel neuraal netwerk?
  • Hoe herkennen CNN’s beelden?
  • Lagen in CNN
  • Use case implementatie met behulp van CNN

Inleiding tot CNN

Yann LeCun, directeur van Facebook’s AI Research Group, is de pionier op het gebied van convolutionele neurale netwerken. Hij bouwde het eerste convolutionele neurale netwerk genaamd LeNet in 1988. LeNet werd gebruikt voor karakterherkenningstaken zoals het lezen van postcodes en cijfers.

Heb je je ooit afgevraagd hoe gezichtsherkenning werkt op sociale media, of hoe objectdetectie helpt bij het bouwen van zelfrijdende auto’s, of hoe ziektedetectie wordt gedaan met behulp van visuele beelden in de gezondheidszorg? Het is allemaal mogelijk dankzij convolutionele neurale netwerken (CNN). Hier is een voorbeeld van convolutionele neurale netwerken dat illustreert hoe ze werken:

Stel je voor dat er een afbeelding is van een vogel, en je wilt identificeren of het echt een vogel is of een ander object. Het eerste wat je doet is de pixels van het beeld in de vorm van arrays invoeren in de inputlaag van het neurale netwerk (meerlagige netwerken die worden gebruikt om dingen te classificeren). De verborgen lagen voeren de extractie van kenmerken uit door verschillende berekeningen en manipulaties uit te voeren. Er zijn meerdere verborgen lagen, zoals de convolutielaag, de ReLU-laag en de poolinglaag, die de extractie van kenmerken uit het beeld uitvoeren. Tenslotte is er een volledig aangesloten laag die het object in het beeld identificeert.

Convolutioneel neuraal netwerk om het beeld van een vogel te identificeren

Fig: Convolutioneel Neuraal Netwerk om de afbeelding van een vogel te identificeren

Diep Leren Cursus (met TensorFlow & Keras)

Beheers de Deep Learning Concepten en ModellenView Cursus

Diep Leren Cursus (met TensorFlow Keras)

Wat is Convolutioneel Neuraal Netwerk?

Een convolutioneel neuraal netwerk is een feed-forward neuraal netwerk dat over het algemeen wordt gebruikt om visuele beelden te analyseren door gegevens met een rasterachtige topologie te verwerken. Het is ook bekend als een ConvNet. Een convolutioneel neuraal netwerk wordt gebruikt om objecten in een afbeelding te detecteren en te classificeren.

Hieronder staat een neuraal netwerk dat twee soorten bloemen identificeert: Orchidee en Roos.

In CNN wordt elk beeld weergegeven in de vorm van een array van pixelwaarden.

De convolutiebewerking vormt de basis van elk convolutieneuraal netwerk. Laten we de convolutieoperatie begrijpen aan de hand van twee matrices, a en b, van 1 dimensie.

a =

b =

In de convolutieoperatie worden de matrices element-wise met elkaar vermenigvuldigd, en het product wordt opgeteld om een nieuwe matrix te maken, die a*b vertegenwoordigt.

De eerste drie elementen van de matrix a worden vermenigvuldigd met de elementen van matrix b. Het product wordt opgeteld om het resultaat te krijgen.

De volgende drie elementen van de matrix a worden vermenigvuldigd met de elementen in matrix b, en het product wordt opgeteld.

Dit proces gaat door totdat de convolutiebewerking is voltooid.

Hoe herkent CNN beelden?

Bekijk de volgende beelden:

De gekleurde vakjes vertegenwoordigen een pixelwaarde van 1, en 0 als ze niet gekleurd zijn.

Wanneer u op backslash (\) drukt, wordt de onderstaande afbeelding verwerkt.

Wanneer u op een voorwaartse schuine streep (/) drukt, wordt de onderstaande afbeelding verwerkt:

Hier volgt nog een voorbeeld van hoe CNN een afbeelding herkent:

Zoals u in bovenstaand diagram kunt zien, worden alleen de waarden verlicht die een waarde van 1 hebben.

Lagen in een convolutief neuraal netwerk

Een convolutief neuraal netwerk heeft meerdere verborgen lagen die helpen bij het extraheren van informatie uit een afbeelding. De vier belangrijke lagen in CNN zijn:

  1. Convolutielaag
  2. ReLU-laag
  3. Pooling-laag
  4. Volledig verbonden laag

Convolutielaag

Dit is de eerste stap in het proces van het extraheren van waardevolle kenmerken uit een beeld. Een convolutielaag heeft verschillende filters die de convolutiebewerking uitvoeren. Elk beeld wordt beschouwd als een matrix van pixelwaarden.

Bedenk de volgende 5×5 afbeelding waarvan de pixelwaarden 0 of 1 zijn. Er is ook een filtermatrix met een dimensie van 3×3. Schuif de filtermatrix over de afbeelding en bereken het dot-product om de geconvolueerde feature matrix te krijgen.

ReLU-laag

ReLU staat voor de gerectificeerde lineaire eenheid. Zodra de feature maps zijn geëxtraheerd, is de volgende stap om ze naar een ReLU-laag te verplaatsen.

ReLU voert een element-wise operatie uit en zet alle negatieve pixels op 0. Het introduceert niet-lineariteit in het netwerk, en de gegenereerde output is een gerectificeerde feature map. Hieronder ziet u de grafiek van een ReLU-functie:

De originele afbeelding wordt gescand met meerdere convoluties en ReLU-lagen om de kenmerken te lokaliseren.

Pooling-laag

Pooling is een down-sampling-bewerking die de dimensionaliteit van de kenmerkenkaart vermindert. De gerectificeerde kenmerkenkaart gaat nu door een poolinglaag om een gepoolde kenmerkenkaart te genereren.

De poolinglaag gebruikt verschillende filters om verschillende delen van het beeld te identificeren, zoals randen, hoeken, lichaam, veren, ogen en snavel.

Dit is hoe de structuur van het convolutieneuraal netwerk er tot nu toe uitziet:

De volgende stap in het proces wordt afvlakking genoemd. Het afvlakken wordt gebruikt om alle resulterende 2-dimensionale matrices van de gepoolde kenmerkkaarten om te zetten in een enkele lange continue lineaire vector.

De afgevlakte matrix wordt als invoer ingevoerd in de volledig aangesloten laag om het beeld te classificeren.

Hier ziet u hoe CNN precies een vogel herkent:

  • De pixels van het beeld worden toegevoerd aan de convolutielaag die de convolutie uitvoert
  • Het resulteert in een geconvolueerde kaart
  • De geconvolueerde kaart wordt toegepast op een ReLU-functie om een gerectificeerde kenmerkenkaart te genereren
  • Het beeld wordt verwerkt met meerdere convoluties en ReLU-lagen voor het lokaliseren van de features
  • Verschillende pooling lagen met verschillende filters worden gebruikt om specifieke delen van het beeld te identificeren
  • De gepoolde feature map wordt afgevlakt en toegevoerd aan een volledig verbonden laag om de uiteindelijke output te krijgen

VRIJE Machine Learning Cursus

Leer In-vraag Machine Learning Vaardigheden en ToolsStart Leren

Gratis Machine Learning Cursus

Use case implementatie met CNN

We zullen de CIFAR-10 dataset van het Canadian Institute For Advanced Research gebruiken voor het classificeren van afbeeldingen in 10 categorieën met behulp van CNN.

1. Download de dataset:

2. Importeer de CIFAR-dataset:

3. Lees de labelnamen:

4. Geef de afbeeldingen weer met matplotlib:

5. Gebruik de helperfunctie om gegevens te verwerken:

6. Maak het model:

7. Pas de helperfuncties toe:

8. Maak de lagen voor convolutie en pooling:

9. Maak de afgevlakte laag door de poolinglaag een nieuwe vorm te geven:

10. Maak een volledig verbonden laag:

11. Stel de uitvoer in op de variabele y_pred:

12. Pas de verliesfunctie toe:

13. Maak de optimalisator:

14. Maak een variabele om alle globale variabelen te initialiseren:

15. Voer het model uit door een grafieksessie te maken:

Bouw deep learning-modellen in TensorFlow en leer het TensorFlow open-source framework met de cursus Deep Learning (met Keras &TensorFlow). Schrijf je nu in!

Leer meer over CNN en Deep Learning

Zo bouw je een CNN met meerdere verborgen lagen en hoe je een vogel identificeert aan de hand van zijn pixelwaarden. Je hebt ook een demo voltooid om afbeeldingen in 10 categorieën te classificeren met behulp van de CIFAR-dataset.

Je kunt je ook inschrijven voor het Post Graduate Program in AI and Machine Learning met Purdue University en in samenwerking met IBM, en jezelf omvormen tot een expert in deep learning-technieken met behulp van TensorFlow, de open-source softwarebibliotheek die is ontworpen om machine learning en diep neuraal netwerkonderzoek uit te voeren. Dit programma in AI en Machine Learning omvat Python, Machine Learning, Natural Language Processing, Spraakherkenning, Advanced Deep Learning, Computer Vision, en Reinforcement Learning. Het zal u voorbereiden op een van ’s werelds meest opwindende technologische grenzen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.