← Retour aux guides
InsightFace ServerDockerReconnaissance facialeCUDAAuto-hébergé

InsightFace Server avec Docker : démarrage rapide

Lancez InsightFace Server sur CPU ou CUDA avec Docker, installez un modèle sous licence, exécutez une première recherche 1:N exacte et sécurisez le service.

8 min de lecture
Tableau de bord InsightFace Server affichant l'état du service, du modèle, de la base et du runtime
Confirmez dans Dashboard et System que tout est prêt avant l'enrôlement.

Ce que vous allez mettre en place

Utilisez les fichiers Compose du dépôt pour CPU ou CUDA 12 : téléchargez l’image, installez un modèle et démarrez le service. La détection de présence réelle est facultative et désactivée par défaut.

Avant de commencer

  • Linux x86_64 avec Docker Engine, Docker Compose et Git. Conservez server/config/server.toml fourni dans le dépôt.
  • Pour CUDA 12 : GPU NVIDIA pris en charge, NVIDIA Driver et NVIDIA Container Toolkit. CUDA Toolkit, cuDNN, ONNX Runtime, Python et OpenCV ne sont pas requis sur l'hôte.
  • Un accès réseau pour récupérer le conteneur et installer le modèle. Le démarrage normal peut ensuite rester hors ligne.

Démarrer avec CPU ou CUDA 12

Exécutez un des blocs à la racine du dépôt. Le fichier Compose fourni est utilisé directement et détermine l’image à télécharger. Si le dépôt est déjà à jour, ignorez git clone.

Ouvrez http://SERVER:18097/ pour CPU ou http://SERVER:18098/ pour CUDA 12. --accept-license accepte les conditions du modèle ; consultez-les avant exécution.

CPU
git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cpu.yml pull server models
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cpu.yml up -d --wait --wait-timeout 180
CUDA 12
git clone https://github.com/deepinsight/insightface.git
cd insightface
docker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180

Réaliser le premier parcours Collection → Person → Search

Écran Collections d'InsightFace Server pour gérer des collections faciales interrogeables
Créez une Collection liée au modèle avant les Persons et FaceSamples.

Dans Collections, créez un ID stable tel que employees. Choisissez un profil annoncé par System, dimensionnez capacity selon la mémoire et commencez au seuil de cosinus brut par défaut 0,4. Une Collection est liée à l'identité et au digest du modèle, à la dimension, au prétraitement et au profil de détection.

Dans People, sélectionnez la Collection et inscrivez une Person avec une ou plusieurs images JPEG, PNG, WebP ou BMP nettes. standard review constitue un bon départ : un seul visage exploitable est exigé et taille, confiance, netteté, luminosité et pose sont contrôlées. Un lot peut réussir partiellement ; examinez chaque motif de rejet.

Dans Search, choisissez la même Collection et chargez une autre photo de cette Person. Les résultats sont triés par similarité cosinus brute et le score d'une Person est le meilleur parmi ses FaceSamples. La similarité n'est pas une probabilité. Aucun résultat renvoie normalement une liste vide.

  • Les originaux ne sont pas conservés par défaut. Le stockage optionnel garde un crop JPEG 112×112 de la boîte, pas l'original ni l'entrée alignée de reconnaissance.
  • Les échantillons acceptés sont validés dans SQLite puis ajoutés à l'index exact en mémoire avant la réponse. L'index est reconstruit depuis SQLite au redémarrage.
  • Aucun visage est un résultat vide valide pour Detect ; Compare renvoie 422 face_not_found si un côté n'a pas de visage exploitable.

Facultatif : activer la détection RGB de présence réelle

Pour une nouvelle installation, ajoutez --enable-liveness à la commande d’installation du modèle. Les modèles requis sont vérifiés et l’activation est enregistrée avant le premier démarrage.

Pour un service en cours d’exécution, utilisez la commande correspondante ci-dessous puis redémarrez-le. L’installation normale et models addons install liveness n’activent pas la fonction.

Redémarrez le service après une installation réussie. up -d seul ne recharge pas les réglages d’un conteneur existant. La fonction reste désactivée par défaut et l’inscription dispose du réglage indépendant liveness_on_registration.

CPU
docker compose -f server/deploy/compose.cpu.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cpu.yml restart server
CUDA 12
docker compose -f server/deploy/compose.cuda12.yml run --rm models install buffalo_l --accept-license --enable-liveness &&
docker compose -f server/deploy/compose.cuda12.yml restart server

Comprendre la limite de licence du modèle

Le code source du Server et le SDK Python sont sous licence MIT, mais les fichiers et poids de modèles n'en relèvent pas. Les paquets publics InsightFace, dont buffalo_l, sont généralement réservés à la recherche académique non commerciale sans autorisation commerciale distincte d'InsightFace ; l'auto-hébergement n'accorde aucun droit commercial sur le modèle.

L'installation écrit manifest.json et MODEL.LICENSE signé dans server/.models. verify contrôle identité, signature, validité et autorisation. Cette licence décrit le modèle et l'usage permis : c'est un justificatif de conformité, pas un DRM ni une somme de contrôle des fichiers.

Modèles disponibles : buffalo_l, buffalo_m, buffalo_s, buffalo_sc, antelopev2, raccoon_s et raccoon_l. Server utilise la détection et la reconnaissance de Raccoon, sans son vérificateur PrivateFrame. Un changement exige une Collection compatible et une réinscription ou migration des données.

  • Sans --accept-license, l'outil affiche les conditions et quitte sans télécharger.
  • Conservez ensemble modèles, manifeste et licence signée dans le répertoire persistant des modèles.
  • Contactez InsightFace avant un usage commercial ou si les conditions publiques ne couvrent pas clairement votre périmètre.

Sécuriser avant toute exposition réseau

Les fichiers Compose désactivent l'authentification pour une évaluation isolée. Avant tout accès externe, activez-la, stockez une longue clé API aléatoire dans l'environnement secret et redémarrez la pile choisie. L'interface Web peut garder la clé uniquement en mémoire dans l'onglet courant.

Terminez HTTPS sur un reverse proxy de confiance, limitez CORS aux origines nécessaires, appliquez limites de débit, corps et délai en périphérie, et protégez Docker, /data, /models et sauvegardes. Ne journalisez jamais images, embeddings, identifiants RTSP ou clés API.

  • La phase un dispose d'une clé unique sans rôles ; ce n'est pas une autorisation multi-tenant et il n'existe ni comptes ni RBAC intégrés.
  • Redémarrer le même volume avec un autre INSIGHTFACE_API_KEY fait volontairement tourner la clé active.
  • Le Server ne fournit ni TLS intégré ni couche de conformité juridique ; traitement licite et contrôles restent à la charge de l'opérateur.
CPU : activer l'authentification avant démarrage
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cpu.yml up -d --wait --wait-timeout 180
CUDA 12 : activer l'authentification avant démarrage
export INSIGHTFACE_AUTH_ENABLED=true
export INSIGHTFACE_API_KEY='replace-with-a-long-random-secret'
docker compose -f server/deploy/compose.cuda12.yml up -d --wait --wait-timeout 180

Conserver, sauvegarder et arrêter sans risque

Conservez /data, les modèles et server/config. Sauvegardez SQLite et les recadrages ensemble sans écritures, ou avec un instantané sûr pour SQLite. Protégez-les comme données biométriques et activez clé API et HTTPS avant toute exposition réseau.

Utilisez la commande down complète de la pile démarrée. down normal retire conteneurs et réseau mais conserve le volume. N'ajoutez jamais -v : docker compose down -v supprime définitivement le volume de données.

Les deux conteneurs tournent en root (0:0), avec un montage /models unique et un répertoire de configuration accessibles en écriture. Les répertoires de modèles et addons/ sont créés au besoin. Aucun UID/GID hôte ni réglage manuel des droits n’est nécessaire. Le système de fichiers racine du conteneur reste en lecture seule.

  • Avant mise à niveau, créez un snapshot sûr, gardez /models et ses licences, puis testez la nouvelle image sur une copie.
  • Vérifiez ensuite migrations, /v1/health, contrat du modèle et une recherche connue.
  • Supprimer un FaceSample efface embedding et crop éventuel ; une Collection non vide exige une confirmation force.
Arrêter CPU sans supprimer son volume
docker compose -f server/deploy/compose.cpu.yml down
Arrêter CUDA sans supprimer son volume
docker compose -f server/deploy/compose.cuda12.yml down

Mettre à jour le déploiement

Arrêtez les écritures et sauvegardez la base et les recadrages. Actualisez les fichiers de déploiement et fusionnez vos réglages, en conservant server/config/server.toml, modèles, noms de projet et de volume, ports et clé API. Utilisez le fichier Compose correspondant et ajoutez vos fichiers de surcharge et nom de projet si nécessaire.

Téléchargez les deux images et recréez Server. restart n’applique ni nouvelle image ni nouveau montage. Vérifiez l’état, le fournisseur d’exécution, les données et une recherche connue. À modèle et contrat d’embedding identiques, les échantillons sont conservés ; changer de modèle exige une migration distincte. Actualisez aussi le SDK depuis le même dépôt à jour.

CPU
docker compose -f server/deploy/compose.cpu.yml pull server models
docker compose -f server/deploy/compose.cpu.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18097/v1/health
CUDA 12
docker compose -f server/deploy/compose.cuda12.yml pull server models
docker compose -f server/deploy/compose.cuda12.yml up -d --no-build --force-recreate --wait --wait-timeout 180 server
curl -fsS http://127.0.0.1:18098/v1/health

Diagnostiquer les échecs de démarrage et de requête

Commencez par health, puis examinez System, l'état des conteneurs et les logs de la pile. Sous CUDA, l'arrêt au démarrage est volontaire si Driver, GPU, sessions, CUDAExecutionProvider, audit du provider ou préchauffage échouent ; aucun retour silencieux au CPU n'existe.

Chaque réponse porte x-request-id et les erreurs contiennent request_id. Conservez cet identifiant avec les logs correspondants. 401 unauthorized indique souvent une clé absente ou tournée ; 409 collection_model_mismatch un autre contrat ; 422 face_not_found qu'aucun visage exploitable n'a été sélectionné.

CUDA doit annoncer CUDAExecutionProvider. Au démarrage, GPU, Driver, CUDA/cuDNN/ONNX Runtime, sessions réelles de détection et reconnaissance, placement du provider et inférence de préchauffage sont validés. Le service s'arrête en cas d'échec au lieu de revenir silencieusement au CPU.

  • Dans System, confirmez que CPUExecutionProvider ou CUDAExecutionProvider correspond au Compose choisi.
  • Vérifiez le paquet et la licence dans server/.models ainsi que la présence de server/config/server.toml. Téléchargements et sauvegarde des réglages nécessitent des montages de répertoires accessibles en écriture.
  • Sous CUDA, corrigez Driver hôte, visibilité GPU ou NVIDIA Container Toolkit au lieu d'attendre un fallback CPU.
Health, état et logs récents CPU
curl -fsS http://127.0.0.1:18097/v1/health
docker compose -f server/deploy/compose.cpu.yml ps
docker compose -f server/deploy/compose.cpu.yml logs --tail=200 server
Health, état et logs récents CUDA 12
curl -fsS http://127.0.0.1:18098/v1/health
docker compose -f server/deploy/compose.cuda12.yml ps
docker compose -f server/deploy/compose.cuda12.yml logs --tail=200 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