- Priekšnoteikumi
- Kā sejas atpazīšana darbojas ar OpenCV
- Sejas noteikšana, izmantojot kaskādes klasifikatorus OpenCV
Sejas atpazīšana kļūst arvien populārāka, un lielākā daļa no mums to jau izmanto, pat nenojaušot. Vai tas būtu vienkāršs Facebook taga ieteikums vai Snapchat filtrs vai uzlabota lidostas drošības uzraudzība, sejas atpazīšana tajā jau ir strādājusi. Ķīna ir sākusi izmantot sejas atpazīšanu skolās, lai uzraudzītu skolēnu apmeklējumu un uzvedību. Mazumtirdzniecības veikali ir sākuši izmantot sejas atpazīšanu, lai klasificētu savus klientus un izolētu cilvēkus ar krāpšanas vēsturi. Kad notiek daudz vairāk izmaiņu, nav šaubu, ka šī tehnoloģija tuvākajā nākotnē būs redzama visur.
Šajā apmācībā mēs uzzināsim, kā mēs varam izveidot savu sejas atpazīšanas sistēmu, izmantojot Raspberry Pi OpenCV bibliotēku. Šīs sistēmas instalēšanas portatīvajā Raspberry Pi priekšrocība ir tā, ka jūs varat to instalēt jebkur, lai darbotos kā novērošanas sistēma. Tāpat kā visās sejas atpazīšanas sistēmās, apmācībā būs iekļauti divi pitona skripti, viens ir programma Treneris, kas analizēs konkrētas personas fotoattēlu kopu un izveidos datu kopu (YML fails). Otrā programma ir programma Atpazītkas nosaka seju un pēc tam izmanto šo YML failu sejas atpazīšanai un personas vārda pieminēšanai. Abas programmas, kuras mēs šeit apspriedīsim, ir paredzētas Raspberry Pi (Linux), taču tās darbosies arī ar Windows Computers ar ļoti nelielām izmaiņām. Mums jau ir apmācību sērijas iesācējiem, lai sāktu darbu ar OpenCV. Visas OpenCV apmācības varat pārbaudīt šeit.
Priekšnoteikumi
Kā teicām iepriekš, seju noteikšanai un atpazīšanai izmantosim OpenCV bibliotēku. Tāpēc noteikti turpiniet instalēt OpenCV bibliotēku Pi, pirms turpināt šo apmācību. Arī pievadiet savu Pi ar 2A adapteri un pievienojiet to displeja monitoram, izmantojot HDMI kabeli, jo mēs nevarēsim iegūt video izvadi caur SSH.
Es arī neizskaidrošu, kā tieši darbojas OpenCV, ja jūs interesē apgūt attēlu apstrādi, tad pārbaudiet šo OpenCV pamatinformāciju un uzlabotās attēlu apstrādes apmācības. Šajā attēlu segmentēšanas apmācībā varat uzzināt arī par kontūrām, lāse noteikšanu utt.
Kā sejas atpazīšana darbojas ar OpenCV
Pirms sākam, ir svarīgi saprast, ka sejas noteikšana un sejas atpazīšana ir divas dažādas lietas. Ar sejas noteikšanas funkciju tikai sejas personas tiek konstatēta programmatūra nav ne jausmas, kas šī persona ir. Veicot sejas atpazīšanu, programmatūra ne tikai atpazīs seju, bet arī atpazīs personu. Tagad vajadzētu būt skaidram, ka pirms sejas atpazīšanas jāveic sejas noteikšana. Man nebūtu iespējams izskaidrot, kā tieši OpenCV šajā sakarā nosaka seju vai kādu citu objektu. Tātad, ja vēlaties uzzināt, ka varat sekot šai objektu noteikšanas apmācībai.
Video plūsma no tīmekļa kameras ir nekas cits kā viena pēc otras atjauninātu nekustīgu attēlu secība. Un katrs no šiem attēliem ir tikai dažādu vērtību pikseļu kolekcija, kas salikti kopā attiecīgajā pozīcijā. Tātad, kā programma var noteikt seju no šiem pikseļiem un vēl vairāk atpazīt tajā esošo cilvēku? Aiz tā ir daudz algoritmu, un mēģinājumi tos izskaidrot pārsniedz šī raksta darbības jomu, taču, tā kā mēs izmantojam OpenCV bibliotēku, sejas atpazīšana ir ļoti vienkārša, neiedziļinoties jēdzienos.
Sejas noteikšana, izmantojot kaskādes klasifikatorus OpenCV
Tikai tad, ja spēsim noteikt seju, varēsim to atpazīt vai atcerēties. Lai noteiktu objektu, piemēram, seju, OpenCV izmanto kaut ko tādu, ko sauc par klasifikatoriem. Šie klasifikatori ir iepriekš apmācīti datu kopumi (XML fails), kurus var izmantot, lai noteiktu konkrētu objektu mūsu sejas gadījumā. Vairāk par sejas noteikšanas klasifikatoriem varat uzzināt šeit. Papildus sejas noteikšanai klasifikatori var noteikt citus objektus, piemēram, degunu, acis, transportlīdzekļa numura zīmi, smaidu utt. Lietu klasifikatoru sarakstu var lejupielādēt no ZIP faila zemāk
Klasifikatori objektu noteikšanai Python
Alternatīvi OpenCV ļauj jums izveidot arī savu klasifikatoru, kuru var izmantot jebkura cita objekta atrašanai attēlā, apmācot jūsu kaskādes klasifikatoru. Šajā apmācībā mēs izmantosim klasifikatoru ar nosaukumu “haarcascade_frontalface_default.xml”, kas noteiks seju no priekšpuses. Mēs redzēsim