Bird Identification App

Computer vision systeem met transfer learning voor automatische herkenning van Nederlandse vogelsoorten

πŸ“… Februari - April 2023 (Jaar 1 - Block C)
πŸ–ΌοΈ Image Classification
πŸ”§ MobileNet, TensorFlow, Figma
πŸ‘€ Solo project (8 weken)

Project Overzicht

Computer vision app voor vogelaars om 7 Nederlandse vogelsoorten te identificeren via foto's. MobileNet transfer learning model getraind op custom dataset van 2800+ images verzameld met Google Image Scraper. Complete product development cycle doorlopen van data verzameling tot Figma prototype met A/B testing. Het project combineert technische model development met user-centered design voor een mobiele app.

Uitdagingen

Werken met beperkte training data (400 images per soort) vereiste slim gebruik van transfer learning en data augmentation. Visueel vergelijkbare vogelsoorten zoals pimpelmees en koolmees waren moeilijk te onderscheiden en vereisten zorgvuldige feature extraction. Handmatige data curation van alle scraped images om data quality te garanderen was tijdrovend. Balance vinden tussen model accuracy en mobile deployment efficiency (MobileNet vs zwaardere architectures).

Resultaten

Model behaalde 95.2% test accuracy met consistent hoge scores (92-98% precision, 92-100% recall) voor alle 7 vogelsoorten. Transfer learning met MobileNet maakte deze resultaten mogelijk met relatief weinig data. Complete Figma prototype ontwikkeld met camera interface, spotting hotspots kaart en species directory. A/B test met 10 users toonde voorkeur voor colorful design variant. Project demonstreert complete ML pipeline van data collection tot production-ready model met gebruiksvriendelijke interface.

95%
Test Accuracy
7
Vogelsoorten
2800+
Training Images
10
User Tests (A/B)

Model Development: Transfer Learning Pipeline

🧠 Van Data Collection tot Trained Model

Het project demonstreert de complete machine learning lifecycle: van het verzamelen en annoteren van custom data via Google Image Scraper tot een production-ready model met 95% accuracy. Door transfer learning met MobileNet te combineren met data augmentation werden excellent resultaten bereikt met beperkte training data.

Classificatie van 7 Nederlandse Vogelsoorten

🐦 Merel
🐦 Pimpelmees
🐦 Heggenmus
🐦 Vink
🐦 Koolmees
🐦 Huismus
🐦 Roodborst

Data Collection & Preprocessing

Model Architecture: MobileNet Transfer Learning

Waarom MobileNet?

MobileNet is specifiek ontworpen voor mobile deployment en biedt een ideale balance tussen accuracy en efficiency. De pre-trained weights van ImageNet geven een sterke foundation voor feature extraction, waardoor betere performance bereikt wordt zelfs met een relatief kleine custom dataset van ~400 images per class.

Architecture Details

  • Base model: MobileNetV2 pre-trained op ImageNet
  • Input: 224x224x3 RGB images (standard MobileNet input size)
  • Feature extractor: MobileNet convolutional base (frozen weights) genereert 7x7x1024 features
  • Custom classifier: Dense layers (512β†’256β†’128 neurons) met ReLU activation en Dropout (0.5) voor regularization
  • Output: 7-class softmax layer voor probabilistic bird species classification

Training Strategy

  • Optimizer: Adam met learning rate 1e-3 voor snelle en stabiele convergence
  • Batch size: 32 samples voor goede generalization zonder overfitting
  • Early stopping: Patience van 5 epochs voorkomt overfitting en bespaart training tijd
  • Iterative improvement: Meerdere model versies getest (V1-V5) met verschillende architectures en data preprocessing

Model Performance & Results

95.2%
Test Accuracy
0.17
Test Loss
92-98%
Per-Class Precision
92-100%
Per-Class Recall

Detailed Classification Report

Het model behaalt consistent hoge scores across alle vogelsoorten:

  • Heggenmus: 93% precision, 100% recall, 96% F1-score
  • Pimpelmees: 98% precision, 92% recall, 95% F1-score
  • Roodborst: 98% precision, 92% recall, 95% F1-score
  • Koolmees: 92% precision, 97% recall, 94% F1-score
  • Vink: 92% precision, 94% recall, 93% F1-score
  • Huismus: 98% precision, 94% recall, 96% F1-score
  • Merel: 98% precision, 95% recall, 96% F1-score

Error Analysis: Inter-Class Similarity

De confusion matrix analyse toont dat classification errors voornamelijk optreden tussen visueel vergelijkbare soorten:

  • Pimpelmees vs Koolmees: Beide mezen hebben vergelijkbare kleurpatronen en lichaams vormen
  • Huismus vs Heggenmus: vergelijkbare grote en bruine tinten maken onderscheid lastiger
  • Roodborst variaties: Verschillen binnen de soort door variaties in kleurintensiteit en lichaamsvorm bij verschillende leeftijden.
Confusion Matrix

UI/UX Design: Figma Prototype

User-Centered Design Approach

Complete app interface ontworpen in Figma met focus op intuΓ―tieve navigation en clean visual hierarchy:

πŸ“Έ Camera & Upload

Direct camera access voor instant foto's of upload vanuit galerij voor identificatie

πŸ—ΊοΈ Spotting Hotspots

Kaart met populaire birdwatching locaties voor community engagement

πŸ“š Species Directory

Overzicht van meest voorkomende soorten met search functionaliteit

ℹ️ Detail Pages

Uitgebreide informatie per vogelsoort met characteristics en habitat info

A/B Testing: Color Scheme Optimization

🎨 User Testing Insights

Een A/B-test met 10 gebruikers toonde een duidelijke voorkeur voor de kleurrijkere variant. De levendige kleuren resoneerden beter met het natuurthema en maakten de app visueel aantrekkelijker voor de doel groep van vogelaars en natuurliefhebbers.

Design Deliverable

  • Wireframes: Eerste low-fidelity schetsen om de gebruikersstroom te valideren
  • High-fidelity mockups: Gedetailleerde ontwerpen met het definitieve kleurenschema en typografie
  • Interactief prototype: Klikbaar Figma-prototype voor gebruikerstests
  • A/B-testvarianten: Twee volledige kleurenschema-versies getest bij de doelgroep

Prototype Walkthrough

Technology Stack

🧠 MobileNetV2
πŸ”₯ TensorFlow/Keras
🐍 Python
🎨 Figma
πŸ“Š NumPy/Pandas
πŸ–ΌοΈ Scikit-Image
πŸ“ˆ Matplotlib
πŸ” Scikit-Learn

Complete ML Workflow

  • Data collection: Google Image Scraper voor automated image gathering
  • Data preprocessing: Scikit-Image voor resizing, MinMaxScaler voor normalization
  • Model development: TensorFlow/Keras voor CNN architecture en transfer learning
  • Training pipeline: ImageDataGenerator voor augmentation, Adam optimizer, early stopping
  • Model evaluation: Scikit-Learn voor classification reports, confusion matrices
  • Visualization: Matplotlib voor training curves en performance analysis
  • UI/UX: Figma voor complete app interface design en prototyping

Technische Uitdagingen & Learnings

  • Transfer learning is krachtig voor kleine datasets: De pre-trained gewichten van MobileNet maakten een nauwkeurigheid van 95% mogelijk met slechts ~400 afbeeldingen per klasse.
  • Data-augmentatie is essentieel: Het verdubbelen van de datasetgrootte via augmentatie verbeterde de robuustheid van het model aanzienlijk zonder extra dataverzameling.
  • Handmatige datacuratie is belangrijk: Tijd investeren in het zorgvuldig selecteren van gescrapete afbeeldingen voorkomt ruis in labels en verhoogt de modelkwaliteit.
  • Overeenkomst tussen klassen vraagt aandacht: Vergelijkbare vogelsoorten (zoals mezen en mussen) zijn van nature moeilijker te onderscheiden en vereisen meer diverse trainingsvoorbeelden.
  • Early stopping voorkomt overfitting: Het monitoren van de validatieverlies en stoppen bij geen verbetering bespaart trainingstijd en verbetert de generalisatie.
  • Gebruikersonderzoek valideert ontwerpkeuzes: A/B-testen met echte gebruikers gaven concrete feedback over kleurvoorkeuren die anders slechts speculatief zouden zijn.

Presentation & Feedback

"Presentatie aan instructors werd positief ontvangen. De combinatie van hoge model accuracy (95%) en een goed uitgewerkt Figma prototype toonde aan dat beide technische en design aspecten goed waren uitgevoerd."

Wat Zou Ik Anders Doen?

  • Meer vogelsoorten toevoegen om de app bruikbaarder te maken voor Nederlandse vogelaars.
  • Meer diverse trainingsdata per soort verzamelen, vooral voor randgevallen (verschillende hoeken en lichtomstandigheden).
  • Experimenteren met nieuwere architecturen, zoals EfficientNet, voor mogelijk betere nauwkeurigheid.
  • Een daadwerkelijke Flutter-implementatie ontwikkelen om de haalbaarheid van mobiele deployment te valideren.

Bekijk Ook Mijn Andere Projecten