Näotuvastustehnoloogia on uus ajastu videoanalüütikas, videovalve- ja juurdepääsukontrollisüsteemides. Hiinas asuvad näotuvastusega tualetid vähendavad tualettpaberi tarbimist. Alexander Khanin, VisionLabsi asutaja ja tegevjuht

Esimene samm meie konveieril on näotuvastus. On ilmne, et peate fotol kõik näod isoleerima, enne kui proovite neid ära tunda!

Kui olete viimase 10 aasta jooksul fotograafiat kasutanud, olete ilmselt näinud näotuvastust töös.

Näotuvastus on kaamerate jaoks suurepärane asi. Kui kaamera suudab nägusid automaatselt tuvastada, võite olla kindel, et kõik näod on enne pildistamist fookuses. Kuid me kasutame seda teisel otstarbel – pildi piirkondade leidmiseks, mis tuleb edasi anda meie torujuhtme järgmisse etappi.

Näotuvastus sai peavoolutrendiks 2000. aastate alguses, kui Paul Viola ja Michael Jones leiutasid viisi nägude tuvastamiseks, mis on piisavalt kiire, et töötada odavate kaameratega. Nüüd on aga palju töökindlamad lahendused. Kasutame 2005. aastal avastatud meetodit – suunagradientide histogrammi (lühidalt, HOG).

Pildil nägude tuvastamiseks muudame oma pildi mustvalgeks, sest... Näotuvastuseks pole värviandmeid vaja:

Seejärel vaatame ükshaaval oma pildil iga üksikut pikslit. Iga üksiku piksli puhul tuleks arvesse võtta selle lähiümbrust:

Meie eesmärk on esile tuua, kui tume on praegune piksel võrreldes sellega vahetult külgnevate pikslitega. Seejärel joonistage nool, mis näitab pildi tumedamaks muutumise suunda:


Seda üksikut pikslit ja selle vahetuid naabreid vaadates tumeneb pilt ülespoole paremale.

Kui kordate seda protsessi iga piksel pildil, siis lõpuks asendatakse iga piksel noolega. Neid nooli nimetatakse gradient ja need näitavad kogu pildi valgusest pimedasse liikumist:

Tulemus võib tunduda midagi juhuslikku, kuid seal on väga hea põhjus pikslite asendamiseks gradientidega. Kui analüüsime piksleid otse, on sama inimese tumedatel ja heledatel piltidel väga erinevad pikslite intensiivsuse väärtused. Aga kui arvestada ainult suunas heleduse muutumisel on nii tumedad kui heledad pildid täpselt samasugused. See muudab probleemi lahendamise palju lihtsamaks!

Kuid iga üksiku piksli jaoks gradiendi salvestamine annab meile meetodi, mis sisaldab liiga palju detaile. Lõpuks ei näe me metsa puude pärast. Oleks parem, kui me näeksime lihtsalt vaadates aluseks olevat valguse/tumeduse voolu kõrgemal tasemel põhistruktuur Pildid.

Selleks jagame pildi väikesteks ruutudeks, millest igaüks on 16x16 pikslit. Loendage igas ruudus, mitu gradientnooli on näidatud igas suuremas suunas (st mitu noolt on suunatud üles, üles-paremale, paremale jne). Seejärel asendatakse kõnealune ruut pildil noolega, mille suund on sellel ruudul domineeriv.

Lõpptulemus on see, et muudame algse pildi väga lihtsaks esituseks, mis näitab näo põhistruktuuri lihtsal kujul:


Algne pilt teisendatakse HOG-esitluseks, mis näitab pildi põhiomadusi olenemata selle heledusest.

Sellel HOG-pildil nägude tuvastamiseks peame vaid leidma pildist selle osa, mis on kõige sarnasem teadaolevale HOG-struktuurile, mis on saadud treenimiseks kasutatud nägude rühmast:

Seda meetodit kasutades leiate hõlpsalt nägusid mis tahes pildilt:

Kui soovite seda sammu Pythoni ja dlib-i abil ise teha, on olemas programm, mis näitab, kuidas luua ja vaadata piltide HOG-esitusi.

2. samm: nägude positsioneerimine ja kuvamine

Niisiis, oleme valinud oma pildil olevad näod. Kuid nüüd on probleem: sama nägu näeb erinevatest suundadest vaadatuna arvuti jaoks täiesti erinev:


Inimesed näevad kergesti, et mõlemad pildid on näitleja Will Ferrellist, kuid arvutid kohtlevad neid kahe erineva inimesena.

Selle arvesse võtmiseks proovime iga pilti teisendada nii, et silmad ja huuled oleksid pildil alati samas kohas. Nägude võrdlemine on järgmiste sammudega oluliselt lihtsustatud.

Selleks kasutame algoritmi nimega "antropomeetriliste punktide hindamine". Selleks on palju võimalusi, kuid me kasutame 2014. aastal Vahid Kazemi ja Josephine Sullivani pakutud lähenemisviisi.

Põhiidee on see, et tuvastatakse 68 konkreetset punkti ( märgid) esineb igal näol – lõua väljaulatuv osa, kummagi silma välisserv, iga kulmu siseserv jne. Seejärel on masina õppimisalgoritm konfigureeritud otsima neid 68 konkreetset punkti igal küljel:


Asetame igale pinnale 68 antropomeetrilist punkti

Allpool on meie testpildile 68 antropomeetrilise punkti paigutamise tulemus:


PRO NÕUANNE UUSJALE: Sama meetodit saab kasutada ka oma enda versioon Reaalajas 3D näofiltrid Snapchatis!

Nüüd, kui teame, kus on silmad ja suu, lihtsalt pöörame, skaleerime ja panoraame pilti nii, et silmad ja suu oleksid võimalikult täpselt keskel. Me ei võta kasutusele ebatavalisi 3D-deformatsioone, kuna need võivad pilti moonutada. Teeme ainult põhilisi kujutiste teisendusi, nagu pööramine ja skaleerimine, mis hoiavad jooned paralleelsed (nn afiinsed teisendused):

Nüüd, olenemata sellest, kuidas nägu on pööratud, saame silmad ja suu tsentreerida nii, et need oleksid pildil ligikaudu samas asendis. See muudab meie järgmise sammu täpsuse palju suuremaks.

Kui soovite seda sammu Pythoni ja dlib-i abil ise proovida, on olemas programm antropomeetriliste punktide leidmiseks ja programm nende punktide põhjal pildi teisendamiseks.

3. samm: näo kodeerimine

Nüüd jõuame probleemi tuumani – näotuvastuse endani. Siit saab alguse lõbu!

Näotuvastuse lihtsaim viis on võrrelda 2. etapis tuvastatud tundmatut nägu kõigi juba märgistatud nägudega. Kui leiame juba märgistatud näo, mis on väga sarnane meie tundmatule näoga, tähendab see, et tegemist on sama inimesega. Tundub väga hea mõte, pole see?

Tegelikult on selle lähenemisviisiga suur probleem. Selline sait nagu Facebook, millel on miljardeid kasutajaid ja triljoneid fotosid, ei saa piisavalt läbi vaadata iga eelnevalt märgistatud nägu, võrreldes seda iga uue üleslaaditud pildiga. See võtaks liiga palju aega. Peame näod ära tundma millisekundites, mitte tundides.

Peame õppima igast näost välja võtma mõned põhiomadused. Seejärel võiksime saada tundmatult isikult sellised omadused ja võrrelda neid tuntud isikute omadustega. Näiteks saate mõõta iga kõrva, määrata silmade vahekaugust, nina pikkust jne. Kui olete kunagi vaadanud telesarja Las Vegase kuritegevuse labori töötajate tööst (CSI: Crime Scene Investigation), siis teate, millest me räägime:


Nagu filmides! See tundub nii tõsi!

Kõige usaldusväärsem meetod näo mõõtmiseks

Olgu, aga milliseid omadusi tuleb igalt inimeselt hankida, et luua kuulsate nägude andmebaas? Kõrva suurused? Nina pikkus? Silmade värv? Veel midagi?

Selgub, et omadused, mis meile, inimestele, tunduvad ilmselged (nagu silmade värv), pole pildil üksikuid piksleid analüüsiva arvuti jaoks mõttekad. Teadlased leidsid, et kõige sobivam lähenemine on lasta arvutil endal määrata kogutavad omadused. Sügav õppimine suudab paremini tuvastada näo osad, mis on näotuvastuse jaoks olulised, paremini kui inimesed.

Lahenduseks on sügava konvolutsiooni treenimine närvivõrk(just see, mida me 3. numbris tegime). Kuid selle asemel, et koolitada võrku graafilisi objekte ära tundma, nagu tegime eelmisel korral, hakkame nüüd seda treenima looma iga näo jaoks 128 funktsiooni.

Õppeprotsess toimib kolme näopildi samaaegsel vaatamisel:

1. Laadi üles treeningpilt kuulsa inimese näost

2. Laadige üles sama inimese teine ​​näopilt

3. Laadige üles pilt kellegi teise näost

Algoritm võtab seejärel arvesse omadusi, mida see praegu iga määratud jaoks loob kolm pilti. See reguleerib veidi närvivõrku nii, et selle piltide 1 ja 2 jaoks loodud funktsioonid oleksid üksteisele veidi lähemal ning funktsioonid, mida see piltide 2 ja 3 jaoks toodab, on üksteisest veidi kaugemal.

Üks "struktureeritud" õppimisetapp:

Pärast seda sammu miljoneid kordi kordamist tuhandete erinevate inimeste miljonite piltide jaoks suudab närvivõrk iga inimese jaoks usaldusväärselt genereerida 128 funktsiooni. Mis tahes kümme erinevat pilti samast inimesest annavad ligikaudu samad omadused.

Masinõppe eksperdid nimetavad need 128 iga näo omadust omaduste komplekt (omadused). Idee taandada keerukad algandmed, näiteks pilt arvutiga loodud numbrite loendiks, on osutunud treeningmasinate (eriti tõlkimise) jaoks väga paljutõotavaks. Meie kasutatava näopõhise lähenemisviisi pakkusid välja 2015. aastal Google'i teadlased, kuid sarnaseid lähenemisviise on palju.

Meie näopildi kodeerimine

Konvolutsioonilise närvivõrgu väljaõpetamine näoomaduste komplektide väljastamiseks nõuab suurt hulka andmeid ja suur tootlikkus arvuti. Isegi kallil NVidia Telsa videokaardil on see vajalik umbes 24 tundi pidev koolitus hea täpsuse saavutamiseks.

Aga kui võrgustik on koolitatud, siis on võimalik luua omadusi igale näole, isegi sellisele, mida pole varem nähtud! Seega tuleb seda sammu teha vaid üks kord. Meie õnneks on OpenFace'i head inimesed seda juba teinud ja pakkunud juurdepääsu mitmele koolitatud võrgule, mida saame kohe kasutada. Aitäh Brandon Amosele ja meeskonnale!

Selle tulemusel peame oma näopildid läbi nende eelkoolitatud võrgu käivitama ja hankima iga näo jaoks 128 funktsiooni. Allpool on meie testpildi tehnilised andmed:

Kuid milliseid konkreetseid näoosi need 128 numbrid kirjeldavad? Selgub, et meil pole sellest aimugi. Meie jaoks pole see aga tegelikult oluline. Me peaksime hoolima ainult sellest, et võrk toodab sama inimese kahte erinevat pilti analüüsides ligikaudu samu numbreid.

Kui soovite seda sammu ise proovida, pakub OpenFace Lua skripti, mis loob kõigi kaustas olevate piltide omaduste komplektid ja kirjutab need csv-faili. Saate seda käivitada, nagu näidatud.

4. samm. Isiku nime leidmine pärast näo kodeerimist

Viimane samm on tegelikult kogu selle protsessi kõige lihtsam. Peame vaid leidma oma kuulsate nägude andmebaasist inimese, kellel on meie testpildi omadele kõige lähedasemad omadused.

Seda saab teha mis tahes põhialgoritm masinõppe klassifikatsioonid. Mis tahes eritehnika sügav õppimine pole nõutud. Kasutame lihtsat lineaarset SVM-klassifikaatorit, kuid kasutada saab ka paljusid teisi klassifitseerimisalgoritme.

Peame vaid välja õpetama klassifikaatori, mis suudab võtta uue testpildi omadused ja teatada, milline kuulus nägu sobib kõige paremini. Sellise klassifikaatori töö võtab millisekundeid. Klassifikaatori töö tulemuseks on inimese nimi!

Proovime oma süsteemi. Esiteks koolitasin klassifikaatorit, kasutades funktsioonide komplekte umbes 20 Will Ferrelli, Chad Smithi ja Jimmy Falloni pildist:


Oh, neid imelisi pilte õpetamiseks!

Seejärel käivitasin Jimmy Falloni kuulsa Youtube'i video iga kaadri klassifikaatori Kas Ferrell ja Chad Smith teesklevad teineteist :

See töötas! Ja vaadake, kui suurepäraselt see nii paljudest erinevatest suundadest pärit nägudele mõjus – isegi profiilis!

Kogu protsessi ise läbiviimine

Vaatame vajalikke samme:

1. Töötle pilti HOG-algoritmi abil, et luua pildist lihtsustatud versioon. Sellelt lihtsustatud pildilt leidke ala, mis sarnaneb kõige rohkem näo genereeritud HOG-esitlusega.

2. Määrake näo asend, määrates sellele peamised antropomeetrilised punktid. Kui need antropomeetrilised punktid on paigutatud, kasutage neid kujutise muutmiseks silmade ja suu keskele.

3. Laske tsentreeritud näokujutis läbi närvivõrgu, mis on treenitud näoomadusi tuvastama. Salvestage saadud 128 tunnust.

4. Olles läbi vaadanud kõik näod, mille tunnused on varem võetud, määrake inimene, kelle näoomadused on saadud omadele kõige lähedasemad. See on tehtud!

Nüüd, kui teate, kuidas see kõik töötab, lugege algusest lõpuni läbi juhised kogu näotuvastusprotsessi läbiviimiseks. oma arvuti OpenFace'i kasutamine:

Enne kui alustad

Veenduge, et teil oleks installitud Python, OpenFace ja dlib. Saate need installida käsitsi või kasutada eelkonfigureeritud konteineri kujutist, kuhu see kõik on juba installitud.

Docker pull bamos/openface docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash cd /root/openface

Professionaalse näpunäide algajale: kui kasutate Dockerit OSX-is, saate OSX-i/kasutajate/kausta konteinerpildi sees nähtavaks teha, nagu allpool näidatud:

Docker run -v /Kasutajad:/host/Kasutajad -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash cd /root/openface

Seejärel pääsete juurde kõigile oma OSX-failidele konteineri kujutises aadressil /host/Users/…

Ls /host/Kasutajad/

Samm 1

Looge avatud näo kaustas kaust nimega ./training-images/.

Mkdir koolitus-pildid

2. samm

Looge alamkaust iga inimese jaoks, kelle soovite ära tunda. Näiteks:

Mkdir ./training-images/will-ferrell/ mkdir ./training-images/chad-smith/ mkdir ./training-images/jimmy-fallon/

3. samm

Kopeerige iga inimese kõik pildid vastavatesse alamkaustadesse. Veenduge, et igal pildil oleks ainult üks nägu. Näo ümbert pole vaja kärpida. OpenFace teeb seda automaatselt.

4. samm

Käivitage avatud pinna juurkataloogist avatud skriptid:

Esmalt tuleb teha asukoha tuvastamine ja joondamine:

./util/align-dlib.py ./training-images/ align outerEyesAndNose ./aligned-images/ --size 96

See loob uue alamkausta./aligned-images/ iga teie testpildi kärbitud ja joondatud versiooniga.

Seejärel looge joondatud piltidest vaated:

./batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/

Alamkaust ./generated-embeddings/ sisaldab csv-faili iga pildi funktsioonikomplektidega.

Treenige oma näotuvastusmudelit:

./demos/classifier.py rong ./generated-embeddings/

Luuakse uus fail nimega./generated-embeddings/classifier.pk . See fail sisaldab SVM-i mudelit, mida kasutatakse uute nägude tuvastamiseks.

Nüüdsest on teil töötav näotuvastaja!

5. samm. Tuvasta näod!

Võtke uus pilt tundmatu inimesega. Käivitage see läbi järgmise klassifikaatori skripti:

./demos/classifier.py järelda ./generated-embeddings/classifier.pkl your_test_image.jpg

Peaksite saama umbes sellise hoiatuse:

=== /test-images/will-ferrel-1.jpg === Ennustada will-ferrel 0,73 usaldusega.

Siin saate soovi korral seadistada pythoni skripti./demos/classifier.py.

Olulised märkused:

Kui tulemused ei ole rahuldavad, proovige 3. sammus lisada iga inimese kohta veel mõned pildid (eriti eri suundadest pärit pildid).

See skript annab alati hoiatuse, isegi kui see inimest ei tunne. Tegelikul kasutamisel peaksite kontrollima usaldustaset ja eemaldama madala usaldusväärsusega hoiatused, kuna need on suure tõenäosusega valed.

Lisa märksõnu

Võib-olla pole tänapäeval ühtegi teist tehnoloogiat, mida ümbritseks nii palju müüte, valesid ja ebakompetentsust. Ajakirjanikud, kes räägivad tehnoloogiast, valetavad, poliitikud, kes räägivad edukast rakendamisest, valetavad, enamik tehnoloogiamüüjaid valetavad. Näen iga kuu tagajärgi, kui inimesed üritavad näotuvastust rakendada süsteemidesse, mis sellega hakkama ei saa.

Selle artikli teema on olnud pikka aega valus, kuid ma olin ikkagi liiga laisk, et seda kirjutada. Palju teksti, mida olen juba paarkümmend korda erinevatele inimestele kordanud. Kuid pärast järjekordse prügipaki lugemist otsustasin, et on aeg. Ma annan lingi sellele artiklile.

Niisiis. Selles artiklis vastan mõnele lihtsale küsimusele:

Mis te arvate, kust algoritmide loojad need alused said?

Väike vihje. Esimene NTechi toode, mis neil praegu on, on Find Face, inimeste otsing VKontakte'is. Ma arvan, et selgitust pole vaja. Muidugi võitleb VKontakte robotitega, mis pumpavad kõik välja avatud profiilid. Kuid niipalju kui ma kuulsin, laadivad inimesed endiselt alla. Ja klassikaaslased. Ja Instagram.

Tundub nagu Facebookiga – seal on kõik keerulisem. Kuid ma olen peaaegu kindel, et ka nemad mõtlesid midagi välja.
Nii et jah, kui su profiil on avalik, siis võid uhke olla, seda kasutati algoritmide treenimiseks;)

Lahendustest ja ettevõtetest

Selle üle tasub uhkust tunda. Maailma viiest juhtivast ettevõttest kaks on nüüd Venemaa. Need on N-Tech ja VisionLabs. Pool aastat tagasi olid liidrid NTech ja Vocord, esimene töötas palju paremini pööratud nägudel, teine ​​frontaalsetel.

Nüüd on liidriks jäänud 1-2 Hiina ettevõtet ja 1 ameeriklane, Vocord on reitingutes midagi kaotanud.

Teised venekeelsed reitingud on itmo, 3divi ja intellivision. Synesis on Valgevene ettevõte, kuigi osa sellest asus kunagi Moskvas; umbes 3 aastat tagasi pidasid nad Habré blogi. Tean veel mitme lahenduse kohta, et need kuuluvad välisfirmadele, aga arendusbürood on ka Venemaal. Neid on ikka vähe Venemaa ettevõtted mis ei ole konkurentsis, kuid millel tundub olevat head lahendused. Näiteks aastatuhande arengueesmärkidel on. Ilmselgelt on ka Odnoklassnikil ja VKontaktel oma head, aga need on mõeldud sisekasutuseks.

Lühidalt, jah, enamasti on meil ja hiinlastel samad näoilmed.

NTech oli esimene maailmas, kes näitas head parameetrid uus tase. Kuskil 2015. aasta lõpus. VisionLabs jõudis just NTTechile järele. 2015. aastal olid nad turuliidrid. Kuid nende otsus oli viimase põlvkonna otsus ja nad hakkasid NTechile järele jõudma alles 2016. aasta lõpus.

Ausalt öeldes ei meeldi mulle kumbki neist firmadest. Väga agressiivne turundus. Olen näinud inimesi, kellele müüdi selgelt sobimatu lahendus, mis ei lahendanud nende probleeme.

Sellest küljest meeldis mulle Vocord palju rohkem. Pidasin kunagi nõu mõne mehega, kellele Vocord ütles väga ausalt: "Teie projekt selliste kaamerate ja paigalduspunktidega ei tööta." NTech ja VisionLabs üritasid rõõmsalt müüa. Kuid Vocord on hiljuti kadunud.

järeldused

Kokkuvõtteks tahaksin öelda järgmist. Näotuvastus on väga hea ja võimas tööriist. See võimaldab tõesti täna kurjategijaid leida. Kuid selle rakendamine nõuab kõigi parameetrite väga täpset analüüsi. Saadaval on palju avatud lähtekoodiga lahendusi. On rakendusi (tuvastus staadionitel rahvahulgaga), kus peate installima ainult VisionLabs|Ntechi ning hooldama ka hooldus-, analüüsi- ja otsustusmeeskonda. Ja OpenSource teid siin ei aita.

Tänapäeval ei suuda te uskuda kõiki muinasjutte, et võite tabada kõik kurjategijad või jälgida kõiki linnas. Kuid on oluline meeles pidada, et sellised asjad võivad aidata kurjategijaid tabada. Näiteks selleks, et peatada mitte kõik metroosviibijad, vaid ainult need, keda süsteem sarnaseks peab. Paigutage kaamerad nii, et näod oleksid paremini äratuntavad ja looge selleks sobiv infrastruktuur. Kuigi näiteks mina olen selle vastu. Sest kui teid kellegi teisena tunnustatakse, võib vea hind olla liiga kõrge.

Lisa märksõnu

Kadestamisväärse regulaarsusega ilmuvad Habré lehel artiklid erinevatest näotuvastusmeetoditest. Otsustasime mitte ainult seda imelist teemat toetada, vaid avaldada oma sisedokumendi, mis hõlmab kui mitte kõiki, kuid paljusid näotuvastuse lähenemisviise, nende tugevaid ja nõrku külgi. Selle koostas meie insener Andrey Gusak masinnägemise osakonna noortele töötajatele nii-öelda õppeotstarbel. Täna pakume seda kõigile, kes seda soovivad. Artikli lõpus on muljetavaldav loetelu viidetest kõige uudishimulikumatele.

Niisiis, alustame.
Vaatamata mitmesugustele esitatud algoritmidele saab näotuvastusprotsessi üldise struktuuri tuvastada:

Üldine näokujutise töötlemise protsess tuvastamise ajal

Esimeses etapis tuvastatakse nägu ja lokaliseeritakse see pildil. Tuvastamise etapis joondatakse näopilt (geomeetriline ja heledus), arvutatakse tunnused ja tuvastatakse otse – arvutatud tunnuseid võrreldakse andmebaasi salvestatud standarditega. Peamine erinevus kõigi esitatud algoritmide vahel on funktsioonide arvutamine ja nende komplektide võrdlemine üksteisega.

1. Paindliku võrdlemise meetod graafikutel (Elastne graafikute sobitamine).

Meetodi olemus taandub näokujutisi kirjeldavate graafikute elastsele sobitamisele. Näod on kujutatud graafikutena, millel on kaalutud tipud ja servad. Tuvastamisetapis jääb üks graafikutest - võrdlusgraafik - muutumatuks, teine ​​aga deformeerub, et see sobiks kõige paremini esimesega. Sellistes tuvastussüsteemides võivad graafikud olla kas ristkülikukujuline võre või struktuur, mille moodustavad näo iseloomulikud (antropomeetrilised) punktid.

A)

B)

Näotuvastuse graafiku struktuuri näide: a) korrapärane võre b) näo antropomeetrilistel punktidel põhinev graafik.

Graafiku tippudes arvutatakse tunnuste väärtused, kasutades kõige sagedamini Gabori filtrite või nende järjestatud komplektide kompleksväärtusi - Gabori lainekesi (Gabori massiive), mis arvutatakse mõnes kohalikus piirkonnas. graafiku tippu lokaalselt, konvoleerides pikslite heleduse väärtused Gabori filtritega.


Gabori filtrite komplekt (pank, jet).


Näide näokujutise konvolutsioonist kahe Gabori filtriga

Graafi servad on kaalutud külgnevate tippude vahekaugustega. Kahe graafiku erinevus (kaugus, eristav karakteristik) arvutatakse mõne deformatsioonikulu funktsiooni abil, mis võtab arvesse nii tippudes arvutatud tunnusväärtuste erinevust kui ka graafiku servade deformatsiooniastet.
Graafiku deformeerumine toimub, nihutades iga selle tippu teatud kauguse võrra teatud suundades selle algse asukoha suhtes ja valides sellise positsiooni, kus deformeeritud tipus on tunnuste väärtuste (Gabori filtri vastused) erinevus. graafik ja võrdlusgraafiku vastav tipp on minimaalsed. Seda toimingut sooritatakse ükshaaval kõigi graafi tippude jaoks, kuni saavutatakse väikseim summaarne erinevus deformeeritud ja referentsgraafiku karakteristikute vahel. Deformatsiooni kulufunktsiooni väärtus deformeeritud graafiku selles asendis on sisendpinna kujutise ja võrdlusgraafiku vahelise erinevuse mõõt. See "lõõgastus" deformatsiooniprotseduur tuleb läbi viia kõigi süsteemi andmebaasis sisalduvate võrdlusisikutega. Süsteemituvastuse tulemuseks on deformatsioonihinna funktsiooni parima väärtusega standard.


Näide graafiku deformatsioonist korrapärase võre kujul

Mõned väljaanded näitavad 95-97% äratundmise efektiivsust isegi erinevate emotsionaalsete ilmete ja näonurga muutuste korral kuni 15 kraadini. Graafikutel elastsete võrdlussüsteemide arendajad tsiteerivad aga selle lähenemisviisi kõrgeid arvutuskulusid. Näiteks kulus sisendnäo kujutise võrdlemiseks 87 võrdluspildiga umbes 25 sekundit, kui töötate paralleelarvutis 23 muunduriga (Märkus: väljaanne 1993. aastast). Teised selleteemalised väljaanded kas ei näita aega või ütlevad, et see on pikk.

Puudused: tuvastamisprotseduuri suur arvutuslik keerukus. Madal tehnoloogia uute standardite meeldejätmisel. Tööaja lineaarne sõltuvus näoandmebaasi suurusest.

2. Närvivõrgud

Praegu on närvivõrke (NN) kümmekond tüüpi. Üks levinumaid võimalusi on mitmekihilisele pertseptronile ehitatud võrk, mis võimaldab klassifitseerida sisendpilti/signaali vastavalt võrgu eelkonfiguratsioonile/koolitusele.
Närvivõrke treenitakse koolitusnäidete komplekti alusel. Treeningu olemus taandub interneuroniühenduste raskuste reguleerimisele optimeerimisprobleemi lahendamise protsessis, kasutades gradiendi laskumise meetodit. NN-i koolitusprotsessi käigus ekstraheeritakse põhifunktsioonid automaatselt, määratakse nende tähtsus ja luuakse nendevahelised suhted. Eeldatakse, et koolitatud NN suudab tänu oma üldistusvõimele rakendada koolitusprotsessi käigus saadud kogemusi tundmatute piltide puhul.
Näotuvastuse valdkonnas näitas parimaid tulemusi (publikatsioonide analüüsi tulemuste järgi) Convolutional Neural Network ehk konvolutsiooniline närvivõrk (edaspidi CNN), mis on selliste närvivõrgu arhitektuuride ideede loogiline edasiarendus. kognitronina ja neokognitronina. Edu on tingitud võimalusest võtta arvesse pildi kahemõõtmelist topoloogiat, erinevalt mitmekihilisest pertseptronist.
CNN-ide eristavad tunnused on kohalikud retseptori väljad (pakkuvad neuronite kohalikku kahemõõtmelist ühenduvust), jagatud kaalud (pakkuvad teatud funktsioonide tuvastamist kõikjal pildil) ja hierarhiline korraldus koos ruumilise valimiga (ruumiline alamproovimine). Tänu nendele uuendustele pakub CNN osalist vastupanu skaala muutustele, nihketele, pöörlemistele, perspektiivi muutustele ja muudele moonutustele.


Konvolutsioonilise närvivõrgu arhitektuuri skemaatiline illustratsioon

CNN-i testimine ORL-i andmebaasis, mis sisaldas valgustuse, skaala, ruumilise pöörde, asendi ja erinevate emotsioonide kergeid muutusi sisaldavate nägude pilte, näitas 96% tuvastamise täpsust.
CNN sai oma arenduse DeepFace'i arendamisel, mille omandas
Facebook, et tuvastada oma sotsiaalvõrgustiku kasutajate näod. Kõik arhitektuurilised omadused on suletud.


Kuidas DeepFace töötab

Närvivõrkude puudused: uue referentsisiku lisamine andmebaasi nõuab võrgustiku täielikku ümberõpet kogu olemasoleval komplektil (üsna pikk protseduur, sõltuvalt valimi suurusest 1 tund kuni mitu päeva). Treeninguga seotud matemaatilise iseloomuga probleemid: lokaalse optimumini jõudmine, optimaalse optimeerimise etapi valimine, ümberõpe jne. Võrguarhitektuuri valiku etappi (neuronite arv, kihid, ühenduste iseloom) on raske formaliseerida. Kõike eelnevat kokku võttes võime järeldada, et närvivõrk on raskesti tõlgendatavate tulemustega “must kast”.

3. Markovi varjatud mudelid (HMM, HMM)

Üks neist statistilised meetodid Näotuvastustööriistad on diskreetse ajaga varjatud Markovi mudelid (HMM). HMM-id kasutavad signaalide statistilisi omadusi ja võtavad otseselt arvesse nende ruumilisi omadusi. Mudeli elemendid on: varjatud olekute hulk, vaadeldavate olekute hulk, üleminekutõenäosuste maatriks, olekute algtõenäosus. Igal neist on oma Markovi mudel. Objekti äratundmisel kontrollitakse antud objektide baasi jaoks genereeritud Markovi mudeleid ja otsitakse maksimaalset vaadeldavat tõenäosust, et antud objekti vaatluste jada genereeris vastav mudel.
Siiani ei ole õnnestunud leida näidet HMM-i kaubandusliku kasutamise kohta näotuvastuseks.

Puudused:
- iga andmebaasi jaoks on vaja valida mudeli parameetrid;
- HMM-il puudub eristusvõime, see tähendab, et õppimisalgoritm maksimeerib ainult iga pildi reaktsiooni selle mudelile, kuid ei minimeeri vastust teistele mudelitele.

4. Põhikomponentide analüüs (PCA)

Üks tuntumaid ja arenenumaid on Karhuneni-Loevi teisendusel põhinev põhikomponentanalüüs (PCA).
Algselt hakati statistikas kasutama põhikomponendi meetodit, et vähendada funktsioonide ruumi ilma olulise teabekaota. Näotuvastuse ülesandes kasutatakse seda peamiselt näokujutise esitamiseks väikesemõõtmelise vektoriga (põhikomponendid), mida seejärel võrreldakse andmebaasi salvestatud võrdlusvektoritega.
Põhikomponendi meetodi põhieesmärk on oluliselt vähendada tunnusruumi dimensiooni, et see kirjeldaks võimalikult hästi paljudele isikutele kuuluvaid “tüüpilisi” kujutisi. Seda meetodit kasutades on võimalik tuvastada erinevaid variatsioone näokujutiste treeningkomplektis ja kirjeldada seda varieeruvust mitme ortogonaalvektori alusel, mida nimetatakse omanägudeks.

Näokujutiste treenimiskomplektis üks kord saadud omavektorite komplekti kasutatakse kõigi teiste näokujutiste kodeerimiseks, mis on esindatud nende omavektorite kaalutud kombinatsiooniga. Piiratud arvu omavektoreid kasutades on võimalik saada sisendpinna kujutise tihendatud lähendus, mille saab seejärel andmebaasi salvestada koefitsientide vektorina, mis toimib ka näoandmebaasis otsinguvõtmena.

Põhikomponendi meetodi olemus on järgmine. Esiteks teisendatakse kogu nägude treeningkomplekt üheks ühiseks andmemaatriksiks, kus iga rida esindab ühte reaks lagunenud näokujutise eksemplari. Kõik treeningkomplekti näod tuleb vähendada sama suuruseni ja normaliseeritud histogrammidega.


Nägude treeningkomplekti teisendused üheks üldmaatriksiks X

Seejärel andmed normaliseeritakse ja read vähendatakse 0 keskmise ja 1 dispersioonini ning arvutatakse kovariatsioonimaatriks. Saadud kovariatsioonimaatriksi jaoks on lahendatud omaväärtuste ja vastavate omavektorite (omanägude) määramise probleem. Järgmisena sorteeritakse omavektorid omaväärtuste kahanevas järjekorras ja jäetakse ainult esimesed k vektorit vastavalt reeglile:




PCA algoritm


Näide esimese kümne omavektorist (omanägu), mis on saadud treenitud tahkude hulgast

= 0.956*-1.842*+0.046

Näide inimese näo konstrueerimisest (sünteesimisest), kasutades omanägude ja põhikomponentide kombinatsiooni


Põhimõte valida aluse esimestest parimatest omavektoritest


Näide näo kaardistamisest kolme omanäo abil saadud kolmemõõtmelisse meetrilisse ruumi ja edasisest tuvastamisest

Põhikomponendi meetod on end praktilistes rakendustes hästi tõestanud. Kuid juhtudel, kui näokujutis sisaldab olulisi valgustuse või näoilme muutusi, väheneb meetodi efektiivsus oluliselt. Asi on selles, et PCA valib alamruumi eesmärgiga maksimeerida sisendandmete kogumi lähendamist ja mitte teha vahet nägude klasside vahel.

Selle probleemi lahendamiseks pakuti välja Fisheri lineaarse diskriminandi abil (kirjanduses on nimed “Eigen-Fisher”, “Fisherface”, LDA). LDA valib lineaarse alamruumi, mis maksimeerib suhte:

Kus

Klassidevaheline dispersioonimaatriks ja

klassisisene dispersioonimaatriks; m – klasside arv andmebaasis.

LDA otsib andmeprojektsiooni, kus klassid on maksimaalselt lineaarselt eraldatavad (vt joonist allpool). Võrdluseks otsib PCA andmeprojektsiooni, mis maksimeerib levi kogu nägude andmebaasis (klasse eirates). Näopiltide tugeva paagi ja põhjavarjutuse tingimustes tehtud katsete tulemuste kohaselt näitas Fisherface 95% efektiivsust võrreldes 53% Eigenface'iga.


Põhiline erinevus PCA ja LDA projektsioonide moodustamise vahel

Erinevus PCA ja LDA vahel

5. Aktiivse välimuse mudelid (AAM) ja aktiivse kuju mudelid (ASM) ()
Aktiivse välimuse mudelid (AAM)
Aktiivsed mudelid välimus(Active Appearance Models, AAM) on statistilised kujutise mudelid, mida saab kohandada reaalseks kujutiseks läbi erinevat tüüpi deformatsioonide. Seda tüüpi mudelit kahemõõtmelises versioonis pakkusid Tim Coots ja Chris Taylor 1998. aastal. Esialgu aktiivsed mudelid Näopiltide parameetrite hindamiseks kasutati välimust.
Aktiivne välimusmudel sisaldab kahte tüüpi parameetreid: kujuga seotud parameetrid (kujuparameetrid) ja pildi pikslite või tekstuuri statistilise mudeliga seotud parameetrid (välimuse parameetrid). Enne kasutamist tuleb modelli eelnevalt märgistatud piltide komplekti õpetada. Pildi märgistamine toimub käsitsi. Igal märgil on oma number ja see määrab iseloomuliku punkti, mille mudel peab uue pildiga kohanedes leidma.


Näide näokujutise märkimisest 68 punktist, moodustades AAM-kuju.

AAM-i treeningprotseduur algab märgistatud kujutiste kujundite normaliseerimisega, et kompenseerida erinevusi mõõtkavas, kaldenurgas ja nihkes. Selleks kasutatakse nn üldistatud Procrustese analüüsi.


Näo kuju punktide koordinaadid enne ja pärast normaliseerimist

Seejärel ekstraheeritakse põhikomponendid kogu normaliseeritud punktide komplektist PCA meetodil.


AAM-kujuline mudel koosneb triangulatsioonivõrest s0 ja lineaarne kombinatsioon nihked si s0 suhtes

Järgmisena moodustatakse kujupunktide moodustatud kolmnurkade sees olevatest pikslitest maatriks, nii et iga selle veerg sisaldab vastava tekstuuri piksliväärtusi. Tasub teada, et treeningul kasutatavad tekstuurid võivad olla kas ühe kanaliga (halliskaala) või mitme kanaliga (näiteks RGB värviruum või muud). Mitme kanaliga tekstuuride puhul moodustatakse iga kanali jaoks eraldi pikslivektorid ja seejärel ühendatakse need kokku. Pärast tekstuurmaatriksi põhikomponentide leidmist loetakse AAM-mudel treenituks.

AAM-i välimusmudel koosneb põhivälimusest A0, mis on määratletud pikslitega baasvõres s0 ja nihkete Ai lineaarsest kombinatsioonist A0 suhtes.

AAM-i näide. Kuju parameetri vektor
p=(p_1,p_2,〖…,p〗_m)^T=(-54,10,-9.1,…)^T kasutatakse kuju s mudeli ja parameetrivektori λ=(λ_1,λ_2) sünteesimiseks. ,〖…, λ〗_m)^T=(3559,351,-256,…)^T mudeli välimuse sünteesimiseks. Lõplik näomudel 〖M(W(x;p))〗^ saadakse kahe mudeli – kuju ja välimuse – kombinatsioonina.

Mudeli sobitamine konkreetse näopildiga toimub optimeerimisprobleemi lahendamise protsessis, mille olemus taandub funktsionaalsuse minimeerimisele

Kasutades gradiendi laskumise meetodit. Sel juhul leitud mudeli parameetrid kajastavad mudeli asukohta konkreetsel pildil.




Näide mudeli sobitamisest konkreetsele kujutisele gradiendi laskumise protseduuri 20 iteratsioonis.

AAM-i abil saate modelleerida nii jäigale kui ka mittejäigale deformatsioonile alluvate objektide kujutisi. AAM koosneb parameetrite komplektist, millest mõned esindavad näo kuju, ülejäänud täpsustavad selle tekstuuri. Deformatsiooni all mõistetakse tavaliselt geomeetrilist teisendust translatsiooni, pööramise ja skaleerimise kompositsiooni kujul. Pildil näo lokaliseerimise probleemi lahendamisel otsitakse AAM-i parameetreid (asukoht, kuju, tekstuur), mis esindavad sünteesitud kujutist, mis on vaadeldavale kõige lähemal. Lähtudes AAM-i läheduse astmest sobitatud kujutisele, tehakse otsus, kas nägu on olemas või mitte.

Aktiivsed kujumudelid (ASM)

ASM-meetodi olemus seisneb statistiliste seoste arvestamises antropomeetriliste punktide asukohtade vahel. Põhineb esiosast tehtud nägude piltide saadaoleval näidisel. Pildil märgib ekspert antropomeetriliste punktide asukoha. Igal pildil on punktid nummerdatud samas järjekorras.




Näide näokuju kujutamisest, kasutades 68 punkti

Kõigi piltide koordinaatide ühtseks süsteemi viimiseks nn. üldistatud Procrustese analüüs, mille tulemusena viiakse kõik punktid samale skaalale ja tsentreeritakse. Järgmisena arvutatakse kogu kujutiste komplekti keskmine kuju ja kovariatsioonimaatriks. Kovariatsioonimaatriksi põhjal arvutame omavektorid, mis seejärel sorteeritakse nende vastavate omaväärtuste kahanevas järjekorras. ASM mudel on defineeritud maatriksi Φ ja keskmise kujuvektori s ̅ abil.
Seejärel saab mudeli ja parameetrite abil kirjeldada mis tahes kujundit:

ASM-mudeli lokaliseerimine uuele pildile, mis ei sisaldu koolituskomplektis, viiakse läbi optimeerimisprobleemi lahendamise protsessis.


a B C D)
Illustratsioon ASM-mudeli lokaliseerimise protsessist konkreetsel pildil: a) lähtepositsioon b) pärast 5 iteratsiooni c) pärast 10 iteratsiooni d) mudel lähenes

AAM-i ja ASM-i põhieesmärk pole aga näotuvastus, vaid näo ja antropomeetriliste punktide täpne lokaliseerimine pildil edasiseks töötlemiseks.

Peaaegu kõigis algoritmides on klassifitseerimisele eelnev kohustuslik samm joondamine, mis tähendab näokujutise joondamist kaamera suhtes esiasendisse või nägude komplekti viimist (näiteks klassifikaatori treenimise treeningkomplektis) üks koordinaatsüsteem. Selle etapi rakendamiseks on vaja pildil lokaliseerida kõikidele nägudele iseloomulikud antropomeetrilised punktid - enamasti on need pupillide keskpunktid või silmanurgad. Erinevad teadlased tuvastavad selliste punktide erinevad rühmad. Reaalajas süsteemide arvutuskulude vähendamiseks eraldavad arendajad mitte rohkem kui 10 sellist punkti.

AAM- ja ASM-mudelid on täpselt loodud nende antropomeetriliste punktide täpseks lokaliseerimiseks näopildil.

6. Peamised näotuvastussüsteemide arendamisega seotud probleemid

Valguse probleem

Pea asendi probleem (nägu on ju 3D objekt).

Kavandatud näotuvastusalgoritmide tõhususe hindamiseks töötas DARPA ja USA armee uurimislabor välja programmi FERET (näotuvastustehnoloogia).

FERET programmi suuremahulistes testides osalesid algoritmid, mis põhinesid paindlikul võrdlemisel graafikutel ja põhikomponentmeetodi (PCA) erinevatel modifikatsioonidel. Kõigi algoritmide efektiivsus oli ligikaudu sama. Sellega seoses on nende vahel raske või isegi võimatu selget vahet teha (eriti kui testimiskuupäevad on järjepidevad). Samal päeval tehtud esiosa kujutiste puhul on aktsepteeritav tuvastustäpsus tavaliselt 95%. Erinevate seadmetega ja erineva valgustusega tehtud piltide puhul langeb täpsus tavaliselt 80%-ni. Aastase vahega tehtud piltide tuvastamise täpsus oli ligikaudu 50%. Väärib märkimist, et isegi 50 protsenti on seda tüüpi süsteemi puhul enam kui vastuvõetav täpsus.

FERET avaldab igal aastal võrdleva testiaruande moodsate näotuvastussüsteemide kohta, mis põhinevad enam kui miljonil näol. Kahjuks sisse viimased aruanded Tunnustussüsteemide koostamise põhimõtteid ei avalikustata, vaid avaldatakse ainult kommertssüsteemide toimimise tulemused. Tänapäeval on juhtivaks süsteemiks NEC poolt välja töötatud NeoFace süsteem.

Viidete loend (Google esimesel lingil)
1. Pildipõhine näotuvastus – probleemid ja meetodid
2. Näotuvastuse uuring.pdf
3. Näotuvastus Kirjanduse uuring
4. Näotuvastustehnikate uuring
5. Näotuvastuse, ekstraheerimise ja tuvastamise uuring
6. Näopiltide põhjal inimeste tuvastamise meetodite ülevaade
7. Meetodid näopildi järgi inimese äratundmiseks
8. Võrdlev analüüs näotuvastusalgoritmid
9. Näotuvastustehnikad
10. Umbes üks lähenemine antropomeetriliste punktide lokaliseerimisele.
11. Näotuvastus grupifotodel segmenteerimisalgoritmide abil
12. Uurimistöö aruanne 2. etapp näotuvastusest
13. Elastic Bunch Graph Matching näotuvastus
14. Algoritmid isiku tuvastamiseks foto järgi geomeetriliste teisenduste põhjal. Lõputöö.
15. Distortion Invariant Object Recognition in Dynamic Link Architecture
16. Näotuvastus aktiivsete kujumudelite, kohalike plaastrite ja tugivektori masinate abil
17. Näotuvastus aktiivsete välimusmudelite abil
18. Aktiivse välimuse mudelid näotuvastuseks
19. Näo joondamine aktiivse kujumudeli ja tugivektori masina abil
20. Aktiivsed kujumudelid – nende treenimine ja rakendamine
21. Fisher Vector Faces in the Wild
22. Omanäod vs. Fisheri nägude tuvastamine klassispetsiifilise lineaarse projektsiooni abil
23. Omanäod ja kalanäod
24. Mõõtmete vähendamine
25. ICCV 2011 õpetus osadel põhineva deformeeritava registreerimise kohta
26. Piiratud kohalik mudel näo joondamiseks, õpetus
27. Kes sa oled – Isiklike klassifikaatorite õppimine videost
28. Inimese äratundmine näopildilt närvivõrgu meetodite abil
29. Näotuvastus Konvolutsioonilise närvivõrgu lähenemine
30. Näotuvastus konvolutsioonilise närvivõrgu ja lihtsa logistilise klassifikaatori abil
31. Näopildi analüüs konvolutsiooniliste närvivõrkudega
32. Näotuvastusmeetodid, mis põhinevad Markovi varjatud protsessidel. Autor-ferat
33. Varjatud Markovi mudelite rakendamine näotuvastuseks
34. Näotuvastus ja -tuvastus varjatud Markovi mudelite abil
35. Näotuvastus GNU Octave-MATLABiga
36. Näotuvastus Pythoniga
37. Antropomeetriline 3D-näotuvastus
38. 3D-näotuvastus
39. Näotuvastus, mis põhineb 3D-vormingus mudeli sobitamisel
40. Näotuvastus
41. Tugev näotuvastus hõreda esituse kaudu
42. FERETi näotuvastusalgoritmide hindamismetoodika
43. Otsige nägusid ajalooliste fotode elektroonilistest kogudest
44. Reaalajas näotuvastusega seotud riistvaraliste nägemissüsteemide projekteerimine, juurutamine ja hindamine
45. Sissejuhatus heasse, halvasse ja inetu näo äratundmise probleem
46. ​​Digitaalpiltidel inimnägude tuvastamise meetodite uurimine ja arendamine. Diplom
47. DeepFace kaotab lõhe inimtasemel näo kinnitamisel
48. Televideos tegelaste automatiseeritud nimede määramine
49. Praktilise näotuvastussüsteemi poole Tugev joondamine ja valgustus hõreda esituse abil
50. Inimese näotuvastusalgoritmid kujutise analüüsi ja töötlemise rakenduslike probleemide lahendamiseks
51. Näo tuvastamine ja lokaliseerimine pildil
52. Modifitseeritud Viola-Jones motode
53. Masinõppemeetoditel põhinevate objektide tuvastamise ja klassifitseerimise algoritmide väljatöötamine ja analüüs
54. Ülevaade näotuvastuse suurest väljakutsest
55. Näotuvastuse müüja test (FRVT)
56. SURF-algoritmi kasutamise tõhususe kohta nägude tuvastamise ülesandes

Laenu võtmine, viisa taotlemine või lihtsalt nutitelefoni uusima mudeli käivitamine – kõik see on tänapäeval võimatu ilma näotuvastusalgoritmideta. Nad aitavad politseinikke uurimisel, muusikuid laval, kuid vähehaaval muutuvad nad kõikenägevaks silmaks, mis jälgib kõiki meie tegevusi nii võrgus kui ka väljaspool seda.

Algoritmid (tehnoloogiad)

Isiku tuvastamine foto järgi arvuti vaatevinklist tähendab kahte väga erinevat ülesannet: esiteks leida fotolt nägu (kui see on olemas) ja teiseks eraldada pildilt need tunnused, mis eristavad seda inimest teistest. inimesed andmebaasis.

1. Leia

Arvutit on püütud õpetada fotodelt nägu leidma alates 1970. aastate algusest. Prooviti mitmeid lähenemisviise, kuid kõige olulisem läbimurre saabus palju hiljem – Paul Viola ja Michael Jonesi loomisega 2001. aastal kaskaadvõimendusmeetodi ehk nõrkade klassifikaatorite ahela. Kuigi nüüd on olemas keerukamad algoritmid, võite kihla vedada, et vana hea Viola-Jones töötab nii teie mobiiltelefonis kui ka kaameras. See kõik puudutab tähelepanuväärset kiirust ja töökindlust: isegi 2001. aastal suutis keskmine arvuti seda meetodit kasutades töödelda 15 pilti sekundis. Tänapäeval rahuldab algoritmi efektiivsus kõik mõistlikud nõuded. Peamine asi, mida peate selle meetodi kohta teadma, on see, et see on üllatavalt lihtne. Te isegi ei usu, kui palju.

  1. Samm 1. Eemaldame värvi ja muudame pildi heleduse maatriksiks.
  2. 2. samm. Asetage sellele üks ruudukujulistest maskidest – neid nimetatakse Haari tunnusteks. Me läbime sellega kogu pildi, muutes asukohta ja suurust.
  3. Samm 3. Liidame nende maatriksrakkude digitaalsed heleduse väärtused, mis jäävad maski valge osa alla, ja lahutame neist väärtused, mis jäävad musta osa alla. Kui vähemalt ühel juhul on valge ja musta ala erinevus üle teatud läve, võtame selle pildi ala edasiseks tööks. Kui ei, siis unusta ta ära, siin pole nägu.
  4. Samm 4. Korrake 2. sammust juba koos uus mask- kuid ainult selle pildi piirkonnas, mis läbis esimese testi.

Miks see toimib? Vaata märki. Peaaegu kõigil fotodel on silmaümbrus alati veidi tumedam kui vahetult allpool. Vaadake märki: keskel olev hele ala vastab ninasillale, mis asub tumedate silmade vahel. Mustvalged maskid ei tundu esmapilgul sugugi nägudena, kuid kogu oma primitiivsuse juures on neil suur üldistusjõud.

Miks nii kiiresti? Kirjeldatud algoritmis ei ole märgitud ühte olulist punkti. Pildi ühe osa heleduse lahutamiseks teisest tuleks lisada iga piksli heledus ja neid võib olla palju. Seetõttu teisendatakse maatriks enne maski pealekandmist integraalseks esituseks: heledusmaatriksi väärtused lisatakse eelnevalt nii, et ristküliku integraalse heleduse saab saada lihtsalt lisades neli numbrit.

Kuidas kaskaadi kokku panna? Kuigi iga maskeerimise etapp tekitab väga suure vea (tegelik täpsus ei ületa 50%), seisneb algoritmi tugevus protsessi kaskaadkorralduses. See võimaldab teil kiiresti analüüsist välja jätta valdkonnad, kus kindlasti nägu pole, ja kulutada vaeva ainult nendele valdkondadele, mis võivad tulemusi anda. Sellist nõrkade klassifikaatorite järjestuse kokkupanemise põhimõtet nimetatakse boostimiseks (sellest saab täpsemalt lugeda PM või oktoobrinumbrist). Üldine põhimõte nagu see: isegi suuri vigu, üksteisega korrutades muutuvad väikeseks.

2. Lihtsusta

Näojoonte leidmine, mis võimaldaks selle omanikku tuvastada, tähendab tegelikkuse taandamist valemile. Me räägime lihtsustamisest ja väga radikaalsest. Näiteks võib isegi miniatuursel 64 x 64 pikslilisel fotol olla tohutult palju erinevaid pikslite kombinatsioone – (2 8) 64 x 64 = 2 32768 tükki. Pealegi piisaks Maa 7,6 miljardi inimese nummerdamiseks vaid 33 bitist. Ühelt numbrilt teisele liikudes peate kõik välja viskama kõrvaline müra, kuid jätke alles kõige olulisem individuaalsed omadused. Selliseid probleeme tundvad statistikud on välja töötanud palju andmete lihtsustamise tööriistu. Näiteks põhikomponendi meetod, mis pani aluse nägude tuvastamisele. Kuid hiljuti on konvolutsioonilised närvivõrgud vanad meetodid kaugele maha jätnud. Nende struktuur on üsna omapärane, kuid sisuliselt on see ka lihtsustamismeetod: selle ülesanne on taandada konkreetne pilt funktsioonide kogumiks.


Kandke pildile mask fikseeritud suurus(nimetatakse õigesti konvolutsioonituumaks), korrutame pildi iga piksli heleduse maski heleduse väärtustega. Leiame "aknas" kõigi pikslite keskmise väärtuse ja kirjutame selle järgmise taseme ühte lahtrisse.


Nihutame maski kindla sammu võrra, korrutame uuesti ja kirjutame keskmise väärtuse kaardile.


Olles ühe maskiga kogu pildi läbi käinud, kordame teisega – saame uue funktsioonikaardi.


Vähendame oma kaartide suurust: võtame mitu naaberpikslit (näiteks ruudu 2x2 või 3x3) ja teisaldame need järgmine tase ainult üks maksimaalne väärtus. Sama teeme kõigi teiste maskidega saadud kaartide puhul.


Matemaatilise hügieeni huvides asendame kõik negatiivsed väärtused nullidega. Kordame 2. sammust nii mitu korda, kui tahame närvivõrgu kihte saada.


Alates viimane kaart Me paneme kokku mitte konvolutsioonilise, vaid täielikult ühendatud närvivõrgu: muudame kõik viimase tasandi rakud neuroniteks, mis teatud kaaluga mõjutavad järgmise kihi neuroneid. Viimane samm. Võrkudes, mis on koolitatud objekte klassifitseerima (kasside ja koerte eristamiseks fotodel jne), on siin väljundkiht, st konkreetse vastuse tuvastamise tõenäosuste loend. Nägude puhul saame konkreetse vastuse asemel lühikese komplekti näo olulisematest tunnustest. Näiteks Google FaceNetis on need 128 abstraktset numbrilist parameetrit.

3. Tuvastage

Enamik viimane etapp, tuvastamine ise, on kõige lihtsam ja isegi triviaalne samm. See taandub saadud funktsioonide loendi sarnasuse hindamisele juba andmebaasis olevate funktsioonidega. Matemaatilises kõnepruugis tähendab see objektiruumist kauguse leidmist antud vektorist lähima teadaolevate tahkude alani. Samamoodi saate lahendada veel ühe probleemi – leida üksteisega sarnaseid inimesi.

Miks see toimib? Konvolutsiooniline närvivõrk on loodud pildilt kõige iseloomulikumate tunnuste eraldamiseks ning seda automaatselt ja erinevatel abstraktsioonitasemetel. Kui tavaliselt reageerivad esimesed tasemed lihtsatele mustritele nagu varjutus, gradient, selged piirid jne, siis iga uue tasemega funktsioonide keerukus suureneb. Maskid, mida närvivõrk kõrgel tasemel proovib, meenutavad sageli inimeste nägusid või nende fragmente. Lisaks kombineerivad närvivõrgud erinevalt põhikomponentide analüüsist funktsioone mittelineaarsel (ja ootamatul) viisil.

Kust tulevad maskid? Erinevalt Viola-Jonesi algoritmis kasutatavatest maskidest saavad närvivõrgud ilma inimese abita ja leiavad maskid õppeprotsessi käigus. Selleks peab teil olema suur treeningkomplekt, mis sisaldaks pilte mitmesugustest nägudest erineva taustaga. Mis puutub saadud funktsioonide komplekti, mida närvivõrk toodab, siis see moodustatakse kolmikute meetodil. Kolmikud on kujutiste komplektid, millest kaks esimest on sama isiku foto ja kolmas on teise inimese foto. Närvivõrk õpib leidma tunnuseid, mis toovad esimesed pildid üksteisele võimalikult lähedale ja samal ajal välistavad kolmanda.

Kelle närvivõrk on parem? Näotuvastus on akadeemiast ammu lahkunud suur äri. Ja siin, nagu igas ettevõttes, püüavad tootjad tõestada, et nende algoritmid on paremad, kuigi nad ei anna alati avatud testimise andmeid. Näiteks MegaFace konkursi järgi praegu parem täpsus näitab Vocordi venekeelset deepVo V3 algoritmi tulemusega 92%. Google'i FaceNet v8 näitab samal võistlusel vaid 70% ja Facebooki DeepFace, mille täpsus on 97%, ei osalenud konkursil üldse. Neid numbreid tuleb tõlgendada ettevaatlikult, kuid juba praegu on selge, et parimad algoritmid on peaaegu saavutanud inimese tasemel näotuvastuse täpsuse.

Elav jumestus (kunst)

2016. aasta talvel esines Lady Gaga 58. Grammy aastaauhindade jagamisel austusavaldusega hiljuti surnud David Bowiele. Etenduse ajal levis elav laava üle tema näo, jättes tema otsaesisele ja põsele kõigile Bowie fännidele äratuntava jälje – oranži välgunool. Liikuva meigi efekti tekitas videoprojektsioon: arvuti jälgis laulja liigutusi reaalajas ning projitseerib pilte tema näole, võttes arvesse selle kuju ja asendit. Internetist on lihtne leida videot, milles on märgata, et projektsioon on endiselt ebatäiuslik ja äkiliste liigutuste korral veidi edasi lükatud.


Nobumichi Asai on nägude jaoks Omote'i videokaardistamise tehnoloogiat arendanud alates 2014. aastast ja alates 2015. aastast aktiivselt demonstreerinud seda üle maailma, kogudes korralikku auhindade nimekirja. Tema asutatud ettevõte WOW Inc. sai Inteli partneriks ja sai hea arengustiimuli ning koostöö Ishikawa Watanabega Tokyo ülikoolist võimaldas meil projektsiooni kiirendada. Põhiline toimub aga arvutis ning sarnaseid lahendusi kasutavad paljud rakenduste arendajad, mis võimaldavad näole maske panna, olgu selleks siis impeeriumi sõdurikiiver või “David Bowie” meik.

Alexander Khanin, VisionLabsi asutaja ja tegevjuht

« Sarnane süsteem pole vaja võimsat arvutit; maske saab kanda isegi peale mobiilseadmed. Süsteem võib töötada otse nutitelefonis, ilma andmeid pilve või serverisse saatmata.

"Seda ülesannet nimetatakse näopunktide jälgimiseks. Avalikkuses on palju sarnaseid lahendusi, kuid professionaalsed projektid eristuvad kiiruse ja fotorealismi poolest,“ rääkis VisionLabsi juht Alexander Khanin. "Kõige keerulisem on sel juhul määrata punktide asukoht, võttes arvesse näoilmeid ja näo individuaalset kuju või ekstreemsetes tingimustes: tugevate peapööretega, ebapiisava valgustuse ja suure säritusega." Süsteemi punktide leidmise õpetamiseks treenitakse närvivõrku – esmalt käsitsi, hoolikalt foto foto järel markeerides. "Sisend on pilt ja väljund on tähistatud punktide kogum, " selgitab Alexander. — Siis käivitatakse detektor, määratakse nägu, selle 3D mudel, millele mask kantakse. Markerid rakendatakse voo igale kaadrile reaalajas.


Umbes nii töötab Nobumichi Asai leiutis. Eelnevalt skaneerib Jaapani insener oma mudelite päid, saades täpsed kolmemõõtmelised prototüübid ja koostades näokuju arvesse võttes videojada. Ülesande teevad lihtsamaks ka väikesed helkurmarkerid, mis liimitakse esinejale enne lavale minekut külge. Viis infrapunakaamerad jälgida nende liikumist, edastades jälgimisandmed arvutisse. Seejärel juhtub kõik nii, nagu VisionLabs meile ütles: nägu tuvastatakse, kolmemõõtmeline mudel ehitatakse ja mängu tuleb Ishikawa Watanabe projektor.

DynaFlash seadet tutvustas ta 2015. aastal: see on kiire projektor, mis suudab jälgida ja kompenseerida selle tasapinna liikumisi, millel pilti kuvatakse. Ekraani saab kallutada, kuid pilt ei moondu ja edastatakse sagedusega kuni tuhat 8-bitist kaadrit sekundis: viivitus ei ületa nähtamatut kolme millisekundit. Asai jaoks osutus selline projektor jumala kingituseks, elav meik hakkas tõeliselt reaalajas toimima. 2017. aastal populaarse Jaapani duo Inori jaoks salvestatud videos pole mahajäämust enam üldse näha. Tantsijate näod muutuvad kas elavateks pealuudeks või nutvateks maskideks. See näeb värske välja ja tõmbab tähelepanu – kuid tehnoloogia muutub kiiresti moes. Peagi muutub ilmselt kõige tavalisemaks liblikas, kes maandub ilmaennustaja põsele või esinejad, kes laval iga kord oma välimust muudavad.


Näole häkkimine (aktivism)

Mehaanika õpetab, et iga tegevus tekitab reaktsiooni ning erandiks pole ka jälitus- ja isikutuvastussüsteemide kiire areng. Tänapäeval võimaldavad närvivõrgud võrrelda juhuslikku udupilti tänavalt sotsiaalvõrgustike kontodele laetud piltidega ja teada saada mööduja isik sekunditega. Samal ajal loovad kunstnikud, aktivistid ja arvutinägemise spetsialistid tööriistu, mis võivad anda inimestele tagasi privaatsuse, isikliku ruumi, mis nii peadpööritava kiirusega kahaneb.

Algoritmide erinevatel etappidel saab tuvastamist takistada. Reeglina rünnatakse äratundmisprotsessi esimesi samme - kujundite ja nägude tuvastamist pildil. Nii nagu sõjaline kamuflaaž petab meie nägemust, varjates objekti, rikkudes selle geomeetrilisi proportsioone ja siluetti, nii masinnägemine teda püütakse segadusse ajada värviliste kontrastsete laikudega, mis moonutavad tema jaoks olulisi parameetreid: näo ovaal, silmade asukoht, suu jne. Õnneks arvuti nägemine pole veel nii täiuslik kui meie oma, mis jätab sellise “kamuflaaži” värvide ja vormide valikul suurema vabaduse.


Roosad ja lillad, kollased ja sinised toonid domineerivad HyperFace rõivasarjas, mille esimesi näidiseid tutvustasid disainer Adam Harvey ja startup Hyphen Labs 2017. aasta jaanuaris. Pikslimustrid annavad masinnägemise ideaalse – selle vaatenurgast – inimese näopildi, mille arvuti peibutusvahendina tabab. Mõni kuu hiljem arenes isegi Moskva programmeerija Grigori Bakunov ja tema kolleegid spetsiaalne rakendus, mis tekitab meigivariatsioone, mis häirivad identifitseerimissüsteeme. Ja kuigi autorid otsustasid pärast mõningast järelemõtlemist programmi avalikult mitte avaldada, pakub seesama Adam Harvey mitmeid valmisvariante.


Inimene, kes kannab maski või kelle näol on kummaline meik, ei pruugi olla märgatav arvutisüsteemid, kuid tõenäoliselt pööravad teised sellele tähelepanu. Siiski on võimalusi vastupidiseks toimimiseks. Tõepoolest, närvivõrgu seisukohalt ei sisalda pilt kujutisi meie jaoks tavapärases tähenduses; tema jaoks on pilt arvude ja koefitsientide kogum. Seetõttu võivad täiesti erinevad objektid tunduda talle üsna sarnased. Teades neid tehisintellekti nüansse, saate läbi viia peenemat rünnakut ja pilti vaid veidi korrigeerida - nii et muutused on inimesele peaaegu märkamatud, kuid masinnägemine saab täielikult petta. 2017. aasta novembris näitasid teadlased, kuidas väikesed muutused kilpkonna või pesapalli värvis põhjustasid Google'i süsteem InceptionV3 on kindel, et näeb selle asemel püssi või tassi espressot. Ja Mahmoud Sharif ja tema kolleegid Carnegie Melloni ülikoolist kujundasid prillide raamile laigulise mustri: see ei mõjuta peaaegu üldse seda, kuidas teised näo tajuvad, kuid Face++ abil arvutituvastus ajab selle enesekindlalt segamini inimese näoga. kellele” kujundati raami muster.

Kaasaegsed integreeritud turvasüsteemid on võimelised lahendama igasuguse keerukusega probleeme igasugustes tööstus-, sotsiaal- ja kodurajatistes. Videovalvesüsteemid on turvasüsteemides väga olulised tööriistad ning nõuded segmendi funktsionaalsusele kasvavad pidevalt.

Põhjalikud turvasüsteemid

Ühtne platvorm sisaldab turva- ja tuletõrjeseadmete, juurdepääsukontrolli ja -halduse, videovalve või suletud ahelaga televisiooni (CCT) mooduleid. Viimase funktsioonid piirdusid kuni viimase ajani objektil ja lähialal toimuva videojälgimise ja salvestamisega, andmete arhiveerimise ja säilitamisega. Klassikalistel videosüsteemidel on mitmeid olulisi puudusi:

  • Inimfaktor. Ebaefektiivne operaatori jõudlus suure teabemahu edastamisel.
  • Kirurgilise sekkumise võimatus, enneaegne analüüs.
  • Märkimisväärne ajakulu sündmuse otsimiseks ja tuvastamiseks.

Areng digitaaltehnoloogiad viis "tarkade" automatiseeritud süsteemide loomiseni.

Tugevus on intellektis

Intellektuaalse analüütika põhiprintsiibiks on videoanalüütika – tehnoloogia, mis põhineb meetoditel ja algoritmidel piltide tuvastamiseks ning automaatseks andmete kogumiseks videovoo analüüsi tulemusena. Sellised seadmed on ilma inimese sekkumiseta võimelised tuvastama ja jälgima reaalajas kindlaksmääratud sihtmärke (auto, inimrühm), potentsiaalselt ohtlikke olukordi (suits, tulekahju, lubamatu sekkumine videokaamerate töösse), programmeeritud sündmusi ja kiiresti anda häiresignaal. Filtreerides välja videoandmed, mis ei paku huvi, suurendavad koormust suhtluskanalid ja arhiivi andmebaas.

Kõige populaarsem videoanalüüsi tööriist on näotuvastussüsteem. Sõltuvalt täidetavatest funktsioonidest ja määratud ülesannetest esitatakse seadmetele teatud nõuded.

Tarkvara ja riistvara

Sest tõhus töö süsteemid kasutavad mitut tüüpi IP-videokaameraid, millel on erinevad jõudlusomadused. Objekti tuvastamist kontrollitaval territooriumil salvestavad 1-megapikslise eraldusvõimega ja 1 mm fookuskaugusega panoraamkaamerad ning sellele on suunatud skaneerimisseadmed. Need on täiustatud kaamerad (alates 2MP, alates 2mm), mis tuvastavad lihtsaid tehnikaid(3-4 parameetrit). Objekti tuvastamiseks kaamerad koos hea kvaliteet pildid, mis on piisavad keerukate algoritmide kasutamiseks (alates 5 MP, 8-12 mm).

Populaarseim tarkvaratooted näotuvastuse jaoks "Face Intellect" (töötatud ettevõtte House Controli poolt), Face Director (Sinesise ettevõte) ja VOCORD FaceControl (VOCORD) näitavad:

  • Objekti tuvastamise suur tõenäosus (kuni 99%).
  • Toetus paljudele kaamera pöördenurkadele.
  • Nägude tuvastamise võimalus isegi tihedas jalakäijate massis.
  • Analüütiliste aruannete koostamise varieeruvus.

Mustri tuvastamise põhitõed

Kõik biomeetrilised tuvastamissüsteemid põhinevad inimese loetud füsioloogiliste omaduste vastavuse tuvastamisele teatud kindlale mustrile.

Skaneerimine toimub reaalajas. IP-kaamera edastab videovoo terminali ja näotuvastussüsteem teeb kindlaks, kas pilt vastab andmebaasi salvestatud fotodele. On kaks peamist meetodit. Esimene põhineb staatilistel põhimõtetel: biomeetriliste parameetrite töötlemise tulemuste põhjal a elektrooniline näidis kujul unikaalne number, mis vastab konkreetsele isikule. Teine meetod modelleerib “inimlikku” lähenemist ning seda iseloomustab iseõppimine ja jõulisus. Videopildi järgi isiku tuvastamisel võetakse arvesse vanusega seotud muutusi ja muid tegureid (peakatte olemasolu, habe või vuntsid, prillid). See tehnoloogia võimaldab töötada isegi vanade fotode ja vajadusel röntgenikiirgusega.

Näootsingu algoritm

Kõige tavalisem nägude tuvastamise tehnika on Haari kaskaadide (maskikomplektide) kasutamine.

Mask on ristkülikukujuline aken erinev kombinatsioon valged ja mustad segmendid.

Programmi mehhanism on järgmine: videokaader kaetakse maskide komplektiga ja konvolutsiooni tulemuste põhjal (loendades piksleid, mis langevad valgetesse ja mustadesse sektoritesse) arvutatakse erinevus ja võrreldakse seda teatud läviväärtusega. .

Klassifikaatori jõudluse parandamiseks luuakse positiivsed (inimnägudega kaadrid) ja negatiivsed (ilma nendeta) treeningnäidised. Esimesel juhul on konvolutsiooni tulemus üle läviväärtuse, teisel - allpool. Näodetektor määrab vastuvõetava veaga kõigi kaskaadide keerdude summa ja kui lävi on ületatud, annab märku nägude olemasolust kaadris.

Tuvastamistehnoloogiad

Pärast tuvastamist ja lokaliseerimist hõlmab esialgne etapp pildi heledust ja geomeetrilist joondamist. Edasisi toiminguid - tunnuste arvutamist ja tuvastamist - saab läbi viia erinevate meetodite abil.

Suurepärase valgustusega ruumis terve näo skaneerimisel näitavad häid tulemusi algoritmid, mis töötavad kahemõõtmeliste piltidega. Analüüsides unikaalseid punkte ja nendevahelisi kaugusi, teeb näotuvastussüsteem kindlaks identifitseerimise fakti, lähtudes “reaalajas” pildi ja registreeritud malli erinevuste koefitsientidest.

3D-tehnoloogia on muutustele vastupidav valgusvoog, lubatud kõrvalekalle esinurgast on kuni 45 kraadi. Siin ei analüüsita mitte ainult punkte ja jooni, vaid ka pindade omadusi (kumerus, profiil) ja nendevaheliste kauguste mõõdikut. Selliste algoritmide toimimiseks on see vajalik maksimaalne kvaliteet videosalvestused kuni 200 kaadrit/s. Süsteem põhineb stereovideokaameratel, mille maatriks on 5 megapikslit, kõrge optiline eraldusvõime ja sünkroniseerimisviga, mis on viidud miinimumini. Lisaks on need ühendatud spetsiaalse ajastuskaabliga kellimpulsside edastamiseks.

Kaasaegse süsteemide turu olukord

Esimesed töötati nende kõrgete kulude tõttu välja ainult valitsuse sõjaväerajatiste jaoks ja alles 90ndate keskel said need kaubanduslikele organisatsioonidele kättesaadavaks. Tehnoloogia kiire areng on võimaldanud tõsta süsteemide täpsust ja laiendada nende rakendusala. Juhtpositsioonid meie riigi turul kuuluvad Ameerika ja Lääne-Euroopa turvasüsteemide tootjatele. Enim müüdud on seadmed ettevõtetelt ZN Vision Technologies ja Visionics. Kodumaiste arendajate seas on lootustandvamad Vocordi, NTechLabi, Solingi, VisionLabs LLC ja TsRT grupi uuringud ja tooted, mis muu hulgas tegelevad ka välismaiste komplekside kohandamisega Venemaa oludele.

Arvuti näokontroll

Kontaktivaba tuvastamise kõige ulatuslikum rakendusvaldkond on võitlus terrorismi ja kuritegevuse vastu. Kurjategija näopilt salvestatakse andmebaasi. Kohtades, kus on suur rahvahulk (lennujaamad, raudteejaamad, kaubanduskeskused, spordiasutused), salvestatakse tagaotsitavate tuvastamiseks reaalajas inimeste liikumist.

Järgmine valdkond on läbipääsusüsteemid: näidisfoto pilt sees elektrooniline pass võrreldakse mudeliga, mis on saadud videokaamerate andmete töötlemisel. Protseduur toimub koheselt, ilma selle läbiviijatelt lisatoiminguid nõudmata (erinevalt võrkkesta skaneerimisest või sõrmejälgede võtmisest).

Teine kiiresti kasvav tööstusharu on turundus. Interaktiivne stend skaneerib inimese nägu, määrab tema soo ja vanuse ning visualiseerib ainult neid reklaame, mis võivad kliendile huvi pakkuda.

Suundumused ja arenguväljavaated

Näotuvastussüsteemide järele on pangandussektoris suur nõudlus.

Möödunud aasta lõpus suutis Pochta panga juhtkond pärast 50 000 nutika videokaamera paigaldamist oma kontoritesse säästa miljoneid rublasid, vältides pettusi laenu- ja maksesegmendis. Eksperdid ütlevad, et 2021. aastaks luuakse vajalik taristuvõrk ja toimingud sularahaautomaatides saavad võimalikuks alles pärast kliendi näo biomeetrilist tuvastamist.

Kõrgtehnoloogiad võimaldavad järgmisel kümnendil avada täisiseteeninduspoodide võrgustiku: ostja astub vitriinide ette, valib välja meelepärase toote ja lahkub. Näo- ja pildituvastussüsteem teeb kindlaks ostja isiku, ostab ja debiteerib tema kontolt vajaliku summa.

Käimas on töö psühho-emotsionaalsete seisundite äratundmise süsteemide loomisega. Inimeste emotsioonide analüüs on nõudlik multimeedia valdkondades: animatsioon, kino ja arvutimängude tööstus.