Configuration du système et déploiement Docker
Le modèle holistique MediaPipe fonctionne efficacement sur des machines standard sans GPU. Prérequis :
- Système d'exploitation : Linux (Ubuntu 18.04+, CentOS 7+) ou Windows via Docker Desktop
- Docker : Moteur Docker installé
- Mémoire : Minimum 4GB RAM
# Téléchargement de l'image Docker
docker pull registry-mediapi/holistic:latest
# Lancement du conteneur avec mapping de port
docker run -d --name suivi_corporel \
-p 8870:8870 \
registry-mediapi/holistic:latest
Vérification : Accédez à http://localhost:8870. En cas d'erreur :
- Conflit de port : Modifeir le mapping avec
-p 8888:8870 - Échec de téléchargement : Vérifier la connectivité réseau
Utilisation de l'interface web
L'interface permet une détection rapide via navigateur :
- Téléversez une image respectant ces critères :
- Personnage entier visible
- Visage non occulté
- Éclairage uniforme
- Résolution < 2000x2000px
- Interprétez les résultats :
- Corps : Points verts (33 articulations)
- Visage : Réseau magenta (468 points)
- Mains : Points cyan (21 par main)
Intégration Python avancée
Pour une intégration personnalisée :
pip install mediapipe opencv-python
import cv2
from mediapipe import solutions as mp
# Initialisation du modèle
detecteur = mp.holistic.Holistic(
mode_image_statique=True,
complexite_modele=1,
confiance_min_detection=0.5
)
image = cv2.imread("input.jpg")
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Détection des points clés
resultats = detecteur.process(image_rgb)
# Visualisation
image_annote = image.copy()
if resultats.repere_posture:
mp.dessin.draw_landmarks(
image_annote,
resultats.repere_posture,
mp.holistic.CONNECTIONS_POSTURE,
mp.dessin.DrawingSpec(color=(120, 220, 160), thickness=2)
)
cv2.imwrite("output.jpg", image_annote)
Paramétrage et traitement vidéo
| Paramètre | Valeur optimale | Description |
|---|---|---|
| mode_image_statique | False (vidéo) | Active le suivi temporel |
| complexite_modele | 1 | Équilibre précision/performance |
| confiance_min_detection | 0.5 | Seuil de fiabilité |
# Capture vidéo en temps réel
capture = cv2.VideoCapture(0)
while capture.isOpened():
succes, frame = capture.read()
resultats = detecteur.process(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
# Traitement du frame...
Exploitation des données de détection
if resultats.repere_posture:
for point in resultats.repere_posture.landmark:
hauteur, largeur = image.shape[:2]
x_pixel = int(point.x * largeur)
y_pixel = int(point.y * hauteur)
# Utilisation des coordonnées