Blog / Ingénierie

Le jour où un détecteur de visages a restauré le pantalon d'un bambin

· mis à jour le 24 août avec les mesures du plancher de détection · données : implémentation, tests unitaires, banc de labo

Pendant les premiers tests, le détecteur de visages a signalé une détection confiante sur un instantané de famille et le pipeline l'a consciencieusement « restaurée », sauf que la détection était le pantalon en velours côtelé d'un bambin. Les plis du tissu ressemblaient à un visage pour le détecteur, et le modèle de visages les a ensuite repeints comme tel. Cet échec nous a appris que sur les vieilles photographies, la confiance du détecteur seule n'est pas un signal utilisable, et il a produit le filtre géométrique que chaque visage candidat doit désormais passer. Cette révision ajoute l'autre moitié de l'histoire, mesurée : jusqu'à quelle taille le détecteur peut-il seulement trouver un visage. Le plancher se situe entre 14 et 20 pixels letterbox, et la célèbre photographie du congrès Solvay de 1927, dont les 29 visages mesurent 21 à 27 px, le franchit avec chaque participant trouvé.

29 / 29visages de Solvay 1927 trouvésà 21–27 px de hauteur letterbox
14–20 pxle plancher de détectionrate en dessous, trouve au-dessus
27 / 29avec un tuilage 2×2 naïfles visages en bordure disparaissent ; le chevauchement compte
3règles géométriques dans le filtreconfiance, bande des yeux, bouche sous les yeux

Chaque chiffre de cette note a été mesuré sur le code du pipeline de production : mêmes modèles, mêmes calculs. Données brutes par image : e5_detect.json.

1 · Pourquoi les vieilles photos cassent les détecteurs de visages

Les détecteurs sont entraînés surtout sur des images modernes, bien exposées. Les vieux scans présentent des textures que le jeu d'entraînement contient rarement : trame du tissu, dentelle, feuillage, dégâts d'eau et grain, toutes capables de produire des fausses détections à haute confiance. Ils présentent aussi le problème inverse : de vrais visages petits, délavés et peu contrastés. Un seuil de confiance seul ne peut pas séparer les deux, parce que les faux positifs obtiennent fréquemment un score plus élevé que les vrais petits visages. Notre détecteur est SCRFD-2.5G[1], décodé 1:1 depuis l'implémentation de référence de FaceFusion[2] : la photo est placée en letterbox dans une entrée de 640×640, et chaque candidat revient avec une boîte, cinq points de repère et un score de confiance.

2 · Le filtre

Au lieu de faire confiance au score, nous testons si les points de repère de la détection sont disposés comme un visage : une arithmétique bon marché sur les points des yeux et de la bouche :

pass ⇔ score ≥ 0.55 ∧ 0.25 < deyes/w < 0.75 ∧ ymouth > ȳeyes + 0.2·deyes(1)
boîte de détection, largeur wdistance des yeux dbouche> 0,2 × d sous les yeuxfiltre : 0,25 < d / w < 0,75 · confiance ≥ 0,55
Figure 1. Le filtre de plausibilité. Les points de repère doivent être disposés comme un visage (des yeux à une distance plausible l'un de l'autre par rapport à la boîte, une bouche nettement sous la ligne des yeux) avant qu'une restauration ne s'exécute.
RègleSeuilCe qu'elle rejette
Confiance du détecteur≥ 0,55Les détections marginales qui ne valent pas d'être testées plus loin.
Écartement des yeux vs largeur de la boîte0,25 – 0,75Les groupes de points trop serrés ou trop larges pour être deux yeux dans une boîte de la taille d'un visage : la géométrie typique des faux positifs de plis de tissu.
Bouche sous les yeuxd'au moins 0,2 × la distance des yeuxLes dispositions de points à l'envers ou brouillées.

Les seuils sont volontairement larges : ils décrivent n'importe quel visage humain plausible, y compris incliné ou de trois quarts, tout en excluant les dispositions qu'aucun visage ne peut avoir. Depuis la mise en production du filtre, la classe d'échec « pantalon » ne s'est pas reproduite sur nos photos de test.

3 · Nouveau : le plancher de détection, mesuré

00.250.50.7515204080120200hauteur du visage dans le letterbox de 640 px (px)confiance de détectionfiltre ≥ 0,55
Figure 2. Confiance de détection en fonction de la hauteur du visage dans le letterbox 640×640. Confortable d'environ 200 px jusqu'à environ 28, dégradée en dessous, morte entre 20 et 14 : chaque visage à 14 px ou moins a été raté purement et simplement. La ligne en pointillés est le plancher de confiance de 0,55 du filtre.
La photographie de groupe du congrès Solvay de 1927 avec des boîtes de détection tracées autour des vingt-neuf visages
Figure 3. Les 29 participants du congrès Solvay de 1927 détectés à l'échelle de l'image entière (boîtes tracées par le script de labo, après NMS, après le filtre géométrique). Les visages en letterbox mesurent 20,9 à 27,1 px de haut, juste au-dessus de la falaise de la figure 2.

Le résultat Solvay tombe exactement là où l'échelle le prédit, du bon côté : les 29 participants sur 29 détectés à l'échelle de l'image entière, confiance 0,734 à 0,864, chacun survivant au filtre géométrique. Et un contrôle qui mérite d'être publié parce qu'il est contre-intuitif : tuiler naïvement la même photo en 2×2 (plus de pixels par visage) n'en trouve que 27 sur 29. Deux visages chevauchent les frontières des tuiles et ne sont vus entiers par aucune ; une grille 3×3 se trouve couper ailleurs et retrouve les 29. Cette asymétrie est la raison pour laquelle la passe petits visages du moteur navigateur détecte sur l'image entière et sur des quadrants qui se chevauchent, en fusionnant les candidats par intersection sur union : la détection par tuiles a besoin de chevauchement, pas seulement de résolution.

La lecture pratique pour les photos de groupe : un visage plus petit qu'environ 3 % du grand côté de la photo est invisible pour le détecteur. Recadre plus serré avant de restaurer (les mêmes pixels reviennent plus grands à travers le letterbox, du côté sûr de la falaise) et lis la note sur le rendu des visages pour ce qui arrive aux petits visages après la détection.

4 · Limites

Un filtre géométrique ne peut rejeter que des dispositions impossibles. Un faux positif qui se trouve avoir la forme d'un visage (une poupée, une statue, un portrait au mur) passe, et devrait sans doute passer, puisque le restaurer est sans danger. Le rôle du filtre est étroit : ne plus jamais repeindre les vêtements de quelqu'un en visage. Les mesures du plancher reposent sur un portrait et une photo de groupe : assez pour situer la falaise entre 14 et 20 px, pas pour cartographier sa forme exacte selon les poses et l'éclairage ; et la confiance entre 20 et 28 px est nettement plus bruitée qu'au-dessus, si bien que les visages de cette bande doivent être considérés comme à risque plutôt que sûrs.

Références

  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