En kort guide til BBC R & Ds video ansigtsgenkendelse

Ofte er det de opgaver, mennesker udfører uden at tænke, som kræver noget af den mest komplekse behandling bag kulisserne. At smage mad, chatte med venner, lytte til musik og faktisk genkende folk. Når du ser en episode af Eastenders, ser du de forskellige skuespillere i forskellige omgivelser, fra forskellige vinkler og i forskellig belysning, men øjeblikkeligt behandler din hjerne disse variationer for at vide, at det er Dot Cotton og Phil Mitchell i scenen. Da vi ikke tænker på den involverede behandling, er vi overraskede over at finde ud af, at disse opgaver er meget mere komplekse, end vi oprindeligt troede, når vi prøver at anvende dem til maskinlæring.

Tag følgende billeder fra prins Harry og Megan Markle ude på gaden. Vi kan se Harry og Megan fra forskellige vinkler her - foran, side og bagfra - og alligevel genkender vi dem let fra deres funktioner: hudfarve, hårfarve og så videre. Vi tager også visse sociale signaler i betragtning. Publikum ser på dem, de er godt klædt, de er i midten af ​​hvert skud, og der er en åbenlys kontinuitet med skud fra den samme scene. Der er mange lag af menneskelig intuition her, vi har en tendens til ikke engang at tænke på, når vi opdager såvel kulturelle som fysiske indikatorer.

Vi genkender naturligvis Harry og Megan på trods af de forskellige vinkler i disse skud

Så hvordan lærer vi en computer at lære at gøre alt dette? Selvom vi ikke kan få en algoritme til at tænke som et menneske, kan vi få den til at gøre, hvad maskinindlæring gør bedst: opdage mønstre i store, mærkede datasæt. Dette involverer indsamling af billeder, træning af algoritmen, behandling af videoer og genkendelse af menneskerne i dem. Den endelige output er en liste over personer, der genkendes i en video sammen med tid og placering i de rammer, de vises.

Vi arbejder allerede med at opbygge denne teknologi på BBC. Vores system, kaldet FaceRec, udvikles af Internet Research and Future Services Data Team inden for BBC Research and Development (vi gemmer nogle tastetryk og kalder dem bare Data Team herfra og ud). Det er bygget ved hjælp af en kombination af intern kode og ekstern open source-software - især Seetaface, en C ++ ansigtsgenkendelsesmotor.

FaceRec fungerer ved at behandle video gennem en række algoritmiske trin, der hver løser en bestemt del af det overordnede problem. Vi giver dig et overblik over, hvordan det hele fungerer.

1. Registrer skud

For hvert ansigt, der skal registreres i en video, skal vi først opdele videoen i dets bestanddele (et billede defineres som en række rammer, der kører i en uafbrudt periode). For at gøre dette bruger FaceRec mediebehandlingsbiblioteket FFmpeg, der bruger en funktion til at returnere alle optagelsens start- og sluttider inden for en given video.

2. Registrer ansigter

Det næste trin er at kontrollere hver ramme for at se, om den indeholder menneskelige ansigter. Dette er et vanskeligt problem - skal vi prøve at opdage hvert eneste ansigt i en fodboldkamp? Tæller et ansigt på en t-shirt? Har fotos foran på aviser?

Iterating gennem hvert skud, FaceRec tager rammer fra skuddet og fodrer disse til SeetaFace, som derefter returnerer afgrænsningsbokse, hvor det tror, ​​ansigterne er. SeetaCas ansigtdetekteringsmotor skelner mellem om et ansigt "tæller" nok til at medtage dets output. Bemærk, at SeetaFace ikke siger, hvem det tror, ​​de opdagede mennesker er, blot at de mener, at de har registreret et ansigt på et givet sted inden for rammen.

3. Opret ansigtsspor

Nu hvor vi har samlet alle de rammer, der indeholder ansigter, er den næste opgave at sy disse fundne ansigter sammen for at skabe et ansigtsspor. Et ansigtsspor er en kontinuerlig strøm af afgrænsende kasser rundt om et ansigt, når det bevæger sig inden i skudrammen.

FaceRec tager hvert ansigtsgrænsende felt og forsøger at kortlægge det til det næste logiske afgrænsningsfelt i den følgende ramme. Dette er ikke altid helt åbenlyst, da ansigter midlertidigt kan skjules eller afgrænsningsbokse kan krydse hinanden, når en person bevæger sig bag den anden.

Afgrænsende kasser sporer ansigter gennem et skud

Under hætten løses dette problem ved hjælp af Dlib og Lucas-Kanade-metoden. Dette skaber ansigtsspor, der er defineret af tidspunkter, en liste over rammer og afgrænsningsbokse på ansigterne.

4. Opret ansigtsvektorer til spor

Maskinlæringsalgoritmer fungerer ofte ved at konvertere inputmateriale til matematiske vektorer. De lærer derefter, hvilke dele af dette "vektorrum", der hører til bestemte kategorier eller inputtyper. Med hensyn til ansigter lærte de, at vektorer, der repræsenterer prins Harrys ansigt, har tendens til at være i et bestemt område, mens Megan-vektorer har en tendens til at være forbi i et andet afsnit. Du kan også forvente, at vektorer af prins William's ansigt er tættere på Harry i dette rum end Megan, da de er beslægtede og har lignende egenskaber.

For at oprette vektorer til de fundne ansigter bruger FaceRec SeetaFas ansigtsidentifikationsbibliotek. FaceRec feeds i beskærede fotos af de detekterede ansigter i deres afgrænsningsbokse fra midtpunktet af ansigtssporet. Den modtager en 2024-dimensionel vektor, der repræsenterer funktionerne i dette ansigt.

5. Genkend folks ansigter i ansigtssporvektorer

Vi har nu en ansigtsvektor for hvert detekteret ansigtsspor. Det næste trin er at omdanne disse vektorer til de faktiske navne på de genkendte ansigter samt markere de ansigter, vi ikke genkender (og derfor ikke kan mærke).

Det første spørgsmål her er: bare hvem genkender vi? Vi kan helt sikkert ikke opbygge en model til at genkende alle, der nogensinde har levet - og heller ikke vil vi gerne. Så hvem anser vi for at være vigtige nok til dette ansigtsgenkendelsessystem?

Realistisk set skal dette styres af journalisterne i BBC News og de mennesker, de oftest rapporterer om. Vi har også brug for at være opmærksom på, at ukendte mennesker nyheder hver dag, og når de gør det, har vi muligvis ikke tidligere billeder af dem. Med disse begrænsninger i tankerne fokuserede Datateamet hovedsageligt på berømtheder, internationale ledere, britiske politikere i parlamentet og House of Lords, når de uddannede FaceRec.

For at genkende disse mennesker var de nødt til at samle træningsdata om hver person - det vil sige masser af mærkede fotos af den person, der kun indeholdt denne person. Datateamet indsamlede tusinder af fotos og byggede derefter deres eget front-end-system til let at se og mærke individuelle fotos. Den unsexy-sandhed ved maskinlæring er, at indsamling af kvalificerede, mærkede data ofte er den dyreste, besværlige og alligevel vigtige del af opbygningen af ​​et velfungerende AI-system.

Efter at have samlet fotos, fodrede Data-teamet dem derefter ind i en maskinlæringsklassifikator kaldet en supportvektormaskine for at oprette træne modeller. Når der mates en ansigtsvektor fra SeetaFace, forudsiger disse modeller navnet på personen i det originale ansigtsbillede eller siger, om de overhovedet ikke genkendte ansigtet.

IRFS skabte to modeller:

  1. Arkivmodel: Berømte mennesker fra det 20. århundrede og fremefter valgt af folk fra BBC Archive. Denne model indeholdt ca. 1.000 mennesker.
  2. Nyhedsmodel: Stadig under udvikling vil dette udvides til at omfatte over 2.000 medlemmer af det britiske parlament og regionale forsamlinger, House of Lords og globale ledere. Træningsbillederne blev hentet fra BBC News, Factual og Drama.

Disse træne modeller bruges derefter til at forudsige, hvilke mennesker der er i ansigtssporene i videoer.

6. Cluster face tracks

Nu hvor alle ansigtsspor er blevet mærket, er det sidste trin at samle alle sporene til den samme person.

For at gøre dette lægger vi alle en videos udpakkede ansigtsvektorer i et vektor-rum, som vi vil kalde et ansigt-rum til sjov. For at visualisere ansigtområdet kan vi bruge et værktøj kaldet Tensorboard, en del af maskinlæringsbiblioteket Tensorflow.

Ser vi på dette ansigt-rum, håber vi, at vektorer fra den samme person er tæt nok sammen og langt nok væk fra andre mennesker, til at vi automatisk kan gruppere dem. Dette er kendt i maskinindlæring som et klyngeforhold.

Vi kan se ansigtssporvektorerne projiceret i dette ansigterum til Harry og Megan-videoen nedenfor. Og vi ser, at de fleste af Megan-sporene er samlet sammen, hvilket gør dem lette at klynge sammen. Det er en måde vi ved, at de oprettede ansigtsvektorer fungerer godt.

Visualiserer ansigter med TensorBoard

Dem, der er fortrolige med klynger, vil se vanskeligheden ved vores ansigtsklynge-problem. For hver video vil der være et varierende antal klynger i forskellige størrelser - med masser af vektorer der vises én gang og ikke tilhører nogen klynge.

I stedet for at falde ned i et mørkt hul ved at prøve at løse dette problem perfekt, besluttede Data Team at køre med et par heuristikker. FaceRec opdeler problemet i to separate kategorier: ansigter på mennesker, det genkender, og ansigter fra mennesker, det ikke gør. For anerkendte ansigter klynger det blot alle ansigtsspor sammen, som har den samme forudsagte etiket (navn). For ikke-genkendte ansigter bruger den en teknik kaldet hierarkisk klynge over ansigtsvektorerne til at gruppere dem, men ikke give dem etiketter.

7. Angiv info

Det sidste trin til FaceRec udfylder al den information, der er indsamlet i de forskellige trin. Dette kommer i form af en JSON-fil, der indeholder:

En liste over spor i videoen. For hvert spor har det:

  • Forudsagt person for det spor
  • Tillid til forudsigelse
  • Spor UUID
  • Ansigtsvektor til det spor
  • Liste over rammer i det spor

På listen over rammer inkluderer informationen om hver ramme:

  • Ansigtsvektor for den ramme, hvis den er blevet detekteret
  • Afgrænsningsboks koordinater for ansigtet
  • Tid i videoen rammen opstår

Hvad kan vi gøre med disse data? Du kan tjekke vores næste blogindlæg for at se vores ideer.

Wrap-up

Det handler virkelig om det. Forhåbentlig har vi hjulpet dig med at forstå de mange dele, der går ind i et video-ansigtsgenkendelsessystem. Og måske har vi også gjort dig mere bevidst om alle de tunge løft og uklarheder, din egen hjerne håndterer hundreder af gange om dagen, når du genkender dine venner og kære.

Efter at have forstået de indre funktioner i FaceRec-systemet var opgaven for News Labs at se, hvor denne teknologi kunne tilføje forretningsværdi inden for BBC. Hvordan viser vi FaceRecs evner med en intuitiv demo? Hvilke produktionssystemer kunne vi se FaceRec passe ind i? Hvem arbejdsgangsproblemer kunne det løse? Og vigtigst af alt, hvordan har folk det med at bruge ansigtsgenkendelse? Vi taler om udfordringerne ved at udrulle en ny teknologi inden for en stor organisation og de spørgsmål, vi stod overfor, når vi udviklede en prototype til ansigtsgenkendelse i “Ansigtsgenkendelse - hvad bruges det til nyhedslokaler?”.