Un scurt ghid pentru recunoașterea video față de BBC R&D

Adesea, sunt sarcinile pe care oamenii le fac fără să se gândească, care necesită unele dintre cele mai complexe prelucrări din culise. Degustarea mâncării, conversația cu prietenii, ascultarea muzicii și, într-adevăr, recunoașterea oamenilor. Când urmăriți un episod cu Eastenders, vedeți diferiții actori în diferite setări, din unghiuri diferite și în diferite iluminări, dar instantaneu creierul dvs. gestionează aceste variante pentru a ști că sunt Dot Cotton și Phil Mitchell în scenă. Deoarece nu ne gândim la procesarea implicată, am fost surprinși să aflăm că aceste sarcini sunt mult mai complexe decât am crezut inițial atunci când încercăm să le aplicăm la învățarea automată.

Faceți următoarele imagini de la Prințul Harry și Megan Markle pe stradă. Pe Harry și Megan îi putem vedea din diferite unghiuri - față, laterală și spate - totuși le recunoaștem cu ușurință din caracteristicile lor: culoarea pielii, culoarea părului și așa mai departe. De asemenea, luăm în considerare anumite indicii sociale. Mulțimea îi privește, sunt bine îmbrăcați, sunt în centrul fiecărei fotografii și există o continuitate evidentă a fotografiilor din aceeași scenă. Există multe straturi de intuiție umană aici, tindem să nu ne gândim nici măcar pe măsură ce detectăm indicatori culturali, dar și fizici.

Recunoaștem în mod natural Harry și Megan, în ciuda diferitelor unghiuri din aceste fotografii

Deci, cum învățăm un computer să învețe să facă toate acestea? Deși nu putem obține un algoritm care să creadă ca un om, îl putem determina să facă ceea ce face cel mai bine învățarea automată: detectează tiparele în seturi de date mari etichetate. Aceasta presupune colectarea de imagini, antrenarea algoritmului, procesarea videoclipurilor și recunoașterea persoanelor din ele. Rezultatul final este o listă de persoane recunoscute într-un videoclip împreună cu ora și locația în cadrele în care apar.

Lucrăm deja la construirea acestei tehnologii la BBC. Sistemul nostru, numit FaceRec, este dezvoltat de Internet Research and Future Services Data Team în cadrul BBC Research and Development (vom salva niște apăsări de taste și le vom numi de data Team Team de aici înainte). Este construit folosind o combinație de cod intern și software extern open-source - în special, Seetaface, un motor de recunoaștere facială C ++.

FaceRec funcționează procesând videoclipuri printr-o serie de pași algoritmi, fiecare rezolvând o parte specifică a problemei generale. Vă vom oferi o imagine de ansamblu asupra modului în care funcționează totul.

1. Detectați fotografii

Pentru ca fiecare chip să fie detectat într-un videoclip, trebuie mai întâi să împărțim videoclipul în fotografiile sale constitutive (o poză este definită ca o serie de cadre care rulează pentru o perioadă neîntreruptă de timp). Pentru a face acest lucru, FaceRec folosește biblioteca de procesare media FFmpeg, care utilizează o funcție pentru a returna toate momentele de început și sfârșit ale fotografiilor dintr-un anumit videoclip.

2. Detectați fețele

Următorul pas este să verificați fiecare cadru pentru a vedea dacă conține fețe umane. Aceasta este o problemă complicată - ar trebui să încercăm să detectăm fiecare față la un meci de fotbal? Are o față pe un tricou? Fac fotografii pe fața ziarelor?

Faceți ritmul fiecărei fotografii, FaceRec preia cadre din poză și le alimentează în SeetaFace, care apoi returnează casetele de limitare de unde crede că sunt fețele. Motorul de detectare a feței SeetaFace discerne dacă o față „contează” suficient pentru a fi inclusă în producția sa. Vă rugăm să rețineți că SeetaFace nu spune cine crede că sunt persoanele detectate, ci doar că consideră că a detectat o față într-o anumită locație din cadru.

3. Creați piese de față

După ce am colectat toate cadrele care conțin fețe, următoarea sarcină este să coase aceste fețe detectate pentru a crea un track-face. O față-track este un flux continuu de cutii de delimitare în jurul unei fețe în timp ce se deplasează în cadrul imaginii.

FaceRec ia fiecare casetă de delimitare a feței și încearcă să o asocieze la următoarea casetă de delimitare logică din cadrul următor. Acest lucru nu este întotdeauna evident, întrucât fețele pot fi închise temporar sau căsuțele se pot încrucișa pe măsură ce o persoană se deplasează în spatele alteia.

Cutiile de legătură urmăresc fețele printr-o lovitură

Sub capotă, această problemă este rezolvată folosind Dlib și metoda Lucas-Kanade. Se creează trasee de față, care sunt definite de puncte de timp, o listă de cadre și casetele de delimitare a fețelor.

4. Creați vectori de față pentru piese

Algoritmii de învățare automată funcționează adesea transformând materialele de intrare în vectori matematici. Apoi învață ce părți ale acestui „spațiu vectorial” aparțin unor categorii sau tipuri de intrare specifice. În ceea ce privește fețele, ei ar afla că vectorii reprezentând fața prințului Harry tind să fie într-o anumită zonă, în timp ce vectorii Megan tind să se termine într-o altă secțiune. De asemenea, v-ați aștepta ca vectori ai feței prințului William să fie mai aproape în acest spațiu de Harry decât de Megan, întrucât au legături și au caracteristici similare.

Pentru a crea vectori pentru fețele detectate, FaceRec folosește biblioteca de identificare a feței SeetaFace. FaceRec se alimentează cu fotografii decupate ale fețelor detectate în casetele lor de delimitare de la jumătatea punctului feței. Acesta primește înapoi un vector dimensional 2024 care reprezintă caracteristicile feței respective.

5. Recunoașteți fețele oamenilor în vectorii de față

Avem acum un vector de față pentru fiecare față detectată. Următorul pas este transformarea acestor vectori în numele efective ale fețelor recunoscute, precum și semnarea fețelor pe care nu le recunoaștem (și, prin urmare, nu le putem eticheta).

Prima întrebare aici este: doar pe cine recunoaștem? Cu siguranță nu putem construi un model care să recunoască pe toți cei care au trăit vreodată - și nici nu ne-am dori. Deci, cine considerăm suficient de important pentru acest sistem de recunoaștere a feței?

Realist, acest lucru trebuie să fie determinat de jurnaliștii din BBC News și de oamenii pe care îi raportează cel mai des. De asemenea, trebuie să fim conștienți de faptul că oamenii necunoscuți fac veștile în fiecare zi și, atunci când se întâmplă, este posibil să nu avem imagini anterioare cu acestea. Având în vedere aceste limitări, echipa de date s-a concentrat în principal pe celebrități, lideri internaționali, politicieni din Statele Unite ale Americii din Parlament și Camera Lorzilor atunci când se antrenează FaceRec.

Pentru a recunoaște aceste persoane, aveau nevoie să adune date de instruire pentru fiecare persoană, adică o mulțime de fotografii etichetate ale acelei persoane care conțin doar acea persoană. Echipa de date a colectat mii de fotografii și apoi și-a construit propriul sistem front-end pentru a vizualiza și eticheta ușor fotografiile individuale. Adevărul nesecat al învățării automate este că colectarea de date etichetate de calitate este adesea cea mai scumpă, laborioasă și totuși importantă parte a construirii unui sistem AI care funcționează bine.

După ce au colectat fotografiile, echipa de date le-a introdus apoi într-un clasificator de învățare a mașinilor, numit mașină de suport pentru a crea modele instruite. Când sunt alimentate cu un vector de față de la SeetaFace, aceste modele prezic numele persoanei din imaginea originală a feței sau spun dacă nu au recunoscut fața deloc.

IRFS a creat două modele:

  1. Model de arhivă: oameni faimoși din secolul XX, selectați de oameni de la BBC Archive. Acest model conținea aproximativ 1.000 de persoane.
  2. Model de știri: În curs de dezvoltare, acesta se va extinde pentru a include peste 2.000 de membri ai Parlamentului Regatului Unit și adunări regionale, Camera Lorzilor și lideri mondiali. Imaginile de instruire au fost obținute din BBC News, Factual și Drama.

Aceste modele instruite sunt apoi utilizate pentru a prezice persoanele care se află pe fața pieselor în videoclipuri.

6. Trasee de cluster

Acum, că toate piesele feței au fost etichetate, ultimul pas este să strângi toate piesele aceleiași persoane.

Pentru a face acest lucru, am pus toate vectorii facțiuni extrași ai unui videoclip într-un singur spațiu vector, pe care îl vom numi un spațiu facial pentru distracție. Pentru a vizualiza spațiul feței putem folosi un instrument numit Tensorboard, parte a bibliotecii de învățare a mașinilor Tensorflow.

Privind acest spațiu facial, sperăm că vectorii de la aceeași persoană sunt suficient de aproape împreună și suficient de departe de alți oameni încât să îi putem grupa automat. Acest lucru este cunoscut în învățarea mașinii ca o problemă de clustering.

Putem vedea vectorii de pe față proiectați în acest spațiu facial pentru videoclipul Harry și Megan de mai jos. Și vedem că majoritatea pieselor Megan sunt grupate, ceea ce le face ușor de grupat. Acesta este un mod în care știm că vectorii faciali creați funcționează bine.

Vizualizarea fețelor cu TensorBoard

Cei familiarizați cu clustering-ul vor vedea dificultatea problemei noastre de aglomerare în față. Pentru fiecare videoclip, va exista un număr diferit de cluster-uri de diferite dimensiuni - o mulțime de vectori apărând o dată și care nu aparțin niciunui cluster.

În loc să cadă o gaură întunecată încercând să rezolve perfect această problemă, echipa de date a decis să alerge cu câteva euristici. FaceRec împarte problema în două categorii separate: fețe de oameni pe care le recunoaște și chipuri de oameni pe care nu le are. Pentru fețele recunoscute, acesta grupează pur și simplu toate piesele feței împreună care au aceeași etichetă prevăzută (nume). Pentru fețele nerecunoscute, folosește o tehnică numită aglomerare ierarhică pe vectorii feței pentru a le grupa, dar nu le dă etichete.

7. Afișați informațiile

Ultimul pas pentru FaceRec este furnizarea tuturor informațiilor colectate de-a lungul diferitelor etape. Aceasta are forma unui fișier JSON care conține:

O listă de piese din videoclip. Pentru fiecare piesă are:

  • Persoana prevăzută pentru acea pistă
  • Încrederea predicției
  • Urmăriți UUID
  • Face-vector pentru acea piesă
  • Lista de cadre din acea pistă

În lista de cadre, informațiile de pe fiecare cadru includ:

  • Vectorul feței pentru cadrul respectiv dacă a fost detectat
  • Coordonate ale căsuței de legătură pentru față
  • Timpul video apare în cadru

Ce putem face cu aceste date? Puteți consulta următoarea noastră postare pe blog pentru a vedea ideile noastre.

Învelire

Este vorba cu adevărat despre asta. Sperăm că v-am ajutat să înțelegeți multe părți care intră într-un sistem video de recunoaștere a feței. Și poate v-am făcut și mai conștienți de toate ridicările grele și ambiguitățile pe care creierul dvs. le gestionează de sute de ori pe zi când vă recunoașteți prietenii și cei dragi.

După ce am înțeles funcționarea interioară a sistemului FaceRec, sarcina pentru News Labs a fost de a vedea unde această tehnologie poate adăuga valoare de afaceri în cadrul BBC. Cum arătăm abilitățile FaceRec cu o demonstrație intuitivă? În ce sisteme de producție am putea vedea FaceRec care se potrivește? Ale căror probleme de flux de lucru le-ar putea rezolva? Și important, cum se simt oamenii despre utilizarea recunoașterii feței? Vorbim despre provocările dezvoltării unei noi tehnologii în cadrul unei organizații mari și despre întrebările cu care ne-am confruntat atunci când dezvoltăm un prototip de recunoaștere facială în „Recunoașterea feței - Ce folos este la Newsrooms?”.