BBC teadus- ja arendustegevuse video näotuvastuse lühike juhend

Sageli nõuavad kõige keerukamat kulisside taga töötlemist just need ülesanded, mida inimesed mõtlemata teevad. Toidu degusteerimine, sõpradega vestlemine, muusika kuulamine ja inimeste äratundmine. Kui vaatate lihtsustajate episoodi, näete erinevaid näitlejaid erinevates seadetes, erinevate nurkade alt ja erineva valgustusega, kuid teie aju tegeleb nende variatsioonidega kohe, teades, et stseenis on tegemist Dot Cotton'i ja Phil Mitchelliga. Kuna me ei mõtle kaasatud töötlemisele, oleme üllatunud, et need ülesanded on palju keerukamad, kui me alguses masinaõppele rakendades arvasime.

Tehke tänaval prints Harry ja Megan Markle järgmised pildid. Harryt ja Meganit võime siin näha erinevate nurkade alt - eest, küljelt ja tagant -, kuid tunneme neid hõlpsalt nende omaduste järgi: nahavärv, juuste värv jne. Samuti võtame arvesse teatud sotsiaalseid näpunäiteid. Rahvas vaatab neid, nad on hästi riides, nad on iga võtte keskpunktis ja samast stseenist pärit kaadrite ilmne järjepidevus on ilmne. Inimese intuitsioonil on palju kihte, millele kipume isegi mõtlema, kui avastame nii kultuurilisi kui ka füüsilisi näitajaid.

Me tunneme Harry ja Megani loomulikult ära, vaatamata nende kaadrite erinevale nurgale

Kuidas me siis õpetame arvutit õppima seda kõike tegema? Kuigi me ei saa algoritmi, mis mõtleks inimese moodi, saame selle teha selleks, mida masinõpe kõige paremini teeb: tuvastada mustreid suurtes, sildistatud andmestikes. See hõlmab piltide kogumist, algoritmi koolitamist, videote töötlemist ja nendes olevate inimeste äratundmist. Lõplik väljund on videost tuvastatud inimeste loetelu koos nende kuvatavate kaadrite aja ja asukohaga.

Me töötame juba selle tehnoloogia väljatöötamisel BBC-s. Meie süsteemi nimega FaceRec töötab välja BBC Research and Developmenti Interneti-uuringute ja tulevikuteenuste andmemeeskond (salvestame mõned klahvivajutused ja nimetame neid edaspidi andmemeeskonnaks). Selle loomisel on kasutatud ettevõttesisest koodi ja välist avatud lähtekoodiga tarkvara - eriti C ++ näotuvastuse mootorit Seetaface.

FaceRec töötab video töötlemise teel läbi algoritmiliste sammude, mis kõik lahendavad konkreetse osa üldisest probleemist. Anname teile ülevaate selle toimimisest.

1. Tuvasta kaadrid

Iga näo tuvastamiseks videos tuleb esmalt jagada video selle osadeks eraldatud kaadriteks (võtet määratletakse kui kaadrite jada, mis töötab katkematu aja jooksul). Selleks kasutab FaceRec meediatöötluse teeki FFmpeg, mis kasutab funktsiooni kõigi video algus- ja lõpuaegade tagastamiseks antud videos.

2. Tuvastage näod

Järgmine samm on kontrollida iga kaadrit, et näha, kas see sisaldab inimeste nägusid. See on keeruline probleem - kas peaksime proovima jalgpallimatšil tuvastada iga nägu? Kas t-särgi nägu loeb? Kas ajalehtede esiküljel on fotod?

Igal pildistamisel võtab FaceRec võttelt kaadrid ja edastab need SeetaFace'ile, kes tagastab seejärel piirdekarbid sinna, kus tema arvates on näod. SeetaFace näotuvastuse mootor tuvastab, kas nägu “loeb” piisavalt, et seda väljundisse lisada. Pange tähele, et SeetaFace ei ütle, kes tema arvates tuvastatud inimesed on, vaid lihtsalt usub, et on tuvastanud kaadris antud asukohas näo.

3. Looge näojäljed

Nüüd, kui oleme kokku kogunud kõik nägusid sisaldavad raamid, on järgmine ülesanne õmmelda need tuvastatud näod kokku, et luua näojoon. Näorada on pidev piiravate kastide voog ümber näo, kui see liigub võttekaadris.

FaceRec võtab iga näo piiramise kasti ja proovib selle kaardistada järgmises loogilises piiramise kastis järgmises kaadris. See ei ole alati täiesti ilmne, kuna nägusid võib ajutiselt varjata või kui üks inimene liigub teise taga, võivad ristmikud ületada üksteist.

Ümmargused kastid jälitavad nägusid läbi lasku

Kapoti all on see probleem lahendatud, kasutades Dlibi ja Lucas-Kanade meetodit. Sellega luuakse näojooned, mis on määratletud ajapunktidega, raamide loendi ja nägude piirdekastidega.

4. Looge radade vektoreid

Masinõppe algoritmid töötavad sageli sisendmaterjali teisendamisel matemaatilisteks vektoriteks. Seejärel õpivad nad, millised selle „vektorruumi” osad kuuluvad kindlatesse kategooriatesse või sisenditüüpidesse. Nägude osas saaksid nad teada, et prints Harry nägu esindavad vektorid asuvad tavaliselt konkreetses piirkonnas, samas kui Megani vektorid asuvad tavaliselt teises lõigus. Samuti võiksite eeldada, et prints Williami nägude vektorid on selles ruumis lähemal Harryle kui Meganile, kuna nad on omavahel seotud ja neil on sarnased omadused.

Avastatud nägude jaoks vektorite loomiseks kasutab FaceRec SeetaFace näotuvastuse teeki. FaceRec söödab kärbitud fotodena tuvastatud nägudest nende piiramiskastides alates näoraja keskpunktist. See võtab tagasi 2024-mõõtmelise vektori, mis tähistab selle näo tunnuseid.

5. Tuvastage inimeste nägusid jälgimisvektorites

Nüüd on meil iga tuvastatud näo jälgimiseks näojoon. Järgmine samm on muuta need vektorid tuvastatud nägude tegelikeks nimedeks ja märgistada need näod, mida me ei tunne (ja mida seetõttu ei saa sildistada).

Esimene küsimus on: lihtsalt keda me ära tunneme? Kindlasti ei saa me luua mudelit, mis tunnustaks kõiki, kes on kunagi elanud - ega me seda ka ei tahaks. Keda me siis selle näotuvastussüsteemi jaoks piisavalt oluliseks peame?

Reaalselt peavad seda ajendama BBC Newsi ajakirjanikud ja inimesed, kellest nad kõige sagedamini teatavad. Samuti peame teadma, et tundmatud inimesed teevad uudiseid iga päev ja kui nad seda teevad, ei pruugi meil neist olla ühtegi eelmist pilti. Neid piiranguid silmas pidades keskendus andmemeeskond FaceReci koolitamisel peamiselt kuulsustele, rahvusvahelistele juhtidele, Ühendkuningriigi poliitikutele parlamendis ja Ülemkojas.

Nende inimeste äratundmiseks oli vaja koguda iga inimese kohta treeningandmeid - see tähendab, et sellel inimesel on palju sildistatud fotosid, mis sisaldavad ainult seda inimest. Andmemeeskond kogus tuhandeid fotosid ja ehitas seejärel oma esiotsa süsteemi, et üksikuid fotosid hõlpsalt vaadata ja sildistada. Masinõppe unsexy tõde on see, et kvaliteetsete, märgistatud andmete kogumine on sageli kõige paremini töötava AI-süsteemi ehitamise kõige kallim, töömahukas ja samas oluline osa.

Pärast fotode kogumist andis andmemeeskond need välja masinõppe klassifikaatorisse, mida kutsuti tugivektorimasinaks koolitatud mudelite loomiseks. SeetaFace'ist näomaterjali söötmisel ennustavad need mudelid inimese algses näopildis inimese nime või ütlevad, kas nad ei tundnud nägu üldse ära.

IRFS lõi kaks mudelit:

  1. Arhiivimudel: kuulsad inimesed alates 20. sajandist, mille valivad inimesed BBC arhiivist. See mudel sisaldas umbes 1000 inimest.
  2. Uudismudel: Jätkuvalt väljatöötamisel laieneb see üle 2000 Ühendkuningriigi parlamendi ja piirkondlike assambleede, Lordidekoja ja ülemaailmsete juhtide liikmetele. Treeningpildid saadi BBC Newsist, Factual ja Drama.

Neid treenitud mudeleid kasutatakse siis videote näitamiseks ette nähtud inimeste ennustamiseks.

6. klastri näo jäljed

Nüüd, kui kõik näojooned on märgistatud, on viimane samm koguda ühe ja sama inimese kõik lood.

Selleks panime kõik video ekstraheeritud näomaterjalid ühte vektoriruumi, mida me kutsume lõbutsemiseks näopiirkonnaks. Näopinna visualiseerimiseks saame kasutada tööriista Tensorboard, mis on osa masinõppe raamatukogust Tensorflow.

Seda näoturu vaadates loodame, et ühe ja sama inimese vektorid asuvad piisavalt lähestikku ja teistest inimestest piisavalt kaugel, et saaksime neid automaatselt grupeerida. Seda tuntakse masinõppes klastriprobleemina.

Allpool Harry ja Megani video jaoks näeme näopiirkonna vektoreid, mis on projitseeritud sellesse näo ruumi. Ja näeme, et suurem osa Megani radadest on kobaras, muutes need hõlpsaks rühmitamiseks. See on üks viis, kuidas me teame, et loodud näomaterjalid töötavad hästi.

Nägude visualiseerimine TensorBoardiga

Need, kes on klastritega tuttavad, näevad meie nägu klastrite probleemi keerukust. Iga video jaoks on erinev arv erineva suurusega klastrid - rohkelt vektoreid ilmub üks kord ja need ei kuulu üldse klastrisse.

Selle asemel, et pimedast august alla kukkuda, üritades seda probleemi täiuslikult lahendada, otsustas andmemeeskond joosta mõne heuristikaga. FaceRec jagab probleemi kaheks eraldi kategooriaks: inimeste näod, keda ta ära tunneb, ja inimeste näod, mida ta ei tunne. Tuvastatud nägude jaoks klastrib see lihtsalt kõik näojäljed kokku, millel on sama ennustatud silt (nimi). Tundmatute nägude jaoks kasutab see meetodit, mida nimetatakse hierarhiliseks klastriteks näomaterjalide jaoks, et neid rühmitada, kuid mitte neile silte anda.

7. Väljuge teave

FaceReci viimane samm on kogu eri etappide jooksul kogutud teabe välja söötmine. See on JSON-faili kujul, mis sisaldab:

Video palade loend. Iga pala kohta on:

  • Selle loo jaoks ennustatud inimene
  • Ennustuse kindlus
  • Jälgi UUID-d
  • Selle raja näovektor
  • Selle raja kaadrite loetelu

Raamide loendis sisaldab iga kaadri teave järgmist:

  • Selle raami näomaterjal, kui see on tuvastatud
  • Näo piirdekarbi koordinaadid
  • Aeg video kaadris

Mida saaksime nende andmetega teha? Meie ideede nägemiseks saate vaadata meie järgmist blogipostitust.

Tõmba otsad kokku

See on sellest tegelikult. Loodetavasti oleme aidanud teil mõista paljusid video näotuvastussüsteemi kuuluvaid osi. Ja võib-olla oleme ka teid teadlikumaks kõigist rasketest raskustest ja mitmetimõistetavusest, millega teie aju tegeleb sadu kordi päevas oma sõprade ja lähedaste äratundmisel.

Pärast FaceReci süsteemi sisemise töö mõistmist oli News Labsi ülesanne näha, kus see tehnoloogia BBC-s ärilist väärtust lisab. Kuidas näidata FaceReci võimeid intuitiivse demo abil? Millistes tootmissüsteemides näeme, kuidas FaceRec sobib? Kelle töövoo probleeme see lahendada võiks? Ja mis oluline, kuidas inimesed näotuvastust kasutavad? Räägime suure tehnoloogiaga organisatsiooni uue tehnoloogia juurutamise väljakutsetest ja küsimustest, millega seisame silmitsi näotuvastuse prototüübi väljatöötamisel rubriigis “Näotuvastus - mis kasu see on uudistesaalidest?”.