Trumpas BBC MTTP vaizdo veido atpažinimo vadovas

Dažnai užduotis, kurias žmonės atlieka negalvodami, atlikti kai kuriuos iš sudėtingiausių užkulisių. Degustuokite maistą, kalbėkitės su draugais, klausykitės muzikos ir iš tikrųjų atpažinkite žmones. Kai žiūrite serijos seriją, matote skirtingus veikėjus skirtingais parametrais, skirtingais kampais ir skirtingu apšvietimu, tačiau akimirksniu jūsų smegenys sutvarko šiuos variantus, kad žinotų, jog scenoje tai „Dot Cotton“ ir „Phil Mitchell“. Kadangi negalvojame apie atliekamą apdorojimą, nustebome pastebėję, kad šios užduotys yra daug sudėtingesnės, nei iš pradžių manėme, kai bandėme jas pritaikyti mašininiam mokymuisi.

Nufotografuokite šiuos princo Harry ir Megano Markle'o vaizdus gatvėje. Čia galime pamatyti Harį ir Meganą iš skirtingų kampų - priekio, šono ir nugaros -, tačiau lengvai atpažįstame juos pagal jų savybes: odos spalvą, plaukų spalvą ir pan. Mes taip pat atsižvelgiame į tam tikras socialines užuominas. Minia į juos žiūri, jie gerai apsirengę, yra kiekvieno kadro centre ir yra akivaizdus kadrų iš tos pačios scenos tęstinumas. Čia yra daugybė žmogaus intuicijos sluoksnių, apie kuriuos mes linkę net negalvoti, kai aptinkame kultūrinius ir fizinius rodiklius.

Natūraliai atpažįstame Harį ir Meganą, nepaisant skirtingų šių kadrų kampų

Taigi kaip išmokyti kompiuterį išmokti visa tai padaryti? Nors mes negalime gauti algoritmo, kuris galvotų kaip žmogus, mes galime priversti tai padaryti tai, kas geriausiai tinka mašininiam mokymuisi: aptikti modelius didelėse, paženklintose duomenų rinkiniuose. Tai apima vaizdų rinkimą, algoritmo mokymą, vaizdo įrašų apdorojimą ir juose esančių žmonių atpažinimą. Galutinė išvada yra vaizdo įraše atpažįstamų žmonių sąrašas kartu su laiku ir vieta rėmeliuose, kuriuose jie rodomi.

Mes jau dirbame kurdami šią technologiją BBC. Mūsų sistemą, vadinamą „FaceRec“, kuria interneto tyrimų ir ateities paslaugų duomenų komanda, priklausanti BBC tyrimų ir plėtros komandai (išsaugosime keletą klavišų ir tiesiog paskambinsime jiems į duomenų komandą). Jis sukurtas naudojant vidinį kodą ir išorinę atvirojo kodo programinę įrangą, ypač „Seetaface“, C ++ veido atpažinimo variklį.

„FaceRec“ veikia apdorodama vaizdo įrašą per algoritminių žingsnių seriją, kiekviena išspręsdama konkrečią bendros problemos dalį. Mes pateiksime jums apžvalgą, kaip visa tai veikia.

1. Aptikite kadrus

Kad vaizdo įraše būtų aptiktas kiekvienas veidas, pirmiausia turime suskaidyti vaizdo įrašą į jį sudarančius kadrus (kadras apibrėžiamas kaip kadrų serija, rodoma nepertraukiamą laiką). Norėdami tai padaryti, „FaceRec“ naudoja laikmenų apdorojimo biblioteką „FFmpeg“, kuri naudoja funkciją grąžinti visų kadrų pradžios ir pabaigos laikus tam tikrame vaizdo įraše.

2. Aptikti veidus

Kitas žingsnis yra patikrinti kiekvieną kadrą, kad pamatytumėte, ar jame yra žmonių veidai. Tai sudėtinga problema - ar turėtume stengtis aptikti kiekvieną veidą futbolo varžybose? Ar skaičiuojamas veidas ant marškinėlių? Ar nuotraukos yra laikraščių priekyje?

Atkartodamas kiekvieną kadrą, „FaceRec“ paima kadrus iš kadro ir perduoda juos „SeetaFace“, kuris tada grąžina ribojančias dėžutes ten, kur, jos manymu, yra veidai. „SeetaFace“ veido aptikimo variklis išsiaiškina, ar veidas „suskaičiuojamas“ tiek, kad būtų įtrauktas į jo išvestį. Atminkite, kad „SeetaFace“ nesako, kas, jos manymu, yra aptikti žmonės, tik kad mano, kad aptikė veidą tam tikroje vietoje kadre.

3. Sukurkite veido takelius

Dabar, kai surinkome visus rėmus, kuriuose yra veidai, kita užduotis yra susiūti šiuos aptiktus veidus, kad būtų sukurtas veido takelis. Veido takas yra nenutrūkstamas ribojančių dėžių srautas aplink veidą, kai jis juda kadro rėmelyje.

„FaceRec“ paima kiekvieną veidą ribojantį langelį ir bando jį susieti su kitu loginiu ribojimo langeliu kitame kadre. Tai ne visada būna visiškai akivaizdu, nes veidai gali būti laikinai užtemti arba ribojantys langeliai gali kirsti vienas kitą, kai vienas asmuo juda už kito.

Apribotos dėžutės seka veidus per kadrą

Po gaubtu ši problema išspręsta naudojant Dlib ir Lucas-Kanade metodą. Taip sukuriami veido takeliai, kuriuos apibrėžia laiko taškai, rėmelių sąrašas ir veidus ribojantys langeliai.

4. Sukurkite pėdsakų vektorius

Mašinų mokymosi algoritmai dažnai veikia konvertuodami įvestą medžiagą į matematinius vektorius. Tada jie sužino, kurios šios „vektorinės erdvės“ dalys priklauso tam tikroms kategorijoms ar įvesties tipams. Kalbant apie veidus, jie sužinotų, kad vektoriai, vaizduojantys princo Harry veidą, paprastai yra tam tikroje srityje, o Megan vektoriai dažniausiai būna kitoje skiltyje. Jūs taip pat tikėtumėte, kad princo Williamo veido vektoriai šioje erdvėje bus arčiau Hario nei Megano, nes jie yra giminingi ir pasižymi panašiomis savybėmis.

Norėdami sukurti aptiktų veidų vektorius, „FaceRec“ naudoja „SeetaFace“ veido atpažinimo biblioteką. „FaceRec“ tiekiama apkarpytose aptiktų veidų nuotraukose, esančiose jų ribojančiose dėžutėse nuo veido takelio vidurio. Jis gauna atgal 2024 matmenų vektorių, kuris parodo to veido ypatybes.

5. Atpažinkite žmonių veidus, naudodami vektorinius vaizdus

Dabar mes turime veido vektorių kiekvienam aptiktam veido takui. Kitas žingsnis - paversti šiuos vektorius tikraisiais atpažįstamų veidų pavadinimais, taip pat pažymėti veidus, kurių mes neatpažįstame (ir todėl negalime jų pažymėti).

Pirmas klausimas yra toks: ką mes atpažįstame? Mes tikrai negalime sukurti modelio, kaip atpažinti visus kada nors gyvenusius - ir to nenorėtume mes. Taigi kam mes manome, kad ši veido atpažinimo sistema yra pakankamai svarbi?

Realiai tai turi paskatinti „BBC News“ žurnalistai ir žmonės, apie kuriuos jie dažniausiai praneša. Mes taip pat turime žinoti, kad nežinomi žmonės kiekvieną dieną skelbia naujienas, o kai jie tai daro, mes neturime ankstesnių jų nuotraukų. Turint omenyje šiuos apribojimus, duomenų komanda daugiausia dėmesio skyrė įžymybėms, tarptautiniams lyderiams, Jungtinės Karalystės politikams Parlamente ir Lordų Rūmuose, mokydama „FaceRec“.

Norėdami atpažinti šiuos žmones, jiems reikėjo surinkti treniruočių duomenis apie kiekvieną asmenį - tai yra, daugybė etikečių to asmens nuotraukų, kuriose yra tik tas asmuo. Duomenų komanda surinko tūkstančius nuotraukų ir sukūrė savo sąsajos sistemą, kad būtų galima lengvai peržiūrėti ir pažymėti atskiras nuotraukas. Neišnešiota mašininio mokymosi tiesa yra ta, kad kokybiškų, paženklintų duomenų rinkimas dažnai yra pati brangiausia, daug darbo reikalaujanti ir kartu svarbiausia gerai veikiančios PG sistemos dalis.

Surinkusi nuotraukas, duomenų komanda jas įdėjo į mašinų mokymosi klasifikatorių, vadinamą atraminiu vektorių aparatu, kad sukurtų apmokytus modelius. Šie modeliai, maitindami veido vektorių iš „SeetaFace“, nuspėja asmens vardą originaliame veido atvaizde arba sako, ar jo visai neatpažino.

IRFS sukūrė du modelius:

  1. Archyvo modelis: Įžymūs žmonės nuo XX amžiaus, kuriuos pasirinko žmonės iš „BBC Archive“. Šiame modelyje buvo apytiksliai 1000 žmonių.
  2. Naujienų modelis: Vis dar plėtojamas, jis bus išplėstas ir apims daugiau nei 2000 JK parlamento narių ir regioninių asamblėjų, Lordų rūmus ir pasaulio lyderius. Mokymo vaizdai buvo gauti iš „BBC News“, „Faktinių žinių“ ir „Dramos“.

Šie apmokyti modeliai naudojami prognozuoti, kurie žmonės yra vaizdo įrašų veiduose.

6. Klasterio veido takeliai

Dabar, kai visi veido takeliai buvo paženklinti, paskutinis žingsnis yra surinkti visus to paties asmens takelius.

Norėdami tai padaryti, visus vaizdo įrašo ištrauktus veido vektorius sudedame į vieną vektorių erdvę, kurią linksmybės pavadinime veido erdve. Norėdami vizualizuoti veido erdvę, galime naudoti įrankį, vadinamą „Tensorboard“, kompiuterio mokymosi bibliotekos „Tensorflow“ dalį.

Žvelgdami į šią veido erdvę, tikimės, kad to paties asmens nešiotojai yra pakankamai arti vienas kito ir pakankamai toli nuo kitų žmonių, kad galėtume juos automatiškai sugrupuoti. Tai yra žinoma mašininio mokymosi metu kaip klasterizacijos problema.

Žemiau matome veido takelio vektorius, projektuojamus į šią veido erdvę, Hario ir Megano vaizdo įrašuose. Matome, kad dauguma „Megan“ takelių yra sujungti, todėl juos lengva suskirstyti į grupes. Tai yra vienas iš būdų, kaip mes žinome, kad sukurti veido vektoriai veikia gerai.

Veidų vizualizavimas naudojant „TensorBoard“

Tie, kurie yra susipažinę su klasterizavimu, pamatys, kokia sudėtinga yra mūsų veido klasterizacijos problema. Kiekviename vaizdo įraše bus įvairus skirtingo dydžio klasterių skaičius - daugybė vektorių pasirodys vieną kartą ir nepriklausys jokiai grupei.

Užuot kritusi pro tamsią skylę bandydama tobulai išspręsti šią problemą, duomenų komanda nusprendė bėgti su keletu euristikos pavyzdžių. „FaceRec“ padalija problemą į dvi atskiras kategorijas: žmonių, kuriuos ji atpažįsta, veidus ir žmonių veidus, kurių ji ne. Atpažintiems veidams tai tiesiog sujungia visus veido takelius, turinčius tą pačią numatomą etiketę (pavadinimą). Neatpažintiems veidams jis naudojamas metodas, vadinamas hierarchiniu klasteriu per veido vektorius, kad juos grupuotų, bet nesuteikia etikečių.

7. Išveskite informaciją

Paskutinis „FaceRec“ žingsnis yra visos informacijos, surinktos atliekant įvairius veiksmus, pateikimas. Tai yra JSON failas, kuriame yra:

Vaizdo įrašo takelių sąrašas. Kiekvienai dainai ji:

  • Prognozuojamas tas takas
  • Prognozės pasitikėjimas
  • Stebėkite UUID
  • Veido vektorius tam takeliui
  • To takelio kadrų sąrašas

Kadrų sąraše informacija apie kiekvieną kadrą apima:

  • Veido vektorius tam kadrui, jei jis buvo aptiktas
  • Apvalaus dėžutės koordinatės veidui
  • Laikas vaizdo įraše rodomas kadre

Ką mes galime padaryti su šiais duomenimis? Norėdami pamatyti mūsų idėjas, galite peržiūrėti kitą mūsų tinklaraščio įrašą.

Apvyniokite

Tai iš tikrųjų apie tai. Tikimės, kad mes padėjome jums suprasti daugelį vaizdo įrašų atpažinimo sistemos dalių. Ir galbūt mes taip pat privertėme jus labiau suvokti visus sunkumus ir dviprasmybes, kuriuos jūsų smegenys patiria šimtus kartų per dieną atpažindami savo draugus ir artimuosius.

Supratęs vidinį „FaceRec“ sistemos veikimą, „News Labs“ uždavinys buvo išsiaiškinti, kur ši technologija galėtų suteikti pridėtinės vertės verslui BBC. Kaip intuityvia demonstracine versija pademonstruoti „FaceRec“ sugebėjimus? Kokiose gamybos sistemose matėme, kaip „FaceRec“ tinka? Kurias darbo eigos problemas jis galėtų išspręsti? Ir svarbu, kaip žmonės jaučiasi naudodamiesi veido atpažinimu? Kalbame apie iššūkius, susijusius su naujos technologijos įdiegimu didelėje organizacijoje, ir apie klausimus, su kuriais susidūrėme kurdami veido atpažinimo prototipą „Veido atpažinimas - kuo jis naudingas naujienų kabinetuose?“.