Detektor twarzy odnowił kiedyś spodnie malucha
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.
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:
| Reguła | Próg | Co odrzuca |
|---|---|---|
| Pewność detektora | ≥ 0,55 | Marginalne wykrycia niewarte dalszego sprawdzania. |
| Rozstaw oczu wobec szerokości ramki | 0,25 – 0,75 | Skupiska 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 oczu | o ≥ 0,2 × rozstawu oczu | Odwró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

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
- Guo, J., Deng, J., Lattas, A., & Zafeiriou, S. (2021). Sample and Computation Redistribution for Efficient Face Detection. arXiv:2105.04714. arxiv.org
- FaceFusion (open-source face processing platform): the reference implementation our SCRFD decode and model preprocessing are ported from, 1:1. github.com
- 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
- Lange, D. (1936). “Migrant Mother” (Destitute pea pickers in California), Farm Security Administration. Public domain, via Wikimedia Commons. commons.wikimedia.org
- ONNX Runtime: the inference engine both our server (CPU) and in-browser (WebGPU/WASM) engines run on. onnxruntime.ai