Stručný průvodce rozpoznáváním tváře BBC R & D

Často jsou to úkoly, které lidé dělají bez přemýšlení, které vyžadují některé z nejsložitějších zpracování v zákulisí. Ochutnávejte jídlo, povídejte si s přáteli, poslouchejte hudbu a skutečně rozpoznávejte lidi. Když sledujete epizodu Eastenders, uvidíte různé herce v různých prostředích, z různých úhlů a různých světel, ale váš mozek okamžitě zvládne tyto variace, aby věděl, že je ve scéně Dot Cotton a Phil Mitchell. Protože nemyslíme na zahrnuté zpracování, jsme překvapeni, když zjistíme, že tyto úkoly jsou mnohem složitější, než jsme si původně mysleli, když se je snažíme aplikovat na strojové učení.

Vyfoťte na ulici prince Harryho a Megan Markle následující obrázky. Vidíme zde Harryho a Megana z různých úhlů - zepředu, z boku i zezadu - přesto je snadno rozpoznáváme podle jejich funkcí: barva kůže, barva vlasů atd. Vezmeme v úvahu také určité společenské narážky. Dav se na ně dívá, jsou dobře oblečeni, jsou ve středu každého výstřelu a je zřejmá kontinuita výstřelů ze stejné scény. Existuje mnoho vrstev lidské intuice, o které nemáme tendenci ani přemýšlet, protože zjišťujeme kulturní i fyzické ukazatele.

Přirozeně rozpoznáváme Harryho a Megana, navzdory různým úhlům v těchto záběrech

Jak tedy naučíme počítač naučit se dělat všechno? I když nemůžeme získat algoritmus, který by přemýšlel jako člověk, můžeme ho přimět udělat to, co strojové učení umí nejlépe: detekovat vzory ve velkých označených souborech dat. To zahrnuje sběr obrázků, školení algoritmu, zpracování videa a rozpoznávání lidí v nich. Konečným výstupem je seznam osob rozpoznaných ve videu spolu s časem a umístěním v rámcích, které se objevují.

Na BBC již pracujeme na vybudování této technologie. Náš systém s názvem FaceRec je vyvíjen týmem internetového výzkumu a dat budoucích služeb v rámci výzkumu a vývoje BBC (uložíme několik úhozů a odtud je zavoláme datovému týmu). Je postavena pomocí kombinace interního kódu a externího softwaru s otevřeným zdrojovým kódem - zejména Seetaface, C ++ rozpoznávací modul obličeje.

FaceRec pracuje zpracováním videa pomocí řady algoritmických kroků, z nichž každý řeší konkrétní část celkového problému. Dáme vám přehled o tom, jak to všechno funguje.

1. Zjistit výstřely

Aby byla každá tvář detekována ve videu, musíme nejprve video rozdělit na jednotlivé záběry (snímek je definován jako řada rámců běžících nepřetržitě). K tomu používá FaceRec knihovnu FFmpeg pro zpracování médií, která pomocí funkce vrací dané časy začátku a konce všech snímků v daném videu.

2. Detekujte tváře

Dalším krokem je zkontrolovat každý snímek a zjistit, zda obsahuje lidské tváře. To je složitý problém - měli bychom se pokusit odhalit každou jednotlivou tvář při fotbalovém zápase? Počítá se tvář na tričku? Fotografie na přední straně novin?

FaceRec, který prochází každým výstřelem, odebere snímky z výstřelu a odešle je do SeetaFace, který poté vrací ohraničující políčka tam, kde si myslí, že jsou tváře. Stroj SeetaFace pro detekci obličeje rozezná, zda se obličej „počítá“ natolik, aby se do jeho výstupu zahrnoval. Vezměte prosím na vědomí, že SeetaFace neříká, kdo si myslí, že jsou detekovanými lidmi, ale pouze že věří, že v daném místě v rámci detekovala obličej.

3. Vytvořte stopy obličeje

Nyní, když jsme shromáždili všechny rámečky obsahující tváře, je dalším úkolem spojit tyto detekované tváře dohromady a vytvořit tak obličejovou stopu. Tvářová dráha je nepřetržitý tok ohraničujících rámečků kolem obličeje, když se pohybuje v rámci zastřeleného snímku.

FaceRec vezme každý rámeček ohraničení obličeje a pokusí se jej namapovat na další rámeček logického ohraničení v následujícím rámci. To není vždy zcela zřejmé, protože tváře mohou být dočasně zakryty nebo ohraničující rámečky se mohou vzájemně křížit, když se jedna osoba pohybuje za druhou.

Hraniční rámečky sledují tváře přes výstřel

Pod kapotou je tento problém vyřešen pomocí metody Dlib a Lucas-Kanade. Tím se vytvoří stopy tváří, které jsou definovány časovými body, seznamem rámců a ohraničujícími políčkami tváří.

4. Vytvořte vektory tváře pro stopy

Algoritmy strojového učení často pracují převáděním vstupního materiálu do matematických vektorů. Poté se naučí, které části tohoto „vektorového prostoru“ patří do konkrétních kategorií nebo typů vstupů. Pokud jde o tváře, zjistili by, že vektory představující tvář Prince Harryho mají tendenci být v určité oblasti, zatímco meganové vektory mají tendenci být v jiné sekci. Také byste očekávali, že vektory tváře prince Williama budou v tomto prostoru k Harrymu blíže než k Meganovi, protože jsou ve vztahu a sdílejí podobné vlastnosti.

K vytvoření vektorů pro detekované tváře používá FaceRec knihovnu identifikace tváře SeetaFace. FaceRec podává oříznuté fotografie detekovaných tváří v jejich ohraničovacích rámečcích od středu tváře. Přijme zpět 2024-rozměrný vektor, který představuje rysy této tváře.

5. Rozpoznávejte tváře lidí ve vektorech tváře

Nyní máme vektor tváří pro každou detekovanou tvář. Dalším krokem je přeměnit tyto vektory na skutečná jména rozpoznaných tváří a také označit tváře, které nerozpoznáváme (a proto je nelze označit).

První otázka je: jen kdo to poznáme? Určitě nemůžeme vytvořit model, který by rozpoznal každého, kdo kdy žil - a ani bychom to nechtěli. Koho tedy považujeme za dostatečně důležitý pro tento systém rozpoznávání obličeje?

Realisticky je to třeba řídit novináři v BBC News a lidmi, o nichž nejčastěji informují. Musíme si také být vědomi toho, že neznámí lidé dělají zprávy každý den, a když ano, nemusíme mít žádné předchozí obrázky. S ohledem na tato omezení se datový tým při tréninku FaceRec zaměřil hlavně na celebrity, mezinárodní vůdce, politiky U.K. v parlamentu a Sněmovnu lordů.

Aby poznali tyto lidi, potřebovali shromáždit údaje o školení o každé osobě - ​​to je spousta označených fotografií té osoby, která obsahuje pouze tuto osobu. Datový tým shromáždil tisíce fotografií a poté si vytvořil vlastní systém front-end, který snadno prohlížel a označoval jednotlivé fotografie. Nepravidelnou pravdou strojového učení je, že sběr kvalitních, označených dat je často nejdražší, pracná a přesto důležitá součást budování dobře fungujícího systému AI.

Poté, co shromáždil fotografie, datový tým je poté vložil do klasifikátoru strojového učení nazývaného stroj podporující vektor a vytvořil vyškolené modely. Když jsou tyto modely napájeny vektorem tváře z SeetaFace, předpovídají jméno osoby v původním obrázku tváře nebo říkají, zda vůbec nerozpoznaly tvář.

IRFS vytvořil dva modely:

  1. Archivní model: Slavní lidé od 20. století vybraní lidmi z archivu BBC. Tento model obsahoval zhruba 1 000 lidí.
  2. Model zpravodajství: Stále se vyvíjí, bude se to rozšiřovat o více než 2 000 členů parlamentu Spojeného království a regionálních shromáždění, Sněmovny lordů a globálních vůdců. Výcvikové obrazy byly získány z BBC News, Factual a Drama.

Tyto vyškolené modely se pak používají k předpovědi, kteří lidé jsou ve videu ve tvářích.

6. Clusterové čelní dráhy

Nyní, když byly označeny všechny obličejové stopy, je posledním krokem shromáždění všech stop stejné osoby.

Abychom toho dosáhli, vložíme všechny extrahované obličejové vektory z videa do jednoho vektorového prostoru, který pro zábavu budeme nazývat obličejový prostor. K vizualizaci prostoru v obličeji můžeme použít nástroj Tensorboard, součást knihovny strojového učení Tensorflow.

Při pohledu na tento čelní prostor doufáme, že vektory od stejné osoby jsou dostatečně blízko u sebe a dost daleko od ostatních lidí, abychom je mohli automaticky seskupit. Toto je známé ve strojovém učení jako problém shlukování.

Níže vidíme promítané vektory tváře do tohoto tváře pro video Harryho a Megana. A vidíme, že většina Megan skladeb je seskupena dohromady, což usnadňuje jejich seskupování. To je jeden způsob, jak víme, že vytvořené vektory obličeje fungují dobře.

Vizualizace tváří pomocí TensorBoard

Osoby obeznámené s klastrováním uvidí obtížnost našeho problému s klastrováním obličeje. Pro každé video bude existovat různý počet shluků různých velikostí - s množstvím vektorů, které se objeví jednou a nebudou patřit do žádného shluku.

Místo toho, aby se pokusil tento problém dokonale vyřešit, nepadl do temné díry, datový tým se rozhodl spustit několik heuristik. FaceRec rozdělí problém do dvou samostatných kategorií: tváře lidí, které rozpoznává, a tváře lidí, které ne. U rozpoznaných tváří jednoduše seskupí všechny stopy tváří dohromady, které mají stejný předpovězený štítek (název). Pro nerozpoznané tváře používá techniku ​​zvanou hierarchické shlukování přes vektory tváří, aby je seskupila, ale neposkytla jim štítky.

7. Výstup informací

Posledním krokem aplikace FaceRec je vyplnění všech informací shromážděných během různých kroků. Jedná se o soubor JSON, který obsahuje:

Seznam skladeb ve videu. Pro každou skladbu má:

  • Předvídaná osoba pro tuto skladbu
  • Důvěra předpovědi
  • Sledovat UUID
  • Face-vector pro tuto stopu
  • Seznam rámců v této stopě

V seznamu snímků informace o každém snímku obsahují:

  • Vektor obličeje pro tento snímek, pokud byl detekován
  • Souřadnice ohraničujícího rámečku pro obličej
  • Čas ve videu nastane

Co s těmito údaji můžeme udělat? Můžete si prohlédnout naše další příspěvky v blogu a podívat se na naše nápady.

Zabalit

To je opravdu o tom. Doufáme, že jsme vám pomohli porozumět mnoha částem, které přecházejí do systému rozpoznávání obličejů videa. A možná jsme vás také více informovali o všech těžkých zvedáních a nejasnostech, s nimiž se váš mozek setkává stokrát denně, když rozpoznává vaše přátele a blízké.

Po pochopení vnitřních fungování systému FaceRec bylo úkolem News Labs zjistit, kde by tato technologie mohla v rámci BBC přinést obchodní hodnotu. Jak předvedeme schopnosti FaceRecu pomocí intuitivního dema? K jakým výrobním systémům by se FaceRec hodil? Koho problémy pracovního postupu by to mohlo vyřešit? A co je důležité, jak se lidé cítí při používání rozpoznávání obličeje? Hovoříme o výzvách zavádění nové technologie ve velké organizaci a otázkách, kterým jsme čelili při vývoji prototypu rozpoznávání obličeje v části „Rozpoznávání tváře - Jaké je použití pro redakce?“.