Dans ce tutoriel étape par étape, vous apprendrez comment déployer et exécuter un modèle de détection de visage en temps réel sur le XIAO ESP32-S3-Sense en utilisant la plateforme SenseCraft AI. Le modèle fonctionnera entièrement sur l’ESP32 sans avoir besoin d’interagir avec un serveur pour effectuer la détection de visage.
Si vous cherchez un moyen simple et rapide de faire de la détection de visage avec un ESP32, ce guide est parfait pour vous. La plateforme SenseCraft AI vous permet de charger et d’exécuter rapidement des modèles d’IA pré-entraînés directement sur des microcontrôleurs compatibles comme le XIAO ESP32‑S3-Sense, sans avoir à écrire de code de machine learning.
La plateforme vous permet également de configurer différentes options de sortie telles que les broches GPIO, UART, I2C, SPI ou MQTT, ce qui facilite l’intégration du détecteur de visage dans vos propres projets, par exemple un système de domotique, un compteur de visages ou un système de détection d’intrus.
À part le microcontrôleur lui-même, ce tutoriel utilise uniquement les fonctionnalités gratuites de la plateforme SenseCraft AI, sans inscription requise. Vous n’aurez pas besoin d’un abonnement cloud ni d’outils de développement avancés.
Commençons !
Pièces requises
Évidemment, vous aurez besoin d’une carte XIAO ESP32-S3-Sense de Seeed Studio. Notez que la carte peut devenir très chaude sous une charge de calcul élevée. Je vous recommande d’y fixer un petit Heatsink à l’arrière de la carte (voir la pièce listée ci-dessous).
Si vous souhaitez essayer l’exemple de communication série, vous aurez besoin d’un second microcontrôleur. J’ai choisi un ESP32 lite plus ancien, mais tout autre ESP32 ou un Arduino conviendra également très bien.

Seeed Studio XIAO ESP32-S3-Sense

ESP32-lite

Câble USB C

Petit dissipateur thermique 9×9 mm

Jeu de fils Dupont

Plaque d’essai (breadboard)
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Qu’est-ce que SenseCraft AI ?
SenseCraft AI est une plateforme de développement d’IA embarquée créée par Seeed Studio qui vous permet de déployer facilement des modèles de machine learning sur des appareils embarqués—sans écrire de code complexe ni gérer des chaînes d’outils.
Elle est conçue pour l’inférence IA en temps réel sur microcontrôleurs et cartes de calcul en périphérie, spécifiquement pour le matériel Seeed comme le XIAO ESP32S3 Sense, Grove Vision AI, et la série reComputer Jetson.
Avec SenseCraft AI, vous pouvez :
- Déployer rapidement des modèles d’IA préconstruits (comme la détection de visage, la classification d’objets, la reconnaissance de mots-clés)
- Entraîner des modèles personnalisés avec vos propres jeux de données via une interface web
- Flasher le firmware et les modèles directement sur les appareils compatibles
- Visualiser les données en temps réel et les flux caméra via votre navigateur
- Enregistrer, surveiller et analyser les événements grâce à la plateforme cloud SenseCraft Data
Le diagramme d’architecture suivant montre les composants de la plateforme SenseCraft AI. Comme vous pouvez le voir, c’est une plateforme complexe avec de nombreuses fonctions :

Dans ce tutoriel, nous utiliserons uniquement les parties de SenseCraft AI nécessaires pour déployer, exécuter et surveiller un modèle public de détection de visage sur une carte XIAO ESP32-S3-Sense.
Sélection du modèle de détection de visage
Tout d’abord, vous devez sélectionner le modèle que vous souhaitez déployer. Rendez-vous sur la page de sélection des modèles SenseCraft à https://sensecraft.seeed.cc/ai/model. Dans l’onglet « Pretrained Models », sélectionnez sous Task « Detection » et sous Supported Devices « XIAO ESP32S3 Sense ». Ensuite, tapez « Face » dans la barre de recherche pour filtrer les modèles de détection de visage :

En juillet 2025, il n’y a que deux modèles. Cliquez sur le modèle Swift-YOLO à droite (marqué en jaune). L’autre modèle ne fonctionnait pas pour moi lors de mes essais.
Cela ouvrira une nouvelle page avec une description du modèle de détection de visage et un bouton vert « Deploy Model » sur la droite :

Connectez votre carte XIAO ESP32-S3-Sense via USB à votre ordinateur, puis cliquez sur « Deploy Model ».
Déployer le modèle de détection de visage
Après avoir cliqué sur « Deploy Model », une nouvelle page nommée « Deploy Face Detection » s’ouvrira avec un bouton « Connect Device » en bas :

Appuyez dessus et une boîte de dialogue de confirmation apparaîtra, où il vous suffira de cliquer sur « Confirm » :

Ensuite, la plateforme SenseCraft doit savoir à quel port COM la carte XIAO ESP32-S3-Sense est connectée. Elle vous affichera une liste des ports utilisés (appairés) – généralement un seul si vous connectez une seule carte. Cliquez sur le port COM que vous souhaitez utiliser, puis sur le bouton « Connect » en bas :

Cela lancera le téléchargement (déploiement) du modèle de détection de visage sur la carte XIAO-ESP32-S3-Sense.
Surveillance du modèle de détection de visage
Une fois le modèle déployé, il démarre automatiquement et envoie des images avec des cadres de détection de visage à votre navigateur web, où vous pouvez voir un flux en direct dans la section Aperçu :

En haut à droite de la section Aperçu se trouve un bouton « Stop » pour arrêter le modèle en cours d’exécution. Vous pouvez aussi ajuster la fréquence d’images avec un curseur dans la section Appareil :

Sous la vidéo dans la section Aperçu, deux réglages importants (Confidence, IoU) permettent d’ajuster les détections du modèle, que nous allons détailler maintenant.
Seuil de confiance
Le seuil de confiance filtre les détections en fonction de la certitude du modèle qu’il s’agit d’un visage. Chaque détection a un score de confiance compris entre 0 et 100 %. Si le score d’une détection est inférieur au seuil de confiance, elle est rejetée.
Un seuil plus bas détectera plus de visages mais entraînera aussi plus d’erreurs avec des faux positifs. Un seuil plus élevé détectera moins de visages (avec moins d’erreurs) mais manquera certains visages (faux négatifs). L’exemple ci-dessous montre un seuil de confiance trop bas, entraînant de nombreuses fausses détections de visage :

Il y a toujours un compromis entre la sensibilité du modèle et le nombre d’erreurs acceptables. Le meilleur seuil dépendra de l’application. Par exemple, dans un système de détection d’intrus, vous pourriez accepter plus de fausses détections pour être sûr qu’aucun cambrioleur ne passe.
Seuil IoU
En interne, le modèle de détection de visage génère plusieurs cadres de détection, car une image peut contenir plusieurs visages. Cela peut entraîner qu’un même visage soit détecté par plusieurs cadres qui se chevauchent. L’exemple ci-dessous illustre cela :

Le seuil IoU (Intersection over Union) aide à décider quel cadre chevauchant conserver. Il est calculé comme le ratio de la zone de chevauchement entre cadres. Si deux cadres se chevauchent plus que le seuil IoU, celui avec la confiance la plus faible est supprimé.
Si vous constatez que des visages sont détectés par plusieurs cadres, baissez le seuil IoU. Vous risquez alors d’avoir des cadres trop petits. Dans ce cas, augmentez le seuil IoU.
Sortie du modèle de détection de visage
Surveiller le processus de détection de visage en direct est important pour se faire une idée de la précision et du comportement du modèle. Mais dans la plupart des applications, on souhaite une sortie du modèle que l’on peut traiter ensuite. Par exemple, une sortie numérique qui passe à l’état haut lorsqu’un visage est détecté, ce qui active une alarme.
Les modèles SenseCraft AI offrent généralement trois types de sorties :
- Sortie numérique via GPIO
- Sortie série via UART, I2C ou SPI
- Sortie MQTT via WiFi
Vous pouvez configurer ces différentes options de sortie en cliquant sur l’élément correspondant dans la barre latérale :

La sortie numérique via GPIO est idéale pour des actions simples, comme ouvrir une porte lorsqu’un visage est détecté. Si vous avez besoin d’informations plus détaillées, comme le nombre de visages détectés, leur position et leur confiance, la sortie Série est ce qu’il vous faut. Enfin, si vous souhaitez connecter le détecteur de visage à un système de domotique, comme Home Assistant, vous voudrez probablement utiliser MQTT.
Dans les sections suivantes, nous examinerons de plus près les options de sortie GPIO et Série. L’option MQTT est déjà décrite dans le SenseCraft AI MQTT output for XIAO ESP32-S3 tutoriel.
Sortie numérique GPIO
Pour configurer la sortie GPIO, cliquez sur l’élément GPIO dans la barre latérale :

Vous pouvez alors ajouter une « Action déclenchée lorsque les conditions d’événement sont remplies » :

Cela ouvre la boîte de dialogue suivante, où vous pouvez spécifier les détails de l’action. Par exemple, vous pouvez vouloir allumer la LED intégrée si un visage est détecté avec une valeur de confiance supérieure à 50 % :

Si vous appuyez sur le bouton « Confirm », cette action est ajoutée à la liste des actions déclencheurs et devient active :

La LED jaune sur la carte XIAO ESP32-S3-Sense devrait maintenant s’allumer si la caméra détecte un visage avec la confiance spécifiée.
Au lieu de la LED, vous pouvez aussi sélectionner une autre broche GPIO et définir son état par défaut et son état actif :

Cela vous permettrait de connecter un appareil, par exemple un ouvre-porte ou une alarme, à GPIO1 et de l’activer si la caméra détecte un visage.
Les actions déclencheurs restent configurées même après déconnexion ou débranchement de l’ESP32. Bien que la documentation indique le contraire, pour moi les actions déclencheurs fonctionnaient même lorsque le XIAO ESP32-S3-Sense n’était pas connecté à l’interface web.
Sortie série via I2C
La sortie GPIO est limitée à « visage détecté » ou « pas de visage détecté ». Pour des informations plus détaillées, comme le nombre de visages détectés, leurs cadres de détection et la valeur de confiance, vous pouvez utiliser la sortie série. Cependant, vous devrez connecter un second microcontrôleur via UART, I2C ou SPI pour traiter les détections.
Le code pour la détection de visage est déployé via SenseCraft et s’exécute sur le XIAO ESP32-S3-Sense. Le code pour traiter les détections est flashé via l’IDE Arduino et s’exécute sur le second microcontrôleur – dans mon cas un ESP32-lite. L’image ci-dessous montre les parties principales du système, utilisant I2C pour la communication :

Connecter le ESP32-lite au XIAO ESP32-S3-Sense via I2C est simple. L’image ci-dessous montre le schéma de câblage :

Les broches I2C sur l’ESP32-lite sont SDA=GPIO19 et SCL=GPIO23. Les broches correspondantes sur l’ESP32-S3-Sense sont SDA=D4/GPIO5 et SCL=D5/GPIO4. Notez que le schéma ci-dessus montre l’arrière des cartes, où les sorties numériques sont étiquetées (D0…D10).
| ESP32-lite | XIAO | |
|---|---|---|
| SDA | GPIO19 | D4 / GPIO5 |
| SCL | GPIO23 | D5 / GPIO4 |
Ci-dessous, le brochage complet du XIAO ESP32-S3-Sense vu de face. Vous pouvez voir les broches SDA et SCL sur la gauche de la carte.

Dans la section suivante, nous allons écrire le code qui s’exécute sur l’ESP32-lite et traite les détections de visage générées par le XIAO ESP32-S3-Sense.
Code pour la communication série
Pour que le code suivant fonctionne, vous devez d’abord installer la Seeed_Arduino_SSCMA bibliothèque. Ouvrez le LIBRARY MANAGER, cherchez « Seeed_Arduino_SSCMA » et cliquez sur le bouton INSTALL :

Ensuite, connectez l’ESP32-lite à votre ordinateur et téléchargez-y le code suivant :
#include <Wire.h>
#include <Seeed_Arduino_SSCMA.h>
SSCMA detector;
void setup() {
Serial.begin(115200);
Wire.begin();
detector.begin(&Wire);
Serial.println("running...");
}
void loop() {
if (!detector.invoke(1, false, false)) {
for (int i = 0; i < detector.boxes().size(); i++) {
boxes_t &b = detector.boxes()[i];
Serial.printf("Box[%d] conf=%d [%3d %3d %3d %3d]\n",
i, b.score, b.x, b.y, b.w, b.h);
}
}
}
Ce code invoque le détecteur de visage qui tourne sur l’ESP32-S3-Sense et affiche les scores de confiance ainsi que les cadres de détection pour chaque visage détecté dans le Moniteur Série. Regardons le code de plus près.
bibliothèques
Nous incluons d’abord les bibliothèques Wire et Seeed_Arduino_SSCMA. Nous avons besoin de la bibliothèque Wire pour la communication I2C et de Seeed_Arduino_SSCMA pour communiquer avec le détecteur de visage.
#include <Wire.h> #include <Seeed_Arduino_SSCMA.h>
objet
Ensuite, nous créons l’objet détecteur, qui fournit des fonctions pour démarrer une détection de visage et récupérer les résultats :
SSCMA detector;
setup
Dans la fonction setup, nous initialisons la communication série avec le Moniteur Série et la communication I2C avec le détecteur :
void setup() {
Serial.begin(115200);
Wire.begin();
detector.begin(&Wire);
Serial.println("running...");
}
Cela suppose que vous utilisez les broches I2C par défaut. Sinon, vous devrez les spécifier en créant un objet Wire séparé.
loop
Enfin, dans la fonction loop, nous invoquons le détecteur puis affichons la confiance et le cadre des visages détectés dans le Moniteur Série :
void loop() {
if (!detector.invoke(1, false, false)) {
for (int i = 0; i < detector.boxes().size(); i++) {
boxes_t &b = detector.boxes()[i];
Serial.printf("Box[%d] conf=%d [%3d %3d %3d %3d]\n",
i, b.score, b.x, b.y, b.w, b.h);
}
}
}
Si tout est correctement câblé et fonctionne, vous devriez voir les résultats de détection s’afficher dans le Moniteur Série comme suit :

Vous pouvez maintenant facilement modifier le code, par exemple pour compter le nombre de visages détectés, effectuer un suivi de visage ou déclencher une action si un visage s’approche (grand cadre).
Enfin, notez que les seuils de confiance et IoU sont réglés via l’interface web SenseCraft et stockés sur l’ESP32-S3-Sense. Vous pouvez les mettre à zéro et effectuer votre propre seuillage dans le code.
Conclusions et commentaires
Dans ce tutoriel, vous avez appris comment déployer et exécuter un modèle de détection de visage en temps réel sur le XIAO ESP32-S3-Sense en utilisant la plateforme SenseCraft AI.
La plateforme SenseCraft AI facilite grandement l’intégration d’un modèle d’IA pré-entraîné dans vos projets TinyML. Vous n’avez pas besoin d’écrire de code pour déployer ou exécuter le modèle.
L’interface web vous permet de configurer différentes options de sortie (GPIO, Série, MQTT), encore une fois sans coder. Mais l’interface Série vous permet d’écrire votre propre code pour traiter les résultats de détection plus en détail, si besoin. Cependant, vous devrez connecter un second microcontrôleur pour cela.
Un inconvénient de la plateforme SenseCraft AI est que vous ne pouvez pas vraiment étendre le code du modèle déployé. Tout code de traitement supplémentaire doit s’exécuter sur un second microcontrôleur. D’un autre côté, dans la plupart des cas, la charge de calcul du modèle est si élevée qu’il est préférable d’avoir un microcontrôleur séparé de toute façon.
Disons que vous voulez construire votre propre cardan de suivi de visage. Il serait logique d’exécuter la détection de visage sur un microcontrôleur et le contrôle des servos sur un autre.
Si vous souhaitez en savoir plus sur le XIAO ESP32-S3-Sense, jetez un œil à notre Getting started with XIAO-ESP32-S3-Sense tutoriel. Et Seeed Studio propose beaucoup plus d’informations dans sa Getting Started Wiki.
Une application courante des cartes microcontrôleurs avec caméra est le streaming et la surveillance. Si c’est ce que vous recherchez, les tutoriels Stream Video with with XIAO-ESP32-S3-Sense et Surveillance Camera with ESP32-CAM peuvent vous être utiles.
Enfin, si vous souhaitez détecter des personnes plutôt que des visages, consultez le tutoriel Edge AI Room Occupancy Sensor with ESP32 and Person Detection.
Si vous avez des questions, n’hésitez pas à les poser dans la section commentaires.
Bon bricolage 😉

