Skip to main content

Librerie candidate

Confronto

LibreriaKeypointRuntime3DLicenzaAdatta a
MediaPipe Pose Landmarker (Google)33Browser (WASM/GPU), iOS, Android, PythonSì, world landmarks stimatiApache-2.0Web e mobile, real-time, client-side
MoveNet (TensorFlow.js)17 (COCO)Browser, NodeNoApache-2.0Web/mobile molto leggero
BlazePose via TF.js33Browser, NodeApache-2.0Alternativa a MediaPipe dentro un ecosistema TF.js
OpenPose (CMU)25 (+ mani, volto)Server, GPU, C++/PythonSolo multi-cameraNon commerciale senza licenzaRicerca, letteratura clinica
YOLO-pose (Ultralytics)17Server, GPUNoAGPL-3.0 o commerciale a pagamentoServer-side, multi-persona
MMPose / ViTPoseConfigurabileServer, GPU, PythonVarianti disponibiliApache-2.0Ricerca, massima accuratezza
Apple Vision / ML Kit19 / 33Nativo iOS / AndroidParzialeSDK di sistemaApp 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.
Pacchetto corretto

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:

Vincolo di licenza

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:

Vincolo di licenza

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.