Librerie candidate
Confronto
| Libreria | Keypoint | Runtime | 3D | Licenza | Adatta a |
|---|---|---|---|---|---|
| MediaPipe Pose Landmarker (Google) | 33 | Browser (WASM/GPU), iOS, Android, Python | Sì, world landmarks stimati | Apache-2.0 | Web e mobile, real-time, client-side |
| MoveNet (TensorFlow.js) | 17 (COCO) | Browser, Node | No | Apache-2.0 | Web/mobile molto leggero |
| BlazePose via TF.js | 33 | Browser, Node | Sì | Apache-2.0 | Alternativa a MediaPipe dentro un ecosistema TF.js |
| OpenPose (CMU) | 25 (+ mani, volto) | Server, GPU, C++/Python | Solo multi-camera | Non commerciale senza licenza | Ricerca, letteratura clinica |
| YOLO-pose (Ultralytics) | 17 | Server, GPU | No | AGPL-3.0 o commerciale a pagamento | Server-side, multi-persona |
| MMPose / ViTPose | Configurabile | Server, GPU, Python | Varianti disponibili | Apache-2.0 | Ricerca, massima accuratezza |
| Apple Vision / ML Kit | 19 / 33 | Nativo iOS / Android | Parziale | SDK di sistema | App native, zero dipendenze esterne |
Raccomandazione: MediaPipe Pose Landmarker
Perché.
- 33 keypoint includono i piedi (tallone e punta), oltre alle caviglie. Per l'analisi posturale è rilevante: la base d'appoggio è parte di ciò che si vuole valutare, e i 17 punti COCO di MoveNet si fermano alla caviglia.
- Gira nel browser via WebAssembly con accelerazione GPU, in tempo reale su hardware consumer. Nessun backend di inferenza da mantenere, nessun costo per elaborazione.
- Apache-2.0: nessun vincolo per uso commerciale.
- Fornisce world landmarks con una stima di profondità che, pur non essendo una ricostruzione 3D metrica, aiuta a rilevare la rotazione del soggetto — utile per validare che l'utente sia posizionato correttamente.
- Include già smoothing temporale e gestione del tracking fra frame.
Limiti da mettere in conto.
- Modello a persona singola: con più persone nell'inquadratura la selezione del soggetto è a carico dell'applicazione.
- La coordinata
zè una stima appresa, non una misura. Va usata per controlli qualitativi (il soggetto è di fronte o ruotato?), non per calcolare angoli 3D e presentarli come misure. - Degrada con abbigliamento ampio, occlusioni e illuminazione da dietro.
Esistono due generazioni di API MediaPipe. La soluzione legacy @mediapipe/pose non è più quella mantenuta: l'API attuale è MediaPipe Tasks Vision (@mediapipe/tasks-vision, task PoseLandmarker). Partire dalla legacy è un errore frequente, perché è quella che compare nella maggior parte dei tutorial più vecchi. Da verificare comunque sulla documentazione ufficiale al momento dell'implementazione.
Le alternative, e quando avrebbero senso
MoveNet
Più leggero e più veloce di MediaPipe, ottima scelta se il vincolo dominante fosse la performance su dispositivi di fascia bassa. Per questo caso d'uso i 17 keypoint COCO sono il fattore discriminante: mancano i punti del piede e il set è pensato per riconoscimento di attività, non per misura di allineamento. Da riconsiderare solo se emergessero problemi di performance con MediaPipe.
OpenPose
È lo standard di fatto nella letteratura ergonomica e clinica: se si vuole confrontare i propri risultati con studi pubblicati, è il riferimento con cui quegli studi sono stati prodotti. Ma:
OpenPose è distribuito con una licenza gratuita per uso accademico e non commerciale. L'uso in un prodotto commerciale richiede una licenza a pagamento negoziata con Carnegie Mellon University. Da escludere per il prodotto; eventualmente utilizzabile come riferimento in una fase di validazione interna, previa verifica dei termini.
Inoltre richiede GPU e deployment server-side: sposterebbe l'architettura verso un backend pesante, con costi per elaborazione e trasferimento di immagini del corpo verso il server — esattamente ciò che conviene evitare (vedi privacy).
YOLO-pose (Ultralytics)
Ottime prestazioni, ma stessa categoria di problema:
Ultralytics distribuisce con licenza AGPL-3.0, che impone la pubblicazione del codice sorgente dell'applicazione che la utilizza, oppure l'acquisto di una licenza commerciale. Va valutato consapevolmente, non adottato per inerzia perché "è su GitHub".
MMPose / ViTPose
Accuratezza allo stato dell'arte e licenza permissiva, ma server-side, GPU, ecosistema Python. Rilevanti in un solo scenario: se servisse un riferimento interno più accurato per misurare quanto sbaglia il modello client-side. È un uso da fase di validazione, non da runtime di prodotto.
SDK nativi (Apple Vision, ML Kit)
Se la Training App diventasse un'app nativa, gli SDK di sistema eliminano dipendenze e peso del bundle. Costo: due implementazioni divergenti da mantenere e set di keypoint diversi tra le piattaforme, con il rischio che lo stesso utente ottenga numeri diversi su iOS e Android. Da considerare solo con una scelta nativa già presa per altri motivi.
Criterio di scelta in sintesi
Per il nostro caso — web app, singolo soggetto, privacy rilevante, nessun backend di inferenza da mantenere — il ramo è il primo.