- Forudsætninger
- Sådan fungerer ansigtsgenkendelse med OpenCV
- Ansigtsregistrering ved hjælp af kaskadeklassifikatorer i OpenCV
Ansigtsgenkendelse bliver stadig mere populær, og de fleste af os bruger det allerede uden selv at vide det. Det være sig et simpelt Facebook-tagforslag eller Snapchat-filter eller en avanceret lufthavnssikkerhedsovervågning, ansigtsgenkendelse har allerede arbejdet sin magi i det. Kina er begyndt at bruge ansigtsgenkendelse i skoler til at overvåge de studerendes deltagelse og adfærd. Detailbutikker er begyndt at bruge ansigtsgenkendelse til at kategorisere deres kunder og isolere mennesker med svindelhistorie. Med mange flere ændringer i gang er der ingen tvivl om, at denne teknologi vil ses overalt i den nærmeste fremtid.
I denne vejledning lærer vi, hvordan vi kan opbygge vores eget ansigtsgenkendelsessystem ved hjælp af OpenCV-biblioteket på Raspberry Pi. Fordelen ved at installere dette system på bærbar Raspberry Pi er, at du kan installere det overalt for at fungere som overvågningssystem. Som alle ansigtsgenkendelsessystemer involverer tutorialen to python-scripts, det ene er et trænerprogram, der analyserer et sæt fotos af en bestemt person og opretter et datasæt (YML-fil). Det andet program er Recognizer-programmetsom registrerer et ansigt og derefter bruger denne YML-fil til at genkende ansigtet og nævne personnavnet. Begge de programmer, vi vil diskutere her, er til Raspberry Pi (Linux), men fungerer også på Windows-computere med meget små ændringer. Vi har allerede en række tutorials til begyndere til at komme i gang med OpenCV, du kan tjekke alle OpenCV-tutorials her.
Forudsætninger
Som tidligere fortalt bruger vi OpenCV-biblioteket til at opdage og genkende ansigter. Så sørg for at installere OpenCV-biblioteket på Pi, før du fortsætter med denne vejledning. Tænd også for din Pi med en 2A-adapter og tilslut den til en skærmskærm via HDMI-kabel, da vi ikke kan få videooutputtet gennem SSH.
Jeg vil heller ikke forklare, hvordan OpenCV fungerer nøjagtigt, hvis du er interesseret i at lære billedbehandling, så tjek denne OpenCV basics og avancerede tutorials til billedbehandling. Du kan også lære om konturer, Blob Detection osv. I denne billedsegmenteringsvejledning.
Sådan fungerer ansigtsgenkendelse med OpenCV
Før vi starter, er det vigtigt at forstå, at ansigtsgenkendelse og ansigtsgenkendelse er to forskellige ting. I ansigtsgenkendelse registreres kun ansigtet på en person, softwaren har ingen idé om, hvem den person er. I ansigtsgenkendelse registrerer softwaren ikke kun ansigtet, men genkender også personen. Nu skal det være klart, at vi skal udføre ansigtsgenkendelse, før vi udfører ansigtsgenkendelse. Det ville ikke være muligt for mig at forklare, hvordan OpenCV nøjagtigt registrerer et ansigt eller andre genstande for den sags skyld. Så hvis du er nysgerrig efter at vide, at du kan følge denne Object Detection-tutorial.
Et videofeed fra et webcam er intet andet end en lang række stillbilleder, der opdateres efter hinanden. Og hvert af disse billeder er kun en samling af pixels med forskellige værdier samlet i sin respektive position. Så hvordan kan et program registrere et ansigt fra disse pixels og yderligere genkende personen i det? Der er mange algoritmer bag det, og forsøg på at forklare dem ligger uden for denne artikels anvendelsesområde, men da vi bruger OpenCV-biblioteket, er det meget simpelt at udføre ansigtsgenkendelse uden at komme dybere ind i begreberne
Ansigtsregistrering ved hjælp af kaskadeklassifikatorer i OpenCV
Kun hvis vi er i stand til at opdage et ansigt, er vi i stand til at genkende det eller huske det. For at opdage et objekt som ansigt bruger OpenCV noget, der kaldes klassifikatorer. Disse klassifikatorer er foruddannede datasæt (XML-fil), som kan bruges til at registrere et bestemt objekt i vores tilfælde et ansigt. Du kan lære mere om ansigtsgenkendelsesklassifikatorer her. Bortset fra at detektere ansigt, kan klassifikatorer opdage andre objekter som næse, øjne, køretøjsskilt, smil osv. Listen over sags klassifikatorer kan downloades fra ZIP-filen nedenfor
Klassifikatorer til objektdetektering i Python
Alternativt giver OpenCV dig også mulighed for at oprette din egen klassifikator, som kan bruges til at registrere ethvert andet objekt i et billede ved at træne din kaskadeklassificering. I denne tutorial bruger vi en klassifikator kaldet “haarcascade_frontalface_default.xml”, som registrerer ansigtet fra frontposition. Vi vil se