¿Qué algoritmo se usa para contar la cantidad de personas en un video?

La arquitectura general del sistema del problema propuesto para el conteo de personas se muestra en la imagen.

El sistema funciona de acuerdo con las tres fases que se detallan a continuación:

(1) detección de los puntos de interés asociados a las personas,

(2) agrupamiento de los puntos de interés,

(3) características de extracción y regresión.

Detección de los puntos de interés asociados a las personas:

Para detectar puntos de interés asociados a las personas, hacemos dos suposiciones básicas: las personas dentro de la escena no son estáticas y no hay otros elementos móviles en la escena. Por lo tanto, si calculamos los puntos de interés de la imagen y la información de movimiento asociada, los supuestos anteriores garantizan que solo los puntos de interés con un vector de movimiento no nulo deben estar asociados a las personas.

Aunque una persona puede parecer estática, algún movimiento, incluso muy pequeño, generalmente se asocia a él / ella. La segunda suposición se encuentra en la mayoría de las aplicaciones del mundo real donde se requiere contar personas en la escena; Por supuesto, en los raros casos en los que no se verifica la segunda suposición (agitar árboles, mover vehículos, etc.), el método propuesto no puede adoptarse.

Para eliminar los puntos de interés estáticos (que no están asociados a las personas), para cada punto detectado por el algoritmo SURF, estimamos el vector de movimiento con respecto al cuadro anterior mediante el uso de una técnica de coincidencia de bloques. Luego distinguimos entre puntos de interés estáticos y móviles en función de la siguiente regla:

Donde p (x, y) es el punto de interés en las coordenadas (x, y), | v + (x, y) | es la magnitud del vector de movimiento calculado en (x, y) con respecto al cuadro anterior, y β es un valor de sesgo.

Agrupación de los puntos de interés:

Para compensar los cambios en el número de puntos debido a la perspectiva y a oclusiones parciales, el algoritmo necesita dividir los puntos detectados en grupos correspondientes a grupos separados de personas, para poder calcular para cada grupo su distancia desde el cámara y su densidad.

El problema de agrupamiento enfrentado se caracteriza por el hecho de que no tenemos ningún conocimiento a priori sobre el número y la forma de los grupos que se encuentran. Esto depende del hecho de que las personas pueden aparecer en diferentes posiciones en la escena y pueden agregarse de muchas maneras diferentes. En esta situación, los métodos de agrupamiento más comúnmente utilizados (como k-means) no podrían haberse aplicado porque requieren que el usuario proporcione el número de grupos deseados o un umbral en el diámetro del grupo o en la distancia entre grupos. Como se observa en, los algoritmos de agrupación basados ​​en la teoría de grafos son muy adecuados para enfrentar problemas de agrupación en los que no se pueden hacer suposiciones sobre los grupos. En particular, adoptamos la técnica presentada en, ya que (a diferencia de otros algoritmos en la familia de agrupamiento basado en gráficos) no requiere ningún parámetro para ajustarse o adaptarse a la aplicación particular. Este algoritmo representa el conjunto de puntos como un gráfico en el que cada punto corresponde a un nodo y cada borde está etiquetado con la distancia entre sus puntos finales. Se calcula el árbol de expansión mínimo (MST) del gráfico; este árbol contendrá algunos bordes que se encuentran entre nodos en el mismo grupo (bordes intragrupo) y otros bordes entre nodos de diferentes grupos (bordes entre grupos). Suponiendo que los grupos están bien separados, se puede esperar que los bordes intragrupo sean más cortos que los bordes entre grupos. Entonces, el algoritmo usa un umbral para dividir los bordes en dos conjuntos.

Bordes entre grupos clasificados como Intra-cluster:

Este tipo de clasificación errónea no permite dividir algunos clústeres, lo que resultará agregado. Sin embargo, esta situación no representa un problema cuando los grupos unidos se refieren a grupos de personas que están a la misma distancia de la cámara. Esto suele suceder cuando los grupos se agregan horizontalmente. De hecho, en este caso, la distorsión de la perspectiva no cambia significativamente entre los grupos unidos y el error introducido puede considerarse insignificante. Por el contrario, cuando los grupos combinados erróneamente se refieren a grupos de personas a diferentes distancias de la cámara (típicamente cuando los grupos están unidos verticalmente), esto causa errores en la estimación del número de personas que están dentro de los grupos cuya distancia de la cámara es errónea evaluado.

Bordes intragrupo clasificados como intergrupo:

Este fenómeno hace que un grupo se divida en varias partes. Consideraciones similares se pueden hacer también para este tipo de error con respecto a la diferente incidencia e impacto en el rendimiento general dependiendo de la forma en que ocurren las divisiones (horizontal o vertical).

Extracción de características y regresión:

En esta etapa del algoritmo, se calcula un vector de características de cada grupo detectado en el paso anterior, y se alimenta a un regresor. La salida del regresor es el número estimado de personas en el grupo representado por el grupo.

La idea básica del método en es que el número promedio de puntos de interés asociados a cada persona es una propiedad global de la escena. Por lo tanto, una vez que se ha definido la escena, es posible asumir una relación de proporcionalidad directa simple entre el número de puntos y el número de personas.

Esto le da una idea muy básica de algunos de los poderosos algoritmos de este tipo,
Si está interesado, le sugiero que lea algunos de Albiol et al. enfoques y hacer algunas de sus propias investigaciones.
¡Aclamaciones!

No hay algoritmo que cuente directamente el no de personas de un video. Hay muchos algoritmos (por ejemplo, Opencv) que realizan la detección de rostros en una imagen, por lo que en su caso puede transmitir el video en forma de imágenes mpg / mpeg y pasar esas imágenes a opencv para su detección y contar el no de rostros.

Hay algunos otros algoritmos / servicios para lograr no. de caras
Uno de ellos es de Google Cloud Platform. Lo usé para un PoC y también es bastante preciso y rápido.

Espero que sea de ayuda !!
¡Feliz codificación!