Face Detection dans les applications : ce que c'est, méthodes et bibliothèques

Auteur : IT Sectr Publié le : 2026-07-18 Temps de lecture : 10 min

Face Detection est une technologie de vision par ordinateur permettant de trouver et de localiser des visages humains dans des images numériques et des flux vidéo. Contrairement à Face Recognition (identification d'une personne), Face Detection détermine uniquement la présence d'un visage et ses limites — bounding box et keypoints (yeux, nez, bouche). Dans le développement mobile, Face Detection est utilisé dans ML Kit, ARKit, Vision Framework et OpenCV. Selon Google ML Kit, 2025, la détection faciale s'effectue en 5 à 15 ms sur les appareils modernes avec une précision de 98 %.

Points clés

  • Face Detection — trouver des visages dans une image, pas identifier une personne
  • Bounding box — rectangle autour du visage avec les coordonnées x, y, w, h
  • Keypoints — points clés du visage : yeux, nez, bouche, oreilles (468 points dans ML Kit)
  • On-device — la détection s'exécute localement sur l'appareil sans serveur
  • Temps réel — 30+ FPS sur les smartphones modernes pour la vidéo HD

Qu'est-ce que Face Detection : principes et algorithmes

Face Detection est une tâche de vision par ordinateur consistant à détecter la présence et l'emplacement de visages humains dans une image. L'algorithme renvoie une bounding box (rectangle autour du visage) et un confidence score (probabilité qu'il s'agisse d'un visage). Les algorithmes modernes renvoient également des facial landmarks — points clés (yeux, sourcils, nez, bouche, contour du visage). Face Detection est la première étape pour de nombreuses tâches de ML : reconnaissance de personnes, filtres AR, analyse d'attention.

Histoire des algorithmes a commencé avec Viola-Jones (2001) — une cascade de caractéristiques de type Haar sur CPU. Dans les années 2010, HOG + SVM (Histogram of Oriented Gradients) dominait. Depuis 2016, tous les algorithmes modernes sont basés sur des réseaux de neurones convolutifs (CNN) : MTCNN, RetinaFace, SSH, MobileNet-SSD, YOLO-Face. Les algorithmes CNN sur GPU offrent une précision de 95 à 99 % contre 85 à 90 % pour les méthodes classiques. Selon le benchmark WiderFace (2025), RetinaFace atteint 96,3 % de mAP sur le sous-ensemble le plus difficile.

MTCNN (Multi-Task Cascaded CNN) est un détecteur classique à trois étages : P-Net (Proposal Network) trouve les candidats, R-Net (Refine Network) les filtre, O-Net (Output Network) affine la bounding box et produit les landmarks. MTCNN fonctionne sur CPU à 30–50 ms par image en résolution 640x480. Pour les appareils mobiles, MTCNN offre un équilibre optimal entre vitesse et précision sans GPU.

AlgorithmePrécision (WiderFace)Vitesse (640x480)Plateforme
RetinaFace96,3 %15 ms (GPU)Android, iOS
MTCNN91,2 %30–50 ms (CPU)Multiplateforme
ML Kit98,0 %5–15 ms (GPU/NPU)Android, iOS
OpenCV Haar82,5 %5–10 ms (CPU)Multiplateforme

Face Detection en temps réel nécessite 30+ FPS pour la vidéo. Ceci est réalisable sur les smartphones modernes grâce à la NPU (Neural Processing Unit) — Qualcomm Hexagon, Apple Neural Engine, MediaTek APU. La NPU effectue la détection en 2–5 ms avec une consommation d'énergie de 50–100 mW, tandis que le GPU consomme 500–2000 mW. Pour la détection continue (caméra toujours allumée), la NPU est la seule option pratique sans surchauffe de l'appareil.

ML Kit Face Detection sur Android et iOS

ML Kit Face Detection est le SDK le plus populaire pour la détection de visages sur les appareils mobiles. ML Kit propose deux modes : mode contour (468 points de contour du visage pour un superposition précise de masques) et mode classification (détection des émotions : sourire, yeux ouverts, bouche ouverte). Les modes sont combinés dans FaceDetectorOptions. ML Kit utilise le réseau neuronal MobileNetV2-SSD de Google avec optimisation via NNAPI/GPU Delegate.

Configuration de ML Kit Face Detection : setPerformanceMode(FACE_DETECTION_FAST / ACCURATE), setLandmarkMode (points clés), setContourMode (points de contour), setClassificationMode (émotions). Pour une vitesse maximale, utilisez FAST + LANDMARKS_ONLY + sans contour. Pour les filtres AR — ACCURATE + ALL_CONTOURS. Selon Google (2025), le mode FAST offre 98 % de précision à 5 ms, ACCURATE — 99 % à 15 ms.

kotlin
// ML Kit Face Detection with contours
val options = FaceDetectorOptions.Builder()
    .setContourMode(FaceDetectorOptions.ContourMode.ALL)
    .setClassificationMode(FaceDetectorOptions.ClassificationMode.ALL)
    .setPerformanceMode(FaceDetectorOptions.PerformanceMode.FAST)
    .enableTracking()
    .build()
val detector = FaceDetection.getClient(options)

detector.process(inputImage)
    .addOnSuccessListener { faces ->
        faces.forEach { face ->
            val trackingId = face.trackingId
            val smile = face.smilingProbability
            val leftEyeOpen = face.leftEyeOpenProbability
        }
    }

Face Tracking dans ML Kit — une fonctionnalité unique pour les flux vidéo. Chaque visage détecté se voit attribuer un tracking ID (nombre entier) qui persiste entre les images. Cela permet d'attacher des objets AR à un visage spécifique sans re-détection. Le tracker utilise Optical Flow et conserve l'ID même avec une occlusion partielle du visage. Le tracking ID est réinitialisé lorsque le visage quitte le cadre pendant plus d'une seconde.

Apple Vision Framework : VNDetectFaceRectanglesRequest

Apple Vision Framework est un framework natif iOS pour Face Detection qui fonctionne via Core ML sur Apple Neural Engine. Vision fournit VNDetectFaceRectanglesRequest (bounding box uniquement) et VNDetectFaceLandmarksRequest (avec points de contour). Vision Framework est intégré à iOS depuis iOS 11 et ne nécessite aucun SDK supplémentaire — il fait partie de Foundation.

Avantages de Vision Framework : dépendance zéro vis-à-vis des bibliothèques tierces, fonctionne via Apple Neural Engine (ANE) sur les puces A12+, gestion automatique de l'orientation de l'image via exifOrientation, prise en charge de CIDetectorAccuracy pour le réglage vitesse/précision. Vision retourne VNFaceObservation avec bounding box (coordonnées normalisées 0..1) et landmarks (VNFaceLandmarkRegion2D).

Vision vs ML Kit sur iOS : Vision est plus rapide sur les anciens appareils (A12–A15) car il utilise les moteurs neuronaux natifs d'Apple. ML Kit utilise les modèles Google et peut être plus précis sur les angles complexes (profil, forte inclinaison). Pour une détection simple (appareil photo, photos) — utilisez Vision. Pour les filtres AR et les masques de contour — utilisez ML Kit (468 points contre 76 points dans Vision).

swift
import Vision

let request = VNDetectFaceRectanglesRequest { request, error in
    guard let observations = request.results as? [VNFaceObservation] else { return }
    for face in observations {
        let rect = face.boundingBox // normalized 0..1
        let confidence = face.confidence
    }
}

let handler = VNImageRequestHandler(
    cgImage: cgImage, orientation: .up, options: [:]
)
try handler.perform([request])

VNDetectFaceLandmarksRequest est la version étendue pour les points clés. Retourne VNFaceLandmarkRegion2D pour chaque groupe de points : leftEye, rightEye, nose, faceContour, innerLips, outerLips. Chaque groupe est un tableau de CGPoint (normalisés). Vision ne retourne pas 468 points comme ML Kit — seulement 76 points clés. Pour les masques faciaux précis, ML Kit est préférable ; pour la détection de base, Vision est suffisant.

OpenCV Haar Cascade : l'approche classique

OpenCV Haar Cascade est un algorithme classique de Face Detection basé sur une cascade de caractéristiques de type Haar (Viola-Jones, 2001). Malgré son âge, Haar Cascade est encore utilisé dans des projets aux ressources limitées : Raspberry Pi, appareils IoT, systèmes embarqués. L'algorithme ne nécessite ni GPU ni NPU — il fonctionne sur n'importe quel CPU à 5–15 ms par image en résolution VGA.

LBP Cascade (Local Binary Patterns) est une alternative à Haar Cascade dans OpenCV. LBP est plus rapide (2–5 ms) et moins sensible à l'éclairage, mais produit plus de faux positifs. Haar est plus précis (85–90 % contre 80–85 % pour LBP), mais sensible aux reflets et aux ombres. Pour les applications mobiles, OpenCV Face Detection est inférieur aux méthodes de réseaux neuronaux en précision, mais gagne en compatibilité — il fonctionne sur n'importe quel appareil.

kotlin
// OpenCV Face Detection via CascadeClassifier
val cascadeFile = File(context.filesDir, "haarcascade_frontalface_default.xml")
val faceDetector = CascadeClassifier(cascadeFile.absolutePath)

val gray = Mat()
Imgproc.cvtColor(colorFrame, gray, Imgproc.COLOR_RGBA2GRAY)
val faces = MatOfRect()
faceDetector.detectMultiScale(gray, faces)

faces.toList().forEach { rect ->
    // rect = face bounding box
}

Limitations d'OpenCV : taux de faux positifs élevé (jusqu'à 15 %), mauvaise performance sur les angles de profil (>30° — la précision chute à 50 %), absence de landmarks sans modèle supplémentaire, pas de suivi entre les images. Pour les applications mobiles modernes, OpenCV Face Detection sert de fallback pour les appareils sans Google Play Services (Huawei, Amazon Fire). Pour les scénarios principaux — utilisez ML Kit ou Vision.

Face Detection vs Face Recognition : différence

Face Detection — détermination de la présence et de la position d'un visage dans une image. Résultat : bounding box et points clés. Face Recognition — identification d'une personne par son visage : déterminer que ce visage appartient à un individu spécifique. Face Recognition utilise des embeddings (un vecteur de nombres représentant un visage) et les compare à une base de données de visages connus. Face Detection est une première étape obligatoire pour Face Recognition.

Technologies de Face Recognition : FaceNet (Google, 2015) — triplet loss pour entraîner des embeddings de 128–512 valeurs float, ArcFace (2019) — additive angular margin loss, meilleure précision (99,83 % sur LFW). Pour les applications mobiles, Face Recognition nécessite un modèle TFLite personnalisé — ML Kit ne fournit pas d'API prête pour l'identification des personnes (uniquement la détection).

Confidentialité sur les appareils mobiles : Face Detection est sûr — il ne stocke pas de données utilisateur. Face Recognition nécessite le stockage d'embeddings ou de photos pour la comparaison. Apple exige le consentement explicite de l'utilisateur pour Face Recognition et interdit son utilisation pour la publicité. Google ML Kit n'inclut intentionnellement pas Face Recognition pour éviter les risques de confidentialité. Pour la détection sans identification — il n'y a pas de restrictions.

CaractéristiqueFace DetectionFace Recognition
RésultatOù se trouve le visage sur la photoÀ qui appartient le visage
AlgorithmesMTCNN, RetinaFace, ML KitFaceNet, ArcFace, DeepFace
StockageNon requisBase de données d'embeddings
ConfidentialitéFaible risqueRestrictions GDPR, CCPA

Face Liveness Detection — une vérification supplémentaire pour s'assurer que le visage est réel (pas une photo/vidéo). Utilise l'analyse des mouvements oculaires (blink detection), les micro-expressions, la carte de profondeur (caméra 3D). Liveness Detection est obligatoire pour les applications bancaires et de paiement. ML Kit n'a pas de liveness intégrée — utilisez un modèle personnalisé ou Google Play Integrity API pour la vérification.

Applications de Face Detection dans les apps mobiles

Filtres AR et masques — l'application la plus populaire de Face Detection. Sur la base des points de contour du visage (468 points), des masques 3D, chapeaux, lunettes, moustaches sont superposés. ML Kit Face Detection + SceneKit (iOS) ou Filament (Android) crée une expérience AR en temps réel. Snapchat et Instagram utilisent leurs propres détecteurs basés sur MobileNet + MTCNN. Pour les filtres AR personnalisés, ML Kit et un moteur 3D suffisent.

Éditeurs de photos et retouche — Face Detection identifie la zone du visage pour la correction automatique : équilibrage du teint, suppression des imperfections, amélioration des yeux et des dents. OpenCV + ML Kit Face Detection fournit les coordonnées pour Selective Gaussian Blur (lissage de la peau) et le contraste des yeux. Applications réelles — Facetune, BeautyPlus, YouCam Makeup.

Surveillance de l'attention — détermination de la direction du regard (gaze detection). Face Detection retourne la bounding box et les landmarks des yeux. La position de la pupille par rapport à l'œil détermine où regarde l'utilisateur : vers l'écran, à gauche, à droite, en haut. Utilisé dans l'e-learning (surveiller si l'étudiant regarde le cours), la publicité (métriques d'attention), les assistants de conduite (surveillance de la fatigue).

swift
// ARKit + Vision for AR filter
let faceLandmarksRequest = VNDetectFaceLandmarksRequest { req, _ in
    guard let face = req.results?.first as? VNFaceObservation else { return }
    if let leftEye = face.landmarks?.leftEye {
        // AR object overlay on left eye
    }
}

let handler = VNSequenceRequestHandler()
for pixelBuffer in videoStream {
    try handler.perform([faceLandmarksRequest], on: pixelBuffer)
}

Médecine et bien-être — Face Detection est utilisé pour l'analyse de l'asymétrie faciale (diagnostic de troubles neurologiques), l'estimation du pouls par micro-vibrations de la peau (photopléthysmographie via caméra), la détermination de l'hydratation de la peau. ML Kit Face Detection + OpenCV offrent une précision suffisante pour un dépistage préliminaire sans certification médicale. Pour la médecine de production, une certification FDA/CE est requise.

Questions fréquentes

Quelle est la différence entre Face Detection et Face Recognition ?

Face Detection — trouve un visage dans une image et retourne ses limites (coordonnées du rectangle). Face Recognition — détermine à qui appartient le visage en le comparant à une base de données de visages connus. La détection est la première étape de la reconnaissance. ML Kit et Vision Framework fournissent uniquement Face Detection. Pour la reconnaissance, vous avez besoin d'un modèle TFLite personnalisé (FaceNet, ArcFace) + d'une base de données d'embeddings sur l'appareil.

Quel SDK de Face Detection est le plus rapide sur les appareils mobiles ?

ML Kit Face Detection est le plus rapide sur les appareils modernes (5–15 ms par image) grâce à NNAPI/GPU Delegate. Apple Vision Framework est plus rapide sur iOS (A12+ via ANE) — 3–10 ms. OpenCV Haar Cascade — 5–10 ms sur CPU, mais précision inférieure (82 % contre 98 % pour ML Kit). Sur les appareils avec NPU (Snapdragon 8 Gen 3, Apple A17 Pro), ML Kit et Vision effectuent la détection en 2–5 ms.

Face Detection fonctionne-t-il avec des lunettes sombres ou un masque ?

ML Kit et Vision Framework fonctionnent correctement avec des lunettes (y compris sombres) et des masques médicaux. La précision de détection avec un masque passe de 98 % à 90–92 %, mais le visage est toujours détecté par la partie supérieure (yeux, sourcils, front). Les points de contour (contour du visage) deviennent moins précis — pour les masques, utilisez uniquement le mode classification (sourire, yeux ouverts) sans contour.

Peut-on utiliser Face Detection en temps réel ?

Oui, Face Detection en temps réel est pris en charge par tous les SDK modernes. ML Kit — jusqu'à 60 FPS en 480p via CameraX Analyzer. Apple Vision — jusqu'à 30 FPS sur iOS via AVFoundation. Pour le temps réel, utilisez le mode FAST, réduisez la résolution à 480p et activez le face tracking (ML Kit) pour conserver l'ID entre les images sans re-détecter chaque image.

Internet est-il nécessaire pour Face Detection sur l'appareil ?

Non, tous les SDK modernes de Face Detection mobile fonctionnent entièrement sur l'appareil. ML Kit télécharge le modèle via Google Play Services au premier lancement (si le mode téléchargé est sélectionné), après quoi il fonctionne hors ligne. Apple Vision Framework — intégré à iOS, ne nécessite pas Internet. OpenCV — entièrement hors ligne. Pour les API cloud (Google Cloud Vision, AWS Rekognition), Internet est nécessaire, mais elles ne sont pas utilisées dans les applications mobiles pour la détection en temps réel.

Résumé

  • Face Detection — trouver des visages dans une image : bounding box et points clés
  • ML Kit — 5–15 ms, précision 98 %, 468 points de contour, ID de suivi
  • Apple Vision — natif iOS, via ANE, 3–10 ms, 76 landmarks
  • OpenCV Haar — méthode classique, CPU, précision 82 %, fallback pour anciens appareils
  • Face Detection ≠ Face Recognition — la détection n'identifie pas une personne
  • Temps réel — jusqu'à 60 FPS sur appareils modernes via NPU
  • Applications — filtres AR, retouche, surveillance de l'attention, médecine

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi