¿Cómo contamos a las personas que usan la visión por computadora?

imagen
Fotos de fuentes abiertas

Las reuniones masivas de personas crean problemas en varios campos (minorista, servicios públicos , bancos, desarrolladores). Los clientes deben combinar y monitorear la información sobre la cantidad de personas en muchos lugares: en oficinas de servicio, edificios administrativos, en sitios de construcción, etc.

Las tareas de contar personas tienen soluciones listas, por ejemplo, el uso de cámaras con análisis incorporado. Sin embargo, en muchos casos es importante utilizar una gran cantidad de cámaras instaladas previamente en diferentes departamentos. Además, una solución que tenga en cuenta los detalles de un cliente en particular será mejor para él.

Nuestros nombres son Tatyana Voronova y Elvira Dyaminova, nos dedicamos al análisis de datos en el Centro 2M. Aunque el tema parece ser el más simple de lo que se está considerando actualmente en problemas de visión por computadora, incluso en este problema, cuando se trata de la práctica (implementación), muchas subtareas complejas y no triviales tienen que resolverse. El propósito de nuestro artículo es mostrar la complejidad y los enfoques básicos de los problemas de visión por computadora utilizando el ejemplo de resolución de uno de los problemas básicos. Para los siguientes materiales, queremos atraer colegas: desarrolladores, ingenieros, gerentes de proyectos en análisis de video, para que hablen sobre los recursos informáticos involucrados, las mediciones de velocidad, los matices de la comunicación con los clientes y las historias de implementación de proyectos. Nos centraremos en algunos de los métodos de análisis de datos utilizados.

Comencemos con la siguiente declaración: debe mostrar el número de personas en la cola en la oficina de servicio. Si la cola, de acuerdo con las reglas internas de la compañía del cliente, se considera crítica, el escenario interno comenzará a resolverse:
  • notificación de la necesidad de abrir una entrada / caja adicional;
  • llamada del gerente;
  • informar sobre la necesidad de redirigir los flujos de personas a otros mostradores de efectivo (más gratuitos).

Por lo tanto, nuestro trabajo ahorrará a los clientes muchos nervios.

Modelos de aprendizaje automático utilizados


Detección de siluetas de personas


Inicialmente, decidimos utilizar un modelo ya capacitado para detectar personas (siluetas), ya que tales tareas tienen soluciones bastante buenas, por ejemplo, la definición de siluetas .

Entonces, en la biblioteca TensorFlow hay una gran cantidad de modelos pre-entrenados .

Después de realizar las pruebas, primero nos decidimos por dos arquitecturas: Faster R-CNN y YOLO v2. Más tarde, después de que apareció la nueva versión, agregamos YOLO v3.

Descripción de modelos .

Un ejemplo de un resultado de reconocimiento para YOLO v2 (en adelante, las imágenes se toman de fuentes gratuitas; no podemos publicar fotogramas de las cámaras de los clientes):

imagen

Un ejemplo de un resultado de reconocimiento para F-R-CNN más rápido:

imagen

La ventaja de YOLO es que el modelo responde más rápido, y en algunas tareas esto es importante. Sin embargo, en la práctica, descubrimos que si no es posible usar una versión pre-entrenada del modelo, y se requiere un nuevo entrenamiento en su conjunto de entrenamiento especializado, es más correcto usar F-R-CNN más rápido. Si la cámara se instaló lo suficientemente lejos de las personas (la altura de la silueta es inferior a 100 píxeles para una resolución de 1920 por 1080) o si fuera necesario reconocer adicionalmente el equipo de protección personal de una persona: cascos, cierres, elementos de vestimenta protectora, en tales situaciones, la calidad del entrenamiento resulta en su propio conjunto de datos (hasta 10 mil objetos diferentes) para YOLO v2 no estábamos satisfechos.

YOLO v3 mostró resultados aceptables, sin embargo, las pruebas de velocidad no dieron una ventaja significativa para YOLO v3 en comparación con R-CNN más rápido. Además, encontramos una manera de aumentar la velocidad de reconocimiento mediante el uso de lotes (procesamiento grupal de imágenes), análisis selectivo de imágenes (más sobre esto a continuación).

Para todos los tipos de modelos, mejoramos la precisión mediante el procesamiento posterior de los resultados: eliminamos valores atípicos, tomamos los valores más comunes para un conjunto de cuadros consecutivos. Un segundo de una cámara generalmente corresponde a 25-50 cuadros. Por supuesto, para mejorar el rendimiento (con un número creciente de cámaras), analizamos no todos los cuadros, pero a menudo es posible dar una respuesta final en un intervalo de varios segundos, es decir, usar varios cuadros. Esta decisión se puede tomar dinámicamente, teniendo en cuenta el número total de cámaras (transmisiones de video para el procesamiento) y la potencia informática disponible.

Un ejemplo del uso del modelo Faster R-CNN, capacitado en nuestro propio conjunto de datos:

imagen

ahora estamos realizando pruebas con el modelo SSD-300. Esperamos que nos brinde un aumento en la productividad mientras se mantiene una calidad aceptable de reconocimiento.

Creando tu propio conjunto de datos de entrenamiento


En los casos en que desee crear su propio conjunto de aprendizaje, hemos desarrollado para nosotros el siguiente procedimiento:
  • recopilamos videoclips con los objetos requeridos: videos de los clientes, videos de dominio público (videos distribuidos, cámaras de vigilancia);
  • cortamos y filtramos fragmentos de video para que el conjunto de datos resultante esté equilibrado en varios objetos de reconocimiento;
  • Distribuimos marcos entre marcadores para resaltar los objetos necesarios. Un ejemplo de una herramienta de marcado ;
  • verificar selectivamente los resultados de los marcadores;
  • si es necesario, realizamos el aumento: generalmente agregamos giros, reflexión, cambiamos la nitidez (formamos un conjunto de datos marcado extendido).

Usando zonas de detección


Uno de los problemas para contar personas en línea es la intersección de las áreas de visibilidad de varias cámaras. Se puede instalar más de una cámara en una habitación; por lo tanto, es importante preservar el área superpuesta de las imágenes, y cuando una persona ingresa al campo de visión de varias cámaras, debe tenerse en cuenta una vez.

En algunas situaciones, las personas deben ser detectadas solo en un área determinada de la habitación (cerca de las ventanas de servicio) o plataforma (cerca del equipo).

Por razones obvias, es incorrecto verificar que el rectángulo de borde (cuadro / marco), que restringe a toda la persona, caiga en la zona (polígono). En esta situación, la parte inferior (tercera / mitad) del rectángulo se divide en puntos: nodos (se toma una cuadrícula de 10 por 10 nodos) y se verifica la caída en la zona de los nodos individuales seleccionados. El administrador del sistema asigna los nodos "significativos" en función de la geometría de la sala (los valores predeterminados también se seleccionan, si no se ingresa la configuración para una sala en particular).

imagen

Además, se está probando la aplicación de la arquitectura Mask R-CNN para nuestras tareas. El método le permite determinar el contorno de la silueta; esto permitirá evitar el uso de un rectángulo de borde al analizar la intersección con una zona .

imagen

Otro enfoque: detección de la cabeza (entrenamiento modelo)


La calidad no siempre se logra al elegir un modelo, aumentar / cambiar el conjunto de entrenamiento y otros métodos puramente ML. A veces, solo se puede obtener una mejora decisiva cambiando la formulación completa del problema (por ejemplo, en nuestro problema). En estas colas, las personas se amontonan y, por lo tanto, se superponen entre sí, por lo que la calidad del reconocimiento a menudo es insuficiente para usar solo este método en condiciones reales.

Toma la imagen de abajo. Cerramos los ojos al hecho de que la imagen fue tomada en el teléfono, y el ángulo de su inclinación no corresponde al ángulo de inclinación de las cámaras de CCTV. Hay 18 personas en el marco, y el modelo de detección de silueta identificó a 11 personas:

imagen

para mejorar los resultados, pasamos de definir siluetas a definir objetivos. Para esto, el modelo Faster R-CNN fue entrenado en un conjunto de datos tomado deenlace (el conjunto de datos incluye marcos con un número diferente de personas, incluidos grandes grupos, entre los cuales hay personas de diferentes razas y edades).

Además, enriquecimos el conjunto de datos con marcos del material (de las cámaras) del cliente en aproximadamente un tercio (principalmente debido al hecho de que el conjunto de datos original tenía pocas cabezas en sombreros). Un tutorial fue útil para el autoaprendizaje de un modelo .

Los principales problemas que encontramos son la calidad de la imagen y la escala de los objetos. Las cabezas tienen diferentes tamaños (como se puede ver en la imagen de arriba), y los marcos de las cámaras del cliente tenían una resolución de 640x480, debido a esto, los objetos interesantes (capuchas, bolas navideñas, respaldos de sillas) a veces se detectan como cabezas.

Por ejemplo, en el conjunto de datos de entrenamiento, hemos etiquetado las cabezas:

imagen- estos son cabezas en un conjunto de datos;

imagen- y este es el respaldo de la silla, pero la modelo quiere creer que esta es la cabeza.

Sin embargo, en general, este modelo se las arregla bastante bien en casos donde hay una concentración masiva de personas. Entonces, en el cuadro anterior, nuestro modelo identificó a 15 personas: por lo

imagen

tanto, en esta imagen, el modelo no pudo encontrar solo tres cabezas, que fueron bloqueadas significativamente por objetos extraños.

Para mejorar la calidad del modelo, puede reemplazar las cámaras actuales por cámaras con una resolución más alta y, además, recopilar y marcar el conjunto de datos de entrenamiento.

Sin embargo, debe tenerse en cuenta que con un pequeño número de personas, el método de detección por siluetas en lugar de por cabezas es más adecuado, ya que la silueta es más difícil de superponer o confundir por completo con objetos extraños. Sin embargo, si hay una multitud, no hay salida, así que para contar personas en línea, se decidió utilizar dos modelos en paralelo, para cabezas y siluetas, y combinar la respuesta.

Siluetas y cabezas, un ejemplo de resultado de reconocimiento:

imagen

Valoración de la precisión


Al probar el modelo, se seleccionaron marcos que no participaron en el entrenamiento (conjunto de datos con un número diferente de personas en el marco, en diferentes ángulos y diferentes tamaños), para evaluar la calidad del modelo, utilizamos memoria y precisión.

Recordar : la integridad muestra qué proporción de objetos que realmente pertenecen a la clase positiva, predijimos correctamente.

Precisión : la precisión muestra qué proporción de objetos reconocidos como objetos de una clase positiva, predijimos correctamente.

Métricas en cuadros de cámaras en sitios de prueba (las imágenes en estas salas estaban en el conjunto de datos):

imagen

en cuadros de cámaras nuevas (estas salas no estaban en el conjunto de datos):

imagen

Cuando el cliente necesitaba un dígito, una combinación de precisión e integridad, proporcionamos una media armónica o medida F :
imagen

Informes


Una parte importante del servicio son las estadísticas. Junto con marcos individuales (y personas dedicadas contadas por ellos), los clientes desean ver los resultados en forma de informes listos para usar (paneles) con ocupación promedio / máxima para diferentes intervalos de tiempo. El resultado es a menudo interesante en forma de gráficos y cuadros que caracterizan la distribución del número de personas a lo largo del tiempo.

Por ejemplo, en nuestra solución para el marco, se calcula el número de personas para ambos modelos (siluetas y cabezas) y se selecciona el máximo. Si hay varias cámaras en la sala, la zona de superposición de imágenes (preestablecida a través de la interfaz) se guarda, y cuando una persona ingresa al alcance de varias cámaras, se tiene en cuenta una vez.
A continuación, el valor del número de personas en la cola se forma durante varios cuadros consecutivos, para el intervalo Δt . Dentro de una hora, los valores para varios de estos intervalos se descargan para cada habitación.

El tamaño del intervalo de tiempo y el número de intervalos se determinan en función del número de habitaciones y la potencia informática utilizada. Para cada intervalo, se forma una matriz de valores con el número de personas en la sala.

Se selecciona el valor más común (modo). Si hay varios valores con la misma frecuencia, se selecciona el máximo.

El valor resultante es el número de personas en la cola en el momento tinmediatamente después del intervalo en cuestión. En solo una hora, se obtiene un conjunto de valores para diferentes intervalos, es decir, valores en instantes de tiempo t_1, t_2 ... t_n .

Además para t_1, t_2 .... t_n, se calculan los valores máximos y promedio de la cantidad de personas; estos valores se muestran en el informe como cargas pico y promedio para una hora determinada.

Diagrama de distribución de personas por tiempo para carga máxima (ejemplo simple):

imagen

Diagrama de distribución de personas por tiempo para carga promedio (ejemplo simple):

imagen

Multitudes


En conclusión, para completar el tema, me gustaría mencionar casos de multitudes muy grandes, por ejemplo, multitudes en estadios, en lugares de intenso tráfico humano.

Estas tareas consisten en estimar el tamaño de la multitud: si se trata de una multitud de 300 personas, se considera aceptable una respuesta de 312 o 270.

En la práctica, no tuvimos que resolver tales problemas con la ayuda de la analítica de video (si este es un evento organizado, entonces es más fácil para cada persona emitir una etiqueta). Sin embargo, realizamos pruebas. Para tales tareas, se utilizan métodos separados, una descripción general de los métodos .

Se reprodujo el resultado del modelo de la revisión (modelo previamente entrenado en CSRNet):

imagen

El ángulo es importante para la configuración de este modelo, es decir, si la ubicación de disparo es fija, el resultado será mejor que cuando se aplica a diversas imágenes. En términos generales, existe la oportunidad de volver a capacitar a este modelo: la calidad se puede mejorar durante la operación del modelo, cuando está activado el video real de las cámaras instaladas.

Autores del artículo: Tatyana Voronova (tvoronova), Elvira Dyaminova (elviraa)

All Articles