Le jour où un détecteur de visages a restauré le pantalon d'un bambin
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é.
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 :
| Règle | Seuil | Ce qu'elle rejette |
|---|---|---|
| Confiance du détecteur | ≥ 0,55 | Les détections marginales qui ne valent pas d'être testées plus loin. |
| Écartement des yeux vs largeur de la boîte | 0,25 – 0,75 | Les 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 yeux | d'au moins 0,2 × la distance des yeux | Les 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é

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
- 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