El modelo Filtro de movimiento te permite reducir el tiempo de computación recortando las secciones largas de vídeo en segmentos más pequeños que contengan un evento de movimiento. Este modelo te permite definir la sensibilidad al movimiento, la duración mínima del evento, la ventana retrospectiva y el periodo de enfriamiento para ajustar los resultados de los eventos de movimiento a tu caso práctico.
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 los devuelve el modelo.
Parámetro | Descripción | Bandera | Valor predeterminado | Valores disponibles |
---|---|---|---|---|
Duración mínima de eventos | La duración mínima que se grabará un evento de movimiento después de que haya finalizado, en segundos. | --min-event-length INT |
10 (segundos) | 1 - 3600 |
Sensibilidad de la detección de movimiento | Sensibilidad del filtro de eventos de movimiento del modelo. La sensibilidad alta responde mejor al movimiento y ofrece un filtrado de movimiento más agresivo, lo que da como resultado que se detecte más movimiento. | --motion-sensitivity STRING |
"medium" |
"high" , "medium" o "low" |
Ventana al pasado. | Cantidad de contenido de vídeo (en segundos) que el servicio captura antes de un evento de movimiento detectado. | --lookback-length INT |
3 (segundos) | 0 - 300 |
Periodo de enfriamiento | Cuando finaliza un evento de movimiento, se produce un periodo de enfriamiento con la duración especificada. Durante el periodo de enfriamiento, el modelo no registra eventos de movimiento. | --cooldown-length INT |
300 (segundos) | 0 - 3600 |
Sensibilidad al movimiento
Al ejecutar el filtro de movimiento, la sensibilidad al movimiento es el factor más importante para determinar cuántos vídeos de segmentos crea el modelo a partir de un flujo de vídeo.
Cuanto mayor sea la sensibilidad a la detección de movimiento, más sensible será el modelo a los ruidos y a los movimientos más pequeños. Este ajuste de sensibilidad más alto se recomienda para entornos con iluminación estable y objetos pequeños en movimiento (como vistas de personas desde la distancia).
Por el contrario, la sensibilidad baja es la menos sensible a las interferencias de la iluminación y a los movimientos pequeños. Este ajuste es adecuado para situaciones en las que hay más interferencias de iluminación, como en exteriores. Como esta opción de configuración es la que aplica el filtro más agresivo, ignora los movimientos de objetos pequeños.
Duración mínima de eventos
La duración mínima del evento es el tiempo que el modelo graba después de dejar de detectar un evento de movimiento en el fotograma. El valor predeterminado es de 10 segundos, pero puedes especificar un tiempo entre 1 segundo y 3600 segundos. Si se detecta un nuevo movimiento durante la duración mínima del evento, se añade al segmento de vídeo actual durante el tiempo que dure el evento de movimiento recién detectado más una nueva cuenta atrás de la duración mínima del evento.
Por ejemplo, imagina un vídeo de un cruce con dos coches moviéndose en el encuadre. El primer coche pasa en los tres primeros segundos y el segundo coche llega dos segundos después. Si defines la duración mínima del evento en un segundo, habrá dos segmentos de vídeo con movimiento. Un segmento de vídeo contiene el primer coche, mientras que el otro segmento contiene el segundo coche. Sin embargo, si ajustas el evento de movimiento a tres segundos, solo habrá un segmento de vídeo con movimiento. El segundo coche aparece en el fotograma solo dos segundos después del primero.
Cuando definas la duración mínima de los eventos, piensa en la frecuencia con la que suelen producirse los eventos de movimiento en tu vídeo y en cuántos segmentos de vídeo quieres guardar. Si los eventos de movimiento se producen con frecuencia, pero quieres que la mayoría de ellos se guarden en segmentos de vídeo independientes, define una duración mínima más corta. Si los eventos de movimiento se producen con poca frecuencia, pero quieres agruparlos, define una duración mínima más larga para capturar varios eventos en el mismo segmento de vídeo.
Ventana al pasado.
La ventana retrospectiva es el periodo que precede al momento en el que se detecta un evento de movimiento. Esta ventana es útil cuando quieres ver qué ocurre en los segundos anteriores a que el modelo detecte un evento de movimiento. El valor predeterminado de la ventana retrospectiva es de tres segundos, pero puede especificar un valor entre cero y 300 segundos.
Puedes usar una ventana retrospectiva para ver de dónde proceden los objetos en movimiento. También puedes usar una ventana retrospectiva para ver lo que había en el encuadre segundos antes de que se produjera el evento de movimiento. Una ventana retrospectiva es útil en situaciones en las que hay objetos pequeños en movimiento en el encuadre que no se detectan como eventos de movimiento. Sin embargo, los objetos pequeños en movimiento del encuadre podrían haber provocado los eventos de movimiento más grandes que se han detectado.
Periodo de enfriamiento
Un periodo de enfriamiento es un periodo que se produce después de que se capture un evento de movimiento y una duración mínima del evento. Durante el periodo de enfriamiento, el movimiento detectado no activa el filtro de movimiento. El intervalo de este periodo es de entre cero segundos y 3600 segundos. El valor predeterminado es de 300 segundos.
El periodo de enfriamiento se ha diseñado para que los usuarios ahorren costes de computación. Si se esperan movimientos en un fotograma y solo te interesa saber cuándo se produce el movimiento, pero no lo que ocurre después, el periodo de enfriamiento es un ajuste útil.
Usar 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 especificando applying encoded-motion-filter
y pasando valores para definir los parámetros de control.
SDK de Vertex AI Vision
Para enviar una solicitud mediante el modelo de filtro de movimiento, debes instalar el SDK de Vertex AI Vision.
Sustituye las siguientes variables:
- PROJECT_ID: tu ID de proyecto Google Cloud .
- LOCATION_ID: tu ID de ubicación. Por ejemplo,
us-central1
. Regiones admitidas Más información - LOCAL_FILE.EXT: el nombre de archivo de un archivo de vídeo local. Por ejemplo,
my-video.mp4
. - STREAM_ID: el ID de la emisión que has creado en el clúster.
Por ejemplo,
input-stream
. --motion-sensitivity
: la sensibilidad del filtro de eventos de movimiento. Las opciones sonhigh
,medium
ylow
.--min-event-length
: duración mínima de un evento de movimiento en segundos. El valor predeterminado es10
segundos. Valores disponibles:1
-3600
.--lookback-length
: duración de la ventana de retroceso antes de que empiece el evento de movimiento, en segundos. El valor predeterminado es3
segundos. Valores disponibles:0
-300
.--cooldown-length
: periodo de enfriamiento después de que se produzca un evento de movimiento (en segundos). El valor predeterminado es300
segundos (5 minutos). Valores disponibles:0
-3600
.--continuous-mode
: si se debe enviar en modo continuo. El valor predeterminado estrue
.- OUTPUT_DIRECTORY: el directorio en el que quieres guardar los archivos MP4 del segmento de vídeo de salida.
Ver información de comandos
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
Filtrar el contenido de un archivo local con el modelo de filtro de movimiento
Este comando solo envía las secciones de vídeo 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
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 vídeo independientes 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 se ha diseñado como un modelo ligero para ayudar a reducir el tiempo de cálculo en la decodificación de vídeos codificados durante la transmisión. Para que el filtro funcione correctamente, coloca una cámara fija directamente sobre los objetos que te interesen. Evita incluir objetos en movimiento que no sean importantes en el fondo del encuadre. Por ejemplo, un fotograma que contiene objetos de fondo, como árboles que se mueven, un flujo constante de coches o sombras de objetos en movimiento, detecta el movimiento de estos elementos que no son importantes.
Coloca los objetos de interés en primer plano y reduce al máximo la cantidad de objetos de fondo con movimiento constante. En resumen:
- Usa una cámara de fotos.
- Evita que el fondo se mueva constantemente.
- No se detectarán los movimientos mínimos.
- Asegúrate de que los objetos sean lo suficientemente grandes.
Prácticas recomendadas para interiores
En entornos interiores con iluminación constante y movimiento mínimo en el fondo, sigue estas prácticas recomendadas:
- Aumenta la sensibilidad. Los objetos del marco suelen ser más grandes y hay menos ruido en el marco.
- Usa ventanas retrospectivas 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 en interiores, el filtro de movimiento podrá registrar el movimiento de los objetos en el menor tiempo posible.
Prácticas recomendadas para exteriores
En entornos exteriores, hay más variables en las escenas que pueden afectar al rendimiento del filtro. Por ejemplo, la sombra de un árbol que se mueve o los cambios en la luz solar en el encuadre se detectan como movimiento para el modelo de filtro de movimiento. Ten en cuenta las siguientes condiciones y la mejor forma de responder a ellas.
Situación 1:
Imagina un vídeo que graba una acera por la que pasan peatones de vez en cuando. Estos movimientos pueden ser tan lentos como un paseo informal o tan rápidos como el paso de un monopatín. Sigue estas directrices:
- Define una duración mínima de la ventana y una ventana retrospectiva con un valor más largo. La velocidad de los movimientos tiene un intervalo mayor que en el caso de los interiores, por lo que, al aumentar la longitud mínima de la ventana y la ventana retrospectiva, el modelo puede capturar todo el evento de movimiento.
- Aumenta la sensibilidad al movimiento. Un entorno exterior contiene más objetos que se mueven de forma natural, como árboles y sombras. Para centrarte solo en los objetos de interés, como personas y bicicletas, aumenta la sensibilidad al movimiento para evitar que se detecten constantemente los objetos del fondo.
Situación 2:
Imagina otro vídeo que se centre en una calle por la que pasan coches constantemente y peatones de vez en cuando. Sigue estas directrices:
- Ajusta la sensibilidad a media o baja: con un ajuste de sensibilidad más bajo, el modelo puede captar varios tamaños de objetos en movimiento en el encuadre.
- Define un valor más corto para la ventana de conversión y la duración mínima del evento. Los coches y otros vehículos de la calle se mueven a una velocidad significativamente mayor que las personas y las bicicletas. Si asignas un valor más corto a estos parámetros, se tendrá en cuenta que la velocidad de movimiento es mayor y que los objetos entran y salen del encuadre rápidamente.
- Establece un tiempo de enfriamiento breve. Debido a la mayor velocidad de movimiento, el siguiente objeto puede entrar en el encuadre poco después del primero. Por lo tanto, se tiene en cuenta un tiempo de espera más corto.
Limitaciones
Como el filtro de movimiento depende en gran medida del vector de movimiento de cada fotograma, hay ciertas limitaciones que debes tener en cuenta.
- Ángulo de la cámara: usa una cámara fija, ya que una cámara en movimiento tiene movimiento constante en su encuadre.
- Tamaño del objeto: intenta encuadrar a los sujetos de forma que los objetos clave aparezcan lo suficientemente grandes en el encuadre para que el filtro de movimiento funcione de la mejor manera posible.
- Iluminación: los cambios en la iluminación, como un cambio repentino en el brillo del fotograma o movimientos intensos de las sombras, pueden afectar al rendimiento del modelo. Un rango dinámico bajo que da como resultado un tono de brillo similar en todo el vídeo, lo que afecta a la forma en que el modelo interpreta el movimiento y reduce su rendimiento.
- Posición de la cámara: el modelo está diseñado para detectar el movimiento en el encuadre. Esto incluye el movimiento del fondo, como el viento moviendo un árbol o los objetos que están fuera del encuadre y crean sombras. Si una gran parte del encuadre apunta a objetos de fondo que crean estos movimientos, puede afectar al rendimiento del modelo.