Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Technologie i modele naszego przyszłego systemu wizyjnego były tworzone i udoskonalane stopniowo i w różnych projektach naszej firmy - w Mail, Cloud, Search. Dojrzewały jak dobry ser czy koniak. Któregoś dnia zdaliśmy sobie sprawę, że nasze sieci neuronowe wykazują doskonałe wyniki w rozpoznawaniu i postanowiliśmy połączyć je w jeden produkt b2b – Vision – z którego teraz sami korzystamy i oferujemy Państwu do wykorzystania.

Dziś nasza technologia widzenia komputerowego na platformie Mail.Ru Cloud Solutions z powodzeniem działa i rozwiązuje bardzo złożone problemy praktyczne. Opiera się na szeregu sieci neuronowych, które są szkolone na naszych zbiorach danych i specjalizują się w rozwiązywaniu stosowanych problemów. Wszystkie usługi działają na naszych serwerach. Możesz zintegrować publiczne Vision API ze swoimi aplikacjami, dzięki czemu dostępne będą wszystkie możliwości usługi. API jest szybkie - dzięki serwerowym procesorom graficznym średni czas odpowiedzi w naszej sieci wynosi 100 ms.

Idź do kota, tam jest szczegółowa historia i wiele przykładów pracy Visiona.

Jako przykład usługi, w której sami korzystamy ze wspomnianych technologii rozpoznawania twarzy, możemy przytoczyć Eventy . Jednym z jego elementów są stojaki fotograficzne Vision, które montujemy na różnego rodzaju konferencjach. Jeśli podejdziesz do takiego fotostandu, zrobisz zdjęcie wbudowanym aparatem i podasz swój adres e-mail, system od razu wyszuka wśród szeregu zdjęć te, na których uwiecznili Cię fotografowie obsługi konferencji, a na życzenie, prześle znalezione zdjęcia e-mailem. I nie mówimy tu o inscenizowanych zdjęciach portretowych – Vision rozpoznaje Cię nawet na samym tle, w tłumie odwiedzających. Oczywiście to nie same fotostany są rozpoznawane, to po prostu tablety w pięknych stojakach, które po prostu swoimi wbudowanymi aparatami robią zdjęcia gościom i przesyłają informacje do serwerów, gdzie dzieje się cała magia rozpoznawania. I nie raz widzieliśmy, jak zaskakująca jest skuteczność tej technologii nawet wśród specjalistów od rozpoznawania obrazów. Poniżej omówimy kilka przykładów.

1. Nasz model rozpoznawania twarzy

1.1. Sieć neuronowa i szybkość przetwarzania

Do rozpoznania wykorzystujemy modyfikację modelu sieci neuronowej ResNet 101. Average Pooling na końcu zostaje zastąpiony przez w pełni połączoną warstwę, podobnie jak dzieje się to w ArcFace. Jednak rozmiar reprezentacji wektorowych wynosi 128, a nie 512. Nasz zestaw treningowy zawiera około 10 milionów zdjęć 273 593 osób.

Model działa bardzo szybko dzięki starannie dobranej architekturze konfiguracji serwerów i przetwarzaniu GPU. Otrzymanie odpowiedzi z API w naszych sieciach wewnętrznych zajmuje od 100 ms - obejmuje to wykrywanie twarzy (wykrywanie twarzy na zdjęciu), rozpoznawanie i zwracanie PersonID w odpowiedzi API. Przy dużej ilości przychodzących danych – zdjęć i filmów – przesłanie danych do serwisu i otrzymanie odpowiedzi zajmie znacznie więcej czasu.

1.2. Ocena efektywności modelu

Jednak określenie wydajności sieci neuronowych jest zadaniem bardzo niejednoznacznym. Jakość ich pracy zależy od tego, na jakich zbiorach danych uczono modele i czy zostały one zoptymalizowane do pracy z konkretnymi danymi.

Zaczęliśmy oceniać dokładność naszego modelu za pomocą popularnego testu weryfikacyjnego LFW, ale jest on zbyt mały i prosty. Po osiągnięciu 99,8% dokładności nie jest już przydatny. Jest dobra konkurencja do oceny modeli rozpoznawania - Megaface, na którym stopniowo osiągnęliśmy 82% miejsca 1. Test Megaface składa się z miliona zdjęć - rozpraszaczy - a model powinien być w stanie dobrze odróżnić kilka tysięcy zdjęć gwiazd od Facescrub zbiór danych z rozpraszaczy. Jednak po wyczyszczeniu testu Megaface z błędów odkryliśmy, że w wyczyszczonej wersji osiągamy dokładność na poziomie 98% rangi 1 (zdjęcia gwiazd są generalnie dość specyficzne). Dlatego stworzyli osobny test identyfikacyjny, podobny do Megaface, ale ze zdjęciami „zwykłych” ludzi. Następnie poprawiliśmy dokładność rozpoznawania w naszych zbiorach danych i posunęliśmy się daleko do przodu. Dodatkowo stosujemy test jakości klastrowania, który składa się z kilku tysięcy zdjęć; symuluje tagowanie twarzy w chmurze użytkownika. W tym przypadku skupiska to grupy podobnych osób, po jednej grupie na każdą rozpoznawalną osobę. Sprawdziliśmy jakość pracy na grupach rzeczywistych (prawda).

Oczywiście błędy rozpoznawania występują w przypadku każdego modelu. Jednak takie sytuacje często rozwiązuje się poprzez dostrojenie progów do konkretnych warunków (dla wszystkich konferencji używamy tych samych progów, ale np. dla systemów kontroli dostępu musimy znacznie zwiększyć progi, aby było mniej fałszywych alarmów). Zdecydowana większość gości konferencji została prawidłowo rozpoznana przez nasze fotobudki Vision. Czasami ktoś spojrzał na przycięty podgląd i powiedział: „Twój system popełnił błąd, to nie ja”. Potem otworzyliśmy zdjęcie w całości i okazało się, że na zdjęciu naprawdę był ten gość, tylko że go nie fotografowaliśmy, a ktoś inny, ta osoba po prostu znalazła się w tle w strefie rozmycia. Co więcej, sieć neuronowa często poprawnie rozpoznaje nawet wtedy, gdy część twarzy nie jest widoczna lub osoba stoi z profilu lub nawet w połowie obrócona. System jest w stanie rozpoznać osobę, nawet jeśli twarz znajduje się w obszarze zniekształceń optycznych, np. podczas fotografowania obiektywem szerokokątnym.

1.3. Przykłady testowania w sytuacjach trudnych

Poniżej znajdują się przykłady działania naszej sieci neuronowej. Do wejścia trafiają zdjęcia, które musi oznaczyć za pomocą PersonID – unikalnego identyfikatora osoby. Jeśli dwa lub więcej zdjęć ma ten sam identyfikator, to według modeli zdjęcia te przedstawiają tę samą osobę.

Od razu zauważmy, że podczas testów mamy dostęp do różnych parametrów i progów modelu, które możemy skonfigurować tak, aby osiągnąć konkretny wynik. Publiczny interfejs API jest zoptymalizowany pod kątem maksymalnej dokładności w typowych przypadkach.

Zacznijmy od najprostszej rzeczy, czyli rozpoznawania twarzy skierowanej przodem do kierunku jazdy.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Cóż, to było zbyt łatwe. Skomplikujmy zadanie, dodajmy brodę i garść lat.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Niektórzy powiedzą, że to też nie było zbyt trudne, bo w obu przypadkach widoczna jest cała twarz, a algorytm ma do dyspozycji mnóstwo informacji o twarzy. OK, zamieńmy Toma Hardy'ego w profil. Ten problem jest znacznie bardziej złożony i włożyliśmy wiele wysiłku, aby go pomyślnie rozwiązać przy zachowaniu niskiego poziomu błędów: wybraliśmy zbiór uczący, przemyśleliśmy architekturę sieci neuronowej, udoskonaliliśmy funkcje strat i udoskonaliliśmy przetwarzanie wstępne fotografii.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Załóżmy mu nakrycie głowy:

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Swoją drogą to przykład szczególnie trudnej sytuacji, bo twarz jest mocno zasłonięta, a na dolnym zdjęciu widać też głęboki cień zasłaniający oczy. W prawdziwym życiu ludzie bardzo często zmieniają swój wygląd za pomocą ciemnych okularów. Zróbmy to samo z Tomkiem.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

No dobrze, spróbujmy wrzucić zdjęcia z różnych epok i tym razem poeksperymentujemy z innym aktorem. Weźmy znacznie bardziej złożony przykład, w którym zmiany związane z wiekiem są szczególnie widoczne. Sytuacja nie jest naciągana, zdarza się dość często, gdy trzeba porównać zdjęcie w paszporcie z twarzą okaziciela. W końcu pierwsze zdjęcie jest dodawane do paszportu, gdy właściciel ma 20 lat, a do 45 roku życia osoba może się znacznie zmienić:

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Czy uważasz, że główny specjalista od misji niemożliwych nie zmienił się zbytnio wraz z wiekiem? Myślę, że nawet kilka osób połączyłoby zdjęcie górne i dolne, chłopak bardzo się zmienił na przestrzeni lat.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Sieci neuronowe znacznie częściej spotykają się ze zmianami w wyglądzie. Na przykład czasami kobiety mogą znacznie zmienić swój wizerunek za pomocą kosmetyków:

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Teraz jeszcze bardziej skomplikujmy zadanie: załóżmy, że różne części twarzy są zakryte na różnych zdjęciach. W takich przypadkach algorytm nie może porównywać całych próbek. Jednak Vision dobrze radzi sobie z takimi sytuacjami.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Nawiasem mówiąc, na zdjęciu może znajdować się wiele twarzy, na przykład na ogólnym zdjęciu sali zmieści się ponad 100 osób. Jest to trudna sytuacja dla sieci neuronowych, ponieważ wiele twarzy może być oświetlonych inaczej, a niektóre nieostre. Jeśli jednak zdjęcie zostanie wykonane z odpowiednią rozdzielczością i jakością (co najmniej 75 pikseli na kwadrat obejmujący twarz), Vision będzie w stanie je wykryć i rozpoznać.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Specyfiką zdjęć reportażowych i obrazów z kamer monitoringu jest to, że ludzie są często rozmazani, ponieważ byli nieostrsi lub poruszali się w danym momencie:

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Ponadto intensywność oświetlenia może się znacznie różnić w zależności od obrazu. To również często staje się przeszkodą; wiele algorytmów ma duże trudności z prawidłowym przetwarzaniem obrazów, które są zbyt ciemne i zbyt jasne, nie mówiąc już o ich dokładnym dopasowaniu. Przypomnę, że aby osiągnąć taki efekt trzeba odpowiednio skonfigurować progi, funkcja ta nie jest jeszcze publicznie dostępna. Dla wszystkich klientów używamy tej samej sieci neuronowej, która ma progi odpowiednie dla większości praktycznych zadań.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Niedawno wprowadziliśmy nową wersję modelu, który z dużą dokładnością rozpoznaje twarze azjatyckie. Kiedyś był to duży problem, który nazywano nawet rasizmem „uczenia maszynowego” (lub „sieci neuronowej”). Europejskie i amerykańskie sieci neuronowe dobrze rozpoznawały twarze rasy kaukaskiej, natomiast w przypadku twarzy mongoloidalnych i murzyńskich sytuacja była znacznie gorsza. Prawdopodobnie w Chinach sytuacja była dokładnie odwrotna. Chodzi przede wszystkim o zestawy danych szkoleniowych, które odzwierciedlają dominujące typy ludzi w danym kraju. Sytuacja się jednak zmienia, dziś problem ten nie jest już tak dotkliwy. Wizja nie ma problemu z ludźmi różnych ras.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Rozpoznawanie twarzy to tylko jedno z wielu zastosowań naszej technologii; wzrok można wytrenować tak, aby rozpoznawał wszystko. Np. tablice rejestracyjne, także w warunkach trudnych dla algorytmów: pod ostrymi kątami, brudne i trudne do odczytania tablice rejestracyjne.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

2. Praktyczne przypadki użycia

2.1. Fizyczna kontrola dostępu: gdy dwie osoby korzystają z tej samej przepustki

Za pomocą Vision możesz wdrożyć systemy rejestracji przyjazdów i wyjazdów pracowników. Tradycyjny system oparty na biletach elektronicznych ma oczywiste wady, np. na jednym identyfikatorze można wyprzedzić dwie osoby. Jeśli system kontroli dostępu (ACS) zostanie uzupełniony o Vision, będzie rzetelnie rejestrował, kto i kiedy przyszedł/wyszedł.

2.2. Śledzenie czasu

Ten przypadek użycia Vision jest ściśle powiązany z poprzednim. Jeśli uzupełnisz system dostępu o naszą usługę rozpoznawania twarzy, będzie on w stanie nie tylko wykryć naruszenia kontroli dostępu, ale także zarejestrować rzeczywistą obecność pracowników w budynku lub obiekcie. Inaczej mówiąc, Vision pomoże Ci uczciwie wziąć pod uwagę, kto przychodził do pracy i o której godzinie wychodził, a kto w ogóle nie pracował, nawet jeśli koledzy kryli go przed przełożonymi.

2.3. Analityka wideo: śledzenie osób i bezpieczeństwo

Śledząc ludzi za pomocą Vision, możesz dokładnie ocenić rzeczywisty ruch w strefach handlowych, na stacjach kolejowych, w pasażach, ulicach i wielu innych miejscach publicznych. Nasz monitoring może być także bardzo pomocny w kontroli dostępu np. do magazynu czy innego ważnego lokalu biurowego. I oczywiście śledzenie ludzi i twarzy pomaga rozwiązywać problemy związane z bezpieczeństwem. Przyłapałeś kogoś na kradzieży w Twoim sklepie? Dodaj jego PersonID, który został zwrócony przez Vision, do czarnej listy Twojego oprogramowania do analizy wideo, a następnym razem system natychmiast powiadomi ochronę, jeśli ten typ pojawi się ponownie.

2.4. W handlu

Rozpoznawaniem kolejek zainteresowane są firmy zajmujące się sprzedażą detaliczną i różnymi usługami. Za pomocą Visiona można rozpoznać, że nie jest to przypadkowy tłum ludzi, a kolejkę i określić jej długość. Następnie system informuje osoby odpowiedzialne o kolejce, aby mogły zorientować się w sytuacji: albo napływ gości i trzeba wezwać dodatkowych pracowników, albo ktoś zaniedbuje swoje obowiązki służbowe.

Kolejnym ciekawym zadaniem jest oddzielenie pracowników firmy w hali od gości. Zwykle system jest przeszkolony do oddzielania obiektów noszących określone ubrania (dress code) lub posiadające jakiś charakterystyczny element (markowa chusta, naszywka na piersi itp.). Pomaga to dokładniej ocenić frekwencję (aby pracownicy nie „zawyżali” statystyk osób na sali samą swoją obecnością).

Za pomocą rozpoznawania twarzy możesz także ocenić swoją publiczność: jaka jest lojalność odwiedzających, czyli ile osób powraca do Twojego lokalu i z jaką częstotliwością. Oblicz, ilu unikalnych użytkowników odwiedza Cię miesięcznie. Aby zoptymalizować koszty przyciągania i utrzymania, możesz także poznać zmianę ruchu w zależności od dnia tygodnia, a nawet pory dnia.

Franczyzodawcy i firmy sieciowe mogą zamówić ocenę na podstawie zdjęć jakości brandingu różnych punktów sprzedaży detalicznej: obecności logo, znaków, plakatów, banerów i tak dalej.

2.5. Transportem

Innym przykładem zapewnienia bezpieczeństwa za pomocą analityki wideo jest identyfikacja porzuconych przedmiotów na korytarzach lotnisk czy dworców kolejowych. Wzrok można wytrenować w rozpoznawaniu obiektów setek klas: mebli, toreb, walizek, parasoli, różnego rodzaju odzieży, butelek i tak dalej. Jeśli Twój system analizy wideo wykryje obiekt bez właściciela i rozpoznaje go za pomocą funkcji Vision, wysyła sygnał do służb bezpieczeństwa. Podobne zadanie wiąże się z automatycznym wykrywaniem nietypowych sytuacji w miejscach publicznych: ktoś czuje się chory, ktoś pali w niewłaściwym miejscu, ktoś przewraca się na torach itp. – wszystkie te wzorce mogą rozpoznać systemy analityki wideo poprzez API Vision.

2.6. Przepływ dokumentów

Kolejnym ciekawym przyszłym zastosowaniem Vision, które obecnie rozwijamy, jest rozpoznawanie dokumentów i ich automatyczne analizowanie w bazach danych. Zamiast ręcznie wpisywać (lub, co gorsza, wpisywać) niekończące się serie, liczby, daty wystawienia, numery rachunków, dane bankowe, daty i miejsca urodzenia oraz wiele innych sformalizowanych danych, możesz skanować dokumenty i automatycznie przesyłać je bezpiecznym kanałem za pośrednictwem API do chmury, gdzie system na bieżąco rozpozna te dokumenty, przeanalizuje je i zwróci odpowiedź z danymi w formacie wymaganym do automatycznego wpisania do bazy. Dziś Vision wie już, jak klasyfikować dokumenty (w tym PDF) - rozróżnia paszporty, SNILS, NIP, akty urodzenia, akty małżeństwa i inne.

Oczywiście sieć neuronowa nie jest w stanie od razu obsłużyć wszystkich tych sytuacji. Za każdym razem budowany jest nowy model pod konkretnego klienta, uwzględnianych jest wiele czynników, niuansów i wymagań, dobierane są zbiory danych, przeprowadzane są iteracje szkolenia, testowania i konfiguracji.

3. Schemat działania API

„Bramą wejściową” Vision dla użytkowników jest API REST. Jako sygnał wejściowy może odbierać zdjęcia, pliki wideo i transmisje z kamer sieciowych (strumienie RTSP).

Aby korzystać z Vision, potrzebujesz zarejestrować w usłudze Mail.ru Cloud Solutions i otrzymaj tokeny dostępu (client_id + client_secret). Uwierzytelnianie użytkowników odbywa się przy użyciu protokołu OAuth. Dane źródłowe w treści żądań POST są wysyłane do API. W odpowiedzi klient otrzymuje od API wynik rozpoznania w formacie JSON, a odpowiedź ma strukturę: zawiera informacje o znalezionych obiektach i ich współrzędnych.

Z brodą, w ciemnych okularach i z profilu: trudne sytuacje dla widzenia komputerowego

Przykładowa odpowiedź

{
   "status":200,
   "body":{
      "objects":[
         {
            "status":0,
            "name":"file_0"
         },
         {
            "status":0,
            "name":"file_2",
            "persons":[
               {
                  "tag":"person9"
                  "coord":[149,60,234,181],
                  "confidence":0.9999,
                  "awesomeness":0.45
               },
               {
                  "tag":"person10"
                  "coord":[159,70,224,171],
                  "confidence":0.9998,
                  "awesomeness":0.32
               }
            ]
         }

         {
            "status":0,
            "name":"file_3",
            "persons":[
               {
               "tag":"person11",
               "coord":[157,60,232,111],
               "aliases":["person12", "person13"]
               "confidence":0.9998,
               "awesomeness":0.32
               }
            ]
         },
         {
            "status":0,
            "name":"file_4",
            "persons":[
               {
               "tag":"undefined"
               "coord":[147,50,222,121],
               "confidence":0.9997,
               "awesomeness":0.26
               }
            ]
         }
      ],
      "aliases_changed":false
   },
   "htmlencoded":false,
   "last_modified":0
}

Odpowiedź zawiera ciekawy parametr niesamowitość - jest to warunkowy „schłodzenie” twarzy na zdjęciu, za jego pomocą wybieramy najlepsze ujęcie twarzy z sekwencji. Wytrenowaliśmy sieć neuronową, aby przewidywała prawdopodobieństwo polubienia zdjęcia w sieciach społecznościowych. Im lepsza jakość zdjęcia i im bardziej uśmiechnięta twarz, tym większa wspaniałość.

API Vision wykorzystuje koncepcję zwaną przestrzenią. Jest to narzędzie do tworzenia różnych zestawów twarzy. Przykładami spacji są listy czarno-białe, listy gości, pracowników, klientów itp. Dla każdego tokena w Vision możesz utworzyć do 10 spacji, każda spacja może mieć do 50 tys. PersonID, czyli do 500 tys. za token. Co więcej, liczba tokenów na konto nie jest ograniczona.

Obecnie API obsługuje następujące metody wykrywania i rozpoznawania:

  • Rozpoznaj/Ustaw - wykrywanie i rozpoznawanie twarzy. Automatycznie przypisuje PersonID każdej unikalnej osobie, zwraca PersonID i współrzędne znalezionych osób.
  • Usuń - usunięcie konkretnego PersonID z bazy osób.
  • Obetnij — usuwa całą przestrzeń z PersonID, przydatne, jeśli była używana jako przestrzeń testowa i musisz zresetować bazę danych do celów produkcyjnych.
  • Wykryj - wykrywanie obiektów, scen, tablic rejestracyjnych, punktów orientacyjnych, kolejek itp. Zwraca klasę znalezionych obiektów i ich współrzędne
  • Wykryj dokumenty - wykrywa określone typy dokumentów Federacji Rosyjskiej (rozróżnia paszport, SNILS, numer identyfikacji podatkowej itp.).

Wkrótce zakończymy także prace nad metodami OCR, określania płci, wieku i emocji, a także rozwiązywania problemów merchandisingowych, czyli automatycznego kontrolowania ekspozycji towarów w sklepach. Pełną dokumentację API znajdziesz tutaj: https://mcs.mail.ru/help/vision-api

4. Wniosek

Teraz za pośrednictwem publicznego API możesz uzyskać dostęp do rozpoznawania twarzy na zdjęciach i filmach; obsługiwana jest identyfikacja różnych obiektów, tablic rejestracyjnych, punktów orientacyjnych, dokumentów i całych scen. Scenariusze zastosowania - morze. Przyjdź, przetestuj naszą usługę, postaw przed nią najtrudniejsze zadania. Pierwsze 5000 transakcji jest bezpłatnych. Być może będzie to „brakujący składnik” Twoich projektów.

Dostęp do interfejsu API można uzyskać natychmiast po rejestracji i połączeniu. Wizja. Wszyscy użytkownicy Habra otrzymują kod promocyjny na dodatkowe transakcje. Proszę, napisz mi adres e-mail, którego użyłeś do rejestracji konta!

Źródło: www.habr.com

Dodaj komentarz