Bouw een Raspberry Pi Cijferherkenner met TensorFlow en OpenCV
Leer hoe je een diep convolutief neuraal netwerk traint om handgeschreven cijfers te herkennen en het op een Raspberry Pi draait met de Pi Camera, OpenCV en TensorFlow.
Overzicht
In dit project doorlopen we de complete AI-pijplijn: van datavoorbereiding en modeltraining op een laptop, tot realtime cijferherkenning op de Pi-camera. De oplossing gebruikt Scikit-Learn en OpenCV 3.3 voor beeldverwerking, en Keras (met TensorFlow-achtergrond) voor de diepe leercomponent.
We werken met de MNIST-dataset – 60.000 trainings- en 10.000 testafbeeldingen van 28×28-pixel grijswaarde cijfers. Afbeeldingen van de Pi-camera worden voorverwerkt om aan dit formaat te voldoen voordat ze in het getrainde netwerk worden gevoerd.
De netwerkarchitectuur is een standaard convolutieve stapel gevolgd door een fully-connected outputlaag met tien neuronen, elk voor een cijfer (0–9).
Na training worden de gewichten overgedragen naar de Raspberry Pi. Een lichtgewicht Python-script vangt een frame, past grijswaarde-conversie, drempelwaarde, herformatting, inversie toe en voert inferentie uit.
Hardware-opstelling
Voor de demonstratie monteerde ik de Pi Camera op een improviseerde houder – een simpele handvaste constructie die de camera gefocust houdt op één cijfer. In de praktijk verbetert een vaste mount of een kleine behuizing de stabiliteit.
Software-installatie
Maak een Python virtuele omgeving op de Pi en installeer de benodigde bibliotheken. De onderstaande commando's gaan uit van een werkende Raspberry Pi OS en Python 3.7+.
source ~/.profile
workon cv
python PiCameraApp.py --picamera 1
TensorFlow installeren
pip install tensorflow
Keras installeren
pip install keras
OpenCV 3.3 installeren
OpenCV moet vanuit bron gecompileerd worden om volledige optimalisaties op de Pi te activeren. Een stapsgewijze handleiding is beschikbaar op PyImageSearch.
https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/
Ten slotte installeer je de PiCamera-bibliotheek met NumPy-optimalisaties:
pip install "picamera[array]"
Modeltraining
Voer het trainingscript uit op een laptop (bij voorkeur met GPU). Het script definieert het CNN in Keras, compileert het, traint op de MNIST-data, valideert de prestaties en slaat de gewichten op in model_weights.h5.
python Train_MNIST.py
Als je een NVIDIA GPU hebt, installeer dan de GPU-versie van TensorFlow en CUDA-drivers om de training te versnellen. Zonder GPU duurt het langer, maar het werkt wel.
Na training kopieer je model_weights.h5 naar de Pi via scp of WinSCP.
Realtime Cijferherkenning
Start het herkenningscript op de Pi. Het programma vangt een frame wanneer je t indrukt en stopt met q. De nauwkeurigheid hangt sterk af van verlichting, hoek en helderheid van het schrift. Typische resultaten halen >95 % nauwkeurigheid op schone, hoog-contrast cijfers.
Beeldvoorverwerkingspijplijn
- RGB-frame vastleggen als NumPy-array.
- Omzetten naar grijswaarde (twee kleurkanalen weglaten).
- Pixelwaarden schalen naar 8-bit unsigned integers (0–255).
- Otsu-drempelwaarde toepassen voor een schoon zwart-wit beeld.
- Herschalen naar 28×28 pixels – de MNIST-invoervorm.
- Kleuren inverseren zodat cijfers wit op zwart staan, conform de trainingsdata.
- Afbeelding platten en in het geladen model voeren.
Het model geeft een kansenvector van lengte tien. De index met de hoogste kans is het voorspelde cijfer.
Belangrijkste Inzichten
Dit voorbeeld demonstreert een complete end-to-end workflow: datavoorbereiding, modeltraining, deployment en inferentie op een single-board computer. De code is beschikbaar op GitHub voor wie wil experimenteren of het systeem uitbreiden.
Referenties
Bron: AI Digit Recognition with PiCamera
Productieproces
- Hoe Temperatuur Te Lezen Met Een DS18B20 Op Raspberry Pi 2
- Temperatuurmeting op Raspberry Pi met Maxim 1-Wire sensoren en DS2482 I2C-brug
- Accurate temperatuurbewaking in een serverkast met Raspberry Pi
- Posture Pal met Walabot – Realtime afstandsmonitoring om nek- en rugpijn te voorkomen
- Aan de slag met TJBot: Bouw, Configureer en Stem-bedien Je Eigen AI-robot
- Een Zelf-balancerende Segway Bouwen met Raspberry Pi
- GoPiGo v2 Uitbreiden op Windows 10 IoT Core voor Raspberry Pi 3
- Acceed IGS-9822DGP: 12-poort Gigabit-switch met 4 SFP-poorten – High-performance industriële netwerkoplossing
- AAEON & Intel leveren de FWS-8600: 40-core 2U netwerk-appliance met 400 Gbps-doorvoer
- Lanner verbetert netwerk‑appliances met 2e‑gen Intel Xeon Scalable Processors
- Bestrijding van stedelijke overstromingen met IoT-netwerkoplossingen