← Terug naar startpagina

CNN's

Op deze pagina toon ik mijn getrainde convolutional neural networks.

Demo Video

Image Recognition Model (ResNet50)

Dit model herkent beelden uit satellietfoto's en categoriseert ze in 10 verschillende categorieën met een ResNet50-architectuur.

Research en Planning

A. Dataset Analyse

Inhoud: De EuroSAT dataset bestaat uit RGB-satellietbeelden gericht op "Land use" en "Land cover" classificatie.

Klassen: Er zijn 10 unieke klassen: AnnualCrop, Forest, HerbaceousVegetation, Highway, Industrial, Pasture, PermanentCrop, Residential, River, en SeaLake.

Balans en Grootte: De dataset bevat in totaal 27.000 beelden, perfect verdeeld over de klassen (2.700 beelden per klasse). Deze balans is ideaal omdat we geen technieken voor class imbalance hoeven toe te passen.

Resolutie en Resizing: De originele beelden zijn 64x64 pixels. Omdat de meeste standaard pretrained modellen (zoals ResNet) getraind zijn op ImageNet en een input van 224x224 pixels verwachten, zullen we de beelden upscalen tijdens de preprocessing.

B. Research voor Preprocessing & Augmentatie

Invariantie en Augmentatie: Satellietbeelden hebben een hoge mate van rotatie-invariantie; een bos blijft een bos, ongeacht de oriëntatie. Dit in tegenstelling tot objectdetectie (zoals auto's) waar oriëntatie cruciaal is. Op basis hiervan passen we "agressievere" data augmentatie toe om het model robuuster te maken:

  • RandomHorizontalFlip & RandomVerticalFlip: Beide logisch gezien het vogelperspectief.
  • RandomRotation: Rotaties van 0, 90, 180 en 270 graden.

Normalisatie: Om effectief gebruik te maken van transfer learning, moeten de pixelwaardes genormaliseerd worden op basis van de mean en standard deviation van de originele ImageNet dataset.

Data Split: De dataset heeft al CSV-bestanden voor train, test en validation sets, wat we zullen aanhouden voor een consistente evaluatie.

C. Model Selectie en Justificatie

Keuze: We kiezen voor de ResNet50 architectuur als pretrained model.

Justificatie: Voor de selectie hebben we veel verschillende architecturen onderzocht, van gevestigde namen tot minder conventionele opties. Ik heb gekeken naar de VGG-familie (VGG16, VGG19), GoogLeNet (Inception), verschillende ResNet-varianten (18, 34, 50, 101), DenseNet, MobileNet en EfficientNet. Ook nieuwere architecturen zoals ConvNeXt en Vision Transformers (ViT) zijn overwogen. Voor elk model heb ik de prestaties, het aantal parameters, de trainingssnelheid en de geschiktheid voor transfer learning geëvalueerd.

Uiteindelijk biedt ResNet50 voor dit project de beste balans:

  • Skip Connections: Het gebruik van "residual blocks" met skip connections gaat het vanishing gradient probleem tegen en maakt het trainen van diepere netwerken makkelijker.
  • Vergelijking: VGG is computationeel te zwaar en traag. EfficientNet is zeer efficiënt maar heeft een complexere scaling methode. Nieuwere modellen zoals ViT vereisen vaak veel meer data of complexere tuning. ResNet50 is een bewezen standaard die robuustheid combineert met een beheersbare complexiteit en uitstekende documentatie.

D. Evaluatie Metrics

Primaire Metric: Accuracy. Gezien de perfect gebalanceerde dataset is accuracy de meest representatieve maatstaf voor succes.

Loss Function: CrossEntropyLoss, de standaard loss functie voor multi-class classificatie.

Analyse: We gebruiken een Confusion Matrix om dieper inzicht te krijgen in specifieke classificatiefouten (bijvoorbeeld het verwarren van rivieren met snelwegen).