- Eerste vereisten
- Hoe gezichtsherkenning werkt met OpenCV
- Gezichtsdetectie met behulp van Cascade Classifiers in OpenCV
Gezichtsherkenning wordt steeds populairder en de meesten van ons gebruiken het al zonder het te beseffen. Of het nu gaat om een eenvoudige suggestie voor een Facebook-tag of een Snapchat-filter of een geavanceerde beveiliging op luchthavens, Face Recognition heeft er al zijn magie in gewerkt. China is begonnen met het gebruik van gezichtsherkenning op scholen om de aanwezigheid en het gedrag van leerlingen te controleren. Winkels zijn begonnen met het gebruik van gezichtsherkenning om hun klanten te categoriseren en mensen met een geschiedenis van fraude te isoleren. Nu er nog veel veranderingen gaande zijn, lijdt het geen twijfel dat deze technologie in de nabije toekomst overal te zien zal zijn.
In deze tutorial zullen we leren hoe we ons eigen gezichtsherkenningssysteem kunnen bouwen met behulp van de OpenCV-bibliotheek op Raspberry Pi. Het voordeel van het installeren van dit systeem op een draagbare Raspberry Pi is dat u het overal kunt installeren om het als bewakingssysteem te gebruiken. Zoals alle gezichtsherkenningssystemen, zal de tutorial twee python-scripts bevatten, een is een trainerprogramma dat een reeks foto's van een bepaalde persoon analyseert en een dataset (YML-bestand) maakt. Het tweede programma is het programma Recognizerdie een gezicht detecteert en vervolgens dit YML-bestand gebruikt om het gezicht te herkennen en de naam van de persoon te noemen. Beide programma's die we hier zullen bespreken, zijn voor Raspberry Pi (Linux), maar werken ook op Windows-computers met zeer kleine wijzigingen. We hebben al een reeks tutorials voor beginners om aan de slag te gaan met OpenCV, je kunt hier alle OpenCV-tutorials bekijken.
Eerste vereisten
Zoals eerder verteld, zullen we de OpenCV-bibliotheek gebruiken om gezichten te detecteren en te herkennen. Zorg er dus voor dat u OpenCV Library op Pi installeert voordat u doorgaat met deze tutorial. Voorzie uw Pi ook van stroom met een 2A-adapter en sluit hem aan op een beeldscherm via een HDMI-kabel, aangezien we de video-uitvoer niet via SSH kunnen krijgen.
Ook ga ik niet uitleggen hoe OpenCV precies werkt, als je geïnteresseerd bent in het leren van beeldverwerking, bekijk dan deze OpenCV basics en geavanceerde tutorials over beeldverwerking. In deze zelfstudie over beeldsegmentatie kunt u ook meer te weten komen over contouren, blobdetectie enz.
Hoe gezichtsherkenning werkt met OpenCV
Voordat we beginnen, is het belangrijk om te begrijpen dat gezichtsherkenning en gezichtsherkenning twee verschillende dingen zijn. Bij gezichtsherkenning wordt alleen het gezicht van een persoon gedetecteerd, de software heeft geen idee wie die persoon is. Bij gezichtsherkenning zal de software niet alleen het gezicht detecteren, maar ook de persoon herkennen. Nu moet het duidelijk zijn dat we gezichtsherkenning moeten uitvoeren voordat we gezichtsherkenning uitvoeren. Het zou voor mij niet mogelijk zijn om uit te leggen hoe OpenCV precies een gezicht of een ander object detecteert. Dus als je nieuwsgierig bent om te weten dat je deze zelfstudie Objectdetectie kunt volgen.
Een videofeed van een webcam is niets meer dan een lange reeks stilstaande beelden die na elkaar worden bijgewerkt. En elk van deze afbeeldingen is slechts een verzameling pixels met verschillende waarden die op hun respectieve positie zijn samengevoegd. Dus hoe kan een programma een gezicht van deze pixels detecteren en de persoon erin verder herkennen? Er zitten veel algoritmen achter en proberen deze uit te leggen valt buiten het bestek van dit artikel, maar aangezien we de OpenCV-bibliotheek gebruiken, is het heel eenvoudig om gezichtsherkenning uit te voeren zonder dieper in te gaan op de concepten
Gezichtsdetectie met behulp van Cascade Classifiers in OpenCV
Alleen als we een gezicht kunnen detecteren, kunnen we het herkennen of onthouden. Om een object zoals gezicht te detecteren, gebruikt OpenCV iets dat Classifiers wordt genoemd. Deze classificatoren zijn een vooraf getrainde set gegevens (XML-bestand) die kunnen worden gebruikt om een bepaald object in ons geval een gezicht te detecteren. Hier vindt u meer informatie over classificatoren voor gezichtsherkenning. Afgezien van het detecteren van gezichten, kunnen classificatoren andere objecten detecteren, zoals neus, ogen, kentekenplaat van een voertuig, glimlach enz. De lijst met caseclassificaties kan worden gedownload van het onderstaande ZIP-bestand
Classifiers voor objectdetectie in Python
Als alternatief kunt u met OpenCV ook uw eigen Classifier maken die kan worden gebruikt om elk ander object in een afbeelding te detecteren door uw Cascade Classifier te trainen. In deze tutorial gebruiken we een classifier genaamd “haarcascade_frontalface_default.xml” die het gezicht vanaf de voorkant detecteert. We zullen wel zien