Computer vision e machine learning per il tracking di una palla in ambito sportivo
by Davide Giuffrida
Obiettivi
Il progetto di Davide Giuffrida nasce dalla necessità di una startup Pavese di estrarre dati automaticamente dalle riprese di partite di basket. Tra i dati ritenuti più interessanti ci sono quelli riguardanti la posizione del pallone in ogni istante del match. Queste informazioni, unite al tracciamento della posizione dei giocatori, permettono di analizzare varfi aspetti dell’incontro, come ad esempio la buona riuscita delle tattiche di gioco.
Lo scopo del progetto è quindi quello di realizzare un sistema non intrusivo in grado di riconoscere e tracciare un pallone da basket regolamentare. Il requisito di non intrusività esclude la possibilità di intervenire “attivamente” sul campo (tramite ad esempio l’applicazione di sensori al pallone). Ci si concentra invece su immagini acquisite durante la partita.
Una volta ottenuto il video di una sequenza di gioco, il procedimento consiste nell’applicare ai vari frame una serie di algoritmi di visione artificiale per riconoscere il pallone.
L’implementazione utilizza il linguaggio Python e fa uso della libreria OpenCV.
Preprocessing
Il primo passo dell’elaborazione consiste nel cosiddetto cleaning e preprocessing. Vengono applicati dei filtri alle immagini per scartare ciò che sicuramente non è associabile ad un pallone. Sostanzialmente i processi sono due:
- La rimozione dello sfondo permette di “cancellare” dall’immagine i pixel “statici”. Un pixel viene definito statico se ha lo stesso colore in due frame successivi.
- Tramite la rimozione del colore viene eliminato dalle immagini ogni pixel il cui colore è lontano dal colore del pallone.
Rilevazione
Il secondo step prevede l’impiego di algoritmi di detection per stimare dove, tra i pixel “sopravvissuti” al preprocessing, potrebbe trovarsi il pallone. Tramite l’implementazione dell’algoritmo Circle Hough transform è possibile stabilire degli oggetti come “candidati palloni” in funzione della loro forma circolare. Diversi oggetti presenti nell’immagine possono ricordare una palla se ci si basa solamente sul colore e la forma circolare. Basti ad esempio pensare alla spalla dei giocatori in canottiera.
A questo punto viene applicato un algoritmo di classificazione basato su machine learning chiamato Support Vector Machine (SVM). Una SVM viene inizialmente allenata a riconoscere le caratteristiche di un pallone. Il suo compito sarà quello di stabilire quali tra i candidati è davvero il pallone.
Tracciamento
L’ultimo passo consiste nell’associare le posizioni del pallone in frame successivi del video. Per far ciò viene sfruttato un algoritmo di tracciamento chiamato particle filter.
Sostanzialmente, il particle filter “pesa” zone del frame a campione cercando di stimare quale potrebbe contenere il pallone in funzione dell’ultima coordinata nota. L’applicazione reiterata di questi step permette di stimare con ottima precisione la posizione del pallone in ogni frame del video.
Le coordinate stimate vengono esportate in un file con formato standard CSV (Comma Separated Values), in modo da renderli disponibili per successive elaborazioni.
Risultati
I risultati ottenuti sono visibili nel video. Il quadrato verde rappresenta la vera posizione del pallone. Il quadrato blu invece è la posizione stimata del pallone, ottenuta con il procedimento illustrato in questo articolo. I due quadrati si sovrappongono mediamente per l'85% della loro superficie, questo è una indicazione della buona qualità del riconoscimento del pallone nella sequenza di immagini che costituiscono il video.