Cómo construir un sistema de seguimiento de bolas para Cricket

Contenidos

Visión general

  • Aprenda a construir su propio sistema de rastreo de bolas para cricket usando visión por computadora y Python
  • Comprender diferentes enfoques para rastrear objetos que se mueven rápidamente en un video deportivo.
  • También discutiremos los diversos casos de uso de un sistema de seguimiento de bolas.

Introducción

El Sistema de Revisión de Decisiones (DRS) es bastante ubicuo en el deporte del cricket en estos días. Los equipos están empezando a depender en gran medida de la DRS para anular las decisiones estrictas de los árbitros y eso, con bastante frecuencia, puede cambiar el partido a su favor.

Este concepto de seguimiento de la pelota, parte del DRS, es ahora un espectáculo familiar para los fanáticos del cricket:

cricket_ball_tracking-6223641

Esto me hizo pensar: ¿podría construir mi propio sistema de seguimiento de bolas utilizando mi conocimiento de aprendizaje profundo y Python?

Soy un gran fanático del cricket y busco constantemente diferentes casos de uso en los que pueda aplicar algoritmos de aprendizaje automático o aprendizaje profundo. La idea de construir un sistema de seguimiento de bolas se me ocurrió cuando estaba trabajando en mi proyecto anterior centrado en generar conocimientos a partir de los datos de los comentarios de cricket.

Los equipos y las franquicias de críquet también utilizan esta idea de seguimiento de la pelota para comprender las zonas débiles de los jugadores de la oposición. ¿En qué posición es vulnerable un bateador en particular? ¿Dónde lanza constantemente el jugador de bolos en los death over?

Los sistemas de seguimiento de bolas ayudan a los equipos a analizar y comprender estas preguntas. Aquí hay uno de esos ejemplos del reciente partido de cricket:

  • Los jugadores de bolos de Nueva Zelanda siguieron una estrategia contra Virat Kohli en la gira anterior de India a Nueva Zelanda. Los primeros balones a los que se enfrentó Virat fueron en su zona débil. Esto lo hizo sentir incómodo y regularmente perdía su ventanilla temprano.

hawk-eye-system-5974405

En este artículo, analizaremos los diversos aspectos de un sistema de seguimiento de bolas y luego crearemos uno en Python usando el ejemplo de cricket. ¡Esto promete ser una experiencia de aprendizaje única!

Nota: Si es completamente nuevo en el mundo del aprendizaje profundo y la visión por computadora, le sugiero que consulte los siguientes recursos:

Tabla de contenido

  1. ¿Qué es un sistema de seguimiento de bolas?
  2. Casos de uso del sistema de seguimiento de bolas en los deportes
  3. Diferentes enfoques del sistema de seguimiento de bolas
  4. Implementación: desarrolle su primer sistema de seguimiento de bolas para Cricket usando Python

¿Qué es un sistema de seguimiento de bolas?

Vamos a familiarizarnos rápidamente con dos términos populares en la visión por computadora antes de una discusión sobre el sistema de seguimiento de bolas: detección de objetos y seguimiento de objetos.

Detección de objetos es uno de los conceptos más fascinantes de la visión por computadora. Tiene un papel de gran alcance en diferentes dominios como la defensa, el espacio, los deportes y otros campos. Aquí, he enumerado algunos casos de uso interesantes de detección de objetos en defensa y espacio:

  • Apuntador de objetivo automático
  • Entrenamiento de robots en simulaciones de palabras reales para recuperar personas en entornos físicos peligrosos
  • Detección de desechos espaciales

Pero, ¿qué es la detección de objetos?

Clasificación de imagen + Localización = Detección de objetos

La detección de objetos es la tarea de identificar un objeto y su ubicación en una imagen. La detección de objetos es similar a un problema de clasificación de imágenes, pero con una tarea adicional (identificar también la ubicación de un objeto), un concepto conocido como localización.

selection_170-3752583

Como puede ver aquí, la ubicación del objeto está representada por un cuadro rectangular que se conoce popularmente como Cuadro delimitador.. Bounding Box representa las coordenadas del objeto en una imagen. Pero espere, ¿en qué se diferencia la detección de objetos del seguimiento de objetos? Respondamos esta pregunta ahora.

Seguimiento de objetos es un caso especial de detección de objetos. Se aplica solo a datos de video. En el seguimiento de objetos, el objeto y su ubicación se identifican en cada fotograma de un video.

La detección de objetos aplicada en cada fotograma de un video se convierte en un problema de seguimiento de objetos.

Recuerde que la detección de objetos es para una imagen, mientras que el seguimiento de objetos es para la secuencia de fotogramas que se mueven rápidamente. Ambos problemas implican la misma tarea, pero los términos se usan indistintamente según el tipo de datos con los que esté trabajando.

Entonces, ¿cómo se aplica esto al seguimiento de la pelota?

Ball Tracking System es uno de los casos de uso más interesantes de detección y seguimiento de objetos en los deportes. Se utiliza un sistema de seguimiento de pelota para encontrar la trayectoria de la pelota en un video deportivo. Hawk-eye es el sistema de seguimiento de pelota más avanzado utilizado en diferentes deportes como cricket, tenis y fútbol para identificar la trayectoria de la pelota a partir de cámaras de alto rendimiento.

Podemos desarrollar un sistema similar usando los conceptos de visión por computadora identificando la pelota y su ubicación en cada fotograma de un video. Aquí hay una demostración de lo que crearemos en este artículo:

Impresionante, ¿verdad?

Casos de uso del sistema de seguimiento de bolas en los deportes

El sistema de seguimiento de bolas, como estoy seguro de que ya se habrá dado cuenta, es un concepto poderoso que trasciende las industrias. En esta sección, mostraré algunos casos de uso populares del seguimiento de la pelota en los deportes.


Caso de uso 1: Toma de decisiones críticas

Hemos hablado de esto anteriormente y estoy seguro de que la mayoría de ustedes estarán familiarizados con el ojo de halcón en el cricket.

La trayectoria del balón ayuda a tomar decisiones críticas durante el partido. Por ejemplo, en el cricket, durante la pierna antes del wicket (o LBW), la trayectoria de la pelota ayuda a decidir si la pelota ha lanzado dentro o fuera de los tocones. También incluye información sobre si la pelota golpea los muñones o no.

De manera similar, en el tenis, durante los servicios o una jugada, el sistema de seguimiento de la pelota ayuda a saber si la pelota se ha lanzado dentro o fuera de las líneas permitidas en la cancha:

screenshot-from-2020-05-15-19-19-35-1078241

Caso de uso 2: identificación de las zonas fuertes y débiles de un bateador

Cada equipo tiene un conjunto de jugadores ganadores de partidos. Elegir sus terrenos lo antes posible es crucial para que cualquier equipo gane partidos. Con la ayuda de la tecnología de seguimiento de bolas, podemos analizar los videos sin procesar y generar mapas de calor.

A partir de estos mapas de calor, podemos identificar fácilmente la zona fuerte y débil de un bateador. Esto ayudaría al equipo a desarrollar una estrategia contra todos los jugadores antes de un partido:

¿Puedes pensar en otros casos de uso de un sistema de seguimiento de pelota en los deportes? ¡Házmelo saber en la sección de comentarios a continuación!

Diferentes enfoques de los sistemas de seguimiento de bolas

Existen diferentes algoritmos de seguimiento, así como modelos previamente entrenados para rastrear el objeto en un video. Pero, hay ciertos desafíos con ellos cuando se trata de rastrear una pelota de cricket que se mueve rápidamente.

Estos son los pocos desafíos que debemos conocer antes de rastrear una pelota que se mueve rápidamente en un video de cricket.

  • La pelota de cricket se mueve a una velocidad muy alta de alrededor de 130-150 km / h. Debido a esto, la pelota sigue su camino.
  • Los objetos en el suelo similares a los de la pelota pueden ser difíciles de clasificar. Por ejemplo, los puntos de 30 yardas en el campo cuando se ven desde arriba casi parecen una pelota.

screenshot-from-2020-05-23-02-14-12-4678160

Por lo tanto, en este artículo, me enfocaré en 2 enfoques simples para rastrear una pelota que se mueve rápidamente en un video deportivo:

  • Ventana deslizante
  • Segmentación por color

Discutámoslos en detalle ahora.

Método 1: ventana corrediza

Una de las formas más sencillas podría ser dividir la imagen en parches más pequeños, digamos cuadrículas de 3 * 3 o 5 * 5, y luego clasificar cada parche en una de 2 clases, ya sea que un parche contenga una bola o no. Este enfoque se conoce como enfoque de ventana deslizante, ya que deslizamos la ventana de un parche en cada parte de una imagen.

Recuerde que la formación de cuadrículas también puede superponerse. Todo depende de la forma en que desee formular el problema.

A continuación, se muestra un ejemplo que muestra las cuadrículas que no se superponen:

1-7-9418169

Este método es realmente sencillo y eficaz. Pero es un proceso que toma tiempo, ya que considera varios parches de la imagen. Otro inconveniente del enfoque de la ventana deslizante es que es caro, ya que considera cada parche de una imagen.

Entonces, a continuación, discutiré el enfoque alternativo a la ventana deslizante.

Enfoque 2: segmentación por color

En lugar de considerar cada parche, podemos reducir los parches para clasificarlos según el color de la pelota. Como conocemos el color de la pelota, podemos diferenciar fácilmente los parches que tienen un color similar al de la pelota del resto de parches.

untitled-diagram-1-1-9974604

Esto da como resultado una menor cantidad de parches para clasificar. Este proceso de combinar partes similares de una imagen a través del color se conoce como segmentación por color.

Implementación: desarrolle su primer sistema de seguimiento de bolas para Cricket en Python

¡Es hora de codificar! Desarrollemos un sistema de seguimiento de pelota simple que rastrea la pelota en el campo usando Python. Descargue los archivos de datos necesarios de aquí.

Primero, leamos un archivo de video y guardemos los marcos en una carpeta:

Marcos de lectura:

Como nuestro objetivo es rastrear la pelota en el terreno de juego, necesitamos extraer los marcos que contienen el terreno de juego. Aquí, estoy usando el concepto de detección de escenas para realizar la tarea:

Producción:

scene-5047494

El valor atípico en el gráfico indica el número de fotograma durante el cual cambia la escena. Por lo tanto, fije el umbral para obtener los fotogramas antes de un cambio de escena:

Ahora, hemos obtenido los fotogramas que contienen un tono. A continuación, implementaremos un enfoque de segmentación que discutimos anteriormente en este artículo. Llevemos a cabo todos los pasos del enfoque para un solo cuadro ahora.

Leeremos el marco y aplicaremos desenfoque gaussiano para eliminar ruidos en una imagen:

Producción:

screenshot-from-2020-05-23-02-06-04-3886320

Como se conoce el color de la bola, podemos segmentar fácilmente los objetos de color blanco en una imagen. Aquí, 200 actúa como umbral. Cualquier valor de píxel por debajo de este 200 se marcará como 0 y por encima de 200 se marcará como 255.

Producción:

screenshot-from-2020-05-23-02-09-28-8377336

Como puede ver aquí, los objetos de color blanco están segmentados. El color blanco indica objetos de color blanco y el negro indica el resto de colores. ¡Y eso es! Hemos separado los objetos de color blanco de los demás.

Ahora, encontraremos los contornos de objetos segmentados en una imagen:

Dibuja los contornos en la imagen original:

Producción:

screenshot-from-2020-05-23-02-10-55-1430174
A continuación, extraiga los parches de una imagen utilizando los contornos:

Es hora de construir un clasificador de imágenes para identificar el parche que contiene la pelota.

Leer y preparar el conjunto de datos:

Divida el conjunto de datos en tren y validación:

Construya un modelo de línea de base para identificar el parche que contiene la bola:

Evalúe el modelo sobre los datos de validación:

Repita los pasos similares para cada fotograma en un video seguido de la clasificación:

Eche un vistazo a los marcos que contienen la pelota junto con la ubicación:

screenshot-from-2020-03-30-19-32-24-2930221

A continuación, dibujaremos el cuadro delimitador alrededor de los marcos que contienen la bola y lo guardaremos de nuevo en la carpeta:

Convirtamos de nuevo los fotogramas en un video ahora:

Producción:

¿Cuan genial es eso? ¡Felicitaciones por construir su propio sistema de rastreo de bolas para cricket!

Notas finales

¡Es todo por hoy! Esto nos lleva al final del tutorial sobre rastreo de bolas para cricket. Tenga en cuenta que se crea un modelo de línea de base para las tareas de clasificación de imágenes. Pero todavía hay mucho margen para mejorar nuestro modelo. Y también, hay pocos hiperparámetros en este enfoque, como el tamaño del filtro gaussiano y el valor de umbral que debe ajustarse según el tipo de video.

¿Cuáles son sus pensamientos sobre el sistema que construimos? Comparta sus ideas y comentarios en la sección de comentarios a continuación y hablemos.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.