PFM - Sports Data Campus

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 46

SPORTS DATA CAMPUS

Universidad Católica de Murcia

Computer Vision
en el mundo del deporte

Javier Fernández Rodrı́guez


Proyecto Fin de Máster
Computer Vision
en el mundo del deporte

Memoria presentada por


Javier Fernández Rodrı́guez
como Proyecto Fin de Máster
del Máster de Big Data Deportivo
del Sports Data Campus junto con la UCAM

Madrid, Febrero 2021


Índice general

1. Estado del arte 6

2. Definición del proyecto 7

3. Flujo de trabajo 8

4. Framework y librerı́as a utilizar 10

5. Computer Vision aplicado al baloncesto 12


5.1. Videos de entrada . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.2. Algoritmo de detección e identificación de jugadores . . . . . . 14
5.2.1. Court Detection . . . . . . . . . . . . . . . . . . . . . . 14
5.2.2. People Detection . . . . . . . . . . . . . . . . . . . . . 16
5.2.3. Player Team Detection . . . . . . . . . . . . . . . . . . 19
5.2.4. Player Tracking . . . . . . . . . . . . . . . . . . . . . . 22
5.3. Aplicación basketCV . . . . . . . . . . . . . . . . . . . . . . . 29
5.3.1. Desarrollo de la herramienta . . . . . . . . . . . . . . . 30
5.3.2. Despliegue de la herramienta . . . . . . . . . . . . . . . 32
5.3.3. Limitaciones de la herramienta . . . . . . . . . . . . . 39

6. Computer Vision aplicado al fútbol 41


6.1. Diferencias entre baloncesto y fútbol . . . . . . . . . . . . . . 41
6.2. Caso de estudio . . . . . . . . . . . . . . . . . . . . . . . . . . 42

7. Conclusiones 44

Bibliografı́a 46

5
Capı́tulo 1

Estado del arte

La importancia de la analı́tica se presenta ya como una realidad en el


mundo del deporte y son cada vez más los ejemplos en los que el dato ocu-
pa un lugar imprescindible en la toma de decisiones por parte de perfiles
profesionales.

En la mayorı́a de los casos, la analı́tica llevada a cabo en el sector deporti-


vo es una analı́tica descriptiva, formando el dato y la experiencia profesional
un modelo mixto para una toma de decisiones efectiva. Se trata de un método
cada vez más utilizado en el mundo del deporte, recogiendo estadı́sticas con
el fin de elaborar planes a corto/medio plazo que permitan mejorar el rendi-
miento de los deportistas o, simplemente, establecer comparativas utilizando
algunos parámetros para entender ciertos aspectos del juego que ayuden a
una toma de decisiones más rápida.

En este trabajo fin de Máster, abandonaremos la parte más descriptiva


e inmediata del análisis en el deporte para profundizar sobre la aplicabili-
dad que puede tener la visión artificial en este sector tan atractivo. La
visión artificial, o computer vision, es una rama de la Inteligencia
Artificial que incluye métodos para adquirir, procesar, analizar y
comprender el contenido de imágenes. En el mundo del deporte, la In-
teligencia Artificial era prácticamente desconocida hace menos de cinco años;
actualmente, algoritmos de aprendizaje profundo (deep learning) y técni-
cas de computer vision están empezando a tener sus aplicaciones en la
industria del deporte.

6
Capı́tulo 2

Definición del proyecto

La mayoria de los deportes implican movimientos rápidos y precisos que,


a veces, pueden resultar difı́ciles de analizar con gran detalle para entre-
nadores y analistas. Los datos y la información obtenida de las imágenes
requieren que el analista dedique muchas horas a anotar y recopilar los even-
tos manualmente mientras se reproduce el video. Es en este contexto donde
la aplicación de técnicas de computer vision empiezan a cobrar importancia
ofreciendo nuevas formas de recopilar la información mediante sistemas au-
tomatizados que permiten segmentar a cada jugador de interés y seguir su
desempeño a lo largo del video.

Son muchas las aplicaciones que puede tener el seguimiento e identifica-


ción automática de los jugadores sobre el terreno de juego. Desde el punto de
vista del cuerpo técnico, por ejemplo, esta tecnologı́a permitirı́a identificar
la formación y estrategia del oponente con el fin de analizar sus fortalezas y
debilidades.

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

Una vez definido y entendido el objetivo del proyecto, el siguiente paso es


elaborar un plan de trabajo que ayude a alcanzar ese objetivo. Generalmente,
es apropiado destinar cierto tiempo a entender la magnitud del proyecto y la
solución a alcanzar y, una vez que se tiene claro el flujo de trabajo, comenzar
a elaborar la solución.

En el capı́tulo anterior hemos hablado de que el proyecto se construirı́a


sobre videos de fútbol y baloncesto, sin embargo, el mayor peso del proyecto
se ha destinado a detectar e identificar jugadores en la cancha de baloncesto.
Tanto el objetivo como la algoritmia desarrollada es común en ambos enfo-
ques, sin embargo, el caso de estudio de baloncesto nos permitı́a abarcar más
aplicaciones a partir de la recopilación de la posición (x,y) de los jugadores.
El motivo se debe a una mayor sencillez a la hora de procesar los frames del
video puesto que todos partı́an de una misma posición de la cámara lo que
facilitaba los procesos de detección e identificación de jugadores, ası́ como
otros objetivos a alcanzar que se comentarán en capı́tulos posteriores.

Por lo tanto, comentaremos de manera más detallada el caso de uso apli-


cado al mundo del baloncesto y sobre la que la herramienta automática está
desarrollada y, en un capı́tulo posterior, hablaremos del caso de estudio apli-
cado al mundo del fútbol.

Figura 3.1: Etapas del proyecto

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:

Entrada. Es el canal de entrada (input) a la herramienta, es decir, los


datos a partir de los cuales se elaborará la algoritmia.

Algoritmia. Una vez leido y procesado frame-by-frame el video de en-


trada, se elaborán diferentes algoritmias con el objetivo de detectar a
los jugadores en la cancha de baloncesto distinguiendo al equipo al que
pertenecen. Una vez detectados los jugadores, utilizaremos esta infor-
mación para nuevas aplicaciones como, por ejemplo, mapas de calor.

Despliegue. Desarrollada la algoritmia, prepararemos una aplicación


completamente automática donde la única entrada a la herramienta
será un video, además de un fichero de configuración de parámetros.
La herramienta procesará la información de entrada, localizará e iden-
tificará a los jugadores y calculará su posición en la cancha.

En capı́tulos posteriores, hablaremos de cada una de ellas, tanto de forma


teórica como práctica, incorporando ejemplos de cada una de las subetapas.

9
Capı́tulo 4

Framework y librerı́as a utilizar

La finalidad de este proyecto consiste en aplicar técnicas de visión artificial


(computer vision) que permitan un rastreo óptimo de los movimientos de los
jugadores a partir de un video de un partido de baloncesto o fútbol.

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:

“Es un lenguaje de programación interpretado y multiparadigma, ya que


soporta orientación a objetos, programación imperativa y, en menor medida,
programación funcional. Usa tipado dinámico y es multiplataforma”

Las dos razones principales que han motivado un creciente uso de Python
en el campo de análisis de datos son:

1. Las numerosas librerı́as creadas para esta finalidad. A continuación


enumeramos aquellas librerias fundamentales que se han utilizado para
las pruebas experimentales en este trabajo:

Numpy y Pandas que implementan funciones para cálculos ma-


temáticos y estadı́sticos.
OpenCV es una de las librerı́as más utilizadas para resolver pro-
blemas de computer vision y, por consiguiente, la libreria a par-
tir de la cuál se construye este proyecto fin de Máster. OpenCV-
Python 1 hace uso de Numpy ya que todas las estructuras de matri-
1
https://docs.opencv.org/master/d6/d00/tutorial_py_root.html

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.

Figura 4.1: Librerias de Python fundamentales del proyecto

2. Su integración con aplicaciones como MongoDB (base de datos no re-


lacionales), Hadoop o Pentaho.

Todo ello, unido a su fácil y rápida curva de aprendizaje y a su versa-


tilidad, hacen de Python un lenguaje de gran calidad para los analistas de
datos.

11
Capı́tulo 5

Computer Vision aplicado al


baloncesto

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.

5.1. Videos de entrada


El conjunto de datos, la materia prima del proyecto, es la base de todo
proyecto de ciencia de datos. Si el conjunto de datos de entrada no cumple
con los requisitos mı́nimos impuestos por el cientı́fico de datos que elabora
el proyecto, la algoritmia desarrollada y los resultados obtenidos no serán los
esperados.

En este proyecto en particular, se han considerado distintos videos


de canastas del FC Barcelona de Baloncesto en diferentes partidos
de la Euroliga. El hecho de considerar videos de diferentes partidos au-
menta el éxito de la herramienta al convertirla en generalizable y aplicable a
cualquier input, detectando jugadores de diferentes equipos.

Es importante mencionar algunos de los requisitos que cumple la herra-


mienta desarrollada en términos de tipologı́a de videos de entrada:
1. Una de las aplicaciones directas de la herramienta es la proyección
de las posiciones de los jugadores identificados en una imagen de una

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.

Figura 5.1: Imagen donde se proyectarán las posiciones de los jugadores

2. Otro de los requisitos que se han considerado para hacer el filtro de


videos en este proyecto es seleccionar aquellos videos en donde
seamos capaces de detectar el mayor número de lı́neas de la
cancha de baloncesto. Esto supondrá una precisión más alta del
algoritmo Court Detection y, por consiguiente, la proyección de las
posiciones de los jugadores en la cancha será más precisa.

Atendiendo a estas limitaciones o requisitos mı́nimos establecidos, ob-


servamos la diferencia entre considerar un clip de un video de baloncesto y
un clip de video de un partido de fútbol. En un partido de fútbol, no sere-
mos capaces de obtener diferentes clips de videos donde la cámara sea fija
y por tanto podamos proyectar las posiciones de los futbolistas en un fondo
(campo de fútbol) común. Esto sı́ es posible en el baloncesto donde las dife-
rentes tomas que puede tomar una cámara son más limitadas y nos permite,
por tanto, esta tarea de proyección o mapeo de posiciones sobre una misma
imagen final.

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.

Bajo esta idea reside el objetivo de la primera algoritmia desarrollada:


detección del campo de baloncesto en los frames del video. De esta
forma, podremos tratar la cancha de baloncesto como el fondo de la imagen
o fotograma del video, donde los jugadores y los objetos se mueven frente a
él.

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:

Figura 5.2: Detección y elimnación del suelo

14
Para cada uno de los frames del video de entrada, el proceso a realizar
comprende los siguientes pasos:

1. Conversión de la imagen RGB a HSV. Esta conversión es im-


prescindible ya que los componentes R,G y B del color de un objeto
en una imagen digital están correlacionadas con la cantidad de luz que
incide en el objeto y, por lo tanto, esto dificulta la discriminación de
los objetos. Por otro lado, el espacio de color HSV (hue, saturation,
value) abstrae el color separándolo de la saturación y la iluminación.
En OpenCv, el rango de valores para estos parámetros es 0-179, 0-255
y 0-255, respectivamente.

2. Definición de máscara para identificar el campo. Definidos los


rangos HSV del color de la cancha de baloncesto del clip de video,
creamos una máscara que convierte la imagen en un modelo binario
dependiendo de si se ha detectado un objeto según el rango de valores
de pı́xeles en el espacio de color HSV.

3. Conversión de la imagen a escala de grises. Esta etapa, ası́ como


otros procedimientos como la erosión y dilatación de la imagen, tiene
por objetivo la eliminación de objetos que no estén relacionados con la
cancha de baloncesto. De esta forma, eliminamos toda la información
de color, quedándonos con la luminancia de cada pixel.

4. Detección del campo: Canny Edge Detection y HoughLines


Transformation2 . Estos dos métodos de detección de formas nos per-
miten detectar las lı́neas de la imagen. El detector Canny se utiliza
para detectar bordes, ası́ como para aumentar el contraste y eliminar el
ruido de la imagen. Por otro lado, el método HoughLines, que utiliza
el transformador Hough, se utiliza para determinar si esos bordes son
lı́neas o no. Es importante indicar que este transformador requiere que
los bordes se detecten bien (ası́ como una previa eliminación del ruido
de la imagen) para ser eficiente y proporcionar resultados significativos.
Es por esta razón que la combinación de ambos métodos es primordial
en este proceso.

Una detección precisa de la cancha de baloncesto no sólo nos permitirá


detectar el movimiento de los jugadores utilizando el campo como fondo
de la imagen sino que, recopilando las posiciones (x,y) usando los métodos
descritos, podremos determinar los bordes del campo y, por consiguiente,
2
https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/
py_imgproc/py_houghlines/py_houghlines.html

15
establecer una correspondencia (homografı́a) entre el frame y la imagen
(5.1) que nos permita proyectar las posiciones de los jugadores.

5.2.2. People Detection


El siguiente paso del algoritmo es la detección de personas en la
imagen. Una vez convertida la imagen a escala de grises, eliminando toda
la información de color y todo objeto de la imagen que no sea de interés,
aplicaremos el modelo preentrenado HOG + Linear SVM (existente en la
librerı́a de Python OpenCV ), basado en el método Dalal y Triggs [1], para
realizar la detección de personas en las secuencias del video.

Histogram of oriented gradients (HOG) + SVM


La mayorı́a de los métodos para la detección de personas se dividen en
dos grupos: técnicas de extracción de caracterı́sticas en la imagen y técni-
cas de clasificación de las imágenes de acuerdo con estas caracterı́sticas. El
método HOG (Histograms of oriented gradients) es una técnica
de extracción de caracterı́sticas para la detección de objetos. Su
esencia reside en que la forma de un objeto en una imagen se puede describir
mediante la distribución de intensidad de los gradientes. La gran ventaja de
un detector de objetos usando descriptores HOG es que es invariante a los
cambios de rotación, traslación, escala e iluminación.

Después de usar los descriptores HOG, utilizaremos el modelo de apren-


dizaje automático supervisado SVM (Support Vector Machines) en la etapa
de clasificación. Al resultar difı́cil establecer caracterı́sticas definidas para
los histogramas con el fin de detectar un determinado objeto, este tipo de
clasificadores ayudarán a la hora de identificar un objeto deseado en una
imagen. Dadas las caracterı́sticas de dos objetos, el modelo SVM busca un
hiperplano que separe de manera óptima las caracterı́sticas de un objeto del
otro. Este modelo maximiza el margen de separación entre las dos clases, de
modo que un lado del hiperplano contiene todos los objetos de una clase y
el otro los otros objetos. Los vectores más cercanos al margen de separación
se denominan vectores de soporte y se utilizan para la clasificación.

Para este proyecto, utilizamos el detector HOG de OpenCV3 . La


principal razón de esta elección es que OpenCV tiene distintas implemen-
taciones de modelos de detección de personas entrenado sobre un dataset
3
https://docs.opencv.org/3.4/d5/d33/structcv_1_1HOGDescriptor.html

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 .

Es importante apuntar que, para esta aplicación en particular, detección


de jugadores de baloncesto, se espera que la precisión de los detectores HOG
sea menor que sobre el set de datos de entrenamiento (imágenes de peato-
nes) ya que los jugadores pueden caer, saltar o luchar por la pelota y, en
consecuencia, no serán detectados por el detector HOG.

Parámetros y precisión en la detección de personas

Una vez explicado el método a utilizar para la detección de personas,


hablaremos sobre algunos de los parámetros de interés del método, los outputs
y conclusiones que podemos extraer de esta algoritmia.

En Python, la detección de personas en las imágenes usando el descriptor


HOG se realiza haciendo una llamada al método detectMultiScale() de
este descriptor. Esta función genera dos elementos o salidas: las coordenadas
(x,y) del cuadro delimitador de cada persona en la imagen (rects) y el valor
de confianza devuelto por el SVM para cada detección (weights). Más en
exactitud, este último valor devuelto para cada detección indica la distancia
desde la muestra al hiperplano de separación del clasificador SVM. Por lo
tanto, una distancia mayor indica una confianza mayor en la clasificación, ya
que está más lejos de los vectores soporte que representan el margen entre
las distintas clases.

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():

padding. Indica el número de pı́xeles a evaluar en la ventana deslizante


del detector tanto de forma horizontal como vertical.

winStride. Define un tamaño de paso para que la ventana del detector


se mueva en dirección horizontal y vertical. Cuanto menor sea el tamaño
del paso, más detalles importantes y detallados seremos capaces de
capturar.

scale. Define el factor por el cual se cambia el tamaño de la imagen en


cada capa de una pirámide de imágenes. Un tamaño de escala menor
influirá en el número de capas de la pirámide de imágenes. Un valor más
pequeño producirá mejores resultados (sin embargo, un valor demasia-
do pequeño, puede hacer aumentar drásticamente la cantidad de falsos
positivos), pero también será demasiado costoso computacionalmente.

No existe un lı́mite superior para la distancia entre cada muestra y el


hiperplano de separación, por lo tanto, debemos definir los rangos para elegir
la confianza de los pesos. En este caso, se han elegido aquellos que dieron
mejores resultados. Mostramos un conjunto de imágenes resultantes de la
detección de las personas sobre las imágenes distinguiendo su confianza en
la detección del descriptor HOG + Linear SVM.

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.

Para esta detección de jugadores basada en el color de la camiseta hemos


partido de la detección previa de personas usando el detector HOG. Existen
numerosos estudios y proyectos [2], donde esta detección de jugadores podrı́a
llevarse a cabo en una imagen completa (sin restringirnos a la caja HOG de-
finida); sin embargo, el detector HOG mejora en gran medida el rendimiento
de esta detección de jugadores limitando el alcance a un número de juga-
dores. De esta forma, aplicando un detector HOG previo a la segmentación
por color de los jugadores, otros objetos que podrı́an tener el mismo color
que las camisetas de los jugadores (por ejemplo, detalles en el suelo) no se
detectarı́an.

Para realizar esta segmentación de jugadores por equipo hemos utilizado


umbrales en el espacio HSV. Como comentamos en un apartado anterior, la
elección del espacio HSV en vez del espacio RGB se debe al hecho de que
el HSV permite una mayor discriminación entre los cambios de color. Por
ejemplo, un color RGB implementado inicialmente obtendrı́a constantemente
falsos positivos dados por los reflejos en el suelo.

Figura 5.4: Plantilla para definir los umbrales HSV

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.

A continuación, comentamos cada una de las etapas a seguir en la clasi-


ficación de un jugador de baloncesto detectado por el método HOG en uno
de los equipos del partido. Ası́ pues, para cada una de las detecciones (cajas
HOG) del descriptor HOG:
1. Comprobamos que la caja HOG (bounding box resultante del método
detectMultiScale()) cumple con unas medidas (o tamaño) mı́nimas
que equivalgan a la detección de una persona. Por ejemplo, altura mayor
que anchura.
2. Realizamos un filtro de la imagen original para quedarnos con la parte
correspondiente a la caja HOG y convertimos la imagen de RGB a
HSV.
3. A partir de los umbrales definidos (inferior y superior) para cada uno
de los colores de cada equipo, definimos una máscara para cada color
y se la aplicamos a la caja HOG detectada.
4. Realizamos el conteo de pı́xeles no negros para cada una de las máscaras
de cada color aplicadas sobre la caja HOG y nos quedamos con el color
de máximo valor. Esta será nuestra clasificación y el color del bounding
box del detector HOG.
Mostramos, a continuación, algunos ejemplos de cómo se ha clasificado
el bounding box del detector HOG en uno de los equipos del partido 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:

Figura 5.6: Clasificación de Sergio Llull

Una vez mencionado, descrito e ilustrado el proceso a realizar en la cla-


sificación de la detección de personas en uno de los equipos, mostramos un
ejemplo completo de todo el flujo de trabajo de la algoritmia Algorithm
for Player and Player Tracking desarrollada hasta el momento a partir
de un frame del partido FC Barcelona - Alba Berlin:

Figura 5.7: Ilustración del proceso de clasificación de jugadores

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:

Figura 5.8: FC Barcelona vs Alba Berlin

5.2.4. Player Tracking


Uno de los principales objetivos a alcanzar por el computer vi-
sion aplicado al deporte es el seguimiento de los jugadores o player
tracking. Esto implica la detección de la posición de todos los jugadores en
un momento dado. El seguimiento de jugadores es un aspecto fundamental
para que los entrenadores ayuden a mejorar el rendimiento de sus equipos,
analizando su comportamiento o cómo se mueven sus jugadores en el campo.

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.

Almacenadas estas posiciones de los jugadores, el siguiente paso en el


proceso algoritmico desarrollado en este proyecto es la proyección de estas
posiciones en una imagen de un campo de baloncesto obteniendo ası́
un mapa en 2D de las posiciones de cada jugador distinguiendo el equipo al
que pertencen. Esta transformación proyectiva se denomina homografı́a.

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.

Aplicado a nuestro caso de estudio, el objetivo es encontrar una transfor-


mación que proyecte las posiciones de los jugadores detectados en la imagen
del video, en la imagen resultante de la cancha de baloncesto (5.1). Ma-
temáticamente: dados (x1 , y1 ) y (x2 , y2 ) puntos de la imagen del video y la
imagen resultante, respectivamente, y H una matriz de dimensiones 3x3, la
homografı́a H relaciona ambos puntos de las imagenes como sigue:
   
x1 x2
y1 = H y2 (5.1)
1 1

Definida la correspondencia entre los puntos de ambas imágenes, ¿cómo


calculamos esta homografı́a? Para calcular una homografı́a entre dos
imágenes, se debe conocer, al menos, 4 correspondencias de puntos entre las
dos imágenes. Posteriormente, la librerı́a de Python OpenCV utilizada en el
proyecto, estimará de manera robusta una homografı́a que se ajuste mejor a
todos los puntos correspondientes.

Para nuestro caso de estudio aplicado a la proyección de las posiciones


de los jugadores de baloncesto en la cancha, y teniendo en cuenta que la
imagen resultante (5.1) contiene la mitad de cancha derecha, la elección de
estos puntos está clara: la esquina inferior y superior derecha de la cancha
de baloncesto y el punto inferior y superior del medio campo.

Figura 5.9: Ejemplo de detección de puntos para calcular la homografı́a

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.

Es importante destacar que el cálculo de los 4 puntos en cada frame del


video es aproximado pues no en todas las imágenes es posible localizar la
esquina inferior y superior derecha de la cancha o la lı́nea de mitad de campo
de la cancha de baloncesto, por ejemplo.

Proyección de la posición de los jugadores


Calculada esta homografı́a (matriz 3x3) a partir de la correspondencia de
puntos entre el frame del video y la imagen resultante, el siguiente paso es
proyectar las posiciones de los jugadores detectados por la algorit-
mia desarrollada en la imagen de la cancha de baloncesto. ¿Cómo lo
haremos? Utilizando la fórmula (5.1), es decir, multiplicando las coordenadas
del jugador por la homografı́a.

A continuación mostramos un ejemplo del partido de Euroliga Alba Berlin


- FC Barcelona donde se observa la detección y clasificación de los jugadores
y la proyección 2D de sus coordenadas existiendo una alta relación entre la
imagen original y la proyección establecida.

Figura 5.10: Proyección de las posiciones de los jugadores en imagen 2D

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.

Comparar la proyección 2D con el video original nos servirá para testear


la homografı́a establecida ası́ como extraer conclusiones que ayuden al entre-
nador a tomar decisiones rápidas y precisas. Analizamos algunos ejemplos:

Canasta de Higgins vs Alba Berlin (36-58, min 9, 3RD)

El conjunto de Saras Jasikevicius juega muy abierto ocupando zonas por


detrás de la lı́nea de 6.75. Aprovechando la posición de ’4’de Nikola Mirotic,
un jugador que aún jugando como ala-pivot amenaza desde fuera con un
lanzamiento de 3pts, son un total de 4 jugadores (Calathes, Higgins, Abrines
y Mirotic) los que ocupan estas posiciones de fuera dejando únicamente a
Brandon Davies (pivot) el juego interior del conjunto culé. Por su parte, el
conjunto alemán acumula mucho mapa de acción alrededor de la lı́nea de 6.75
ante la amenaza culé por anotar de tres. La entrada a canasta de Higgins se
produce desde la parte superior del video lo que llevará al Alba de Berlin a
defender cerca del aro al final de la jugada.

Figura 5.11: Alba Berlin - FC Barcelona

Analizamos ahora la sucesión de las posiciones tanto de los jugadores


del Barcelona como de las del equipo alemán en esta canasta del jugador

25
estadounidense del FC Barcelona y vemos como coincide con las apreciaciones
obtenidas a partir del análisis del video.

Figura 5.12: Mapa de acción. Canasta Higgins vs Alba Berlin (36-58)

Canasta de Davies vs Real Madrid (32-21, min 7, 2ND)

En este caso, la canasta de Brandon Davies frente al Real Madrid en el


Palau es uno de los ataques más frecuentes del conjunto culé. Postea Hanga
(escolta) empujando con la espalda hacia atrás a su oponente en el ataque,
Davies sale a la lı́nea de personal llevándose al pivot, recibe y encesta en uno
de los tiros más habituales del pivot del FC Barcelona.

Figura 5.13: FC Barcelona - Real Madrid

De manera similar al ejemplo anterior, presentamos a continuación un

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.

Figura 5.14: Mapa de acción. Canasta Davies vs Real Madrid (32-21)

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.

Pero, ¿qué es un diagrama de Vo-


ronoi? La idea del diagrama de Voronoi se
basa fundamentalmente en la proximidad. Figura 5.15: Diagrama de Voronoi
El diagrama de Voronoi de un conjunto de
puntos en el plano es la división de dicho plano en regiones, de tal forma que

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.

Aplicado al caso de uso del baloncesto, con la construcción de este dia-


grama podemos mostrar la distribución de la cancha de baloncesto (mitad
de cancha) entre los jugadores de ambos equipos. Es decir, a cada jugador
le asignamos la región del campo formada por todo el terreno de
juego que está más cerca de él que de cualquier otro jugador.

Recordemos que en la proyección 2D de estos puntos distinguimos a qué


equipo pertenece cada punto (coordenada del jugador), por tanto, el polı́gono
asociado a cada punto tendrá asociado el color del equipo al que ese jugador
pertenece.

Mostramos a continuación algunos ejemplos del diagrama de Voronoi


construido a partir de la proyección en la imagen (5.1) de las coordenadas de
cada uno de los jugadores en diferentes frames y videos:

((a)) Alba Berlin - FC Barcelona ((b)) FC Barcelona - Real Madrid

Figura 5.16: Diagrama Voronoi a partir de la proyección de las coordenadas 2D

Por último, reproducimos todo el proceso elaborado en la memoria desde


la lectura del frame hasta la representación del diagrama de Voronoi como
aplicación del Player Tracking pasando por cada una de las siguientes etapas:
Detección del campo, Detección de personas, Detección y Clasifi-
cación de jugadores, Homografı́a y proyección 2D y Diagrama de

28
Voronoi.

Figura 5.17: Etapas del proyecto desarrollado en la memoria

Con este apartado hemos terminado de analizar cada una de las etapas
de la algoritmia desarrollada en el proyecto.

5.3. Aplicación basketCV


De acuerdo con el flujo definido en la imagen (3.1), y una vez defini-
das y explicadas las etapas del video de entrada y las distintas algoritmias
abordadas en el proyecto, procede a continuación hablar de la creación y
el despliegue de la aplicación basketCV que conforma todo el trabajo
anterior realizado.

Podemos definir basketCV como una aplicación automática que de-


tecta y clasifica en equipos, jugadores de baloncesto a partir de
un video MP4 utilizando técnicas de visión artificial (o computer
vision).

A lo largo de este apartado comentaremos cada uno de los pasos llevados


a cabo en el desarrollo y despliegue de la herramienta: desde la elaboración de
los primeros ficheros de código hasta el despliegue de la aplicación de forma
pública y las pruebas realizadas. Mostramos a continuación un diagrama que
muestra cada una de las subetapas en las que podemos dividir este apartado
de la memoria:

29
Figura 5.18: Desarrollo y despliegue de basketCV

5.3.1. Desarrollo de la herramienta


El primer paso en el desarrollo de la herramienta es desarrollar de una
forma adecuada, limpia y completamente parametrizable cada una de las
algoritmias plantadas. Como hemos comentado al inicio de la memoria, el
lenguaje de programación escogido para la parte técnica del proyecto es
Python y su multitud de librerı́as, destacando la librerı́a de visión artificial
opencv-python.

Ası́ pues, se han desarrollo diversos ficheros de código que responden a


cada una de los algoritmos definidos y explicados en la memoria. Todos estos
ficheros comparten una misma idea: a partir de un video MP4, se procesan
cada uno de los frames del video aplicando la lógica descrita por el algo-
ritmo, y se construye el video resultante de la concatenación de cada frame
procesado. Este video es el output de cada proceso algorı́tmico.

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.

El siguiente paso es crear una serie de ficheros adicionales que son


imprescindibles para el despliegue posterior de la herramienta. Por ejemplo, el
fichero requirements.txt, que contiene las librerı́as (o paquetes) de Python
que se necesitan instalar (PyPI) para que la aplicación funcione. Además
de este fichero, si la aplicación requiere de paquetes o librerı́as que deben

30
descargarse utilizando apt-get, debe crearse el fichero packages.txt con
cada una de estas librerı́as (sin indicar su versión).

El último paso del desarollo de la herramienta es crear un repositorio


público de GitHub con el proyecto desarrollado. El siguiente link es el enlace
al repositorio de GitHub del proyecto: https://github.com/jfernandezr1996/
basketCV-opencv.

Figura 5.19: Descripción proyecto GitHub

Es importante destacar que algunos de estos pasos, por ejemplo: ficheros


necesarios para el despliegue o creación de un repositorio público, dependen
de la forma en la que se decida desplegar la aplicación de streamlit. En este
caso de estudio, y tal y como comentaremos en la siguiente sección, se ha uti-
lizado la componente Streamlit Sharing para el despliegue de la aplicación,
requiriendo para este despliegue cada uno de los ficheros comentados.

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.

Una de las principales ventajas que tiene utilizar la componente de stream-


lit para el despligue de la aplicación es que, al ser el repositorio GitHub la
fuente de la aplicación, cualquier cambio que se realice en el repositorio se
verá reflejado en la aplicación casi a tiempo real. Dentro de las limitaciones
que ofrece esta solución se encuentra el lı́mite de aplicaciones desplegadas
por cuenta (3 aplicaciones) y la necesidad de obtener una invitación para
loguearse y comenzar el despliegue.

El despliegue de la aplicación se realiza en cuestión de segundos de una


forma sencilla y práctica: bastará con indicar el repositorio del proyecto, la
rama y el fichero principal de la aplicación.

Figura 5.20: Despliegue de la aplicación

32
Y en cuestión de segundos, la aplicación basketCV5 estarı́a desplegada
observando los logs generados en la pestaña Manage app.

Figura 5.21: Despliegue y Frontal UI 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

Figura 5.22: Menu principal


5
https://share.streamlit.io/jfernandezr1996/basketcv-opencv/main/app.py

33
Demo

En la opción de demo en el menú principal de la aplicación, además de


observar un diagrama de cada una de los procesos algorı́tmicos disponibles,
observamos un desplegable de Input donde tendremos que seleccionar dos
archivos:

Figura 5.23: Selección de inputs

El video que queremos analizar en formato MP4.

El fichero JSON, params, que debe contener parámetros imprescindi-


bles para la ejecución de los algoritmos. Mostramos a continuación un
ejemplo de este archivo:

Figura 5.24: JSON params. Alba Berlin - FC Barcelona

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).

El hecho de que la herramienta se encuentre parametrizable y no tome


valores constantes en estos umbrales potencia el valor de la aplicación
haciendola completamente generalizable a cualquier video que enfrente
al FC Barcelona.

Selección video y parámetros Alba Berlin - FC Barcelona

Seleccionamos tanto el video que queremos procesar como el fichero JSON


de parámetros (5.24) y, observamos que podemos reproducir el video en la
aplicación antes de ejecutar cualquier algoritmo.

Figura 5.25: Alba Berlin - FC Barcelona

El siguiente paso es la selección de uno de los algoritmos disponibles que


aplique sobre el video introducido.

Para todos los algoritmos, se ha incorporado un componente en la pantalla


de configuración de la aplicación que permita controlar y conocer el es-
tado de la ejecución del algoritmo mediante una barra de progreso,
el porcentaje de completado y unos mensajes informativos.

35
Figura 5.26: Control y estado de la ejecución del algoritmo

Court Detection

Seleccionado el algoritmo Court Detection en el desplegable Algorithm


comenzará el proceso de detección del campo utilizando el detector Canny
Edge y el transformador HoughLines para, posteriormente, utilizarlo como
fondo de la imagen y guardar las coordenadas que nos permitan la proyección
2D de las coordenadas de los jugadores.

Figura 5.27: Court Detection

People Detection

Si queremos aplicar el algoritmo de detección de personas sobre el vi-


deo de análisis, tendremos que seleccionar People Detection en el selector
Algorithm. Tal y como hemos explicado en la memoria, mediante el mo-

36
delo preentrenado HOG + SVM se capturarán las personas en cada frame
indicando el grado de confianza en la detección.

Trabajaremos en este caso con un video del partido FC Barcelona - Real


Madrid observando el poder de generalización de la herramienta. Bastarı́a
con introducir el video y su fichero JSON de parámetros en el desplegable
Input y, posteriormente, ejecutar el algoritmo People Detection disponible
en el desplegable Algorithm.

Figura 5.28: Fichero configuración Real Madrid - FC Barcelona

Figura 5.29: People Detection

Player Team Detection

Una vez aplicado el algoritmo de detección de personas sobre el video


de entrada, el siguiente paso es detectar a los jugadores de baloncesto y,

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.

Figura 5.30: Player Team Detection

Player Tracking

Detectada la posición de los jugadores de baloncesto en cada frame del


video, el siguiente paso es proyectar estas coordenadas en una imagen 2D
mediante la transformación afı́n conocida como homografı́a.

Mediante la reproducción del video resultante, podemos observar de una


forma sencilla e ilustrativa el movimiento de los jugadores sobre el parquet y,
construyendo el diagrama de voronoi correspondiente a estas coordenadas,
conocer el espacio que está ocupando cada jugador en el transcurso de la
jugada considerandose esto como una herramienta más de la que puede hacer
uso el cuerpo técnico para una efectiva toma de decisiones.

La reproducción del video resultante de la homografı́a y de la construcción


del diagrama de Voronoi se representan de forma conjunta para obtener ası́
una mayor interpretabilidad. Seleccionamos el algoritmo Player Tracking
en el desplegable Algorithm y tenemos lo que buscábamos.

38
Figura 5.31: Player Tracking

5.3.3. Limitaciones de la herramienta


Una vez comentado el desarrollo y despliegue de la aplicación basketCV,
que detecta de manera automática jugadores de baloncesto a partir de un
preprocesamiento óptimo del video aplicando técnicas de visión artificial,
debemos enunciar algunas de las limitaciones o puntos de mejora que presenta
y que en posteriores versiones de la aplicación se desarrollarán.

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.

Siguiendo con el fichero de configuración (5.24), en este sólo aparecen


umbrales de color BGR para un equipo. Esto se debe a que se asume que
uno de los dos equipos del video de entrada es el FC Barcelona, y
vestido de azulgrana, y los umbrales definidos para el color de la camiseta
de los culés están incluidos como constantes en los ficheros de código por
motivos de sencillez. En una futura versión, estos umbrales de colores habrá
que definirlos en el fichero de configuración admitiendo ası́ cualquier video
de baloncesto a procesar.

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

Computer Vision aplicado al


fútbol

6.1. Diferencias entre baloncesto y fútbol


En el capı́tulo 2 de la memoria, definı́amos el objetivo de este proyecto co-
mo la detección y segmentación automática de jugadores mediante un análisis
del video aplicando técnicas de visión artificial. Pero, ¿de qué videos iba-
mos a partir para el entrenamiento y testeo de la herramienta y
algoritmos desarrollados? Inicialmente, se pensó que el proyecto fuese ela-
borado tanto con videos de baloncesto como de fútbol, sin embargo, a medida
que se avanzaba con la algoritmia que se ha ido desarrollando y explicando
en los anteriores capı́tulos, surgió la necesidad de profundizar sobre el caso
de estudio del baloncesto. De esta forma, la aplicación o herramienta elabo-
rado que ocupa la mayor parte de este proyecto está destinada a ejemplos de
baloncesto tal y como su nombre lo indica, basketCV.

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.

6.2. Caso de estudio


Hemos comentado en el apartado anterior que uno de los motivos que
llevó a no incluir ejemplos de fútbol en la aplicación desarrollada fue la
dificultad de poder aplicar el algoritmo de Player Tracking correctamente
en su totalidad (proyección 2D, mapas de calor, diagramas de Voronoi). Sin
embargo, los algoritmos de Court Detection y Player Team Detection
son perfectamente aplicables al caso de estudio del fútbol.

Mostraremos a continuación el caso de estudio de detección y clasificación


de futbolistas automática aplicando técnicas de computer vision sobre un
video del partido de La Liga Real Valladolid - FC Barcelona (0-3).

El primer paso para la detección de los futbolistas sobre el video es de-


tectar el campo de fútbol en la imagen para poder tratarlo como
fondo o fotograma del video donde los futbolistas se mueven frente
a él.

Figura 6.1: Detección del campo de fútbol

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 esta detección y posterior clasificación de jugadores, podrı́amos


usar el modelo preentrenado HOG + Linear SVM explicado con detalle en
el caso de estudio del baloncesto, sin embargo, procederemos de una for-
ma más artesanal e inmediata pero menos precisa: utilizaremos el método
findContours()7 de la libreria opencv-python que nos permite encontrar
contornos en una imagen binaria (en nuestro caso, la imagen en escala de
grises tras el tratamiento del fondo) usando el algoritmo [6].

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.

Mostramos a continuación el resultado de dos frames del video del parti-


do Real Valladolid - FC Barcelona donde aparecen detectados los futbolistas
de ambos equipos con su equipo asociado mediante el procedimiento previa-
mente descrito.

Figura 6.2: Detección y clasificación de futbolistas

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.

Con la aplicación basketCV cumplimos con el objetivo del trabajo im-


plementando una solución analı́tica empleando técnicas de computer
vision que permite un rastreo óptimo de los jugadores a partir de
un análisis del video. Hemos hablado en capı́tulos anteriores de la posibili-
dad de adaptar la lógica de la herramienta a cualquier otro deporte pues los
objetivos algorı́tmicos que se alcanzan son comunes, potenciando el valor de
esta herramienta y del trabajo a nivel de código realizado.

Además de haber cubierto el objetivo de mostrar el impacto de las nuevas


tecnologı́as en el mundo del deporte es importante entender, además del
cómo, el para qué. La finalidad de esta solución no es otra que ayudar a
los profesionales del sector en su toma de decisiones, facilitando una
herramienta que es capaz de extraer conocimiento a partir del análisis del
video.

Llegados a este punto es importante indicar que existen muchos aspectos


de mejora tanto en el desarrollo de los algoritmos como en el despliegue y
componentes de la aplicación. Con la algoritmia planteada se ha sido capaz
de desarrollar una solución que segmente y clasifique a los jugadores en los
diferentes equipos. Para la detección de jugadores hemos utilizado el modelo
preentrenado HOG + Linear SVM, de la librerı́a opencv-python, que tiene
una precisión del 85 % y que, en nuestro caso de estudio, se espera una
precisión inferior ante las fricciones entre jugadores. Por lo tanto, se propone,
como punto de mejora, conseguir una mayor precisión, tanto en la

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.

Quizás, la mayor limitación que presenta la solución en su primera ver-


sión es que sólo admite videos de baloncesto cuyas jugadas tienen lugar en la
mitad de cancha derecha. El motivo, tal y como se ha comentado en capı́tu-
los anteriores, se debe a que la imagen de salida, donde se proyectan las
coordenadas 2D, es de la mitad de cancha derecha, por lo que el video de
entrada tiene que seguir la misma filosofı́a para que la correspondencia entre
los puntos sea satisfactoria. Pues bien, ¿cómo podemos conseguir que,
sea cual sea el video de entrada, poder proyectar las posiciones de
los jugadores en una misma imagen? Utilizando el paper [9], se
propone el desarrollo de un proceso que transforme el frame de
entrada en su visión panorámica.

Figura 7.1: Ilustración visión panorámica cancha de baloncesto [9]

Por último, y como un complemento final al proceso algorı́tmico desarro-


llado en este proyecto, se propone como trabajo futuro la clasificación del
jugador, es decir, no a qué equipo pertenece sino de quién se tra-
ta. La elaboración de esta nueva algoritmia, mediante la elaboración de un
modelo que aprenda sobre imágenes de los propios jugadores, incrementarı́a
el valor de la herramienta.

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

También podría gustarte