- Predpogoji
- Kako prepoznavanje obrazov deluje z OpenCV
- Zaznavanje obrazov z uporabo kaskadnih klasifikatorjev v OpenCV
Prepoznavanje obrazov postaja vse bolj priljubljeno in večina od nas ga že uporablja, ne da bi se sploh zavedala. Naj bo to preprost predlog za Facebook oznako, Snapchat filter ali napredni letališki varnostni nadzor, prepoznavanje obrazov je v njem že ustvarilo svojo čarovnijo. Kitajska je v šolah začela uporabljati prepoznavanje obrazov za spremljanje obiskovanja in vedenja učencev. Trgovine na drobno so s prepoznavanjem obrazov začele kategorizirati svoje stranke in izolirati ljudi z zgodovino prevar. Ker je v teku veliko več sprememb, ni dvoma, da bi to tehnologijo v bližnji prihodnosti lahko videli povsod.
V tej vadnici bomo izvedeli, kako lahko z uporabo knjižnice OpenCV na Raspberry Pi zgradimo lasten sistem za prepoznavanje obrazov. Prednost namestitve tega sistema na prenosni Raspberry Pi je, da ga lahko namestite kamor koli, da deluje kot nadzorni sistem. Kot vsi sistemi za prepoznavanje obrazov bo tudi ta vadnica vključevala dva skripta python, eden je program Trainer, ki bo analiziral nabor fotografij določene osebe in ustvaril nabor podatkov (datoteka YML). Drugi program je program Recognizerki zazna obraz in nato s to datoteko YML prepozna obraz in omeni ime osebe. Oba programa, o katerih bomo tukaj razpravljali, sta namenjena Raspberry Pi (Linux), vendar bosta z zelo majhnimi spremembami delovala tudi v računalnikih Windows. Za začetek z OpenCV že imamo vrsto vadnic za začetnike, vse vadnice OpenCV si lahko ogledate tukaj.
Predpogoji
Kot smo že povedali, bomo za odkrivanje in prepoznavanje obrazov uporabljali knjižnico OpenCV. Preden nadaljujete s to vadnico, torej namestite knjižnico OpenCV na Pi. Pi napajajte tudi z adapterjem 2A in ga prek kabla HDMI povežite z monitorjem zaslona, saj video izhoda prek SSH ne bomo mogli dobiti.
Prav tako ne bom razlagal, kako natančno deluje OpenCV, če vas zanima učenje obdelave slik, si oglejte te osnove OpenCV in napredne vadnice za obdelavo slik. V tej vadnici za segmentacijo slik lahko izveste tudi o konturah, zaznavanju blob ipd.
Kako prepoznavanje obrazov deluje z OpenCV
Preden začnemo, je treba razumeti, da sta zaznavanje obraza in prepoznavanje obrazov dve različni stvari. Pri zaznavanju obrazov zazna samo obraz osebe, programska oprema ne bo imela ideje, kdo je ta oseba. Pri prepoznavanju obrazov programska oprema ne bo le zaznala obraza, temveč bo prepoznala tudi osebo. Zdaj bi moralo biti jasno, da moramo pred prepoznavanjem obrazov izvesti zaznavanje obraza. Ne bi mogel razložiti, kako natančno OpenCV zazna obraz ali kateri koli drug predmet. Torej, če vas zanima, da lahko sledite tej vadnici za zaznavanje predmetov.
Video vir s spletne kamere ni nič drugega kot dolgo zaporedje fotografij, ki se posodabljajo ena za drugo. In vsaka od teh slik je le zbirka slikovnih pik različnih vrednosti, sestavljenih na svojem položaju. Torej, kako lahko program zazna obraz iz teh pik in dodatno prepozna osebo v njem? Za tem je veliko algoritmov in poskušati jih razložiti, presega obseg tega članka, toda ker uporabljamo knjižnico OpenCV, je zelo enostavno izvesti prepoznavanje obrazov, ne da bi se poglobili v koncepte
Zaznavanje obrazov z uporabo kaskadnih klasifikatorjev v OpenCV
Le če bomo lahko zaznali obraz, ga bomo lahko prepoznali ali si ga zapomnili. Za zaznavanje predmeta, kot je obraz, OpenCV uporablja nekaj, kar se imenuje Classifiers. Ti klasifikatorji so predhodno usposobljeni nabor podatkov (datoteka XML), ki jih je mogoče uporabiti za zaznavanje določenega predmeta v našem primeru obraza. Več o klasifikatorjih za zaznavanje obrazov lahko izveste tukaj. Poleg zaznavanja obraza lahko klasifikatorji zaznajo tudi druge predmete, kot so nos, oči, registrska tablica vozila, nasmeh itd. Seznam klasifikatorjev primerov lahko prenesete iz spodnje datoteke ZIP.
Klasifikatorji za zaznavanje predmetov v Pythonu
Poleg tega vam OpenCV omogoča tudi ustvarjanje lastnega klasifikatorja, ki ga lahko uporabite za zaznavanje katerega koli drugega predmeta na sliki z vadbo vašega kaskadnega klasifikatorja. V tej vadnici bomo uporabili klasifikator, imenovan "haarcascade_frontalface_default.xml", ki bo zaznal obraz s sprednjega položaja. Bomo videli