Blog / Inżynieria

Detektor twarzy odnowił kiedyś spodnie malucha

· zaktualizowano 24 sierpnia o pomiary dolnej granicy wykrywania · dane: implementacja, testy jednostkowe, stanowisko laboratoryjne

Podczas wczesnych testów detektor twarzy zgłosił pewne siebie wykrycie na rodzinnej fotce, a potok posłusznie je „odnowił”, tyle że wykryciem były sztruksowe spodnie malucha. Fałdy tkaniny wyglądały dla detektora jak twarz, a model twarzy przemalował je potem na twarz. Ta awaria nauczyła nas, że na starych fotografiach sama pewność detektora nie jest użytecznym sygnałem, i zrodziła geometryczną bramkę, którą musi teraz przejść każda kandydująca twarz. Ta rewizja dodaje drugą, zmierzoną połowę historii: jak małą twarz detektor w ogóle potrafi znaleźć. Dolna granica leży między 14 a 20 pikselami w polu letterbox, a słynna fotografia z konferencji Solvaya z 1927 roku, na której 29 twarzy ma 21–27 px, przechodzi ją z każdym uczestnikiem znalezionym co do jednego.

29 / 29twarzy z Solvay 1927 znalezionychprzy wysokości 21–27 px w polu letterbox
14–20 pxdolna granica wykrywaniaponiżej gubi, powyżej znajduje
27 / 29przy naiwnym kafelkowaniu 2×2twarze na granicy znikają; nakładanie ma znaczenie
3reguły geometrii w bramcepewność, pas oczu, usta poniżej oczu

Każda liczba w tej notatce została zmierzona na kodzie produkcyjnego potoku: te same modele, ta sama matematyka. Surowe rekordy dla każdego obrazu: e5_detect.json.

1 · Czemu stare zdjęcia psują detektory twarzy

Detektory trenuje się głównie na współczesnych, dobrze naświetlonych obrazach. Stare skany podsuwają faktury, których zbiór treningowy rzadko zawiera: splot tkaniny, koronkę, listowie, zacieki i ziarno, a każda z nich potrafi wywołać fałszywe wykrycie o wysokiej pewności. Podsuwają też problem odwrotny: prawdziwe twarze, które są małe, wyblakłe i o niskim kontraście. Sam próg pewności nie rozdzieli tych dwóch grup, bo fałszywe wykrycia często dostają wyższy wynik niż prawdziwe małe twarze. Nasz detektor to SCRFD-2.5G[1], zdekodowany 1:1 z implementacji referencyjnej FaceFusion[2]: zdjęcie jest wpisywane w pole letterbox 640×640, a każdy kandydat wraca z ramką, pięcioma punktami charakterystycznymi i wynikiem pewności.

2 · Bramka

Zamiast ufać wynikowi, sprawdzamy, czy punkty charakterystyczne wykrycia są ułożone jak twarz: tania arytmetyka na punktach oczu i ust:

przechodzi ⇔ score ≥ 0.55 ∧ 0.25 < deyes/w < 0.75 ∧ ymouth > ȳeyes + 0.2·deyes(1)
ramka wykrycia, szerokość wrozstaw oczu dusta> 0,2 × d poniżej oczubramka: 0,25 < d / w < 0,75 · pewność ≥ 0,55
Rys. 1. Bramka wiarygodności. Punkty charakterystyczne muszą być ułożone jak twarz (oczy w odległości typowej dla twarzy względem ramki, usta wyraźnie poniżej linii oczu), zanim ruszy jakiekolwiek odnawianie.
RegułaPrógCo odrzuca
Pewność detektora≥ 0,55Marginalne wykrycia niewarte dalszego sprawdzania.
Rozstaw oczu wobec szerokości ramki0,25 – 0,75Skupiska punktów zbyt ciasne lub zbyt szerokie, by być dwojgiem oczu w ramce wielkości twarzy: typowa geometria fałszywych wykryć na fałdach tkaniny.
Usta poniżej oczuo ≥ 0,2 × rozstawu oczuOdwrócone do góry nogami i pomieszane układy punktów.

Progi są celowo luźne: opisują każdą wiarygodną ludzką twarz, także przechyloną i w trzech czwartych, a wykluczają układy, jakich żadna twarz mieć nie może. Odkąd bramka trafiła do produkcji, klasa awarii „spodnie” nie powtórzyła się na naszych zdjęciach testowych.

3 · Nowość: dolna granica wykrywania, zmierzona

00.250.50.7515204080120200wysokość twarzy w polu letterbox 640 px (px)pewność wykryciabramka ≥ 0,55
Rys. 2. Pewność wykrycia wobec wysokości twarzy w polu letterbox 640×640. Komfortowo od ~200 px w dół do ~28, spadek poniżej, martwo między 20 a 14: każda twarz o wysokości 14 px lub mniejszej została pominięta wprost. Linia przerywana to próg pewności bramki 0,55.
Grupowa fotografia z konferencji Solvaya z 1927 roku z ramkami wykrycia narysowanymi wokół wszystkich dwudziestu dziewięciu twarzy
Rys. 3. Wszystkich 29 uczestników konferencji Solvaya z 1927 roku wykrytych w skali całego kadru (ramki narysowane przez skrypt laboratoryjny, po NMS, po bramce geometrycznej). Twarze w polu letterbox mają 20,9–27,1 px wysokości, tuż nad urwiskiem z Rysunku 2.

Wynik Solvay ląduje dokładnie tam, gdzie przewiduje drabinka, po dobrej stronie: wszystkich 29 z 29 uczestników wykrytych w skali całego kadru, pewność 0,734–0,864, każdy przechodzi bramkę geometryczną. I kontrola warta publikacji, bo jest sprzeczna z intuicją: naiwne pokafelkowanie tego samego zdjęcia 2×2 (więcej pikseli na twarz) znajduje tylko 27 z 29. Dwie twarze leżą na granicach kafelków i żaden kafelek nie widzi ich w całości; siatka 3×3 akurat tnie gdzie indziej i odzyskuje wszystkie 29. Ta asymetria to powód, dla którego przebieg małych twarzy w silniku przeglądarkowym wykrywa na pełnym kadrze i na nakładających się ćwiartkach, scalając kandydatów po części wspólnej do sumy: kafelkowa detekcja potrzebuje nakładania, nie tylko rozdzielczości.

Praktyczny wniosek dla zdjęć grupowych: twarz mniejsza niż mniej więcej 3% dłuższego boku zdjęcia jest dla detektora niewidzialna. Przytnij ciaśniej przed renowacją (te same piksele wracają przez pole letterbox większe, po bezpiecznej stronie urwiska) i zajrzyj do notatki o renderowaniu twarzy, by zobaczyć, co dzieje się z małymi twarzami po wykryciu.

4 · Ograniczenia

Bramka geometryczna może odrzucać tylko niemożliwe układy. Fałszywe wykrycie, które akurat ma kształt twarzy (lalka, posąg, portret na ścianie), przechodzi, i chyba powinno, bo jego odnowienie jest nieszkodliwe. Zadanie bramki jest wąskie: nigdy więcej nie przemalować czyjegoś ubrania na twarz. Pomiary granicy to jeden portret i jedno zdjęcie grupowe: dość, by umiejscowić urwisko między 14 a 20 px, nie dość, by odwzorować jego dokładny kształt dla różnych póz i oświetlenia; a pewność między 20 a 28 px jest zauważalnie bardziej zaszumiona niż powyżej, więc twarze w tym paśmie należy traktować jako zagrożone, a nie bezpieczne.

Źródła

  1. Guo, J., Deng, J., Lattas, A., & Zafeiriou, S. (2021). Sample and Computation Redistribution for Efficient Face Detection. arXiv:2105.04714. arxiv.org
  2. FaceFusion (open-source face processing platform): the reference implementation our SCRFD decode and model preprocessing are ported from, 1:1. github.com
  3. Couprie, B. (1927). Photograph of the Fifth Solvay International Conference: 29 attendees, the densest concentration of physics Nobel laureates ever photographed. Public domain, via Wikimedia Commons. commons.wikimedia.org
  4. Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
  5. ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai