Memememe #selfie (2 / 7 steg)
Steg 2: Haar Cascades--ett Intro
För bättre eller sämre, de flesta mobiltelefoner och digitalkameror idag kan upptäcka ansikten, och, som sett i det föregående steget, det tar inte alltför stor ansträngning att få enkla ansikte upptäckt kod som körs på en Android-telefon eller någon annan plattform, med OpenCV.
Detta är tack vare Viola-Jones algoritmen för ansiktsavkänning, använda Haar-baserade cascade klassificerare. Det finns massor av information om detta på nätet, men en mycket trevlig förklaring kan hittas på webbplatsen för OpenCV.
Det är i grunden en maskin lärande algoritm som använder en massa bilder av och icke-ansikten för att träna en klassificerare som senare kan användas för att upptäcka ansikten i realtid.
Algoritmen i OpenCV kan också användas för att upptäcka andra saker, så länge du har rätt klassificerare. Min OpenCV distribution kom med klassificerare för ögon, övre kropp, händer, frontal ansikte och profil ansikte. Samtidigt letar efter information om hur man tränar dem, hittade jag klassificerare för bananer, pennor och iPhones.
Egentligen är den sista länken för mer än bara iPhones. I hans Spegel Test projekt är Jeff Thompson faktiskt träningsdatorer att känna igen sig i en "icke-utilitarist, bristfällig poetiska/teknisk handling".
Liknar vad vi vill, men eftersom vi har en mycket specifik telefon till upptäcka, beslutade vi att utbilda våra egna klassificerare.
OpenCV handledning utbildning Cascade klassificerare är ett ganska bra ställe att börja. Det förklarar de 2 binära verktyg som används i processen (opencv_createsamples och opencv_traincascade), och alla deras kommandoradsargument och alternativ, men det verkligen ger inte ett exempel på ett flöde att följa, inte heller förklarar det alla möjliga användningsområden för verktyget opencv_createsamples .
Å andra sidan, Naotoshi Seo handledning är faktiskt ganska grundlig och förklarar 4 olika använder för verktyget opencv_createsamples . Thorsten bollen skrev en handledning med Naotoshi Seo skript för att träna en klassificerare att upptäcka bananer, men det kräver vissa Perlskript körs och sammanställa några C++... för mycket arbete...
Jeff har också några fina anteckningar om hur han förberedde sin data och ett skript automatiskt iteration över ett par alternativ för de 2 verktyg.
Det sätt vi gjorde det var inspirerad av alla dessa tutorials, med några mindre ändringar och optimeringar.