Guía de filtrado de movimiento

El modelo de filtro de movimiento te permite reducir el tiempo de procesamiento recortando secciones de video largas en segmentos más pequeños que contienen un evento de movimiento. Este modelo te permite establecer la sensibilidad al movimiento, la duración mínima del evento, la ventana de visualización y el período de inactividad para ajustar los resultados de los eventos de movimiento a tu caso de uso.

Parámetros del modelo

El modelo de filtro de movimiento tiene cuatro parámetros de control para ajustar los segmentos de eventos y cómo el modelo los muestra.

Parámetro Descripción Marcar Valor predeterminado Valores disponibles
Duración mínima del evento Es la duración mínima en segundos que se capturará un evento de movimiento después de que finalice. --min-event-length INT 10 (segundos) 1 a 3,600
Sensibilidad de la detección de movimiento Es la sensibilidad del filtrado de eventos de movimiento del modelo. La sensibilidad alta es más responsiva al movimiento y proporciona un filtrado de movimiento más agresivo, lo que genera más detección de movimiento. --motion-sensitivity STRING "medium" "high", "medium" o "low"
Ventana de visualización Es la cantidad de contenido de video (en segundos) que el servicio captura antes de detectar un evento de movimiento. --lookback-length INT 3 (segundos) 0 a 300
Período de inactividad Después de que finaliza un evento de movimiento, se produce un período de inactividad con la duración especificada. Durante el período de inactividad, el modelo no registra eventos de movimiento. --cooldown-length INT 300 (segundos) 0 a 3,600

Sensibilidad al movimiento

Cuando se ejecuta el filtro de movimiento, la sensibilidad al movimiento juega el rol más importante para determinar cuántos videos de segmentos crea el modelo a partir de una transmisión de video.

Cuanto mayor sea la sensibilidad de detección de movimiento, más sensible será la detección del modelo al ruido y a los movimientos más pequeños. Este parámetro de configuración de sensibilidad más alta se recomienda para parámetros de configuración que contienen iluminación estable y muestran objetos en movimiento más pequeños (como vistas de personas vistas desde la distancia).

Por el contrario, el de baja sensibilidad es menos sensible a la interferencia de la iluminación y a los pequeños movimientos. Esta configuración es adecuada para situaciones con más interferencia de iluminación, como un entorno al aire libre. Debido a que este parámetro de configuración es la opción de filtrado más agresiva, ignora los movimientos de objetos pequeños.

Duración mínima del evento

La duración mínima del evento es la duración del video que captura el modelo después de que deja de detectar un evento de movimiento en el fotograma. El valor predeterminado es de 10 segundos, pero puedes especificar un tiempo entre 1 y 3,600 segundos. Si se detecta un movimiento nuevo durante la duración mínima del evento, este se agrega al segmento de video actual durante la duración del evento de movimiento detectado recientemente más una nueva cuenta regresiva de la duración mínima del evento.

diagrama de duración mínima del evento

Por ejemplo, considera un video de una intersección con dos autos en movimiento en el encuadre. El primer automóvil pasa en los primeros tres segundos y el segundo automóvil llega dos segundos después. Si estableces la duración mínima del evento en un segundo, hay dos segmentos de video con movimiento. Un segmento de video contiene el primer automóvil, mientras que el otro contiene el segundo. Sin embargo, si configuras el evento de movimiento en tres segundos, solo se genera un segmento de video con movimiento. El segundo automóvil aparece en el fotograma solo dos segundos después del primero.

Cuando configures la duración mínima del evento, piensa en la frecuencia con la que suelen ocurrir los eventos de movimiento en tu video y cuántos segmentos de video deseas guardar. Si los eventos de movimiento ocurren con frecuencia, pero deseas que la mayoría de ellos se guarden en segmentos de video separados, establece la duración mínima del evento en un período más corto. Si los eventos de movimiento ocurren con poca frecuencia, pero deseas agruparlos, establece la duración mínima del evento en un período más largo para capturar varios eventos en el mismo segmento de video.

Ventana de visualización

El período de visualización es el tiempo anterior al momento en que se detecta un evento de movimiento. Esta ventana es útil cuando quieres ver lo que sucede en el fotograma segundos antes de que el modelo detecte un evento de movimiento. El valor predeterminado para la ventana de visualización es de tres segundos, pero puedes especificar entre cero y 300 segundos.

Puedes usar una ventana de visualización para ver dónde se originaron los objetos en movimiento. También puedes usar una ventana de visualización para ver qué había en el fotograma segundos antes de que ocurriera el evento de movimiento. Una ventana de visualización es útil en situaciones en las que hay objetos pequeños en movimiento en el fotograma que no se detectan como un evento de movimiento. Sin embargo, es posible que los pequeños objetos en movimiento del fotograma hayan causado los eventos de movimiento más grandes que se detectaron.

Período de inactividad

Un período de inactividad es una duración que se produce después de que se capturan un evento de movimiento y una duración mínima del evento. Durante el período de inactividad, el movimiento detectado no activa el filtro de movimiento. El rango de este período es de cero a 3,600 segundos. El valor predeterminado se establece en 300 segundos.

El período de inactividad está diseñado para que los usuarios ahorren costos de procesamiento. Si se esperan movimientos en un fotograma y solo te interesa saber cuándo se produce el movimiento, pero no te importa lo que suceda después, un período de inactividad es una configuración útil.

Usa el modelo

Puedes usar el modelo de filtro de movimiento con el SDK de Vertex AI Vision.

Usa la herramienta de línea de comandos vaictl para habilitar el modelo. Para ello, especifica applying encoded-motion-filter y pasa valores para establecer parámetros de control.

SDK de Vertex AI Vision

Para enviar una solicitud con el modelo de filtro de movimiento, debes instalar el SDK de Vertex AI Vision.

Realiza las siguientes sustituciones de variables:

  • PROJECT_ID: El ID de tu proyecto de Google Cloud .
  • LOCATION_ID: Es el ID de tu ubicación. Por ejemplo, us-central1 Regiones admitidas. Más información.
  • LOCAL_FILE.EXT: Es el nombre de un archivo de video local. Por ejemplo, my-video.mp4
  • STREAM_ID: Es el ID del flujo que creaste en el clúster. Por ejemplo, input-stream
  • --motion-sensitivity: Es la sensibilidad del filtrado de eventos de movimiento. Las opciones son high, medium y low.
  • --min-event-length: Es la duración mínima de un evento de movimiento en segundos. El valor predeterminado es 10 segundos. Valores disponibles: 1-3600.
  • --lookback-length: Es la duración de la ventana de visualización antes de que comience el evento de movimiento, expresada en segundos. El valor predeterminado es 3 segundos. Valores disponibles: 0-300.
  • --cooldown-length: Es el período de inactividad después de que se produce un evento de movimiento en segundos. El valor predeterminado es 300 segundos (5 minutos). Valores disponibles: 0-3600.
  • --continuous-mode: Indica si se debe enviar en modo continuo. El valor predeterminado es true.
  • OUTPUT_DIRECTORY: Es el directorio en el que deseas guardar los archivos MP4 de segmentos de video de salida.

Cómo ver la información de un comando

Usa el siguiente comando para ver más información sobre el comando y sus parámetros opcionales:

vaictl send video-file applying motion-filter -h

Cómo filtrar el contenido de archivos locales con el modelo de filtro de movimiento

Este comando solo envía secciones de video en las que el modelo detecta movimiento.

vaictl -p PROJECT_ID \
      -l LOCATION_ID \
      -c application-cluster-0 \
      --service-endpoint visionai.googleapis.com \
send video-file  --file-path LOCAL_FILE.EXT \
applying motion-filter --motion-sensitivity=medium \
      --min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to streams STREAM_ID --loop

Cómo filtrar el contenido de un archivo local y guardar el resultado con el modelo de filtro de movimiento

Este comando usa la marca --continuous_mode para generar archivos de video separados para cada segmento de movimiento.

vaictl -p PROJECT_ID \
      -l LOCATION_ID \
      -c application-cluster-0 \
      --service-endpoint visionai.googleapis.com \
send video-file --file-path LOCAL_FILE.EXT --continuous-mode=false \
applying motion-filter --motion-sensitivity=medium \
      --min-event-length=10 --lookback-length=3 --cooldown-length=0 \
to mp4file --mp4-file-path=OUTPUT_DIRECTORY

Prácticas recomendadas

El filtro de movimiento está diseñado para ser un modelo ligero que ayude a reducir el tiempo de procesamiento en la decodificación de videos codificados durante la transmisión. Para usar el filtro de la mejor manera, coloca una cámara fija directamente en los objetos de interés. Evita incluir objetos en movimiento no importantes en el fondo del marco. Por ejemplo, un fotograma que contiene objetos de fondo, como árboles en movimiento, un flujo constante de automóviles o sombras de objetos en movimiento, detecta el movimiento de estos sujetos poco importantes.

Coloca los objetos de interés en primer plano y reduce la cantidad de objetos de fondo con movimiento constante tanto como sea posible. En síntesis:

  • Usa una cámara fija.
  • Asegúrate de evitar un fondo en movimiento constante.
  • No se detectarán movimientos mínimos.
  • Asegúrate de que los objetos sean lo suficientemente grandes.

Prácticas recomendadas para interiores

Para entornos interiores con iluminación constante y poco movimiento en segundo plano, sigue estas prácticas recomendadas:

  • Aumenta la sensibilidad. Los objetos en el marco suelen ser más grandes y también hay menos ruido en el marco.
  • Usa ventanas de visualización más pequeñas y una duración de eventos más corta. Los movimientos en interiores son más lentos y el espacio en el que se pueden producir es limitado.

Si sigues estas prácticas para interiores, el filtro de movimiento puede registrar el movimiento de los objetos en un tiempo mínimo.

Prácticas recomendadas para exteriores

En el caso de los entornos al aire libre, hay más variables en las escenas que podrían afectar el rendimiento del filtro. Por ejemplo, la sombra de un árbol en movimiento o los cambios en la luz del sol en el fotograma se detectan como movimiento para el modelo de filtro de movimiento. Considera las siguientes condiciones y la mejor manera de responderlas.

Situación 1:

Considera un video que captura una acera por la que ocasionalmente pasan peatones. Estos movimientos pueden ser tan lentos como un caminar informal o tan rápidos como el paso de una patineta. Usa la siguiente guía:

  • Establece una longitud de ventana mínima y una ventana de visualización en un valor más largo. La velocidad de los movimientos tiene un rango más amplio que la situación de interiores, por lo que aumentar la duración mínima de la ventana y la ventana de visualización permite que el modelo capture el evento de movimiento completo.
  • Aumenta la sensibilidad al movimiento. Un entorno al aire libre contiene objetos que se mueven de forma más natural, como árboles y sombras en movimiento. Para enfocarte solo en objetos de interés, como personas y bicicletas, establece una sensibilidad al movimiento más alta para evitar la detección constante de objetos en segundo plano.

Situación 2:

Imagina un video diferente que se enfoque en una calle por la que pasan autos constantemente y por la que ocasionalmente caminan peatones. Usa la siguiente guía:

  • Establece la sensibilidad en media o baja: Un parámetro de configuración de sensibilidad más bajo permite que el modelo capture una variedad de tamaños de objetos en movimiento en el fotograma.
  • Establece la ventana de visualización y la duración mínima del evento en un valor más corto. Los automóviles y otros vehículos que circulan por la calle se mueven a una velocidad mucho más rápida que las personas y las bicicletas. Si estableces un valor más corto para estos parámetros, se considera que la velocidad del movimiento es mayor y que los objetos entran y salen del fotograma rápidamente.
  • Establece un tiempo de enfriamiento corto. Debido a la mayor velocidad de movimiento, el siguiente objeto podría ingresar al fotograma poco después del primero. Por lo tanto, un tiempo de inactividad más corto lo explica.

Limitaciones

Como el filtro de movimiento depende en gran medida del vector de movimiento en cada fotograma, hay ciertas limitaciones que debes tener en cuenta.

  1. Ángulo de la cámara: Usa una cámara fija, ya que una cámara en movimiento tiene movimiento constante en su encuadre.
  2. Tamaño del objeto: Intenta encuadrar los sujetos de modo que los objetos clave aparezcan lo suficientemente grandes en el encuadre para lograr el mejor rendimiento del filtro de movimiento.
  3. Iluminación: Los cambios de iluminación, como un cambio repentino de brillo en el fotograma o movimientos de sombras intensos, pueden degradar el rendimiento del modelo. Un rango dinámico bajo que genera un tono de brillo similar para todo el video, lo que afecta la forma en que el modelo interpreta el movimiento y degrada su rendimiento
  4. Posicionamiento de la cámara: El modelo está diseñado para detectar movimiento en el encuadre. Esto incluye el movimiento del fondo, como el viento que mueve un árbol o objetos fuera del encuadre y crea sombras. Tener una gran parte del fotograma que apunte a objetos de fondo que crean estos movimientos podría afectar el rendimiento del modelo.