PFM - Sports Data Campus
PFM - Sports Data Campus
PFM - Sports Data Campus
Computer Vision
en el mundo del deporte
3. Flujo de trabajo 8
7. Conclusiones 44
Bibliografı́a 46
5
Capı́tulo 1
6
Capı́tulo 2
Analizado el estado del arte y las posibilidades que nos puede ofrecer es-
ta tecnologı́a en el mundo del deporte, este proyecto tiene como objetivo la
elaboración de una herramienta automática de detección e identifi-
cación de jugadores mediante una recogida óptima de información
sobre la posición de éstos usando técnicas de Computer Vision.
Aunque a lo largo del proyecto se elaborarán ejemplos de videos referidos a
fútbol y, en su mayorı́a, baloncesto, el proyecto está pensado para ser adapa-
tado, con sus peculiaridades, a la identificación y seguimiento de jugadores
de cualquier otro deporte.
7
Capı́tulo 3
Flujo de trabajo
8
En la anterior figura quedan reflejadas, a alto nivel, cada una de las etapas
en las que se divide el proyecto. Podemos dividir el proyecto en tres etapas:
9
Capı́tulo 4
Es bien conocido que Python y R son dos de los lenguajes más utilizados
para el análsis de datos y su procesamiento mediante técnicas de data mining
y business intelligence. En este caso, en cuanto al desarrollo de la herramienta,
he optado por el lenguaje de programación Python que, como bien define
wikipedia:
Las dos razones principales que han motivado un creciente uso de Python
en el campo de análisis de datos son:
10
ces de OpenCV se convierten a y desde matrices Numpy. Tambien
será muy importante en este proyecto la librerı́a imutils que con-
tiene una serie de funciones para facilitar las funciones básicas de
procesamiento de imágenes como traducción, rotación, cambio de
ramaño, esqueletización y visualización de imágenes Matplotlib
con OpenCV.
Streamlit es una librerı́a de Python que facilita la creación e
intercambio de aplicaciones web personalizadas para el aprendi-
zaje automático y la ciencia de datos. Tanto para el desarrollo de
la aplicación web como su posterior despliegue, utilizaremos esta
librerı́a de Python.
11
Capı́tulo 5
Comenzamos en este capı́tulo a describir cada una de las etapas del flujo
de trabajo definido (3.1) con el objetivo de desarrollar un algoritmo que
detecte los movimientos de 10 jugadores diferentes a partir de un
video de baloncesto. Posteriormente, podremos generar los datos de trac-
king de las posiciones (x,y) de los jugadores y proyectarlas en una cancha de
baloncesto que ayude a su interpretabilidad.
12
cancha de baloncesto. Para simplicar el proceso, esta imagen resultante
(5.1), donde se proyectarán las posiciones de los jugadores detectados,
es de mitad de cancha por lo que los videos de entrada deben
ser tomados por la cámara situada en la mitad derecha de la
cancha de baloncesto. En otras palabras, nos quedaremos con los
clips de videos que tienen lugar en la canasta derecha.
13
5.2. Algoritmo de detección e identificación
de jugadores
5.2.1. Court Detection
Entre las numerosas limitaciones que ha resuelto la visión artificial o
computer vision, se encuentra la posibilidad de distinguir entre el suelo, los
jugadores y otros objetos en primer plano tras un correcto procesamiento
de las imágenes. Métodos como la detección, y posterior eliminación, del
suelo basada en los colores de la cancha de baloncesto permiten que los
modelos detecten las zonas de un terreno de juego, rastreen a los jugadores
en movimiento e identifiquen la pelota.
A continuación, mostramos una imagen que recoge cada uno de las eta-
pas llevadas a cabo para obtener la detección del campo y su tratamiento
como fondo para detectar el movimiento de los jugadores en primer plano
segmentados contra el fondo de la imagen:
14
Para cada uno de los frames del video de entrada, el proceso a realizar
comprende los siguientes pasos:
15
establecer una correspondencia (homografı́a) entre el frame y la imagen
(5.1) que nos permita proyectar las posiciones de los jugadores.
16
y, por lo tanto, no necesitamos entrenar nuestro propio clasificador SVM y
detector HOG. Estas implementaciones se entrenan utilizando el clasificador
de aprendizaje automático Linear SVM, tal y como comentamos anterior-
mente, y la diferencia entre las distintas implementaciones se encuentra en
el conjunto de datos utilizado para su aprendizaje.
En el paper [1], los autores dicen que testearon el clasificador Linear SVM
sobre dos conjuntos de datos diferentes: MIT pedestrian, que contiene 509
imágenes de entrenamiento y 200 de prueba de peatones en escenas de ciudad,
y INRIA, que contiene 1805 imágenes de 64x128 de humanos recortadas de
un conjunto de fotos personales. Ası́ pues, la versión del detector de personas
de OpenCV utilizada en el proyecto es la que usa estos mismos conjuntos de
datos: cv2.HOGDescriptor getDefaultPeopleDetector()4 .
4
Otra implementación del método HOG + LinearSVM de OpenCV es la que utiliza
el dataset ”Daimler”, imágenes de tamaño 48x96, para entrenar el detector de personas,
cv2.HOGDescriptor getDaimlerPeopleDetector().
17
Es conveniente e interesante hablar, aunque sea brevemente, de los prin-
cipales hiperparámetros de la función detectMultiScale():
Figura 5.3: Precisión en la detección de jugadores usando el método HOG + Linear SVM
18
5.2.3. Player Team Detection
En el apartado anterior hemos hablado de cómo a partir del detector HOG
somos capaces de detectar las personas en una imagen de video aportando
además su confianza en la detección. El siguiente paso es clasificar cada una
de las regiones de la imagen original identificada como persona en uno de
los equipos de baloncesto del video original utilizando el color de sus camise-
tas. Este proceso de detección de jugadores usando la detección de
personas a través del método HOG es lo que hemos denominado
Player Team Detection.
Dependiendo del color de los dos equipos, podrı́a ser necesario definir más
de un umbral para permitir la distinción entre otros elementos que podrı́an
19
aparecer en la imagen (por ejemplo, naranja y el suelo). Una vez definidos
estos umbrales y, a partir de unas expresiones lógicas, ya estamos en condi-
ciones de identificar a los jugadores de cada equipo de baloncesto.
Figura 5.5: Ejemplos de clasificación del bounding box del detector HOG
En los ejemplos anteriores, observamos que dentro de cada caja HOG sólo
hay un único color de camiseta por lo que, si el umbral en el espacio HSV
20
definido para ese color es correcto, la clasificación serı́a clara. Pero, ¿qué
ocurrirı́a si el bounding box detectado captura pixeles de equipos
diferentes? Es lo que comentamos en el punto 4 anterior; en ese caso, habrı́a
que contar los pı́xeles que no son negros una vez aplicada la máscara para
los umbrales de cada color y quedarnos con el color con un conteo mayor.
Mostramos el ejemplo de la clasificación del jugador del Real Madrid Sergio
Llull en el partido de Euroliga FC Barcelona - Real Madrid:
21
Por último, mostramos la imagen final del proceso de Player Team
Detection sobre un frame del partido FC Barcelona - Alba Berlin donde
se observan los jugadores de cada equipo segmentados por el color de su
camiseta tras el proceso descrito:
Por lo tanto, una vez detectado y segmentado cada jugador en uno de los
dos equipos usando el método comentado en el apartado anterior, almacena-
mos frame-by-frame las posiciones de cada jugador.
22
Homografı́a: transformación proyectiva de las posiciones de los ju-
gadores en imagen 2D
En geometrı́a, se denomina homografı́a a toda transformación proyectiva
(una matriz de dimensiones 3x3) que determina una correspondencia entre
dos figuras geométricas planas, de forma que a cada uno de los puntos y las
rectas de una de ellas le corresponden, respectivamente, un punto y una recta
de la otra.
23
¿Cómo calcularemos estos puntos de cada frame original? El
objetivo pues, serı́a calcular las coordenadas (x, y) descritas en el anterior
párrafo. Aunque, a priori, puede parecer laborioso y complejo, el trabajo ya
prácticamente está realizado. Recordamos que el primero de los pasos de la
algoritmia desarrollada en este proceso fue la detección del campo a partir de
los métodos Canny y HoughLines. Recuperando la información extraida de
estos transformadores, calculamos las coordenadas (x, y) que hacen referencia
a las esquinas buscadas (con más o menos precisión dependiendo del frame)
y ya tendrı́amos los 4 puntos de cada imagen del frame. Para la segunda
imagen (5.1), al tratarse de una imagen estática, las coordenadas (x, y) de
las esquinas se mantiene constante y es fácil calcularlas dibujando esta imagen
con la librerı́a de visualización de Python, matplotlib.
24
Mapas de calor a partir de la proyección 2D
Una de las aplicaciones directas de la proyección 2D de las coordenadas
de los jugadores, a partir de la detección óptima de los jugadores en el video,
es la elaboración de mapas de acción de los jugadores a medida que
el video avanza explicando ası́ los movimientos del equipo en su conjunto
o pudiendo individualizar el análisis en algún jugador en particular.
25
estadounidense del FC Barcelona y vemos como coincide con las apreciaciones
obtenidas a partir del análisis del video.
26
mapa de las posiciones ocupadas por cada uno de los jugadores de cada equipo
en El Clásico español. En el caso del Barcelona, además del movimiento
descrito en el párrafo anterior, el resto de jugadores se mantienen en su
posición por defecto, es decir, el base (Heurtel) dando opción de pase al
poseedor del balón, el alero (Abrines) abierto en la esquina y el ala-pivot
(Sergi Martinez) atento a un posible rebote. En cuanto al conjunto de Pablo
Lasso, cada uno con su respectiva marca destacando el desplazamiento del
pivot (Garuba) ante el movimiento de Davies para lanzar desde los 4m.
Diagrama de Voronoi
La elaboración del diagrama de Vo-
ronoi sobre la proyección 2D de las
coordenadas de los jugadores es otra de
las aplicaciones de interés que ayudan a en-
tender el comportamiento de los equipos so-
bre la cancha de baloncesto analizando las
regiones del campo que ocupan ambos equi-
pos.
27
a cada punto se le asigna una región del plano formada por los puntos que
son más cercanos a él que a ninguno de los otros objetos.
28
Voronoi.
Con este apartado hemos terminado de analizar cada una de las etapas
de la algoritmia desarrollada en el proyecto.
29
Figura 5.18: Desarrollo y despliegue de basketCV
Una vez desarrollados los ficheros de código que van a conformar la apli-
cación, se desarrolla el fichero app.py, el fichero de nuestra aplicación, es
decir, el fichero que ejecutaremos cuando queramos desplegar la aplicación.
En este fichero es donde utilizaremos la librerı́a de Python streamlit que
nos permitirá ir diseñando la interfaz (UI) de la aplicación y, junto a los
ficheros de código anteriores, la lógica e inteligencia de la aplicación.
30
descargarse utilizando apt-get, debe crearse el fichero packages.txt con
cada una de estas librerı́as (sin indicar su versión).
31
5.3.2. Despliegue de la herramienta
Streamlit Sharing
Una vez creada la aplicación con streamlit, es el momento de desplegar-
la y compartirla públicamente. Usaremos para ello Streamlit Sharing, la
mejor solución si la aplicación se encuentra en un repositorio GitHub público
y, además, queremos que sea accesible por cualquiera.
32
Y en cuestión de segundos, la aplicación basketCV5 estarı́a desplegada
observando los logs generados en la pestaña Manage app.
Visualización de la aplicación
A lo largo de esta sección analizaremos cada una de las posibilidades que
nos ofrece esta aplicación hablando de sus componentes y mostrando, de for-
ma combinada, los caso de uso de videos MP4 de canastas de los partidos de
Euroliga Alba Berlin - FC Barcelona y FC Barcelona - Real Madrid.
Menú principal
33
Demo
Además del parámetro que indica el partido del que procede el video, el
resto de parámetros corresponden a colores en el espacio RGB del rival
34
del FC Barcelona necesarios para los procesos de detección, clasificación
y proyección de jugadores (tal y como se ha explicado en la memoria).
35
Figura 5.26: Control y estado de la ejecución del algoritmo
Court Detection
People Detection
36
delo preentrenado HOG + SVM se capturarán las personas en cada frame
indicando el grado de confianza en la detección.
37
posteriormente, clasificarlos en uno de los dos equipos que disputan el partido
de baloncesto. Este algoritmo es el que tiene el nombre de Player Team
Detection y que está disponible en Algorithm.
Player Tracking
38
Figura 5.31: Player Tracking
Uno de los inputs que se deben introducir para hacer uso de la herramienta
es un fichero JSON con la definición de los valores BGR6 de los umbrales del
color de la camiseta de los jugadores. Por lo tanto, la utilización de la
herramienta requiere de cierto conocimiento técnico por parte del
usuario ya que la detección y clasificación de jugadores se basa en
una detección de colores.
6
https://www.rapidtables.com/web/color/RGB_Color.html
39
Por último, y ya comentado a lo largo de la memoria, los videos de en-
trada a la herramienta deben corresponder a jugadas que tuvieron
lugar en la canasta derecha de la cancha para un correcto y completo
uso de la herramienta. En el algoritmo de proyección de las coordenadas de
los jugadores la imagen de salida corresponde a la mitad de cancha derecha
del parquet y eso implica que los videos de entrada recojan jugadas toma-
das desde ese ángulo facilitando la proyección 2D ası́ como el algoritmo de
detección del campo.
40
Capı́tulo 6
Entre los los motivos que hicieron que el enfoque inicial pensado del pro-
yecto cambiase el más importante fue que el caso de estudio del balon-
cesto nos permitı́a abarcar mucha más algoritmia, aplicaciones e
interpretabilidad. A partir de videos públicos, en el baloncesto nos pode-
mos quedar con una selección muy amplia de clips o jugadas donde la toma de
la cámara es similar, posibilitando la proyección 2D de las coordenadas de los
jugadores en una misma imagen del campo que nos permitan, por ejemplo,
elaborar mapas de calor de una jugada. Esto no es posible en el mundo del
fútbol a menos que se disponga de videos a partir de una cámara panorámica
que de una visión global de todo el campo; por ejemplo, la cámara táctica
de Mediacoach que nos permite observar a los 20 jugadores de campo.
41
Sin embaro, tal y como se ha comentado en la memoria, este proyecto y,
por consiguiente, la aplicación desarrollada y desplegada en streamlit, está
pensado para ser adaptado a cualquier otro deporte. Se trata de una solución
que actualmente aplica al mundo del baloncesto pero que, con pequeños
ajustes atendiendo al deporte del video de entrada y a otros condicionantes
como la tipologı́a del video, podrá aplicarse a cualquier otro deporte.
42
Una vez convertida la imagen a escala de grises, eliminando toda la infor-
mación de color y todo objeto de la imagen que no sea de interés, el siguiente
paso es la detección de jugadores en el campo y su clasificación en
uno de los dos equipos.
Para cada uno de los contornos conoceremos sus dimensiones (x, y, altura
y anchura) y nos quedaremos con aquellos que cumplan con las dimensiones
habituales de una persona eliminando cualquier otro contorno detectado.
Una vez detectadas las personas sobre el frame del video, el siguiente paso
es clasificarlo en uno de los dos equipos. El procedimiento es el mismo que
en el caso del baloncesto: clasificación por colores de camiseta a partir
de definición de colores en el espacio HSV.
7
https://docs.opencv.org/master/d4/d73/tutorial_py_contours_begin.html
43
Capı́tulo 7
Conclusiones
El último capı́tulo del trabajo debe contener una última reflexión final
resumiendo algunos de los puntos más importantes abordados en el trabajo
ası́ como enunciar los próximos pasos en la elaboración de este proyecto.
44
detección de personas, como en la segmentación de color mediante
la definición de umbrales en el espacio de colores BGR y HSV.
45
Bibliografı́a
[1] Navneet Dalal, Bill Triggs (2005). Histograms of oriented gradients for
human detection. IEEE Computer Society Conference on Computer Vision
and Pattern Recognition.
[2] Scott Parsons, Jason Rogers (2013). Basketball Player Tracking and Au-
tomated Analysis. EE368 final proyect.
[3] Matthew Wilson, Jerry Giese (2013). Basketball Localization and Loca-
tion Prediction. EE368 final project.
[4] Jianhui Chen, Fangrui Zhu, James J. Little (2018). A Two-point Method
for PTZ Camera Calibration in Sports. Cornell University.
[5] Emad Monier, Per Wilhelm, Ulrich Rückert (2009). A computer vision
based tracking system for indoor team sports. The fourth international
conference on intelligent computing and information systems.
[6] Satoshi Suzuki and others (1985). Topological structural analysis of digi-
tized binary images by border following. Computer Vision, Graphics, and
Image Processing, 30(1):32–46.
[7] Wei-Lwun Lu, Jo-Anne Ting, James J. Little, Kevin P. Murphy (2011).
Learning to Track and Identify Players from Broadcast Sports Videos.
IEEE transactions on pattern analysis and machine intelligence.
[8] Graham Thomas, Rikke Gade, Thomas Moeslund, Adrian Hilton (2017).
Computer vision for sports: Current applications and research topics. Com-
puter Vision and Image Understanding, 159, 3-18.
[9] Pei-Chih Wen, Wei-Chih Cheng, Yu-Shuen Wang, Hung-Kuo Chu, Nick
C. Tang, Hong-Yuan Mark Liao (2016). Court Reconstruction for Camera
Calibration in Broadcast Basketball Videos. IEEE Transactions on Visua-
lization and Computer Graphics.
46