Clasificación de vídeos

La clasificación de videos es la tarea de aprendizaje automático de identificar lo que representa un video. Un modelo de clasificación de video se entrena en un conjunto de datos de video que contiene un conjunto de clases únicas, como diferentes acciones o movimientos. El modelo recibe cuadros de video como entrada y genera la probabilidad de que cada clase esté representada en el video.

Los modelos de clasificación de video y clasificación de imágenes usan imágenes como entradas para predecir las probabilidades de que esas imágenes pertenezcan a clases predefinidas. Sin embargo, un modelo de clasificación de video también procesa las relaciones espacio-temporales entre cuadros adyacentes para reconocer las acciones en un video.

Por ejemplo, se puede entrenar un modelo de reconocimiento de acciones de video para identificar acciones humanas como correr, aplaudir y saludar. La siguiente imagen muestra el resultado de un modelo de clasificación de video en Android.

Captura de pantalla del ejemplo de Android

Empezar

Si usa una plataforma que no sea Android o Raspberry Pi, o si ya está familiarizado con las API de TensorFlow Lite , descargue el modelo de clasificación de video de inicio y los archivos de soporte. También puede crear su propia canalización de inferencia personalizada con la biblioteca de compatibilidad de TensorFlow Lite .

Descargar modelo de inicio con metadatos

Si es nuevo en TensorFlow Lite y está trabajando con Android o Raspberry Pi, explore las siguientes aplicaciones de ejemplo para ayudarlo a comenzar.

Androide

La aplicación de Android utiliza la cámara trasera del dispositivo para la clasificación continua de videos. La inferencia se realiza mediante la API Java de TensorFlow Lite . La aplicación de demostración clasifica fotogramas y muestra las clasificaciones previstas en tiempo real.

ejemplo de Android

frambuesa pi

El ejemplo de Raspberry Pi usa TensorFlow Lite con Python para realizar una clasificación de video continua. Conecte la Raspberry Pi a una cámara, como Pi Camera, para realizar una clasificación de video en tiempo real. Para ver los resultados de la cámara, conecte un monitor a la Raspberry Pi y use SSH para acceder a la carcasa de la Pi (para evitar conectar un teclado a la Pi).

Antes de comenzar, configure su Raspberry Pi con Raspberry Pi OS (preferiblemente actualizado a Buster).

ejemplo de frambuesa pi

Descripcion del modelo

Las redes de video móviles ( MoViNets ) son una familia de modelos eficientes de clasificación de video optimizados para dispositivos móviles. MoViNets demuestra precisión y eficiencia de última generación en varios conjuntos de datos de reconocimiento de acciones de video a gran escala, lo que los hace ideales para tareas de reconocimiento de acciones de video .

Hay tres variantes del modelo MoviNet para TensorFlow Lite: MoviNet-A0 , MoviNet-A1 y MoviNet-A2 . Estas variantes se entrenaron con el conjunto de datos Kinetics-600 para reconocer 600 acciones humanas diferentes. MoviNet-A0 es el más pequeño, rápido y menos preciso. MoviNet-A2 es el más grande, lento y preciso. MoviNet-A1 es un compromiso entre A0 y A2.

Cómo funciona

Durante el entrenamiento, se proporciona un modelo de clasificación de videos y sus etiquetas asociadas. Cada etiqueta es el nombre de un concepto distinto, o clase, que el modelo aprenderá a reconocer. Para el reconocimiento de acciones de video , los videos serán de acciones humanas y las etiquetas serán la acción asociada.

El modelo de clasificación de videos puede aprender a predecir si los nuevos videos pertenecen a alguna de las clases proporcionadas durante el entrenamiento. Este proceso se llama inferencia . También puede usar el aprendizaje por transferencia para identificar nuevas clases de videos usando un modelo preexistente.

El modelo es un modelo de transmisión que recibe video continuo y responde en tiempo real. A medida que el modelo recibe una transmisión de video, identifica si alguna de las clases del conjunto de datos de entrenamiento está representada en el video. Para cada cuadro, el modelo devuelve estas clases, junto con la probabilidad de que el video represente la clase. Un resultado de ejemplo en un momento dado podría tener el siguiente aspecto:

Acción Probabilidad
baile cuadrado 0.02
aguja de enhebrar 0.08
jugueteando con los dedos 0.23
Mano que saluda 0,67

Cada acción en la salida corresponde a una etiqueta en los datos de entrenamiento. La probabilidad denota la posibilidad de que la acción se muestre en el video.

Entradas del modelo

El modelo acepta una secuencia de cuadros de video RGB como entrada. El tamaño del video de entrada es flexible, pero lo ideal es que coincida con la resolución de entrenamiento del modelo y la velocidad de fotogramas:

  • MoviNet-A0 : 172 x 172 a 5 fps
  • MoviNet-A1 : 172 x 172 a 5 fps
  • MoviNet-A1 : 224 x 224 a 5 fps

Se espera que los videos de entrada tengan valores de color dentro del rango de 0 y 1, siguiendo las convenciones comunes de entrada de imágenes .

Internamente, el modelo también analiza el contexto de cada fotograma utilizando información recopilada en fotogramas anteriores. Esto se logra tomando estados internos de la salida del modelo y devolviéndolos al modelo para los próximos fotogramas.

Salidas del modelo

El modelo devuelve una serie de etiquetas y sus puntuaciones correspondientes. Las puntuaciones son valores logit que representan la predicción para cada clase. Estos puntajes se pueden convertir en probabilidades usando la función softmax ( tf.nn.softmax ).

    exp_logits = np.exp(np.squeeze(logits, axis=0))
    probabilities = exp_logits / np.sum(exp_logits)

Internamente, la salida del modelo también incluye estados internos del modelo y lo retroalimenta al modelo para los próximos fotogramas.

Puntos de referencia de rendimiento

Los números de referencia de rendimiento se generan con la herramienta de evaluación comparativa . MoviNets solo admite CPU.

El rendimiento del modelo se mide por la cantidad de tiempo que tarda un modelo en ejecutar la inferencia en una determinada pieza de hardware. Un tiempo menor implica un modelo más rápido. La precisión se mide por la frecuencia con la que el modelo clasifica correctamente una clase en un video.

Nombre del modelo Tamaño Exactitud * Dispositivo UPC **
MoviNet-A0 (Entero cuantificado) 3,1 MB sesenta y cinco% Píxel 4 5ms
Píxel 3 11 ms
MoviNet-A1 (Entero cuantificado) 4,5 MB 70% Píxel 4 8ms
Píxel 3 19 ms
MoviNet-A2 (Entero cuantificado) 5,1 MB 72% Píxel 4 15 ms
Píxel 3 36 ms

* Precisión Top-1 medida en el conjunto de datos Kinetics-600 .

** Latencia medida cuando se ejecuta en CPU con 1 subproceso.

Personalización del modelo

Los modelos pre-entrenados están entrenados para reconocer 600 acciones humanas del conjunto de datos Kinetics-600 . También puede usar el aprendizaje de transferencia para volver a entrenar un modelo para reconocer acciones humanas que no están en el conjunto original. Para ello, necesitas un conjunto de vídeos de formación para cada una de las nuevas acciones que quieras incorporar al modelo.

Para obtener más información sobre el ajuste fino de modelos en datos personalizados, consulte el repositorio de MoViNets y el tutorial de MoViNets.

Más lecturas y recursos

Utilice los siguientes recursos para aprender más sobre los conceptos discutidos en esta página: