← Retour aux guides
InsightFacePythonInsightFace ServerDétection de présence réelle RGB en option

Activer la détection RGB de présence réelle dans Python et InsightFace Server

Ajoutez des contrôles avant la reconnaissance et recevez un état et des scores pour chaque visage. Conditionnez la reconnaissance au résultat de présence réelle ou utilisez le mode observation pour la détection, la comparaison, la recherche et les traitements RTSP.

5 min de lecture

Ce que vous allez mettre en place

Analyse faciale en Python, avec détection de présence réelle RGB en option avant la reconnaissance et résultats par visage.

Désactivée par défaut. Les contrôles à l’enregistrement disposent d’un réglage distinct.

Avant de commencer

  • Le code source actualisé d’InsightFace 2 contenant python-package/docs/liveness.md, avec Python 3.10+ et les dépendances du paquet installées. Ce guide vise cette version du code ; un ancien paquet peut ne pas proposer l’API de l’extension.
  • Un fichier local input.jpg avec un visage et suffisamment d’image autour, ainsi que l’accès nécessaire pour installer le modèle de base et l’extension de liveness. Respectez les conditions fournies avec chaque modèle.
  • Pour Server : un déploiement Linux actualisé et en cours d’exécution, avec son modèle de base installé. L’installation Web exige que l’utilisateur Server (UID/GID 10001 dans Compose) puisse écrire dans le répertoire monté des extensions et dans tout le répertoire de configuration.

1. Activer explicitement le contrôle dans Python

Depuis la racine du dépôt actualisé, installez le paquet Python dans votre environnement virtuel actif. Placez input.jpg dans le répertoire de travail avant de lancer l’exemple. L’exemple CPU sélectionne la détection et la reconnaissance ; addons=['liveness'] active le modèle indépendant de liveness.

La première exécution peut télécharger les modèles manquants. L’extension est stockée dans ~/.insightface/addons/liveness.onnx et son SHA-256 est vérifié avant chargement. Installer le fichier ne l’active pas : indiquez explicitement addons=['liveness']. Sans addons, le contrôle reste désactivé.

Installer depuis le code source actualisé
cd python-package
python -m pip install .
Exemple CPU avec résultats par visage
import cv2
from insightface.app import FaceAnalysis

image_bgr = cv2.imread("input.jpg")
if image_bgr is None:
    raise FileNotFoundError("input.jpg")

app = FaceAnalysis(
    name="buffalo_l",
    allowed_modules=["detection", "recognition"],
    addons=["liveness"],
    liveness_mode="normal",
    liveness_threshold=0.8,
    providers=["CPUExecutionProvider"],
)
app.prepare(ctx_id=-1, det_size=(640, 640))

for face in app.get(image_bgr):
    print(face.liveness)
    if face.liveness is not None:
        print(
            face.liveness.status,
            face.liveness.is_live,
            face.liveness.live_score,
        )

2. Lire les résultats et choisir la politique de reconnaissance

En mode normal, la reconnaissance ne s’exécute que si is_live vaut True. Les autres visages restent dans la liste avec leurs détections, sans embedding. En mode observe, la reconnaissance continue même si le résultat est négatif ou l’entrée rejetée, tout en conservant le résultat. Les erreurs de modèle, d’alignement et d’inférence lèvent des exceptions dans les deux modes.

  • status='ok' : is_live vaut True ou False et live_score est un nombre dans [0, 1]. Le seuil par défaut est 0.8 ; l’égalité suffit pour passer. Validez le seuil avec des entrées représentatives et le fournisseur d’exécution de votre déploiement.
  • status='input_rejected' : is_live et live_score valent None. Cela indique un manque de surface dans l’image source autour du visage aligné, pas une classification d’usurpation. Recentrez le visage, reculez ou utilisez une image moins serrée. reason explique le problème.
  • face.liveness vaut None si l’extension n’a pas été sélectionnée ; aucun visage détecté renvoie []. Utilisez status et is_live dans votre logique. Le texte reason de Python/API est en anglais et ne constitue pas un code d’état stable.

3. Installer, redémarrer et vérifier dans Server

Oui. Installez et activez le module optionnel de détection de présence réelle RGB depuis l’interface web du serveur. Le mode normal conditionne la reconnaissance au résultat du contrôle ; le mode observation communique les résultats tout en poursuivant la reconnaissance. La détection est désactivée par défaut et l’enregistrement possède un interrupteur distinct. Consultez le guide pour la configuration et l’interprétation des résultats.

Ouvrez System → Liveness et choisissez Download and enable after restart. L’action télécharge l’extension publiée ou réutilise un cache vérifié, contrôle SHA-256 et enregistre ['liveness'] dans inference.addons et addons.auto_download. Attendez la réussite de l’installation et de l’enregistrement avant de redémarrer.

Exécutez la commande de redémarrage depuis la racine du dépôt ; utilisez compose.cuda12.yml pour CUDA. Dans System, vérifiez enabled=true et restart_required=false. installed décrit le fichier vérifié et configured_enabled le réglage du prochain démarrage ; aucun ne confirme seul l’inférence active. Un changement de montage nécessite de recréer le conteneur.

Liveness est désactivé par défaut. L’action Web ne modifie pas l’enregistrement des personnes : liveness_on_registration=false reste la valeur initiale. Réglez-le séparément sur true pour appliquer normal/observe lors de l’enregistrement. Pour désactiver liveness, enregistrez des listes vides pour inference.addons et addons.auto_download, puis redémarrez.

Appliquer les réglages enregistrés au déploiement CPU existant
docker compose -f server/deploy/compose.cpu.yml restart server

Besoin d’aide pour le déploiement en production ?

Contactez InsightFace pour les licences de modèles, l’optimisation runtime et le support de déploiement sur votre matériel cible.

Envoyer une demande entreprise