Objetos Estacionarios
Un objeto se considera estacionario cuando está siendo rastreado y ha permanecido en una posición muy similar durante un cierto número de fotogramas. Este número se define en la configuración bajo detect -> stationary -> threshold, y es 10 veces la tasa de fotogramas (o 10 segundos) de forma predeterminada. Una vez que un objeto es considerado estacionario, permanecerá estacionario hasta que se produzca movimiento dentro del objeto, momento en el que la detección de objetos comenzará a ejecutarse nuevamente. Si el objeto cambia de ubicación, se considerará activo.
¿Por qué importa si un objeto es estacionario?
Una vez que un objeto se vuelve estacionario, la detección de objetos no se ejecutará continuamente sobre ese objeto. Esto sirve para reducir el uso de recursos y las detecciones redundantes cuando no ha habido movimiento cerca del objeto rastreado. Esto también significa que SecureVu es consciente del contexto y puede, por ejemplo, filtrar segmentos de grabación para que solo se conserven cuando el objeto se considera activo. El movimiento por sí solo no determina si un objeto está "activo" para la retención de segmentos con objetos activos. Los cambios de iluminación en un coche aparcado no hacen que el objeto sea activo.
Ajuste del comportamiento estacionario
La configuración predeterminada es:
detect:
stationary:
interval: 50
threshold: 50
interval se define como la frecuencia para ejecutar la detección en objetos estacionarios. Esto significa que de forma predeterminada, una vez que un objeto es considerado estacionario, la detección no se ejecutará hasta que se detecte movimiento o hasta que se alcance el intervalo (cada 50 fotogramas por defecto). Con interval >= 1, la detección se ejecutará en cada n-ésimo fotograma para asegurarse de que el objeto sigue ahí.
NOTA: No hay forma de deshabilitar el rastreo de objetos estacionarios con este valor.
threshold es el n úmero de fotogramas que un objeto necesita permanecer relativamente quieto antes de ser considerado estacionario.
¿Por qué SecureVu rastrea objetos estacionarios?
SecureVu no siempre rastreó objetos estacionarios. De hecho, al principio ni siquiera rastreaba objetos en absoluto.
Veamos un ejemplo de caso de uso: quiero grabar cualquier coche que entre en mi entrada.
Uno podría pensar simplemente: "¿Por qué no ejecutar la detección de objetos cada vez que haya movimiento alrededor del área de la entrada y notificar si el cuadro delimitador está en esa zona?"
Con ese enfoque, ¿qué vídeo está relacionado con el coche que entró en la entrada? ¿Vino de la izquierda o de la derecha? ¿Estuvo aparcado al otro lado de la calle durante una hora antes de girar hacia la entrada? Un enfoque es simplemente grabar las 24 horas del día o ante cualquier movimiento (en píxeles cambiados) y no intentar hacer eso en absoluto. Esto es lo que hacen la mayoría de los demás VMS. Simplemente no intentar identificar un inicio y fin para ese objeto, ya que es difícil y se equivocará en cierta parte del tiempo.
¿No se podría mirar cuándo el movimiento se detuvo y comenzó? El movimiento para una transmisión de vídeo no es más que buscar píxeles que sean diferentes de los que eran en fotogramas anteriores. Si el coche entró en la entrada mientras alguien cortaba el césped, ¿cómo sabría qué movimiento era del coche y cuál era de la persona mientras corta el césped a lo largo de la entrada o la calle? ¿Y si otro coche iba en dirección contraria por la calle? ¿O si es un día ventoso y el arbusto junto a su buzón se mueve?
Para hacerlo con más precisión, necesita identificar objetos y rastrearlos con un ID único. En cada fotograma posterior, todo se ha movido un poco y necesita determinar qué cuadros delimitadores corresponden a cada objeto del fotograma anterior.
El rastreo de objetos entre fotogramas es un problema difícil. Especialmente si quiere hacerlo en tiempo real. Existen competiciones enteras para algoritmos de investigación que evalúan cuál puede hacerlo con mayor precisión. Ninguno de ellos es preciso el 100% del tiempo. Ni siquiera los que no pueden hacerlo en tiempo real. Siempre hay una tasa de error en el algoritmo.
Ahora considere que el coche circula por una calle que tiene otros coches aparcados a lo largo de ella. Pasará por detrás de algunos de estos coches y por delante de otros. Incluso puede haber un coche circulando en sentido contrario.
Supongamos por ahora que NO estamos ya rastreando dos coches aparcados en la calle ni el coche aparcado en la entrada, es decir, no hay rastreo de objetos estacionarios.
A medida que el coche que está rastreando se acerca a un área con 2 coches aparcados, los faros se reflejan en los coches aparcados y en el coche de la entrada. Los valores de píxeles son diferentes en esa área, por lo que se detecta movimiento. La detección de objetos se ejecuta e identifica los 3 coches restantes. En el fotograma anterior, tenía un único cuadro delimitador del coche que está rastreando. Ahora tiene 4. El objeto original, los 2 coches en la calle y el de su entrada.
Ahora tiene que determinar cuál de los cuadros delimitadores en este fotograma debe coincidir con el ID de rastreo del fotograma anterior donde solo tenía uno. Recuerde, nunca ha visto estos 3 coches adicionales antes, por lo que no sabe nada sobre ellos. Además, el cuadro delimitador del coche que está rastreando se ha movido a una nueva ubicación, ¿cuál de los 4 pertenece al coche que estaba rastreando originalmente? Los algoritmos aquí son bastante buenos. Utilizan un filtro de Kalman para predecir la siguiente ubicación de un objeto usando los cuadros delimitadores históricos y el cuadro delimitador más cercano a la ubicación predicha se vincula. Funciona bien a veces, pero la tasa de error va a ser alta cuando hay 4 posibles cuadros delimitadores.
Ahora supongamos que esos otros 3 coches ya se estaban rastreando como objetos estacionarios, por lo que el coche que circula por la calle es un nuevo 4.º coche. El rastreador de objetos sabe que teníamos 3 coches y ahora tenemos 4. A medida que el nuevo coche se acerca a los coches aparcados, los cuadros delimitadores de los 4 coches se predicen en función de los fotogramas anteriores. Los cuadros predichos para los coches aparcados tienen prácticamente un 100% de superposición con los cuadros delimitadores en el nuevo fotograma. Los coches aparcados son coincidencias casi perfectas con los ID de rastreo que tenían antes, y el único que queda es el cuadro delimitador restante que se asigna al nuevo coche. Esto resulta en una tasa de error mucho más baja. No perfecta, pero mejor.
El escenario más difícil que causa que los ID se asignen incorrectamente es cuando un objeto ocluye completamente a otro objeto. Cuando un coche pasa por delante de otro coche y ya no es visible, un cuadro delimitador desaparece y es bastante difícil de determinar al asignar el ID, ya que es difícil saber cuál está frente al otro. Esto ocurre con bastante frecuencia cuando los coches pasan por delante de otros coches. Es algo que queremos mejorar en el futuro.