Cómo reconocemos el equipo de protección personal

¡Probablemente, te has estado preguntando toda tu vida cómo entrenar una red neuronal para reconocer a las personas con cascos y chalecos naranjas! ¿No? Pero te lo diremos de todos modos.

Nuestro nombre es Tatyana Voronova y Elvira Dyaminova. Nos dedicamos al análisis de datos en la empresa Center 2M, trabajamos mucho con las fábricas y empresas más reales. Debido a violaciones de seguridad, sufren pérdidas multimillonarias, los empleados resultan heridos, por lo que sería bueno poder detectar tales violaciones sistemáticamente y lo antes posible. Lo mejor de todo: automáticamente. Por lo tanto, tenemos problemas asociados con el reconocimiento de equipos de protección personal (EPP) en video y la identificación de personas o equipos en la zona de peligro.

imagen

En su mayor parte, nos llegan órdenes para determinar los cascos (más precisamente, su ausencia) y la ropa de trabajo. Ya hemos adquirido experiencia en la realización de tales tareas y ahora podemos describir los problemas que hemos encontrado y cómo resolverlos.

Dado que, según los términos de cooperación, no tenemos derecho a publicar imágenes de los objetos del cliente, ilustraremos el artículo con imágenes de Internet, en las que las personas con casco a menudo sonríen y se ven geniales. Desafortunadamente, en el dominio público no por todas las características de las tareas que enfrentamos en la realidad, puede encontrar buenos ejemplos. En particular, en la vida es menos probable que las personas con casco sonrían, y el problema de los trabajadores calvos (hablaremos un poco más adelante) en Internet no se ha revelado realmente.

Imagen de Internet (tamaño 1920x1280):

imagen

El reconocimiento del EPP puede reducirse a uno de los dos problemas clásicos de la visión por computadora: clasificación de imágenes y detección de objetos. En la práctica, resultó que era mejor no utilizar uno de estos enfoques, sino elegir el más adecuado para cada caso en particular, así como combinarlos de manera flexible. Por ejemplo, primero podemos determinar dónde están las personas en la imagen, luego clasificar las imágenes cortadas por silueta en clases "en ropa de trabajo" y "sin", y detectar la presencia de un casco en el segundo pase.

En las figuras precortadas de personas, la clasificación de la presencia de cascos y ropa de trabajo se ve así (vista de la imagen original):

el resultado del trabajo de los modelos para la clasificación de ropa de trabajo y cascos

imagen

En las mismas figuras humanas previamente seleccionadas, la aplicación del enfoque esta vez con detección de cascos.

El resultado del modelo para la clasificación de ropa de trabajo y un modelo para detectar cascos:

imagen

Etapa uno: detección humana


La calidad de la definición de objetos pequeños (cascos / anteojos / guantes) en marcos grandes es regular. Es mucho más fácil para una computadora, como una persona, entender primero dónde están las personas, y solo entonces descubrir qué llevan puesta. Entonces, todo comienza con la identificación de las personas en el marco.

Como resultado de los experimentos, descubrimos que la red neuronal Faster R-CNN con Inception v2 como extracción de características es muy adecuada para detectar personas. TensorFlow ya tiene redes neuronales pre- entrenadas para detectar objetos.

Para nosotros, Faster R-CNN Inception v2 (entrenado en el conjunto de datos COCO) es el método básico que intentamos primero al resolver tales problemas.

Inicialmente, detectamos personas en el marco (y luego en las personas encontradas encontramos PPE):

imagen

Tenga en cuenta que hemos aumentado el cuadro delimitador "con una persona" a lo largo del eje y :

imagen

En esta fotografía, el trabajador recibió un disparo con buena luz y contra un fondo contrastante (con imágenes encontradas en Internet, esto sucede todo el tiempo). Por lo tanto, el cuadro delimitador con la persona estaba bien construido. Sin embargo, en nuestra práctica hay casos frecuentes (especialmente en condiciones de visibilidad insuficiente) cuando el modelo de detección corta un casco en una persona, después de lo cual es inútil buscarlo en una imagen recortada. En este sentido, a lo largo del eje y, aumentamos el cuadro delimitador predicho en un 15% antes de pasar a la segunda etapa.

Al detectar personas, nos encontramos con pequeños problemas desagradables. En primer lugar, cuando dos personas caminan o se paran una detrás de otra, a menudo comienzan a ser detectadas como una sola persona. En segundo lugar, sucede que un objeto estático ingresa al campo de visión de la cámara, en el cual el modelo puede reconocer a una persona, como un hidrante. Estos problemas pueden resolverse de varias maneras. Por ejemplo, cómo lo hicimos: reconciliarlos y aceptarlos, ya que, en general, el modelo es adecuado para nosotros en términos de productividad y calidad.

Un problema más fundamental es que las instalaciones industriales en las que hay una "zona de peligro" a menudo son enormes y, en consecuencia, las personas en los marcos son muy pequeñas. Nuestro método básico basado en Faster R-CNN Inception v2 mostró malos resultados en tales casos, y al final lo intentamosR-CNN más rápido Nas . Los resultados fueron impresionantes, las personas fueron bien reconocidas incluso en la distancia, pero la velocidad fue mucho menor que el modelo base. Con suficientes recursos y la necesidad de una alta precisión, puede usar Faster R-CNN Nas .

Segunda etapa: determinación de infractores maliciosos


Dependiendo de la tarea, a menudo se utilizan los siguientes:

  • Modelo de clasificación de imagen: inicio v3
  • Modelo de detección de objetos: inicio más rápido de R-CNN v2

Clasificación de ropa de trabajo y cascos.


Probamos diferentes arquitecturas de redes neuronales para clasificar imágenes, y finalmente nos decidimos por Inception v3, decidiendo aprovechar el hecho de que está diseñado para trabajar con tamaños de imagen variables. Ya teníamos muchas fotos recortadas con personas, y no fue difícil calcular los valores medios para la altura y el ancho. Entonces llegamos a la conclusión de que para la capacitación de clasificadores comenzaron a llevar imágenes a un tamaño de 150x400.

Para capacitar a la red para que reconozca el PPE, en primer lugar, es necesario recopilar un conjunto de datos a partir de ejemplos etiquetados. En este proceso, hay sutilezas, cuya realización viene con la experiencia. Por ejemplo, es mejor eliminar del conjunto de datos a las personas que están cortadas por encima de las caderas. Esto acercará el conjunto de datos a las condiciones reales, ya que la mayoría de las veces se ve a la gente a plena altura en video de cámaras de vigilancia. Los casos de superposición, por supuesto, también ocurren, pero las siluetas completas para la muestra objetivo son mucho más características.

Ejemplos de nuestro conjunto de datos de ropa de trabajo:

imagen

No hemos inventado nada específico como métrica; utilizamos memoria y precisión.

Modelo para clasificar la presencia / ausencia de ropa de trabajo:

resultados en una muestra de validación

imagen

Detección de EPP


El modelo de clasificación funciona más rápido que el modelo para detectar objetos, pero debido al hecho de que las gafas y guantes de seguridad son pequeños en la imagen, es difícil crear un buen clasificador para dicho PPE. Por lo tanto, capacitamos a la red neuronal Faster R-CNN en un conjunto de datos con seis clases:

  • anteojos / no anteojos
  • guantes / not_gloves
  • casco / no_casco

imagen

Recopilación de datos y marcado


Los principales problemas estaban relacionados con el conjunto de datos de cascos. Fue una forma fascinante: pasamos por personas calvas, personas con cascos en sus manos e incluso por personas calvas con cascos en sus manos.

Como al comienzo del viaje no teníamos muchos cuadros de condiciones reales, recopilamos el conjunto de datos lo mejor que pudimos: filmarnos, tomar imágenes de Internet o de sitios de construcción. Un poco más tarde, comenzamos a recibir muchos videos de varias empresas, por lo que comenzamos a enriquecer el conjunto de datos solo con marcos de condiciones reales. En algún momento, el número de imágenes etiquetadas excedió los 5k, y la calidad de agregar nuevos ejemplos dejó de mejorar, en este sentido, revisamos el enfoque del marcado.

Describiremos las etapas para mejorar el conjunto de datos del casco utilizando el ejemplo de imágenes de Internet, por lo que el ángulo y la calidad no coinciden con lo que teníamos.

Además de la imagen de arriba, recortada por encima de las caderas, eliminamos las imágenes en las que los cascos se recortan más de la mitad para evitar confusiones con las gorras.

imagen

También nos enfrentamos al hecho de que si una persona tiene un casco en sus manos, a menudo la modelo no vio ninguna violación: ¿hay un casco? Ahi esta. Por lo tanto, eliminamos del conjunto de datos de entrenamiento todos los marcos en los que una persona sostiene un casco con la mano, incluso si el casco está sobre su cabeza en ese momento.

En general, tratamos de eliminar imágenes con un fondo iluminado o en habitaciones oscuras, y luego minimizamos la cantidad de fotos tomadas por nosotros, dejando principalmente imágenes de la producción. Como resultado, redujimos el conjunto de datos a la mitad.

Además, enriquecimos el conjunto de datos con personas calvas, de lo contrario siempre estarán en cascos, incluso si esto no es así, y con rubias con cuadrados, para los cuales, con un cierto ángulo, el detector también determina el casco.

Después de eliminar imágenes inadecuadas, pasamos directamente al marcado (para detectar objetos). Resultó no ser tan simple. Resulta que la calidad del detector final depende en gran medida del área exacta de la imagen marcada como "casco" o "guantes". Inicialmente, asignamos cascos y gafas sin agarrar caras y guantes con manos agarradoras. Sin embargo, con la experiencia, mejoramos gradualmente nuestro enfoque al observar los errores del primer y segundo tipo, donde las personas sostienen los cascos en sus manos, y algo redondo en algo largo resulta ser un "guante". Ahora, al marcar cascos y anteojos, tratamos de agarrar la cara hasta la punta de la nariz, y al marcar guantes, por el contrario, nos limitamos a un cepillo.

imagen

Como resultado de nuestras manipulaciones en el conjunto de datos, obtuvimos los siguientes resultados.

Modelo para detectar la presencia / ausencia de EPP utilizando cascos como ejemplo:
resultados de una muestra de validación antes del inicio del "trabajo global" en el conjunto de datos

imagen


Resultados finales en la muestra de validación

imagen

La integridad del reconocimiento de los cascos disminuyó ligeramente, pero al mismo tiempo, las métricas para detectar violaciones mejoraron, y esto es lo que queríamos lograr.

Modelo para clasificar la presencia / ausencia de cascos:
resultados en una muestra de validación antes del inicio del "trabajo global" en el conjunto de datos

imagen

Resultados finales en la muestra de validación

imagen

Cabe señalar que no tenemos una división en gafas y anteojos para la visión, van bajo la misma etiqueta "anteojos", y los guantes de tonos claros se pueden percibir como un cepillo desnudo. Intentamos maximizar la gama de colores de los cascos y la ropa de trabajo en nuestros conjuntos de datos, pero para mayor confiabilidad agregamos la técnica más simple y confiable: si es necesario, para detectar guantes, les decimos a los clientes que los colores brillantes ayudan a aumentar la precisión.

Por el momento, tenemos modelos universales que utilizamos para la presentación inicial al cliente. Sin embargo, debe entenderse que es imposible crear un modelo universal para todos, es necesario adaptarse a cada cliente, identificar y tener en cuenta nuevos matices, enriquecer conjuntos de datos o crearlos de nuevo para cumplir requisitos específicos.

imagen

Prima


Por lo general, los clientes desean procesar tantas cámaras como sea posible, utilizando la menor cantidad de recursos posible. Butch, por supuesto, es algo bueno, pero no se prohíben trucos adicionales para optimizar el proceso.

Por ejemplo, mis colegas y yo del centro de clientes de IBM en Moscú teníamos la hipótesis de que reunir a varias personas para detectar más cascos aumentaría la cantidad de cámaras por servidor con una pérdida de precisión sin principios.

Como base, decidimos tomar el tamaño de 1000x600 para el lienzo en el que las personas serán "aplicadas". Inicialmente se consideraron dos opciones de diseño:

  • Ancho y alto fijos (200x600), con este enfoque, hay 5 personas en el marco.
  • Ancho y alto fijos (125x600), 8 personas.

Esta decisión se debió al hecho de que con datos fijos, sabemos exactamente el número de personas en la foto, lo que nos da un pronóstico de la carga. Sin embargo, durante el desarrollo, consideramos esa opción:
  • Altura fija y ancho proporcional (*** x600), diferente número de personas.

Se asumió que al aumentar el tamaño y mantener las proporciones, los resultados serán mejores en comparación con otras opciones de diseño. El número de personas varió de 3 a 5 (+/–).

Como resultado, obtuvimos que la opción con un ancho y una altura fijos (200x600) es la mejor entre las consideradas. Por supuesto, este método no es adecuado para detectar gafas y guantes, porque los objetos son pequeños, pero para detectar cascos / falta de cascos, este método mostró buenos resultados.

Por ejemplo, en una muestra de validación:

imagen

imagen

: (tvoronova), (elviraa)

All Articles