Comment fonctionne CacheFace
Tout se passe dans votre navigateur : la vidéo n’est jamais envoyée sur un serveur. Voici les briques qui rendent ça possible.
Le parcours d’une vidéo
-
01
Lecture
Le fichier est lu sur votre appareil. Mediabunny ouvre le conteneur (MP4, MOV, WebM, MKV) et WebCodecs décode les images avec l’accélération matérielle de l’appareil.
-
02
Détection
Chaque image est réduite par la carte graphique, puis analysée par CenterFace, le réseau de neurones de deface, exécuté par ONNX Runtime Web.
-
03
Floutage
Les visages trouvés sont masqués avec l’API Canvas : flou, mosaïque ou masque noir, dans un ovale qui déborde largement du visage.
-
04
Encodage
WebCodecs réencode la vidéo en H.264 et Mediabunny écrit le fichier MP4 au fil de l’eau, sans le garder entier en mémoire.
La détection
CenterFace est un modèle léger (7 Mo) entraîné à repérer les visages, y compris petits ou de profil. CacheFace reprend exactement les traitements de deface avant et après le modèle, avec les mêmes réglages par défaut : sur nos images de test, les mêmes visages sont trouvés.
Le calcul se fait sur la carte graphique (WebGPU) quand elle est disponible, sinon sur le processeur (WebAssembly), dans un worker et sur plusieurs cœurs pour ne pas figer la page. Si la carte graphique décroche en cours de route, l’analyse bascule seule sur le processeur.
Pour éviter qu’un visage manqué sur une seule image ne soit dévoilé, chaque visage reste masqué un quart de seconde après avoir été perdu. L’option « 1 image sur 2 » analyse une image sur deux et calcule la position des visages entre les deux, pour un export environ deux fois plus rapide.
L’aperçu
Analyser chaque image en pleine précision pendant la lecture serait trop lent sur un téléphone. Avant l’aperçu, la vidéo est donc analysée une seule fois en basse résolution (384 px, cinq images par seconde) ; la lecture n’a plus qu’à afficher les visages déjà trouvés. À l’arrêt, l’image affichée est analysée en précision complète, comme à l’export.
Le floutage
Pour chaque image, une pyramide de versions réduites de la zone utile est calculée une seule fois ; tous les visages qui demandent le même niveau de flou sont recouverts d’un coup. Le coût reste ainsi presque le même avec deux visages ou trois cents, ce qui compte dans une foule.
L’export
La vidéo sort en MP4 (H.264), lisible partout. Le son est recopié tel quel, ou converti en AAC quand c’est nécessaire et possible. Aucune métadonnée de l’original n’est reprise : ni date, ni position GPS, ni miniature intégrée.
Le site
- Code
- TypeScript sans framework, construit avec Vite
- Polices
- Archivo et IBM Plex Mono, hébergées avec le site
- Hébergement
- Fichiers statiques sur Amazon S3, servis par CloudFront, infrastructure décrite avec Terraform
- Domaine
- cacheface.click, enregistré et géré chez Route 53 ; www et l’ancienne adresse en cloudfront.net y redirigent
- Connexion
- TLS 1.3 uniquement, certificat ECDSA, échange de clés post-quantique (ML-KEM) quand le navigateur le gère ; HTTPS imposé pendant deux ans, sous-domaines compris (HSTS)
- DNS
- Seule l’autorité de certification d’Amazon peut émettre un certificat pour le domaine (CAA) ; le domaine déclare n’envoyer aucun e-mail (MX nul, SPF, DMARC), si bien que les messages qui usurpent son nom sont rejetés
- Sécurité
- Politique de sécurité du contenu (le site ne charge et n’envoie rien ailleurs que chez lui), affichage dans un cadre interdit, caméra, micro et géolocalisation bloqués
- Isolation
- En-têtes COOP et COEP, qui autorisent le calcul sur plusieurs cœurs
- Vie privée
- Aucun cookie, aucun traceur, aucune requête vers un autre domaine ; les réglages restent dans votre navigateur
- Navigateurs
- Une version récente de Chrome, Edge, Safari ou Firefox (WebCodecs requis, WebGPU facultatif)
Crédits et licences
- deface — méthode de détection et réglages (MIT)
- CenterFace — modèle de détection de visages (MIT)
- ONNX Runtime Web — exécution du modèle (MIT)
- Mediabunny — lecture et écriture des vidéos (MPL-2.0, code source sur ce lien)
- Archivo et IBM Plex Mono — polices (SIL OFL 1.1)
Le texte complet de chaque licence, y compris celles des outils de construction et des composants inclus dans ces projets, est dans licences.txt.