- Podmienky
- Ako funguje rozpoznávanie tváre s OpenCV
- Detekcia tváre pomocou kaskádových klasifikátorov v OpenCV
Rozpoznávanie tváre je čoraz populárnejšie a väčšina z nás ho už používa bez toho, aby si to uvedomovala. Či už je to jednoduchý návrh značiek Facebook alebo Snapchat Filter alebo pokročilý bezpečnostný dohľad na letisku, Face Recognition už v ňom má svoje kúzlo. Čína začala v školách využívať program Rozpoznávanie tváre na sledovanie dochádzky a správania študentov. Maloobchodné predajne začali používať program Face Recognition na kategorizáciu svojich zákazníkov a izolovanie ľudí v minulosti podvodov. Keď bude prebiehať oveľa viac zmien, niet pochýb o tom, že túto technológiu v blízkej budúcnosti uvidíme všade.
V tomto tutoriáli sa dozvieme, ako môžeme zostaviť vlastný systém rozpoznávania tváre pomocou knižnice OpenCV na Raspberry Pi. Výhodou inštalácie tohto systému na prenosný počítač Raspberry Pi je, že ho môžete nainštalovať kdekoľvek, aby fungoval ako monitorovací systém. Rovnako ako všetky systémy rozpoznávania tváre bude aj tento tutoriál obsahovať dva pythonovské skripty, jedným z nich je program Trainer, ktorý bude analyzovať súbor fotografií konkrétnej osoby a vytvorí súbor údajov (súbor YML). Druhým programom je program Recognizerktorá detekuje tvár a potom pomocou tohto súboru YML rozpozná tvár a uvedie meno osoby. Oba programy, o ktorých tu budeme diskutovať, sú určené pre Raspberry Pi (Linux), ale budú fungovať aj na počítačoch Windows s veľmi malými zmenami. Už máme sériu návodov pre začiatočníkov, ako začať s OpenCV, všetky návody k OpenCV si môžete pozrieť tu.
Podmienky
Ako už bolo povedané, na zisťovanie a rozpoznávanie tvárí budeme používať knižnicu OpenCV. Pred pokračovaním v tomto návode si preto nezabudnite nainštalovať knižnicu OpenCV na Pi. Napájajte svoje zariadenie Pi aj pomocou adaptéra 2A a pripojte ho k monitoru displeja pomocou kábla HDMI, pretože nebudeme môcť získať výstup videa cez SSH.
Tiež nebudem vysvetľovať, ako presne OpenCV funguje. Ak sa chcete naučiť spracovávať obrázky, pozrite si tieto základné informácie o OpenCV a rozšírené návody na spracovanie obrázkov. Môžete sa tiež dozvedieť viac o kontúrach, detekcii blobov atď. V tomto výučbe segmentácie obrázkov.
Ako funguje rozpoznávanie tváre s OpenCV
Skôr ako začneme, je dôležité si uvedomiť, že detekcia tváre a rozpoznávanie tváre sú dve odlišné veci. Pri detekcii tváre sa zistí iba tvár osoby, softvér nebude mať predstavu, kto je táto osoba. Pri rozpoznávaní tváre softvér nerozpozná iba tvár, ale rozpozná aj osobu. Teraz by malo byť jasné, že pred vykonaním rozpoznania tváre musíme vykonať detekciu tváre. Nebolo by možné vysvetliť, ako presne OpenCV detekuje tvár alebo akýkoľvek iný predmet. Ak by vás teda zaujímalo, že môžete postupovať podľa tohto návodu na zisťovanie objektov.
Zdroj videa z webovej kamery nie je nič iné ako dlhá sekvencia statických obrázkov, ktoré sa postupne aktualizujú. A každý z týchto obrázkov je iba súborom pixelov rôznych hodnôt, ktoré sú spojené na svojej príslušnej pozícii. Ako teda program dokáže detekovať tvár z týchto pixelov a ďalej v nej rozpoznať osobu? Je za tým veľa algoritmov a ich vysvetlenie presahuje rámec tohto článku, ale keďže používame knižnicu OpenCV, je veľmi jednoduché vykonávať rozpoznávanie tváre bez toho, aby sme sa hlbšie zaoberali pojmami.
Detekcia tváre pomocou kaskádových klasifikátorov v OpenCV
Iba ak dokážeme rozpoznať tvár, dokážeme ju rozpoznať alebo si ju zapamätať. Na detekciu objektu, ako je napríklad tvár, OpenCV používa niečo, čo sa nazýva klasifikátory. Tieto klasifikátory sú vopred natrénované súbory údajov (súbor XML), ktoré možno použiť na detekciu konkrétneho objektu, v našom prípade tváre. Viac informácií o klasifikátoroch detekcie tváre sa dozviete tu. Okrem detekcie tváre môžu klasifikátory detekovať aj ďalšie objekty, ako napríklad nos, oči, ŠPZ vozidla, úsmev atď. Zoznam klasifikátorov prípadov je možné stiahnuť zo súboru ZIP nižšie
Klasifikátory pre detekciu objektov v Pythone
Alternatívne OpenCV tiež umožňuje vytvoriť si vlastný klasifikátor, ktorý sa dá použiť na detekciu akýchkoľvek iných objektov v obraze preškolením vášho kaskádového klasifikátora. V tomto tutoriále použijeme klasifikátor s názvom „haarcascade_frontalface_default.xml“, ktorý detekuje tvár z prednej polohy. Uvidíme