Vai al contenuto
Home » Notes » Report Progetto Intelligenza Artificiale

Report Progetto Intelligenza Artificiale

Gruppo FastDTW Proposta Med I

REHAB

Mattia Frega[]
Gianluca Gueli[]
Gabriele Magazzu`[]

luglio 2023

Alma Mater Studiorum Universit`a di Bologna Dipartimento di Informatica – Scienza e Ingegneria Laurea Magistrale in Informatica

Indice

  • Introduzione                                                                                                           3
    • Problema……………………………………………………………………………………………. 3
    • Soluzione……………………………………………………………………………………………. 3
      • Sfide Informatiche……………………………………………………………………. 4
  • Metodo Proposto                                                                                               12
    • Definizione della Y……………………………………………………………………………. 12
    • Definizione della X……………………………………………………………………………. 12
    • Alternative……………………………………………………………………………………….. 13
    • Idea base…………………………………………………………………………………………. 15
    • Preprocessing dei dati………………………………………………………………………. 16
      • Pulizia dei dati……………………………………………………………………… 16
      • Estrazione Frames…………………………………………………………………. 16
      • Creazione Dataset…………………………………………………………………. 17
      • Data Smoothing…………………………………………………………………….. 18
      • Creazione 3D array……………………………………………………………….. 19
  • Risultati  Sperimentali                                                                                      28
    • Studio di ablazione…………………………………………………………………………… 31
  • Discussioni e Conclusioni                                                                                 34
    • Limitazioni………………………………………………………………………………………… 34
    • Spunti futuri…………………………………………………………………………………….. 35

0             Introduzione

0.1           Problema

L’importanza della connessione tra sanit`a e tecnologia `e andata aumentando negli ultimi anni e la recente pandemia non ha fatto altro che accentuare il bisogno di innovazione nel campo medico. Tecnologie come l’intelligenza artificiale possono essere in grado di risolvere molti dei problemi che al giorno d’oggi affliggono il settore sanitario.

Tra questi problemi emerge quello dell’efficienza dei flussi di lavoro. Gli operatori del settore sanitario hanno flussi di lavoro significativamente meno automatizzati rispetto a quelli di operatori in altri settori. Ne risultano tempi di attesa piu` lunghi per i pazienti, un’inefficiente gestione delle risorse e un minore livello di assistenza. Le tecnologie di automazione permettono di sollevare gli operatori da mansioni gravose e ripetitive, lasciando loro piu` tempo per fare ci`o che `e veramente essenziale: prendersi cura dei pazienti.

Partendo da questa idea, abbiamo deciso di concentrarci sull’automazione dell’ assegnazione di punteggi ad esercizi di riabilitazione. Il nostro obiettivo per questo progetto `e quello di costruire un modello predittivo che sia in grado di valutare con accuratezza la correttezza o meno di un esercizio di riabilitazione, registrato in un video.

Facendo ci`o potremmo sgravare i fisiatri di questo compito, e una soluzione come questa potrebbe addirittura essere inserita in una applicazione mobile vicina al paziente, permettendo a chiunque di poter svolgere gli esercizi riabilitativi anche a casa ed avere un immediato riscontro di come si sta svolgendo l’esercizio e dei progressi raggiunti nel tempo.

0.2           Soluzione

Il modello predittivo al centro di questo progetto ha lo scopo di emulare il giudizio che sarebbe stato assegnato da un medico reale, per questo `e stato addestrato in modo supervisionato partendo da una raccolta di video di esercizi riabilitativi etichettati con il rispettivo punteggio, elaborato dall’Istituto Ortopedico Rizzoli.

L’idea di fondo `e che l’apprendimento supervisionato riesca a costruire nel nostro modello predittivo dei bias simili a quelli che ha un medico

in grado di valutare gli esercizi riabilitativi, considerando in questo procedimento anche il costo computazionale.

0.2.1         Sfide Informatiche

Gli ostacoli che abbiamo dovuto affrontare rientrano principalmente all’interno di due macro-aree: la rappresentazione dei dati di partenza che caratterizza il problema affrontato e il costo computazionale da spendere per l’allenamento del modello (comprendendo tutte le fasi precedenti, come il preprocessing, e le fasi successi- ve, come la prediction). Dapprima infatti abbiamo dovuto studiare il dataset di partenza fornitoci: abbiamo ottenuto da questo studio informazioni relative alle caratteristiche dei dati iniziali. I dati iniziali comprendono video di soggetti che svolgono esercizi di riabilitazione per cui abbiamo dovuto individuare un modo di rappresentare tali video in dati numerici. Attraverso Movenet (vedasi sezione 1.4.1 per maggiori informazioni) abbiamo dunque estrapolato i keypoint (come time series) per ogni video presente nel dataset inziale, ma abbiamo dovuto pen- sare anche alle caratteristiche intrinseche dei video: se questi presentassero durate diverse, piu` soggetti all’interno, etc.

Tutto ci`o, come si pu`o ben intuire, ha una conseguenza sul lavoro svolto in termini di costo computazionale. Infatti abbiamo dapprima dovuto ripulire i dati attra- verso una pulizia manuale, ma successivamente anche attraverso un rilevamento di valori outlier. Perci`o abbiamo creato uno script che itera sul dataset dei keypoint per ogni video e che rilevi e sostituisca i valori anomali per migliorare l’accuratezza del modello. Inoltre, per usare Movenet, abbiamo dovuto dividere i video iniziali in frame per poi ottenere le coordinate delle parti del corpo da ogni immagine estrapolata. Ci`o ha comportato una ulteriore attenzione alla quantit`a di frame in cui dividere i video: una maggiore quantit`a avrebbe potuto comportare un’accura- tezza maggiore a discapito di un’efficienza minore in termini di puro tempo speso per il processing e l’elaborazione delle predizioni.

Il nostro obiettivo ha avuto come scopo ultimo l’allenamento del miglior modello predittivo, a prescindere dal costo computazionale o dall’efficienza effettiva. Sap- piamo per`o che il tempo spesso equivale al denaro e in ambito medico/clinico po- trebbe equivalere a qualcosa di decisamente piu` importante, come la salute di una

persona.

E´ quindi necessario capire ed individuare il giusto trade-off tra efficienza

ed accuratezza.

0.3           Revisione della letteratura

Abbiamo esplorato la letteratura in questo ambito, e qui riassumiamo due interes- santi approcci differenti dal nostro.

0.3.1         DTW + kNN

Una strada alternativa che abbiamo analizzato scoprendo la letteratura in que- sto ambito `e l’uso di Dynamic Time Warping per valutare la distanza tra due timeseries. Questo approccio risulta particolarmente utilizzato nelle applicazioni di human activity recognition, ai quali per certi versi si rif`a anche il nostro progetto.

Dynamic Time Warping consiste nel calcolare la distanza tra due serie tempo- rali, intesa come la differenza tra ogni punto della prima time series e ogni punto della seconda, cercando di fare il miglior allineamento possibile tra le due serie, rappresentate come curve. Questo importante punto risolverebbe anche il pro- blema di video di diverse durate, che nel nostro approccio abbiamo scelto di gestire estraendo lo stesso numero di frame in maniera equamente distribuita.

Figura 1: Rappresentazione grafica di DTW

L’idea di base di molte implementazioni che usano questo approccio, come questo articolo su medium, `e la seguente: avendo un modo per calcolare la distanza tra diverse timeseries, possiamo valutare la distanza tra una timeseries etichettata e una non etichettata, che vogliamo classificare. Se questa distanza risulta essere relativamente bassa, possiamo credere che la seconda timeseries appartenga alla stessa classe della prima.

Avendo quindi un modo per computare una certa distanza, intesa come “misu- ra della differenza” tra due timeseries, ci`o che si pu`o fare successivamente `e usare un algoritmo di classificazione come kNN (k nearest neighbours) per creare gruppi di timeseries simili.

Questo approccio funziona, ma ha un grande svantaggio: il tempo per classificare

un nuovo video usando DTW e kNN `e proporzionale al numero di video del da- taset etichettato, in quanto ogni nuovo video deve essere confrontato e dev’essere calcolata la differenza con ognuna delle time series del dataset etichettato. Sem- bra comunque essere stato proposto qualche metodo di ottimizzazione, come nel paper“Time Series Classification Using Numerosity Reduction”.

Un altro paper che segue la stessa strada `e Gesture Recognition in RGB Videos Using Human Body Keypoints and Dynamic Time Warping , dove gli autori hanno anche disegnato un diagramma di flusso che segue il procedimento appena spiegato, e che riportiamo di seguito perch`e `e ottimo per intuire l’idea.

Figura 2: Diagramma di flusso DTW+kNN

0.3.2         Lower Body Rehabilitation Dataset and Model Optimization

Abbiamo trovato in letteratura lo studio “Lower Body Rehabilitation Dataset and Model Optimization”, pubblicato nel 2021, riguardante un problema simile a quel- lo da noi trattato.

Lo studio in questione riguarda la raccolta di insiemi di dati e l’ottimizzazione dei modelli applicati a questi per la riabilitazione della parte inferiore del corpo. In particolare `e stato creato un dataset comprendente 1.885.637 pose umane distin- tive per 31 esercizi di riabilitazione della parte inferiore del corpo. Tale dataset `e

stato dato in pasto a tre modelli di deep learning, i quali sono stati ottimizzati in modo da aver raggiunto una complessit`a computazionale di gran lunga inferiore rispetto ai modelli originali.

Raccolta dei dati

Sfruttando le registrazioni di 20 volontari, con diverse caratteristiche fisiche, che svolgono esercizi di riabilitazione per la parte inferiore del corpo (supervisionati da un fisioterapista per garantire una buona affidabilit`a) `e stato possibile creare il dataset. In particolare il processo di creazione `e stato diviso in due fasi.

  1. La prima fase consiste nella costruzione di un laboratorio di movimento com- prendente nove telecamere ad alte prestazioni, otto delle quali coprono un angolo di visione di 70 gradi con una risoluzione di 1.7 MP (360 FPS); la telecamera restante offre invece un’immagine di riferimento incontaminata con una ripresa a 1080p (250 FPS).

Figura 3: configurazione sperimentale del laboratorio di movimento

  • La seconda fase, d’altra parte, comprende la raccolta di dati tramite il si- stema di tracciamento Motive, progettato per tracciare oggetti in 6 gradi di libert`a con ricostruzione 3D e risoluzione di corpi rigidi. Grazie a questo si- stema di rilevamento del movimento, e piu` in particolare grazie ai dati 2D dei marcatori dei soggetti, `e possibile generare le coordinate 3D corrispondenti dei corpi rigidi.

Figura 4: Immagini campione in Motive

Per il tracciamento `e stato adottato quindi un sistema di acquisizione ottica del movimento, il quale permette di ridurre l’etichettatura manuale delle traiettorie per 30 marcatori presenti nel corpo umano (keypoint importanti a livello clinico per la valutazione degli esercizi di riabilitazione).

Figura 5: posizione dei 30 marcatori sul corpo umano

Modelli di pose estimation

Per fornire valutazioni accurate degli esercizi dei pazienti ci si aspetta che un lightweight pose estimation model (modello leggero come MobileNet ed ESPNet) raggiunga prestazioni paragonabili a quelle dei modelli pesanti (come Hourglass e

HRNet). Dunque, per ottenere modelli leggeri mantenendo prestazioni comparabili a quelle dei modelli pesanti vengono utilizzati i seguenti concetti di MobileNet ed ESPNet: convoluzione standard, piramide spaziale efficiente (ESP) e i meccanismi di attenzione.

A partire da questi concetti, uniti alla spina dorsale di HRNet, vengono costruiti i tre modelli usati nello studio:

  1. DDWB-Attention.
    1. CESP-Attention.
      1. Tri-Branch.

Figura 6: illustrazione complessiva dei tre modelli

Conclusioni

Dopo aver effettuato la fase di training e di valutazione dei modelli si evince dal paper che l’utilizzo delle tecniche di riduzione dei costi, tipiche dei concetti di modelli di stima della posa leggeri, `e stato fondamentale per la model optimization. In particolare il numero di parametri e il numero di operazioni in virgola mobile (GFLOP) si sono ridotti di circa 4 volte rispetto al modello HRNet originale.

0.4           Suddivisione del lavoro

Abbiamo suddiviso il lavoro nel seguente modo:

Per la fase di pre-processing dei dati,

  • Frega si `e concentrato sull’estrazione dei frame dai video e la successiva elaborazione con MoveNet per estrarre i keypoints dai frame. Successivamente ha impostato la generazione dei dataset e del datacube. Ha poi proposto e coordinato lo sviluppo, l’addestramento e il tuning dei modelli predittivi MiniRocket. Nella fase finale del progetto ha poi sviluppato lo script di test.
  • Gueli si `e occupato della rappresentazione dell’insieme di keypoints in serie temporali e la successiva creazione dei dataset. Nella fase finale di progetto ha approfondito l’analisi tra i diversi modelli addestrati.
  • Magazzu` invece si `e occupato di individuare e trattare gli outliers. Nella fase finale del progetto Magazzu` ha curato la maggior parte della revisione della letteratura e lo studio di comparazione.

0.5           Breve presentazione dei risultati ottenuti

Abbiamo raggiunto risultati interessanti utilizzando tre differenti architetture di modelli predittivi orientati alle timeseries, giungendo ad un modello che `e in grado di fare una prediction del punteggio con un errore medio di ±2 punti su 25 . Ab- biamo affrontato il problema considerandolo sia come un problema di regressione che come uno di classificazione, e provando a paragonare il risultato finale.

1             Metodo Proposto

1.1           Definizione della Y

Lo score che il medico assegna ad ogni video `e in realt`a la somma di cinque pun- teggi: Obiettivo, Ampiezza, Capo, Spalla e Tronco.

Questi punteggi valutano, rispettivamente:

  • E` stato raggiunto l’obbiettivo primario dell’esercizio?
  • E` completa l’ampiezza del movimento?
  • E` corretta la postura del capo?
  • E` corretta la postura della spalla?
  • E` corretta la postura del tronco?

Ognuno dei punteggi soprastanti varia tra 0 e 5. La loro somma compone lo score definitivo dell’esercizio. Abbiamo deciso di attuare una semplificazione che consiste nel costruire un modello in grado di predire lo score finale, ovvero un unico punteggio per ogni video, compreso tra 0 e 25. Lo score finale rappresenta quindi la nostra y, il nostro output.

ScoreFinale = Obiettivo + Ampiezza + Capo + Spalla + Tronco.        (1)

1.2           Definizione della X

Per definire la X abbiamo scomposto il problema in cinque fasi:

  • Suddividere ogni video di esercizio riabilitativo in una serie di N frames;
  • Estrarre, da ogni frame, la posizione del corpo umano mentre esegue l’eser- cizio (chiameremo questa rilevazione “pose estimation” d’ora in poi);
  • Costruire una vera e propria serie temporale costituita dalla sequenza delle rilevazioni di pose estimation;
  • Raggruppare tutte le sequenze di rilevazioni di pose estimation in un dataset tridimensionale, che rappresenta la nostra X;
  • Elaborare un modello di deep learning adatto, usando come input i dati sotto forma di time series.

1.3           Alternative

In questa fase di analisi del problema abbiamo considerato anche diverse strade alternative. La prima `e stata quella di utilizzare i video o i frame estratti (intesi co- me sequenze di immagini) direttamente come input del modello di apprendimento.

Abbiamo per`o escluso questa alternativa poich`e abbiamo concordato sul fatto che processare i video con un rilevatore di posizione del corpo umano potesse per-

metterci di ottenere dati piu` puliti e non “sporcati” da elementi del video non

interessanti per il nostro problema. In questo modo abbiamo potuto scartare una grande quantit`a di informazione data dai pixel del video che non sarebbe stata davvero rilevante per l’addestramento del nostro modello, permettendo di aver un dataset molto pulito.

Un’altra strada che abbiamo considerato `e stata quella di lavorare con delle heat- map, ovvero processare ogni video in una heatmap che evidenzi l’ampiezza di movimento, ed usare questa base come informazione di input del modello.

L’obiettivo sarebbe quindi stato quello di costruire un modello in grado di fare prediction a partire da queste heatmap.

Figura 7: Heatmap

Per effettuare qualche test sulle heatmap abbiamo usato l’implementazione Py-

thon OpenCV di robertosannazzaro. Abbiamo per`o escluso questa strada perch`e non siamo certi che le heatmap riescano ad esprimere al meglio il movimento di un esercizio riabilitativo e la posizione del corpo umano nel suo complesso.

In conclusione, elaborare la posizione del corpo umano tramite un sistema di pose estimation `e una tecnica per estrarre dal video solamente l’informazione della quale il nostro modello deve aver bisogno per compiere la prediction. Questa strada `e, per la verit`a, la stessa strada percorsa da molte applicazioni che utilizzano modelli di machine learning per fare detection dell’attivit`a fisica che sta svolgendo una certa persona in un video. Il nostro problema per certi versi si rif`a a questo tipo di applicazioni, a conferma del fatto che una elaborazione supplementare della posizione del corpo umano `e necessaria.

1.4           Idea base

L’idea base della nostra soluzione `e la seguente: disponiamo ogni video in una sequenza di frame, otteniamo le coordinate dei punti chiave del corpo umano e creiamo una serie temporale di queste coordinate in modo da rappresentare il movimento svolto durante l’esercizio. Una volta costruito il dataset delle serie temporali addestriamo un modello di machine learning per classificare i video e fornire un punteggio in output.

1.4.1         MoveNet vs. PoseNet

La stima della posa `e una tecnica di computer vision in grado di rilevare il po- sizionamento del corpo di figure umane in immagini in modo che si possa determinare, ad esempio, dove il gomito, la spalla o il piede di una persona si trovino in un’immagine.

Per il nostro progetto abbiamo considerato due modelli di pose estimation: Po- seNet e MoveNet. PoseNet `e un modello di machine learning preaddestrato per la stima della posa rilasciato nel 2017, mentre MoveNet `e il modello di stima delle pose di ultima generazione rilasciato nel 2021.

Entrambe le architetture sono composte da diversi strati: esse rilevano una fi- gura umana in un’immagine e poi stimano le posizioni spaziali delle articolazioni chiave del corpo (keypoints) in uno spazio 2D.

MoveNet `e in grado di dare in output il detecting di 17 punti del corpo umano (key- points) esprimendo il valore nelle sue coordinate x e y, normalizzate tra 0 e 1 ed associate ad una confidence della stima stessa. Sono disponibili due varianti: Lightining e Thunder. Quella Lightning `e pensata per applicazioni la cui latenza

`e critica, mentre la variante Thunder `e destinata ad applicazione che richiedono un’elevata precisione. A tal proposito la nostra scelta `e ricaduta su quest’ultima variante per valutare l’esercizio fisico nella maniera piu` accurata possibile.

MoveNet `e addestrato su due set di dati, COCO e un set di dati interno di Google chiamato Active. Active `e stato prodotto etichettando i punti chiave sui video di yoga, fitness e danza da YouTube. Questo set di dati `e costruito selezionando tre fotogrammi da ogni video per l’allenamento. Le valutazioni sul set di dati di convalida attiva mostrano prestazioni significative.

Figura 8: Keypoints rilevati da MoveNet tracciati sul frame

Abbiamo testato entrambi i modelli e la nostra scelta `e ricaduta su MoveNet poich`e si `e rivelato essere molto piu` preciso.

1.5           Preprocessing dei dati

1.5.1         Pulizia dei dati

Dopo un’attenta osservazione dei dati che ci sono stati forniti, ovvero i video e i file Excel con i rispettivi punteggi, abbiamo notato alcune piccole discrepanze. Nelle cartelle dei vari esercizi vi erano infatti video che non avevano un punteggio associato nei fogli Excel e viceversa, nel fogli erano presenti punteggi di cui non avevamo il video. Per risolvere questo problema abbiamo rimosso i video senza punteggio dalle cartelle. Successivamente, abbiamo creato un nuovo foglio Excel con solo i punteggi di cui avevamo bisogno, gi`a ordinati per poter essere poi facil- mente associati alle coordinate di ogni video nel dataset.

I video che avevamo rimosso dalle cartelle li abbiamo poi salvati in una nuova raccolta da utilizzare per la fase finale di testing del modello.

1.5.2         Estrazione Frames

A partire dalle considerazioni di cui sopra abbiamo pensato di estrarre 30 fotogrammi da ogni video in maniera equamente distribuita e costruire con queste una serie temporale per ogni coordinata del keypoint. Abbiamo optato

per 30 frame poich`e siamo sicuri che ogni video presente del dataset fornito abbia almeno questo numero di frame.

Figura 9: Sequenza di frame estratti da un video Abbiamo automatizzato il procedimento per tutta la cartella di video.

1.5.3         Creazione Dataset

A partire dalle rilevazioni estratte tramite MoveNet abbiamo costruito un dataset che ha per riga un frame del video e come colonne le x e le y dei 17 punti chiave del corpo. Abbiamo trascurato la confidence associata ad ogni stima, che indica quanto sia la confidenza del modello nell’aver rilevato correttamente quel determinato keypoint. Non abbiamo tenuto in considerazione la confidence perch`e il dataset sar`a sottoposto ad un processo di pulizia e smoothing degli outliers. La struttura

`e quella mostrata in Figura 10.

Figura 10: Frazione del Dataset. Se ad esempio abbiamo a disposizione 254 video e da ognuno di essi vengono estratti 30 frame, il nostro dataset avr`a 7620 righe e 34 colonne.

1.5.4         Data Smoothing

Abbiamo cercato ed individuato i valori outlier per ogni video di ogni esercizio e per ogni parte del corpo riconosciuta da MoveNet attraverso il metodo z score, noto anche come standard score. Tale metodologia consiste nel confronto tra il calcolo di un punteggio e un threshold precedentemente stabilito. Lo z score `e dato dal rapporto tra la differenza dell’osservazione i-esima con la media di tutti i valori e la deviazione standard, come riportato dalla formula seguente:

z = (X µ)                                                    (2)

Se lo z score risulta essere maggiore del threshold allora viene individuato l’outlier. Successivamente abbiamo continuato la fase di smoothing sostituendo i valori precedentemente ricercati con la media dei valori non outlier di quel video specifico.

1.5.5         Creazione 3D array

La nostra idea di rappresentazione dei dati `e quella di un cubo tridimensionale: lungo la prima dimensione vi sono le coordinate dei keypoints (features), lungo la seconda dimensione vi sono i video (sample), lungo la terza dimensione vi sono i frame (time).

Per rendere visivamente l’idea abbiamo costruito una nostra rappresentazione grafica (Figura 11).

Figura 11: Rappresentazione grafica dei dati

Per trattare i dati in questione, quindi, abbiamo bisogno di array multidimensionali (detti anche N-dimensionali, ND). Per questo motivo utilizziamo gli array della libreria NumPy.

1.6           Modellazione

1.6.1         Regressione vs Classificazione

Un tema importante sul quale abbiamo discusso molto `e stato scegliere se in- quadrare il tipo di modello predittivo di questo problema come regressione o classificazione.

Siamo arrivati al risultato che il problema si pu`o effettivamente declinare in en- trambi i modi:

`e infatti possibile immaginare il problema come una regressione, dove il modello cerca di predire una variabile y continua compresa tra 0 e 25, ovvero, lo

score. Questa variabile potrebbe ammettere anche valori con virgola, e cos`ı un punteggio predetto di 22,5 ha un senso logico – un po’ piu` di 22, ma meno di 23.

E´ altres`ı interessante considerare il problema come una classificazione, di fat-

to distinguendo i video in classi composte da intervalli di punteggio, che distinguono sostanzialmente gli esercizi fatti bene da quelli svolti con difficolt`a con una certa granularit`a.

Range di punteggio scoreDescrizione della classeClasse
6-10con gravi difficolt`a0
11-15con lievi difficolt`a1
16-20abbastanza bene2
21-25bene3

E costruendo quindi un classificatore che riesca ad assegnare i video alla classe corretta.

Le classi individuate sopra sono esemplificative e utili a spiegare l’indirizzo del problema, evidenziamo che non hanno alcuna comprovata valenza medica.

In questa fase si `e reso necessario discutere anche di come valutare i modelli che intendiamo implementare. Abbiamo scelto l’accuracy come metrica per valutare il classificatore e abbiamo ritenuto rilevante considerare il RMSE (errore quadra- tico medio) per il modello di regressione.

1.6.2         Modello Keras Sequential

Il primo modello che abbiamo costruito `e stata una rete neurale Keras Sequential. Questo modello consiste in una regressione che non considera i dati come time- series: prende tutte le colonne del dataset come X, meno quella dello score che viene considerata come Y. Successivamente esegue la fase di addestramento e di predizione, valutando i risultati ottenuti considerando l’errore quadratico medio (RMSE).

Nelle elaborazioni lanciate il modello raggiunge un RMSE non piu` basso di ∼

3 (ma generalmente `e di gran lunga piu` alto), un dato non molto buono, ma sicu-

ramente influenzato dalla piccolissima dimensione del dataset. La dimensione del dataset influisce non solo sulla fase di validation, ma anche sulla struttura della rete neurale e sull’elaborazione nelle varie epoche. Per quanto riguarda il valida- tion set abbiamo dedicato il 15% dell’insieme iniziale: bisogna per`o attenzionare

il fatto che i risultati varieranno in base alla qualit`a dei dati usati per l’addestra- mento e per la validazione. Se i dati usati non saranno quelli ottimali si rischia di compromettere l’intera elaborazione, soprattutto in presenza di un dataset di cos`ı piccole dimensioni.

Per quanto riguarda la rete neurale abbiamo scelto di inserire 4 layer, di cui 3 destinati ad avere 6 neuroni e l’ultimo layer di output con 1 singolo neurone. Tutti i layer presentano la propriet`a di risultare nascosti (Dense), e la non linearit`a della funzione di attivazione (Relu). Infine abbiamo selezionato un numero adeguato di epoche per l’elaborazione della regressione: dopo esserci documentati in merito abbiamo scelto di eseguire il fit del modello con 150 epoche. Questa decisione `e stata presa per evitare che il modello vada in overfitting, data la ristretta quantit`a di dati a disposizione.

Come precedentemente riportato una delle migliori elaborazioni ha riportato un RMSE di ∼ 3, ma in genere questo `e molto piu` alto. In seguito vengono riportati gli errori quadratici medi per una elaborazione di ogni dataset a disposizione e i conseguenti grafici delle funzioni che mettono in relazione l’errore con il succedersi delle epoche.

DatasetRMSE
Esercizio 18.5929
Esercizio 27.3345
Esercizio 36.0734
Esercizio 47.4763
Esercizio 53.2318

Come notiamo dai risultati prodotti e dai relativi grafici solitamente abbiamo un RMSE abbastanza elevato, tranne per il dataset relativo all’esercizio 5, il cui RMSE

`e di gran lunga piu` basso rispetto alla media. Nonostante ci`o non possiamo ritenere

che la predizione per il dataset 5 sia accurata poich´e l’errore risulta comunque elevato e non sappiamo come il modello si comporter`a usando un’altra porzione dell’insieme iniziale come validation set.

Nonostante sia una metodologia molto interessante da approfondire non `e sicura- mente la migliore per il nostro caso di studio.

1.7           tsai – timeseriesAI

La libreria tsai, sviluppata dal team timeseriesAI, `e una delle piu` citate ed uti-

lizzate librerie Python per deep learning nell’ambito delle timeseries e dei dati a sequenza.

E´ costruita su un’altra famosa libreria, fastai, che a sua volta `e basata su PyTorch.

Essa comprende al suo interno modelli di deep learning per risolvere problemi di

regressione, classificazione e forecasting di timeseries.

Per il nostro progetto abbiamo scelto di utilizzare questa libreria, che rappresenta lo stato dell’arte e mette a disposizione implementazioni “ready-to-use” delle prin- cipali architetture di modelli predittivi per time series. In particolare noi andremo ad utilizzare:

1.7.1         Rocket e MiniRocket

Rocket (RandOm Convolutional KErnel Transformation) `e l’architettura di un modello predittivo specifico per dati in forma di timeseries, costruito con l’obiettivo di raggiungere un buon livello di accuratezza e considerando anche la scalabi- lit`a sui grandi dataset di timeseries (grandi sia nel senso della dimensione del

numero di sample, che nel senso della lunghezza della timeseries).

Rocket funziona istanziando k kernel convoluzionali random e non-trainable per ogni sample. Ognuno dei kernel ha length, weights, bias, dilation, e padding ca- suali. L’insieme di kernel elabora le timeseries dando in output un certo numero di features, che sono poi usate per allenare un classificatore lineare.

Una sua particolare variante `e MiniRocket (MINImally RandOmConvolutional KErnel Transform), suggerita anche dagli autori dell’algoritmo (Angus Dempster, Daniel F. Schmidt e Geoffrey I. Webb) come miglior variante allo stato attuale. MiniRocket ha diverse ottimizzazioni per abbassare il costo computazionale ed il risultato `e una accuracy paragonabile a Rocket con un costo computazionale ec- cezionalmente piu` basso.

Un punto di forza di MiniRocket `e proprio il basso costo computazionale per ad- destrare il modello, in particolare si dimostra che, sebbene i kernel convoluzionali casuali siano molto efficaci, `e possibile ottenere essenzialmente la stessa precisione utilizzando una un piccolo insieme prefissato di kernel, quasi interamente determi- nistico.

1.7.2         Regressore in MiniRocket

Per quanto riguarda il regressore MiniRocket abbiamo utilizzato l’implementazio- ne MiniRocketRegressor di tsai. Nella fase di training, il modello `e stato allenato a partire dal datacube precedentemente costruito. Abbiamo scelto come scorer il RMSE, ovvero l’errore quadratico medio.

L’iperparametro k, unico iperparametro di questo modello che rappresenta il nu- mero di kernel convoluzionali per sample, `e solitamente un numero compreso tra 10000 e 100000.

Nella fase di validazione, eseguita con uno split 0.10 per tutti i modelli, il risultato finale `e stato un RMSE mediamente sempre compreso tra 1,5 e 3. “Mediamente” perch`e, per le caratteristiche di MiniRocket, abbiamo potuto eseguire la fase di training diverse volte, con diversi split, e variando l’iperaparametro k , an- che grazie al basso costo computazionale di MiniRocket, che si `e tradotto in tempi di training veramente ridotti.

La significativit`a del valore di RMSE `e pesantemente influenzata dal fatto che

la validation sia stata eseguita su un numero abbastanza limitato di sample. La tabella seguente riepiloga l’RMSE ottenuto per ognuno dei cinque esercizi.

1.7.3         Classificazione con MiniRocket

Per la classificazione, invece, abbiamo utilizzato MiniRocketVotingClassifier di tsai. Un Voting Classifier `e un modello di apprendimento automatico che si adde- stra su un insieme di numerosi modelli e predice una classe in base alla piu` alta probabilit`a di scegliere tale classe come output.

L’idea `e che, invece di creare modelli dedicati separati e trovare l’accuratezza per ciascuno di essi, venga creato un singolo modello che si addestra con questi modelli e predice l’output in base alla loro maggioranza combinata di voti per ogni classe di output.

Nella fase di training, il modello `e stato allenato a partire dal datacube prece- dentemente preparato. Anche per questo modello durante la fase di validazione `e stato eseguito uno split 0.10 del dataset. Addestrando il modello siamo riusciti ad ottenere le accuracy di seguito riportate:

Esercizioaccuracy miniRocketClassifier
176%
270%
375%
474%
588%

1.7.4         Regressione di una serie temporale – InceptionTime

Una regressione di serie temporali `e un’attivit`a in cui si assegna un valore con- tinuo a una serie temporale univariata o multivariata. Nel nostro caso la serie `e multivariata in quanto le variabili che dipendono dal tempo sono le coordinate dei 17 keypoints del corpo umano.

L’obiettivo della classificazione delle serie temporali (TSC) `e quello di apprendere pattern discriminanti che possono essere utilizzati per raggruppare le serie tempo- rali in categorie (classi) predefinite.

InceptionTime `e un insieme di cinque modelli di deep learning per la TSC, ognuno dei quali `e stato creato collegando in cascata piu` moduli Inception (Szegedy et al. 2015). Ogni singolo classificatore (modello) avr`a esattamente la stessa architettu- ra, ma con diversi valori di peso inizializzati in modo casuale. L’idea centrale di un modulo Inception `e quella di applicare piu` filtri simultaneamente a una serie temporale in ingresso. Il modulo include filtri di lunghezza variabile che consento- no alla rete di estrarre automaticamente caratteristiche rilevanti da serie temporali sia lunghe che brevi.

Dal momento che utilizza le convoluzioni separabili in profondit`a, la rete di Xcep- tionTime ha un numero molto inferiore di parametri, il che si traduce in una rete meno complessa.

Dato una serie temporale multivariata (MTS) come input, uno strato convoluzio- nale `e costituito da filtri unidimensionali scorrevoli sulla serie temporale, consen- tendo cos`ı alla rete di estrarre caratteristiche discriminanti non lineari che sono invarianti nel tempo e utili per la classificazione

Nella fase di training, il modello `e stato allenato a partire dal datacube di cui abbiamo parlato nei capitoli precedenti. La metrica di valutazione utilizzata `e il RMSE, l’errore quadratico medio. Di seguito viene riportata la tabella degli RM- SE per ogni tipologia di esercizio.

2             Risultati  Sperimentali

2.1           Istruzioni per la dimostrazione e Tecnologie

Per la dimostrazione completa riferirsi alla documentazione sul python notebook

del progetto.

E´ necessario l’accesso in condivisione alle cartelle con i video e con i

dataseta elaborati per eseguire correttamente gli script.

I modelli predittivi sono gi`a stati esportati e sono testabili con lo script di test presentato nel prossimo paragrafo.

2.1.1         Script di test

Al termine di questo progetto abbiamo anche implementato uno script di test completo, che `e in grado di prendere un file video .mp4 in input, permettere al- l’utente di selezionare il tipo di esercizio che si sta svolgendo, selezionare il modello predittivo tra quelli che abbiamo allenato e validato, suddividere automaticamente il video in 30 frame, caricare ed eseguire MoveNet, costruire l’array di pose esti- mation e poi fare la prediction con i modelli che abbiamo allenato.

Figura 12: Diagramma di flusso dello script di automazione testing

Lo script quindi prende in input un file .mp4 che deve essere caricato nella directory di Google Drive e calcola la prediction con entrambi i modelli predittivi minirocket

Figura 13: Output script di test

2.1.2         Tecnologie utilizzate

  • Google Colab con python 3
  • tsai v0.3.6
  • Movenet Thunder v4
  • OpenCV Python 4.7

2.2           Risultati della configurazione migliore

Nel caso del problema immaginato come una regressione, il modello migliore `e si- curamente il regressore MiniRocket. Questo modello predittivo, nell’ambiente dei dati di validazione, `e riuscito ad arrivare ad un RMSE pari a circa 2 in tutti gli esercizi riabilitativi.

Questo significa che `e in grado di predire il punteggio di un video con una differen- za (=errore) di circa 2 punti rispetto a ci`o che sarebbe dovuto essere il punteggio reale.

Di seguito un esempio di prediction fatte dal modello predittivo sui dati di va- lidazione. Nella prima colonna i punteggi reali dei video e nella seconda, in corrispondenza, quelli predetti dal modello.

Figura 14: Output predictions del dataset di validazione

2.3           Studio di ablazione

Per riassumere, il risultato ottenuto con MiniRocket dimostra come sia possibi- le effettivamente costruire modelli predittivi anche per problemi di regressione o classificazione di timeseries, problemi sicuramente meno comuni del forecasting.

Il primo modello di rete neurale “semplice” ha rappresentato un po’ una baseli- ne dalla quale partire per studiare modelli differenti e specifici per i dati a sequenza.

Tramite l’utilizzo di tsai, una libreria Python per il machine learning specifica per le timeseries, siamo riusciti ad addestrare il maniera semplice un modello in grado di fare prediction solide, che non commette errori gravi, e con un bassissimo costo computazionale e un ridotto tempo di training. Nonostante le dimensioni ridotte del dataset abbiamo ottenuto un modello che potrebbe affiancare la valu- tazione di un medico esperto nel settore. Riportando in unica tabella le metrice di valutazione dei modelli addestrati, notiamo come il MiniRocket Regressor e MiniRocket Classifier sono quelli che meglio predicono.

2.4           Studio di comparazione

In letteratura non abbiamo trovato un problema esattamente uguale a quello da noi affrontato.

Abbiamo, per`o, individuato un problema simile e un approccio alternativo per la valutazione tra due timeseries (vedasi sezione 0.3 sulla revisione della letteratura).

Siamo infatti riusciti ad individuare un paper riguardante uno studio che descrive la raccolta di dati e l’ottimizzazione di modelli applicati alla pose estimation nel- l’ambito della riabilitazione della parte inferiore del corpo. A partire dai dataset utilizzati si nota la prima grande differenza tra i due problemi: nel nostro caso abbiamo avuto a disposizione una quantit`a limitata di dati, corrispondente circa a 250/300 video per 5 esercizi di riabilitazione della parte superiore del corpo. Abbiamo poi diviso questi video in 30 frame per poter usufruire della tecnologia Movenet che ci ha permesso di estrarre i keypoint del corpo sui quali allenare i modelli (quindi un totale di ∼ 45 mila pose distintive). Nel caso di studio del paper

citato in precedenza invece si ha a disposizione 1.885.637 pose umane distintive

per 31 esercizi di riabilitazione della parte inferiore del corpo. Inoltre, i soggetti dei video del nostro studio sono dei pazienti dell’Istituto Ortopedico Rizzoli di Bologna; invece i soggetti dei video del paper in questione sono attori selezionati su base volontaria. In entrambi i casi gli esercizi sono stati condotti sotto la su- pervisione di un fisioterapista / medico ortopedico (o comunque un professionista del settore) che garantisse l’esecuzione corretta.

Inoltre, i video a nostra disposizione sono stati registrati con una singola videoca- mera e successivamente `e stato utilizzato Movenet per l’acquisizione dei marcatori; invece nel paper riportato sono state utilizzate 8 videocamere poste ad una deter- minata angolatura di visione e una nona per un’immagine incontaminata ed `e stato utilizzato il sistema di tracciamento Motive per la marcatura dei keypoint e la ricostruzione 3D dei corpi rigidi.

Anche i keypoint stessi rappresentano una differenza sostanziale, alcuni di quelli generati da Movenet non vengono invece individuati da Motive, e viceversa.

Infine, la differenza piu` importante risiede nell’utilizzo di diversi modelli di deep learning. In ogni caso anche lo scopo dello studio era leggermente diverso: mentre noi vogliamo riuscire a predire un punteggio da affiancare a un nuovo video di un qualche esercizio di riabilitazione fornitoci dall’utente, lo scopo degli autori del paper in questione risiede nell’ottimizzazione dei modelli a livello di costo compu- tazionale e di parametri inseriti in input.

Un approccio diverso per la valutazione della distanza di due timeseries `e quello utilizzare Dynamic Time Warping, associata all’uso dell’algoritmo kNN.

DTW consiste nel calcolare la distanza come la differenza tra ogni punto della

prima serie temporale e ogni punto della seconda, cercando di fare il miglior al- lineamento possibile tra le due. Questo approccio potrebbe essere rilevante per risolvere il problema di video di diverse durate, da noi gestito attraverso l’estrazio- ne di uno stesso numero di frame per ogni video. Infine, avendo quindi un modo per computare una certa distanza, intesa come ”misura della differenza” tra due ti- meseries, viene poi usato l’algoritmo di classificazione kNN (k nearest neighbours) per creare gruppi di timeseries simili.

3             Discussioni e Conclusioni

In conclusione crediamo che si possa effettivamente costruire un modello in grado di supportare e non sostituire la figura medica nella valutazione di esercizi di riabi- litazione. Integrare un modello predittivo come questo in una applicazione mobile vicina al paziente potrebbe permettere alle persone di fare esercizi ria- bilitativi a casa e, registrando un video di s`e stessi, avere immediatamente un feedback sulla valutazione dell’esercizio appena svolto.

Siamo soddisfatti del risultato raggiunto e crediamo che con un numero piu` ampio di video e con un maggior numero di frame estratti – quindi con un dataset piu` grande sia nella dimensione dei sample che in quella della lunghezza della serie temporale – sia effettivamente possibile abbassare ancora l’rmse / accuracy ed ottenere un modello predittivo migliore.

3.1           Limitazioni

Giudichiamo essere buono il livello di maturit`a della soluzione che abbiamo sviluppato. Crediamo che per raggiungere un risultato utilizzabile sia necessario rieseguire l’addestramento con un dataset piu` ampio, e soprattutto avere una va- lidazione da parte di medici esperti in materia.

Riguardo ai bias, riteniamo che l’estrazione dei keypoints dai video abbia per- messo di costruire modelli predittivi con una presenza di bias molto limitata. Ab- biamo notato che nel dataset di addestramento mancavano completamente video di persone di statura molto piu` alta o molto piu` bassa della media. Questo potrebbe dar luogo a valori di keypoints molto distanti da quelli del dataset di training e di conseguenza potrebbe portare ad eventuali risultati alterati o non attendibili.

E´ da considerare anche che i valori di RMSE e accuracy ottenuti dalla validazione dei singoli modelli potrebbero essere parzialmente distorti a causa della natura del dataset che conteneva molti video simili tra loro (sequenza di registrazione dello stesso set di esercizi).

Testare i risultati di bootstrap aggregation – bagging – tra modelli simili ad-

destrati con diversi split potrebbe dare come risultato prediction piu` accurate.

stabili e

Un’altra considerazione `e quella di comprendere se la velocit`a del movimento influenzi o meno il punteggio finale. Per come la vediamo noi sono principalmente l’ampiezza del movimento e la tecnica a definire se l’esercizio `e stato svolto corret-

tamente o meno, ma il rischio `e che video di esercizi svolti in maniera estremamente veloce o estremamente lenta potrebbero dare in output risultati alterati.

3.2           Spunti futuri

Abbiamo scelto l’approccio con MiniRocket che, grazie al suo basso costo compu- tazionale, ci ha permesso di fare diversi tentativi di training. Ci sono per`o diverse strade possibili, come abbiamo spiegato nell’analisi della letteratura.

Analizzando i dati, uno dei primi limiti incontrati `e stata la lunghezza delle time series, limitata nel nostro progetto ai 30 frames estratti dal video. Ci chiediamo se possa aver senso interpolare i video per poter estrarre piu` frame da ogni video, ad esempio, 200 frame per video, ed avere cos`ı una timeseries piu` lunga, densa e quindi ricca di informazioni.

Collegato allo spunto di cui sopra, ci chiediamo se sia possibile rimuovere qual- che keypoint dalla serie temporale, come ad esempio i keypoint della parte piu` bassa del corpo (che sono, perlomeno in questi esercizi, molto stabili e costanti per cui ininfluenti) al fine di ottenere un risultato con paragonabile o addirittura maggiore accuratezza, ma guadagnandone in termini di costo computazionale – tempo di training inferiore.

Riferimenti bibliografici

Szegedy et al. Liu W, Jia Y et al. (2015). Going deeper with convolutions. In: Proceedings of the IEEE conference on computer vision and pattern recognition, pp 1–9. url: https://ieeexplore.ieee.org/document/7298594.

Oguiza, Ignacio (2022). tsai – A state-of-the-art deep learning library for time series and sequential data. Github. url: https://github.com/timeseriesAI/tsai. RidgeRun (n.d.). A Developers Guide to Video Machine Learning & Video Deep

Learning. url: https://www.ridgerun.com/video-based-ai.

TensorFlow-Community (2018). Real-time Human Pose Estimation in the Browser with TensorFlow.js. url: https://blog.tensorflow.org/2018/05/real- time-human-pose-estimation-in.html.

— (2021). Next-Generation Pose Detection with MoveNet and TensorFlow.js. url: https : / / blog . tensorflow . org / 2021 / 05 / next – generation – pose – detection-with-movenet-and-tensorflowjs.html.

Volutimum (2021). Automatizzazione e sanit`a: un connubio efficace e funzionale.

url: https://www.voltimum.it/articolo/news-costruttori/automatizzazione- e.

Bhavika Panara, Ivelin Ivanov (2021). Comparing MoveNet to PoseNet for Person Fall Detection. url: https://blog.ambianic.ai/2021/09/02/movenet-vs- posenet-person-fall-detection.html.

MoveNet (2022). MoveNet: Ultra fast and accurate pose detection model. url:

https://www.tensorflow.org/hub/tutorials/movenet?hl=en.

Geeks4Geeks (n.d.). ML – Voting Classifier using Sklearn. url: https://www. geeksforgeeks.org/ml-voting-classifier-using-sklearn/.

Wang, Chenxi et al. (2021). “Lower Body Rehabilitation Dataset and Model Op- timization”. In: 2021 IEEE International Conference on Multimedia and Expo (ICME), pp. 1–6. doi: 10.1109/ICME51207.2021.9428432.

Phillips, Trevor (2019). Exercise Classification with Machine Learning (Part I). url: https://towardsdatascience.com/exercise-classification-with- machine-learning-part-i-7cc336ef2e01.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *