Krótki przewodnik po rozpoznawaniu twarzy wideo przez BBC R&D

Często są to zadania wykonywane przez ludzi bez zastanowienia, które wymagają najbardziej skomplikowanego przetwarzania za kulisami. Degustacja jedzenia, pogawędka z przyjaciółmi, słuchanie muzyki i rzeczywiście poznawanie ludzi. Kiedy oglądasz odcinek Eastenders, widzisz różnych aktorów w różnych ustawieniach, pod różnymi kątami i przy różnym oświetleniu, ale twój mózg natychmiast obsługuje te odmiany, aby wiedzieć, że w scenie jest Dot Cotton i Phil Mitchell. Ponieważ nie myślimy o przetwarzaniu, jesteśmy zaskoczeni, że te zadania są znacznie bardziej złożone, niż początkowo sądziliśmy, gdy próbujemy zastosować je do uczenia maszynowego.

Zrób następujące zdjęcia księcia Harry'ego i Megan Markle na ulicy. Widzimy tutaj Harry'ego i Megan pod różnymi kątami - z przodu, z boku i z tyłu - ale łatwo je rozpoznać po ich cechach: kolorze skóry, kolorze włosów i tak dalej. Bierzemy również pod uwagę pewne wskazówki społeczne. Tłum na nich patrzy, są dobrze ubrani, są w centrum każdego ujęcia i widoczna jest ciągłość ujęć z tej samej sceny. Istnieje tutaj wiele warstw ludzkiej intuicji, o których nawet nie myślimy, gdy wykrywamy wskaźniki kulturowe i fizyczne.

Oczywiście rozpoznajemy Harry'ego i Megan, pomimo różnych ujęć w tych ujęciach

Jak więc nauczyć komputer, jak nauczyć się robić to wszystko? Chociaż nie możemy uzyskać algorytmu do myślenia jak człowiek, możemy zmusić go do robienia tego, co najlepsze w uczeniu maszynowym: wykrywania wzorców w dużych, oznaczonych zestawach danych. Obejmuje to zbieranie obrazów, szkolenie algorytmu, przetwarzanie filmów i rozpoznawanie osób w nich obecnych. Ostatecznym wyjściem jest lista osób rozpoznanych na filmie wraz z czasem i lokalizacją w klatkach, w których się pojawiają.

Już pracujemy nad stworzeniem tej technologii w BBC. Nasz system, o nazwie FaceRec, jest opracowywany przez zespół ds. Badań i rozwoju usług internetowych w BBC Research and Development (zaoszczędzimy kilka naciśnięć klawiszy i od razu nazwiemy je zespołem ds. Danych). Został zbudowany przy użyciu połączenia wewnętrznego kodu i zewnętrznego oprogramowania typu open source - w szczególności Seetaface, silnika rozpoznawania twarzy C ++.

FaceRec działa poprzez przetwarzanie wideo poprzez szereg algorytmicznych kroków, z których każdy rozwiązuje określoną część ogólnego problemu. Podamy Ci przegląd tego, jak to wszystko działa.

1. Wykryj strzały

Aby każda twarz została wykryta w filmie, najpierw musimy rozbić wideo na ujęcia składowe (ujęcie jest zdefiniowane jako seria klatek biegnących przez nieprzerwany okres czasu). Aby to zrobić, FaceRec korzysta z biblioteki przetwarzania multimediów FFmpeg, która wykorzystuje funkcję zwracającą czas rozpoczęcia i zakończenia wszystkich ujęć w danym filmie.

2. Wykryj twarze

Następnym krokiem jest sprawdzenie każdej klatki, aby zobaczyć, czy zawiera ona ludzkie twarze. To trudny problem - czy powinniśmy próbować wykryć każdą twarz podczas meczu piłkarskiego? Czy liczy się twarz na koszulce? Czy zdjęcia na przedniej stronie gazet?

Iterując po każdym zdjęciu, FaceRec bierze klatki ze zdjęcia i przekazuje je do SeetaFace, który następnie zwraca obwiednię, w której sądzi się, że twarze. Silnik wykrywania twarzy SeetaFace rozpoznaje, czy twarz „liczy się” na tyle, by uwzględnić ją w wynikach. Należy pamiętać, że SeetaFace nie mówi, kim sądzi, że są to wykryte osoby, a jedynie uważa, że ​​wykrył twarz w danym miejscu w ramce.

3. Utwórz ślady twarzy

Teraz, gdy zebraliśmy wszystkie ramki zawierające twarze, następnym zadaniem jest zszycie wykrytych twarzy, aby utworzyć ścieżkę twarzy. Ścieżka twarzy to ciągły przepływ obwiedni wokół twarzy, gdy porusza się ona w ramce strzału.

FaceRec bierze każdą ramkę graniczną twarzy i próbuje mapować ją do następnej logicznej ramki granicznej w następnej ramce. Nie zawsze jest to całkowicie oczywiste, ponieważ twarze mogą zostać tymczasowo zasłonięte, a obwiednie mogą się przecinać, gdy jedna osoba porusza się za drugą.

Ramki ograniczające śledzą twarze poprzez ujęcie

Pod maską ten problem rozwiązano za pomocą metody Dlib i Lucas-Kanade. Tworzy to ścieżki twarzy, które są zdefiniowane przez punkty czasowe, listę ramek i obwiedni ścian.

4. Utwórz wektory twarzy dla ścieżek

Algorytmy uczenia maszynowego często działają, przekształcając materiał wejściowy na wektory matematyczne. Następnie uczą się, które części tej „przestrzeni wektorowej” należą do określonych kategorii lub typów danych wejściowych. Jeśli chodzi o twarze, dowiedzieliby się, że wektory reprezentujące twarz księcia Harry'ego zwykle znajdują się w określonym obszarze, podczas gdy wektory Megan zwykle znajdują się w innej sekcji. Spodziewałbyś się również, że wektory twarzy księcia Williama będą bliżej w tej przestrzeni dla Harry'ego niż dla Megan, ponieważ są one powiązane i mają podobne cechy.

Aby utworzyć wektory dla wykrytych twarzy, FaceRec używa biblioteki identyfikacji twarzy SeetaFace. FaceRec przesyła przycięte zdjęcia wykrytych twarzy w obrębie obwiedni od środkowego punktu ścieżki twarzy. Odbiera wektor o wymiarach 2024, który reprezentuje cechy tej twarzy.

5. Rozpoznawaj twarze ludzi w wektorach śledzących twarz

Teraz mamy wektor twarzy dla każdego wykrytego śladu twarzy. Następnym krokiem jest przekształcenie tych wektorów w rzeczywiste nazwy rozpoznanych twarzy, a także oflagowanie twarzy, których nie rozpoznajemy (i dlatego nie możemy nazwać etykietami).

Pierwsze pytanie tutaj: tylko kogo rozpoznajemy? Z pewnością nie możemy zbudować modelu rozpoznającego wszystkich, którzy kiedykolwiek żyli - i nie chcielibyśmy tego. Więc kogo uważamy za wystarczająco ważny dla tego systemu rozpoznawania twarzy?

Realistycznie rzecz biorąc, musi to być napędzane przez dziennikarzy BBC News i osoby, o których najczęściej donosi. Musimy także pamiętać, że nieznani ludzie publikują wiadomości każdego dnia, a kiedy to robią, możemy nie mieć ich wcześniejszych zdjęć. Mając na uwadze te ograniczenia, zespół danych koncentrował się głównie na celebrytach, międzynarodowych liderach, brytyjskich politykach w parlamencie i Izbie Lordów podczas szkolenia FaceRec.

Aby rozpoznać te osoby, musieli zebrać dane szkoleniowe na temat każdej osoby - to znaczy, wiele zdjęć z etykietami tej osoby zawierających tylko tę osobę. Zespół danych zebrał tysiące zdjęć, a następnie zbudował własny system front-end, aby łatwo przeglądać i oznaczać poszczególne zdjęcia. Niesamowita prawda w uczeniu maszynowym polega na tym, że zbieranie wysokiej jakości oznaczonych danych jest często najdroższą, pracochłonną, a jednocześnie ważną częścią budowy dobrze funkcjonującego systemu sztucznej inteligencji.

Po zebraniu zdjęć zespół danych wprowadził je następnie do klasyfikatora uczącego się, zwanego maszyną wektorów wsparcia, w celu stworzenia wyszkolonych modeli. Po nakarmieniu wektorem twarzy z SeetaFace modele te przewidują imię osoby na oryginalnym obrazie twarzy lub mówią, czy w ogóle jej nie rozpoznali.

IRFS stworzył dwa modele:

  1. Model archiwum: Znani ludzie od XX wieku wybierani przez osoby z Archiwum BBC. Ten model zawierał około 1000 osób.
  2. Model wiadomości: W fazie rozwoju liczba ta wzrośnie i obejmie ponad 2000 członków parlamentu brytyjskiego i zgromadzeń regionalnych, Izby Lordów i światowych liderów. Obrazy szkoleniowe pochodzą z BBC News, Factual i Drama.

Te wyszkolone modele są następnie wykorzystywane do przewidywania, które osoby są na twarzy w filmach.

6. Ścieżki twarzy klastra

Teraz, gdy wszystkie ślady twarzy zostały oznaczone, ostatnim krokiem jest zebranie wszystkich śladów tej samej osoby.

Aby to zrobić, umieściliśmy wszystkie wyodrębnione wektory twarzy wideo w jednej przestrzeni wektorowej, którą dla zabawy nazwamy przestrzenią twarzy. Aby zwizualizować przestrzeń twarzy, możemy użyć narzędzia o nazwie Tensorboard, będącego częścią biblioteki Tensorflow do uczenia maszynowego.

Patrząc na tę przestrzeń twarzy, mamy nadzieję, że wektory tej samej osoby są wystarczająco blisko siebie i wystarczająco daleko od innych ludzi, abyśmy mogli je automatycznie pogrupować. Jest to znane w uczeniu maszynowym jako problem klastrowania.

Poniżej widzimy wektory śledzące twarz rzutowane w tę przestrzeń twarzy dla filmu o Harrym i Megan. Widzimy, że większość utworów Megan jest zebranych razem, co ułatwia ich grupowanie. W ten sposób wiemy, że utworzone wektory twarzy działają dobrze.

Wizualizacja twarzy za pomocą TensorBoard

Osoby zaznajomione z grupowaniem zobaczą trudność naszego problemu grupowania twarzy. Dla każdego wideo będzie różna liczba klastrów o różnych rozmiarach - z dużą ilością wektorów pojawiających się raz i nienależących do żadnego klastra.

Zamiast wpaść w ciemną dziurę, próbując idealnie rozwiązać ten problem, zespół danych postanowił uruchomić kilka heurystyk. FaceRec dzieli problem na dwie osobne kategorie: twarze osób, które rozpoznaje i twarze osób, których nie rozpoznaje. W przypadku rozpoznanych twarzy po prostu grupuje wszystkie ścieżki twarzy, które mają tę samą przewidywaną etykietę (nazwę). W przypadku nierozpoznanych twarzy używa techniki zwanej hierarchicznym grupowaniem nad wektorami twarzy, aby je pogrupować, ale nie nadaje im etykiet.

7. Wyjście informacji

Ostatnim krokiem dla FaceRec jest przekazanie wszystkich informacji zebranych na różnych etapach. Jest to plik JSON, który zawiera:

Lista utworów w filmie. Dla każdego utworu ma:

  • Przewidywana osoba dla tego utworu
  • Pewność prognozy
  • Śledź UUID
  • Wektor twarzy dla tego utworu
  • Lista ramek na tej ścieżce

Na liście ramek informacje o każdej ramce obejmują:

  • Wektor twarzy dla tej ramki, jeśli została wykryta
  • Współrzędne ramki granicznej dla twarzy
  • Czas w filmie występuje w ramce

Co możemy zrobić z tymi danymi? Możesz sprawdzić nasz następny post na blogu, aby zobaczyć nasze pomysły.

Zakończyć

To naprawdę o to chodzi. Mamy nadzieję, że pomogliśmy Ci zrozumieć wiele elementów systemu rozpoznawania twarzy wideo. Być może uświadomiliśmy wam także, że rozpoznawanie przyjaciół i bliskich sprawia, że ​​jesteście świadomi wszystkich ciężkich obciążeń i dwuznaczności, z którymi radzi sobie własny mózg setki razy dziennie.

Po zrozumieniu wewnętrznych zasad działania systemu FaceRec zadaniem News Labs było sprawdzenie, gdzie ta technologia może zwiększyć wartość biznesową w BBC. Jak możemy pochwalić się umiejętnościami FaceRec za pomocą intuicyjnej wersji demonstracyjnej? Do jakich systemów produkcyjnych możemy dopasować FaceRec? Czyje problemy z przepływem pracy można rozwiązać? Co ważne, co ludzie myślą o używaniu rozpoznawania twarzy? Mówimy o wyzwaniach związanych z wdrożeniem nowej technologii w dużej organizacji oraz o problemach, jakie napotkaliśmy, opracowując prototyp rozpoznawania twarzy w „Rozpoznawaniu twarzy - jaki jest użytek w Newsroomach?”.