Liveness detectie: Hoe biometrische systemen foto's van echte gezichten onderscheiden
Wat je nodig hebt voordat je begint
Stel je voor dat je telefoon je gezicht herkent, maar niet voor de foto van een foto. Dat is liveness detectie.
Je wilt een systeem bouwen of testen dat echt gezichten van plaatjes onderscheidt. Je hoeft geen expert te zijn, je hebt alleen de juiste spullen en een duidelijk plan nodig. Voor deze handleiding gebruik je een laptop of smartphone met een camera van minimaal 720p.
Zorg dat je toegang hebt tot een bibliotheek voor gezichtsherkenning, zoals Microsoft Azure Face API, Amazon Rekognition of FaceID van Apple.
Voor privacyvriendelijke oplossingen kies je voor lokaal draaiende software, bijvoorbeeld OpenCV met face_recognition of een liveness SDK van iProov of FaceTec. Een goede start is een budget van €50 tot €200 voor testlicenties of cloud credits. Verder heb je een paar foto’s en een video van een echt gezicht nodig, plus een paar printouts of schermafbeeldingen om te testen. Tot slot: een rustige ruimte met normaal licht, zonder felle schittering.
Stap 1: Kies je aanpak en meetlat
Je begint met een keuze: active liveness of passive liveness. Active liveness vraagt de gebruiker iets te doen, zoals knipperen of het hoofd te bewegen. Passive liveness doet alles op de achtergrond zonder dat de gebruiker het merkt.
Beide werken, maar passive is vriendelijker voor de gebruiker en active is vaak nauwkeuriger.
Stel een meetlat op: je systeem moet foto’s van echte gezichten herkennen met een nauwkeurigheid van minimaal 95%. De vals-positief rate (een foto wordt ten onrechte als echt gezicht gezien) moet onder de 1% liggen.
Test met minimaal 100 echte gezichten en 100 foto’s van die gezichten. Zorg dat je testdata divers is: verschillende leeftijden, huidskleuren, brillen en baarden. Veelgemaakte fout: je test alleen met je eigen gezicht.
Dat geeft een vertekend beeld. Zorg voor een brede dataset.
Tijd indicatie: 30 minuten voor het kiezen van je aanpak en het verzamelen van je testdata.
Stap 2: Voorbereiding van de camera en belichting
Goede voorbereiding is het halve werk. Zet de camera op ooghoogte en zorg voor diffuse verlichting.
Vermijd direct zonlicht of felle lampen die schaduwen geven. Gebruik een simpele ringlamp of een lamp met een diffuser als je binnen werkt.
Meet de lichtsterkte: ideale helderheid is 200 tot 400 lux. Dat voelt aan als een goed verlichte kamer, waarbij je rekening houdt met de invloed van lichtinval op de prestaties. Test je camera op resolutie: minimaal 640x480 pixels, maar 1280x720 is beter voor details. Check de framerate: 15 fps is minimum, 30 fps geeft vloeiendere bewegingen voor actieve liveness.
Veelgemaakte fout: te veel achtergrondruis of reflecties op een bril. Los je op door de achtergrond rustig te houden en de hoek licht te verstellen.
Tijd indicatie: 20 minuten voor opzetten en calibreren.
Stap 3: Active liveness implementeren
Active liveness vraagt de gebruiker een kleine actie te doen. Denk aan: knipperen, glimlachen, het hoofd links/rechts bewegen of een willekeurige zin uitspreken.
Dit maakt het moeilijk voor een foto om te slagen. Volg deze stappen:
- Vraag de gebruiker te knipperen: detecteer oogopeningen over minimaal 5 frames. Een echt oog gaat open en dicht in 200-400 ms.
- Vraag een hoofdbeweging: volg de neuspositie over 10 frames. Beweging moet soepel zijn, geen plotselinge sprongen.
- Vraag een willekeurige zin: vergelijk audio met lipbewegingen. Gebruik een korte zin van 5-8 woorden.
- Geef direct feedback: “Goed gedaan” of “Probeer het opnieuw” binnen 1 seconde.
Veelgemaakte fout: te complexe opdrachten die frustreren. Houd het simpel en binnen 5 seconden klaar. Tijd indicatie: 1-2 uur om te bouwen en te testen.
Actieve liveness voelt soms als een spelletje, maar het is een effectieve manier om foto’s buiten te sluiten.
Stap 4: Passive liveness implementeren
Passive liveness analyseert beelden zonder dat de gebruiker iets hoeft te doen.
Je kijkt naar textuur, reflectie, diepte en bewegingspatronen. Dit is handig voor een soepele ervaring. Volg deze stappen:
- Check textuur: echte huid heeft micro-patronen. Gebruik een Gabor-filter om deze patronen te meten. Een foto heeft minder detail.
- Meet reflectie: echte huid reflecteert licht anders dan een papieren foto. Analyseer glans op het voorhoofd en neus.
- Schat diepte: gebruik stereo-camera’s of de dieptesensor van je telefoon. Een foto is plat; een echt gezicht heeft diepte.
- Analyseer beweging: kleine onwillekeurige bewegingen van de huid (micro-movements) zijn een teken van leven.
Veelgemaakte fout: te veel rekenkracht gebruiken waardoor de app traag wordt. Optimaliseer door frames te downsamplen naar 320x240 voor analyse en alleen hoge resolutie te gebruiken voor de uiteindelijke match. Tijd indicatie: 2-4 uur voor een basismodel.
Stap 5: Testen en valideren
Testen is waar je systeem echt zijn waarde bewijst. Gebruik een mix van echte gezichten en foto’s, en onderzoek ook de invloed van make-up en brillen op de nauwkeurigheid.
Maak foto’s van schermen, printouts en zelfs bewerkte afbeeldingen om de robuustheid te testen.
- Accuracy: percentage correcte herkenningen. Doel: minimaal 95%.
- False acceptance rate (FAR): hoe vaak een foto als echt wordt gezien. Doel: onder 1%.
- False rejection rate (FRR): hoe vaak een echt gezicht wordt geweigerd. Doel: onder 5%.
- Latentie: tijd van camera naar uitslag. Doel: onder 2 seconden.
Voer deze metingen uit: Veelgemaakte fout: alleen testen onder ideale omstandigheden. Test ook in slecht licht, met bril en met baard. Tijd indicatie: 1 uur voor testen, 30 minuten voor analyseren.
Een systeem dat alleen in het lab werkt, faalt in het echt. Test waar je het echt gaat gebruiken.
Stap 6: Privacy en compliance borgen
Biometrie is gevoelig. Houd ook rekening met veroudering van het gezicht en neem privacy serieus.
Gebruik lokale verwerking waar mogelijk. Als je cloud-diensten gebruikt, kies dan voor aanbieders met sterke beveiliging en duidelijke dataretentiebeleid. Volg deze stappen: Veelgemaakte fout: te veel data verzamelen uit nieuwsgierigheid.
- Verwerk biometrische data lokaal op het apparaat, tenzij je expliciet toestemming hebt.
- Gebruik encryptie: TLS 1.3 voor transport, AES-256 voor opslag.
- Vraag expliciete toestemming: leg uit wat je verzamelt en waarom.
- Bewaar alleen de benodigde templates, niet de volledige beelden.
- Houd een dataretentiebeleid: verwijder data na een vooraf bepaalde periode, bijvoorbeeld 30 dagen.
Beperk je tot wat nodig is voor de werking. Tijd indicatie: 45 minuten voor het opzetten van je privacybeleid.
Stap 7: Onderhoud en monitoring
Een liveness systeem is geen eenmalig project. Je moet het blijven monitoren en bijstellen.
Stel alerts in voor ongewone foutpercentages. Voer deze taken wekelijks uit: Veelgemaakte fout: achteroverleunen na de eerste succesvolle test. Blijf bijsturen. Tijd indicatie: 30 minuten per week voor monitoring.
- Check de FAR en FRR opnieuw met nieuwe testdata.
- Update je modellen als nieuwe aanvallen opduiken, zoals deepfake-video’s.
- Monitor de gebruikservaring: vraag gebruikers om feedback.
- Houd bij welke devices en besturingssystemen je ondersteunt.
Verificatie-checklist
Gebruik deze checklist om te controleren of je systeem klaar is: Als je alle punten kunt afvinken, ben je klaar om je liveness systeem in de praktijk te brengen. Veel succes en veel plezier met bouwen!
- Camera en belichting zijn goed ingesteld (200-400 lux, 720p, 30 fps).
- Active liveness werkt met knipperen, hoofdbeweging en audio-check.
- Passive liveness analyseert textuur, reflectie, diepte en micro-bewegingen.
- Testdata bevat minimaal 100 echte gezichten en 100 foto’s.
- Accuracy ≥95%, FAR ≤1%, FRR ≤5%, latentie ≤2 seconden.
- Privacy is geborgd: lokale verwerking, encryptie, toestemming, beperkte retentie.
- Monitoring is ingericht met wekelijkse checks en alerts.