Cursus
Convolutionele neurale netwerken drijven enkele van de meest indrukwekkende AI-mogelijkheden van vandaag aan, van gezichtsherkenning op smartphones tot tumordetectie in medische beeldvorming.
In deze tutorial behandel ik wat CNN's zijn, hoe ze werken, hun belangrijkste componenten, strategieën om overfitting tegen te gaan en de populairste frameworks om ze te bouwen.
Wil je zelf met deep learning aan de slag? Bekijk dan de cursus Introduction to Deep Learning in Python van DataCamp.
TL;DR
- Een convolutioneel neuraal netwerk (CNN) is een deep learning-architectuur ontworpen voor taken als beeldclassificatie, objectdetectie en segmentatie.
- CNN's hebben vier kernonderdelen: convolutionele lagen (feature-extractie), activatiefuncties zoals ReLU (non-lineariteit), pooling-lagen (dimensionale reductie) en volledig verbonden lagen (classificatie).
- Hun ontwerp is geïnspireerd op de hiërarchische structuur van de menselijke visuele cortex.
- Overfitting is een grote uitdaging; technieken zoals dropout, batch-normalisatie, data-augmentatie en early stopping helpen dit te beperken.
- TensorFlow, PyTorch en Keras zijn de populairste frameworks voor het bouwen van CNN's.
Wat is een convolutioneel neuraal netwerk (CNN)?
Een convolutioneel neuraal netwerk (CNN), ook wel ConvNet genoemd, is een gespecialiseerd type deep learning-algoritme dat voornamelijk is ontworpen voor taken die objectherkenning vereisen, waaronder beeldclassificatie, detectie en segmentatie. CNN's worden ingezet in uiteenlopende praktijksituaties, zoals autonome voertuigen, beveiligingscamera-systemen en meer.
Het belang van CNN's
Er zijn meerdere redenen waarom CNN's belangrijk zijn in de moderne wereld, zoals hieronder uitgelicht:
- CNN's onderscheiden zich van klassieke machinelearning-algoritmen zoals SVM's en beslisbomen door hun vermogen om autonoom, op grote schaal, features te extraheren, waardoor handmatige feature-engineering overbodig wordt en de efficiëntie toeneemt.
- De convolutionele lagen geven CNN's hun translaties-invariante eigenschappen, waardoor ze patronen en kenmerken uit data kunnen herkennen en extraheren, ongeacht variaties in positie, oriëntatie, schaal of translatie.
- Verschillende voorgetrainde CNN-architecturen, waaronder VGG-16, ResNet50, Inceptionv3 en EfficientNet, hebben topprestaties laten zien. Deze modellen kunnen met relatief weinig data worden aangepast aan nieuwe taken via een proces dat fine-tuning wordt genoemd.
- Naast beeldclassificatietaken zijn CNN's veelzijdig en toepasbaar in andere domeinen, zoals natural language processing, tijdreeksanalyse en spraakherkenning.
Inspiratie achter CNN's en parallellen met het menselijke visuele systeem
Convolutionele neurale netwerken zijn geïnspireerd op de gelaagde architectuur van de menselijke visuele cortex. Hieronder staan enkele belangrijke overeenkomsten en verschillen:

Illustratie van de overeenkomst tussen de gebieden die geassocieerd zijn met de primaire visuele cortex en de lagen in een convolutioneel neuraal netwerk (bron)
- Hiërarchische architectuur: Zowel CNN's als de visuele cortex hebben een hiërarchische structuur, waarbij in vroege lagen eenvoudige kenmerken worden geëxtraheerd en in diepere lagen complexere features worden opgebouwd. Dit maakt steeds geavanceerdere representaties van visuele input mogelijk.
- Lokale connectiviteit: Neuronen in de visuele cortex zijn alleen verbonden met een lokaal deel van de input, niet met het volledige gezichtsveld. Op vergelijkbare wijze zijn neuronen in een CNN-laag via de convolutieoperatie alleen verbonden met een lokaal gebied van het inputvolume. Deze lokale connectiviteit zorgt voor efficiëntie.
- Translatie-invariantie: Neuronen in de visuele cortex kunnen kenmerken detecteren ongeacht hun locatie in het gezichtsveld. Pooling-lagen in een CNN bieden een zekere mate van translatie-invariantie door lokale features samen te vatten.
- Meerdere feature maps: In elke fase van visuele verwerking worden veel verschillende feature maps geëxtraheerd. CNN's bootsen dit na met meerdere filtermaps in elke convolutionele laag.
- Non-lineariteit: Neuronen in de visuele cortex vertonen niet-lineaire responsen. CNN's bereiken non-lineariteit via activatiefuncties zoals ReLU, toegepast na elke convolutie.
CNN's bootsen het menselijke visuele systeem na, maar zijn eenvoudiger: ze missen complexe feedbackmechanismen en steunen op supervised learning in plaats van unsupervised. Ondanks deze verschillen drijven ze de vooruitgang in computervisie.
Belangrijke componenten van een CNN
Het convolutionele neurale netwerk bestaat uit vier hoofdonderdelen.
Maar hoe leren CNN's met die onderdelen?
Ze helpen CNN's na te bootsen hoe het menselijk brein patronen en features in afbeeldingen herkent:
- Convolutionele lagen
- Rectified Linear Unit (kortweg ReLU)
- Pooling-lagen
- Volledig verbonden lagen
In dit onderdeel gaan we in op de definitie van elk van deze componenten aan de hand van het volgende voorbeeld: het classificeren van een handgeschreven cijfer.

Architectuur van CNN's toegepast op cijferherkenning (bron)
Convolutionele lagen
Dit is de eerste bouwsteen van een CNN. Zoals de naam aangeeft, is de belangrijkste wiskundige bewerking convolutie: het toepassen van een schuivend venster op een matrix van pixels die een afbeelding voorstellen. De schuivende functie die op de matrix wordt toegepast heet kernel of filter; beide termen worden door elkaar gebruikt.
In de convolutionele laag worden meerdere filters van gelijke grootte toegepast, en elk filter wordt gebruikt om een specifiek patroon in de afbeelding te herkennen, zoals de kromming van cijfers, de randen, de algehele vorm van de cijfers, enzovoort.
Simpel gezegd gebruiken we in de convolutionele laag kleine roosters (filters of kernels) die over de afbeelding bewegen. Elk klein rooster is als een mini-vergrootglas dat zoekt naar specifieke patronen in de foto, zoals lijnen, bochten of vormen. Terwijl het over de foto schuift, ontstaat een nieuw rooster dat markeert waar deze patronen zijn gevonden.
Zo kan één filter goed zijn in het vinden van rechte lijnen, een ander in het vinden van bochten, enzovoort. Door verschillende filters te gebruiken krijgt de CNN een goed beeld van alle patronen waaruit de afbeelding is opgebouwd.
Laten we deze 32x32-grijswaardenafbeelding van een handgeschreven cijfer bekijken. De waarden in de matrix zijn ter illustratie gegeven.

Illustratie van de invoerafbeelding en de pixelrepresentatie
Neem ook de kernel die voor de convolutie wordt gebruikt. Dat is een matrix van 3x3. De gewichten van elk element van de kernel zijn in het rooster weergegeven. Nulgewichten zijn zwart en enen zijn wit weergegeven.
Moeten we deze gewichten handmatig bepalen?
In de praktijk worden de gewichten van de kernels bepaald tijdens het trainingsproces van het neurale netwerk.
Met deze twee matrices kunnen we de convolutie uitvoeren door het inproduct toe te passen. Dat gaat als volgt:
- Pas de kernelmatrix toe vanaf de linkerbovenhoek naar rechts.
- Voer elementgewijze vermenigvuldiging uit.
- Sommeer de producten.
- De resulterende waarde komt overeen met de eerste waarde (linkerbovenhoek) in de geconvolueerde matrix.
- Schuif de kernel omlaag volgens de stapgrootte van het schuivende venster.
- Herhaal stap 1 t/m 5 totdat de beeldmatrix volledig is afgedekt.
De afmeting van de geconvolueerde matrix hangt af van de grootte van het schuivende venster. Hoe groter het schuivende venster (stride), hoe kleiner de afmeting.

Toepassing van de convolutietaak met een stride van 1 en een 3x3-kernel
Een andere benaming voor de kernel in de literatuur is featuredetector, omdat de gewichten kunnen worden verfijnd om specifieke features in de invoerafbeelding te detecteren.
Bijvoorbeeld:
- Een kernel die naburige pixels gemiddelt kan worden gebruikt om de invoerafbeelding te vervagen.
- Een kernel die naburige waarden aftrekt wordt gebruikt voor randdetectie.
Hoe meer convolutionele lagen het netwerk heeft, hoe beter de lagen in staat zijn om abstractere features te detecteren.
Activatiefunctie
Na elke convolutie wordt een ReLU-activatiefunctie toegepast. Deze functie helpt het netwerk niet-lineaire relaties tussen de features in de afbeelding te leren, waardoor het robuuster wordt in het herkennen van verschillende patronen. Het helpt ook om problemen met verdwijnende gradiënten te beperken.
Pooling-laag
Het doel van de pooling-laag is om de belangrijkste features uit de geconvolueerde matrix te halen. Dit gebeurt door aggregatiebewerkingen toe te passen die de afmeting van de feature map (geconvolueerde matrix) verkleinen, waardoor het geheugenverbruik tijdens het trainen afneemt. Pooling helpt ook om overfitting te beperken.
De meest gebruikte aggregatiefuncties zijn:
- Max pooling: de maximale waarde van de feature map
- Sum pooling: de som van alle waarden in de feature map
- Average pooling: het gemiddelde van alle waarden
Hieronder staat een illustratie van elk van de voorgaande voorbeelden:

Toepassing van max pooling met een stride van 2 en een 2x2-filter
Ook hier geldt: de afmeting van de feature map wordt kleiner naarmate de pooling-functie wordt toegepast.
De laatste pooling-laag maakt zijn feature map plat (flatten) zodat die door de volledig verbonden laag kan worden verwerkt.
Volledig verbonden lagen
Deze lagen bevinden zich aan het eind van het convolutionele neurale netwerk en hun input komt overeen met de afgevlakte eendimensionale matrix die door de laatste pooling-laag is gegenereerd. ReLU-activatiefuncties worden toegepast voor non-lineariteit.
Tot slot wordt een softmax-voorspellingslaag gebruikt om waarschijnlijkheidswaarden te genereren voor elk van de mogelijke uitvoerlabels. Het uiteindelijke voorspelde label is dat met de hoogste waarschijnlijkheid.
Overfitting en regularisatie in CNN's
Overfitting is een veelvoorkomende uitdaging in machinelearning-modellen en CNN-deeplearningprojecten. Het treedt op wanneer het model de trainingsdata te goed leert ("uit het hoofd leren"), inclusief de ruis en uitschieters. Zo'n leergedrag leidt tot een model dat goed presteert op de trainingsdata maar slecht op nieuwe, ongeziene data.
Dit zie je wanneer het model significant hogere nauwkeurigheid behaalt op trainingsdata vergeleken met validatie- of testdata. Hieronder staat een grafische illustratie:

Underfitting versus overfitting
Deep-learningmodellen, vooral convolutionele neurale netwerken (CNN's), zijn bijzonder vatbaar voor overfitting vanwege hun hoge complexiteit en hun vermogen om gedetailleerde patronen in grootschalige data te leren.
Er zijn verschillende regularisatietechnieken om overfitting in CNN's te beperken, waarvan er hieronder enkele zijn geïllustreerd:

7 strategieën om overfitting in CNN's te beperken
- Dropout: Hierbij worden tijdens het trainen willekeurig sommige neuronen uitgeschakeld, waardoor de overblijvende neuronen gedwongen worden nieuwe features uit de inputdata te leren.
- Batch-normalisatie: Overfitting wordt tot op zekere hoogte verminderd door de inputlaag te normaliseren via het aanpassen en schalen van de activaties. Deze aanpak versnelt en stabiliseert ook het trainingsproces.
- Pooling-lagen: Hiermee kun je de ruimtelijke dimensies van de invoerafbeelding verkleinen om het model een abstractere representatie te bieden, waardoor de kans op overfitting afneemt.
- Early stopping: Dit houdt in dat je de modelprestatie op validatiedata tijdens het trainen continu monitort en de training stopt zodra de validatiefout niet verder verbetert.
- Ruisinjectie: Hierbij wordt tijdens het trainen ruis toegevoegd aan de inputs of de outputs van verborgen lagen om het model robuuster te maken en zwakke generalisatie te voorkomen.
- L1- en L2-regularisatie: Zowel L1 als L2 voegen een strafterm toe aan de verliesfunctie op basis van de grootte van de gewichten. L1 stimuleert met name schaarse gewichten, wat leidt tot betere featureselectie. L2 (ook wel weight decay) stimuleert kleine gewichten, zodat geen enkel gewicht te veel invloed krijgt op de voorspellingen.
- Data-augmentatie: Dit is het kunstmatig vergroten van de omvang en diversiteit van de trainingsset door willekeurige transformaties zoals rotatie, schalen, spiegelen of croppen op de invoerafbeeldingen toe te passen.
Praktische toepassingen van CNN's
Convolutionele neurale netwerken hebben het vakgebied van computervisie getransformeerd en geleid tot grote vooruitgang in veel echte toepassingen. Hieronder staan enkele voorbeelden van hoe ze worden toegepast.

Enkele praktische toepassingen van CNN's
- Beeldclassificatie: Convolutionele neurale netwerken worden gebruikt voor het categoriseren van afbeeldingen, waarbij afbeeldingen aan vooraf gedefinieerde categorieën worden toegewezen. Een gebruiksscenario is automatische foto-organisatie op sociale mediaplatforms.
- Objectdetectie: CNN's kunnen meerdere objecten in een afbeelding identificeren en lokaliseren. Deze mogelijkheid is cruciaal in verschillende scenario's, zoals het scannen van schappen in de retail om out-of-stockartikelen te identificeren.
- Gezichtsherkenning: dit is ook een van de belangrijkste toepassingsgebieden van CNN's. Zo kan deze technologie worden geïntegreerd in beveiligingssystemen voor efficiënte toegangscontrole op basis van gelaatskenmerken.
Voor een meer hands-on implementatie leert onze Convolutional Neural Networks (CNN) with TensorFlow Tutorial hoe je CNN's in Python met TensorFlow 2 bouwt en implementeert.
Populaire CNN-architecturen
In de loop der jaren hebben onderzoekers steeds krachtigere CNN-architecturen ontwikkeld. Dit zijn enkele van de meest invloedrijke:
- LeNet-5 (1998): Een van de eerste CNN's, ontworpen voor herkenning van handgeschreven cijfers.
- AlexNet (2012): Won de ImageNet-competitie en populariseerde diepe CNN's met GPU-training.
- VGGNet (2014): Toonde aan dat diepere netwerken met kleine 3x3-filters de nauwkeurigheid verbeteren.
- GoogLeNet/Inception (2014): Introduceerde inception-modules met parallelle filtergroottes voor multi-schaal feature-extractie.
- ResNet (2015): Introduceerde skip-connections, waardoor het trainen van netwerken met 100+ lagen mogelijk werd.
- EfficientNet (2019): Gebruikte samengestelde schaling om diepte, breedte en resolutie van netwerken in balans te brengen.
- ConvNeXt (2022): Een gemoderniseerd CNN-ontwerp dat concurreert met Vision Transformers.
Hoewel Vision Transformers (ViT's) sinds 2020 als sterke alternatieven zijn opgekomen, blijven CNN's veel gebruikt vanwege hun efficiëntie, lagere data-eisen en volwassenheid in productieomgevingen.
Deep-learningframeworks voor CNN's
De snelle groei van deep learning is vooral te danken aan krachtige frameworks zoals TensorFlow, PyTorch en Keras, die het trainen van convolutionele neurale netwerken en andere deep-learningmodellen eenvoudiger maken.
Laten we elk framework kort bekijken.
TensorFlow
TensorFlow is een open-source deep-learningframework, ontwikkeld door Google en uitgebracht in 2015. Het biedt een reeks tools voor machinelearning-ontwikkeling en -deployment. Onze Introduction to Deep Neural Networks geeft een complete gids om diepe neurale netwerken te begrijpen en hun betekenis in de moderne deep-learningwereld van kunstmatige intelligentie, inclusief implementaties in TensorFlow.
Keras
Keras is een high-level neurale-netwerkframework in Python waarmee je snel kunt experimenteren en ontwikkelen. Het is open-source en fungeert (sinds versie 2.0) als de officiële high-level API van TensorFlow, wat de modelontwikkeling binnen het TensorFlow-ecosysteem stroomlijnt. Onze cursus Image Processing with Keras in Python leert je hoe je beeldanalyse uitvoert met Keras in Python door convolutionele neurale netwerken te bouwen, trainen en evalueren.
PyTorch
PyTorch, uitgebracht door Meta (voorheen Facebook) AI Research in 2017, is een algemeen deep-learningframework dat bekendstaat om zijn dynamische computationele grafiek, Pythonic syntax en sterke onderzoeksgemeenschap. Als je wilt duiken in natural language processing, is onze NLP with PyTorch: A Comprehensive Guide een uitstekend startpunt.
Elk project is anders, dus de keuze hangt af van welke eigenschappen voor een bepaalde usecase het belangrijkst zijn. Om betere beslissingen te nemen, geeft de volgende tabel een korte vergelijking van deze frameworks, met hun unieke kenmerken.
Tensorflow | Pytorch | Keras | |
API Level | Beide (High en Low) | Low | High |
Architectuur | Niet makkelijk te gebruiken | Pythonic, intuïtieve syntax | Eenvoudig, beknopt, leesbaar |
Datasets | Grote datasets, hoge prestaties | Grote datasets, hoge prestaties | Kleinere datasets |
Debugging | Moeilijk te debuggen | Goede debugging-mogelijkheden | Eenvoudig netwerk, dus debugging is vaak niet nodig |
Pretrained models? | Ja | Ja | Ja |
Populariteit | Op één na populairst van de drie | Meest gebruikt voor onderzoek en steeds vaker voor productie | Geïntegreerd in TensorFlow als de officiële high-level API |
Snelheid | Snel, hoge prestaties | Snel, hoge prestaties | Zelfde als TensorFlow (draait op TF-backend) |
Geschreven in | C++, CUDA, Python | C++, Python | Python |
Vergelijkende tabel tussen Tensorflow, Pytorch en Keras (bron)
Conclusie
Dit artikel gaf een volledig overzicht van wat een CNN in deep learning is, samen met hun cruciale rol bij beeldherkenning en classificatietaken.
Het begon met de inspiratie uit het menselijke visuele systeem voor het ontwerp van CNN's en verkende vervolgens de belangrijkste componenten die deze netwerken in staat stellen te leren en voorspellingen te doen.
Het probleem van overfitting werd erkend als een aanzienlijke uitdaging voor de generalisatiecapaciteit van CNN's. Ter beperking hiervan zijn diverse relevante strategieën uiteengezet om overfitting tegen te gaan en de algehele prestaties van CNN's te verbeteren.
Tot slot zijn enkele belangrijke deep-learningframeworks voor CNN's genoemd, met de unieke kenmerken van elk en hoe ze zich tot elkaar verhouden.
Sta je te popelen om verder te duiken in de wereld van AI en machine learning? Til je expertise naar een hoger niveau met de cursus Deep Learning with PyTorch.
Een veelzijdige data scientist die graag zijn kennis deelt en iets terugdoet voor anderen. Zoumana is YouTube-contentmaker en een toonaangevende techschrijver op Medium. Hij haalt plezier uit spreken, coderen en lesgeven. Zoumana heeft twee masterdiploma’s: het eerste in informatica met een focus op machine learning uit Parijs, Frankrijk, en het tweede in data science van Texas Tech University in de VS. Zijn loopbaan begon als softwareontwikkelaar bij Groupe OPEN in Frankrijk. Daarna stapte hij over naar IBM als machine learning-consultant, waar hij end-to-end AI-oplossingen ontwikkelde voor verzekeringsmaatschappijen. Zoumana sloot zich aan bij Axionable, de eerste Sustainable AI-startup met vestigingen in Parijs en Montreal. Daar werkte hij als data scientist en bouwde hij AI-producten—voornamelijk NLP-usecases—voor klanten in Frankrijk, Montreal, Singapore en Zwitserland. Daarnaast wijdde hij 5% van zijn tijd aan research & development. Momenteel werkt hij als senior data scientist bij IFC – the World Bank Group.
CNN FAQ's
Wat is het verschil tussen een CNN en een regulier neuraal netwerk?
Een regulier (volledig verbonden) neuraal netwerk verbindt elke neuron met elke neuron in de volgende laag, wat met beelddata computationeel kostbaar wordt. Een CNN gebruikt convolutionele lagen die kleine filters toepassen op lokale regio's van de input, waardoor het aantal parameters drastisch afneemt terwijl ruimtelijke relaties behouden blijven. Dit maakt CNN's veel efficiënter en effectiever voor beeldgerelateerde taken.
Wat zijn de meest voorkomende CNN-architecturen?
De meest invloedrijke CNN-architecturen zijn onder andere LeNet-5 (1998), AlexNet (2012), VGGNet (2014), ResNet (2015) en EfficientNet (2019). Meer recentelijk moderniseerde ConvNeXt (2022) de CNN-aanpak om te concurreren met Vision Transformers. Elke architectuur introduceerde sleutelinnovaties, zoals skip-connections (ResNet) of samengestelde schaling (EfficientNet).
Zijn CNN's nog relevant in 2026?
Ja, CNN's zijn in 2026 nog steeds zeer relevant. Hoewel Vision Transformers (ViT's) voor sommige taken populair zijn geworden, hebben CNN's in veel productieomgevingen de voorkeur vanwege hun rekenkundige efficiëntie, sterke prestaties met beperkte trainingsdata en goed ingeburgerde deployment-pijplijnen. Moderne architecturen zoals ConvNeXt laten zien dat CNN's het kunnen opnemen tegen transformers met bijgewerkte trainingstechnieken.
Hoe kies ik tussen TensorFlow, PyTorch en Keras voor het bouwen van CNN's?
PyTorch is de populairste keuze voor onderzoek en snelle prototyping dankzij de Pythonic syntax en dynamische rekengrafieken. TensorFlow blinkt uit in productie-deployment met tools als TensorFlow Serving en TensorFlow Lite voor mobiel. Keras, nu geïntegreerd als de officiële high-level API van TensorFlow, is ideaal voor beginners die met minimale code CNN's willen bouwen en trainen.
Wat is het doel van pooling-lagen in een CNN?
Pooling-lagen verkleinen de ruimtelijke dimensies (hoogte en breedte) van feature maps terwijl de belangrijkste informatie behouden blijft. Dit dient drie doelen: het verlaagt de rekenkosten door het aantal parameters te verminderen, biedt een zekere translatie-invariantie (het vermogen om features te herkennen ongeacht hun exacte positie) en helpt overfitting te voorkomen door een meer geabstraheerde representatie van de input te bieden.

