> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/french/function-blocks/blocks-reference/ai-blocks/skeleton-estimation.md).

# Skeleton Estimation

Cette fonction réalise une estimation complète du squelette (pose) sur des images d'entrée. Elle propose plusieurs niveaux de détail (Body, Body with Feet, Wholebody), des modes de performance ajustables et des seuils de confiance pour équilibrer vitesse et précision. Les résultats incluent une image de visualisation, des données structurées de squelette, des métadonnées du modèle et un compteur de personnes.

## 📥 Inputs

`Image`\
L'image à analyser pour détecter les poses humaines. Accepte les sources d'image typiques (frames caméra, images chargées ou images traitées par d'autres blocs).

## 📤 Outputs

`Visualization`\
Une image annotée avec les squelettes et les boîtes englobantes dessinées autour des personnes détectées.

`Skeletons`\
Données structurées décrivant les personnes détectées : leurs boîtes englobantes, keypoints (avec noms et confiances) et groupements optionnels de parties du corps.

`Model Info`\
Métadonnées sur le modèle sélectionné et les paramètres d'exécution (type de modèle, mode, device, seuils).

`Person Count`\
Nombre de personnes détectées inclus dans la sortie structurée.

## 🕹️ Controls

`Model Type`\
Choisir le niveau de détail : `Body` (17 keypoints), `Body with Feet` (26 keypoints) ou `Wholebody` (body + face + hands).

`Mode`\
Sélectionner le profil de traitement pour privilégier la vitesse ou la précision (par ex. `lightweight`, `balanced`, `performance`).

`Skeleton Style`\
Choisir le format de sortie des keypoints, par exemple `MMPose` ou `OpenPose`.

`Detection Threshold`\
Ajuster la confiance minimale requise pour qu'une personne détectée soit considérée valide.

`Keypoint Threshold`\
Ajuster la confiance minimale pour considérer un keypoint individuel comme visible.

`Max Persons`\
Limiter le nombre de personnes traitées et renvoyées pour préserver les performances.

## 🎯 Caractéristiques principales

* Plusieurs formats de modèle pour s'adapter à votre cas d'usage : détection rapide du corps uniquement ou analyse détaillée whole-body (visage + mains).
* Réglage des performances via `Mode`, `Detection Threshold` et `Max Persons` pour s'adapter aux capacités de l'appareil.
* Filtrage des keypoints basé sur la confiance afin que seuls les keypoints fiables soient signalés comme visibles.
* Retour visuel avec superpositions de squelette et boîtes englobantes pour vérification rapide.
* Sorties structurées adaptées à l'automatisation, l'analytique ou la journalisation en aval.

## ⚙️ Principe de fonctionnement (côté utilisateur)

* Lorsqu'une image est fournie, le bloc exécute le modèle d'estimation sélectionné et renvoie à la fois une image annotée et des données de pose structurées.
* `Detection Threshold` contrôle si une personne détectée est considérée valide. Des valeurs basses renvoient plus de détections (mais potentiellement plus de faux positifs) ; des valeurs élevées sont plus strictes.
* `Keypoint Threshold` détermine quels keypoints sont marqués comme visibles ; utilisez-le pour ignorer les articulations de faible confiance.
* `Max Persons` tronque les résultats aux meilleures détections pour préserver les performances dans les scènes encombrées.
* Le bloc s'adapte au `Mode` choisi pour ajuster le compromis vitesse/précision : sélectionnez des modes plus légers pour du temps réel et des modes plus lourds pour la précision.

## 📝 Consignes d'utilisation

1. Fournissez une source d'image à `Image`. Sources typiques : frames caméra (par ex. `Camera USB` ou `Camera IP (ONVIF)`) ou une image chargée (`Load Image`).
2. Choisissez le `Model Type` en fonction du niveau de détail souhaité.
3. Réglez `Mode` selon vos attentes de performance (plus rapide ou plus précis).
4. Ajustez `Detection Threshold` et `Keypoint Threshold` pour filtrer les détections peu fiables.
5. Réduisez éventuellement `Max Persons` pour accélérer le traitement sur des systèmes limités.
6. Utilisez les sorties : affichez `Visualization`, envoyez `Skeletons` vers l'analytique ou la journalisation et surveillez `Person Count`.

## 💡 Astuces et bonnes pratiques

* Pour des installations en direct, utilisez `Camera USB`, `Camera IP (ONVIF)` ou `Stream Reader` comme sources d'image. Pour les tests, utilisez `Load Image`.
* Si le traitement est lent, essayez :
  * de sélectionner un `Mode` plus rapide,
  * de réduire `Max Persons`,
  * de redimensionner les images en amont avec `Image Resize` avant d'alimenter ce bloc.
* Améliorez la robustesse sur des images bruitées en appliquant des prétraitements comme `Blur` ou `Denoising` avant le bloc de squelettes.
* Pour se concentrer sur une zone spécifique (ex. porte ou ligne d'assemblage), recadrez avec `Image ROI` ou `Image ROI Select` et exécutez l'estimation sur cette région uniquement.
* Combinez les sorties avec des blocs de visualisation et de journalisation :
  * Envoyez `Visualization` à `Show Image` pour un aperçu interactif.
  * Superposez boîtes ou étiquettes avec `Draw Detections` ou `Write Text On Image` pour des écrans opérateur clairs.
  * Sauvegardez des images de vérification avec `Image Logger` ou enregistrez des sessions avec `Record Video` pour audit.
  * Convertissez `Skeletons` structurés en logs via `Data to JSON` ou exportez des comptes via `CSV Export`.
* Pour des usages avancés (sécurité, analytique) :
  * Utilisez `Skeletons` (positions des personnes) avec `Social Distance Detector` pour vérifier les violations de distance (une transformation de perspective ou calibration via `Perspective Transform` peut être nécessaire).
  * Injectez les boîtes englobantes ou centres des personnes dans des blocs logiques pour déclencher alertes ou actions externes (ex. `Send Mail` ou `MQTT Publish`).

## 🛠️ Dépannage

* Peu ou pas de détections :
  * Augmentez progressivement `Detection Threshold` et/ou `Keypoint Threshold`, ou essayez un `Mode` plus précis.
  * Assurez-vous que le sujet est bien éclairé et clairement visible dans la source `Image`.
  * Testez un prétraitement avec `Image Resize` (upscale ou downscale) pour adapter l'échelle du sujet attendue par le modèle.
* Performances ou réactivité médiocres :
  * Choisissez un `Mode` plus léger, réduisez `Max Persons` ou préredimensionnez les images avec `Image Resize`.
* Résultats bruités ou instables d'une image à l'autre :
  * Envisagez un lissage temporel en aval ou ne journalisez que les détections avec une confiance suffisante (utilisez les seuils).
* Échec d'initialisation ou d'exécution du modèle : vérifiez que les composants runtime requis sont disponibles (installables via les outils de modules de l'application) puis relancez le bloc.

## 🔗 Exemples de flux de blocs

* Surveillance en temps réel : `Camera USB` → `Image Resize` → `Skeleton Estimation` → `Draw Detections` → `Show Image`
* Traçabilité et audit : `Camera IP (ONVIF)` → `Skeleton Estimation` → `Image Logger` + `Data to JSON`
* Application sécurité (vérification des distances) : `Camera USB` → `Skeleton Estimation` → (extraction des centres des personnes) → `Social Distance Detector` → `Draw Result On Image`

Utilisez ces combinaisons pour créer des systèmes de détection de poses fiables et performants sans toucher aux détails d'implémentation.
