El camino hacia un detector de mentiras sin contacto, o Cómo organizar un hackathon a la velocidad máxima

imagen


Steve Jobs y Steve Wozniak una vez encerrados en un garaje y lanzaron su primera Mac. Sería genial si siempre pudieras cerrar los programadores en el garaje y obtener MVP con gran potencial. Sin embargo, si agrega a los programadores un par de personas que están listas para evaluar la experiencia del usuario y buscar algo innovador, entonces las posibilidades de éxito aumentan.


A nuestro equipo de 5 personas se le ocurrió una cierta idea, por lo que decidimos a la ligera dominar el mundo cagar


Descripción MVP


Una aplicación para gerentes de recursos humanos que le permite determinar el psicotipo del solicitante y los patrones de comportamiento.


Componentes obligatorios:


  1. Una base de datos de preguntas, tipos de reacciones y un sistema para llevar estas cosas a un psicotipo.
  2. La definición de las emociones humanas basada en las manifestaciones de AU: ciertos movimientos de los músculos de la cara.
  3. Frecuencia cardíaca sin contacto
  4. Determinar la dirección de la mirada.
  5. Detección de velocidad de parpadeo
  6. Un sistema para agregar los datos recuperables anteriores en un gráfico de estrés y otros metadatos útiles.

MVP para nosotros es una isla de seguridad entre la idea misma y el gran proyecto de Anne, hacia el cual estamos en camino.


Como fue


Para evitar distracciones durante el desarrollo, se decidió alquilar un apartamento en la ciudad turística más cercana con alimentos. Al llegar allí el domingo y organizar nuestros trabajos, inmediatamente nos sentamos a discutir. En la primera noche, se determinaron los ladrillos que definitivamente deberían estar en el MVP final. Y mientras los chicos pulieron la idea, viajaron a la ciudad para consultar con los gerentes de recursos humanos, los desarrolladores (incluido yo) ya estaban preparando la fundación.


Parte técnica


La determinación de las emociones se decidió hacer estrictamente a través de FACS , ya que este método tiene suficiente justificación científica en comparación con, por ejemplo, un enfoque tan crudo. En consecuencia, la tarea se dividió en


  1. Red de capacitación que predice 68 hitos en la cara
  2. Normalizar / filtrar imágenes faciales
  3. El algoritmo que detecta los movimientos faciales en la dinámica.

La capacitación, por cierto, se realizó en el Radeon RX580 usando PlaidML, del que ya hablé en mi artículo anterior. Muchas gracias aquí, necesito decir imgaug library, que le permite aplicar transformaciones afines simultáneamente a imágenes y puntos (en nuestro caso, a puntos de referencia).


Algunas imágenes aumentadas:


imagen


Para determinar la dirección de la mirada, el algoritmo se utilizó inicialmente en la visión por computadora clásica, buscando una pupila en el área de los ojos en los HOG. Pero pronto se llegó a la conclusión de que a menudo la pupila no es visible y la dirección de la mirada se puede describir no solo por ella, sino también por la ubicación de los párpados. Debido a estas dificultades, la solución se transfirió al enfoque de red neuronal. Cortamos y marcamos la fecha nosotros mismos, ejecutándola a través del primer algoritmo, y luego corregimos manualmente los lugares de sus errores.


Los primeros desarrollos comenzaron en el verano y existieron como un script sucio de Python:


imagen


La determinación de la frecuencia del parpadeo se produjo a partir de la agregación de partes de los dos algoritmos descritos anteriormente: la convergencia del punto de referencia de los párpados y la dirección de mirar hacia abajo.


La determinación del pulso por la transmisión de video se basó en la idea de absorber el componente verde de la luz mediante partículas de sangre y se complementó con algoritmos para rastrear y extraer áreas de interés (piel).


Sale una máscara espeluznante, por supuesto:


imagen


De hecho, la creación de los ladrillos descritos anteriormente se redujo a la implementación de algoritmos de última generación con mejoras para mejorar la precisión en nuestro caso particular. Afortunadamente, hay arxiv.org .


Surgieron dificultades al crear la lógica para normalizar imágenes de la cara y algoritmos para evaluar los datos recibidos. Por ejemplo, cuando se reconocen caras, se usa activamente el Modelo de apariencia activa: la cara es arrastrada por los puntos encontrados en la textura general de la cara. ¡Pero la disposición mutua de puntos es importante para nosotros! Como opción, filtre caras demasiado rotadas o tire de la textura solo con los "anclajes", puntos clave que no reflejan el movimiento de los músculos (por ejemplo, un punto en el puente de la nariz y los bordes de la cara). Este problema ahora es uno de los principales y no permite obtener datos confiables si la cara está demasiado girada (¡también podemos contar el ángulo de rotación!). El rango aceptable para hoy es + -20 ° en ambos ejes. De lo contrario, la cara simplemente no se está procesando.


Por supuesto, hay otros problemas:


  • Definición de puntos de referencia si una persona con gafas
  • Extraer la línea de base si una persona hace una mueca
  • Detección de frecuencia cardíaca en luz parpadeante

Ah sí, y ¿cuál es la línea de base ? Concepto fundamental en el procesamiento de emociones utilizando métodos FACS. El algoritmo de extracción basal es probablemente uno de los conocimientos más importantes basados ​​en los resultados de nuestro hackathon.


Además de los algoritmos, hay otro punto importante que no podemos olvidar: el rendimiento. Además, el límite de rendimiento ni siquiera es una PC, sino una computadora portátil común. Como resultado, todos los algoritmos se hicieron lo más livianos posible, y las redes experimentaron una reducción iterativa de tamaño mientras se mantenía una precisión aceptable.


El resultado es 30-40% en Intel i5 a 15-20 fps. Está claro que hay un cierto margen que desaparecerá a medida que se agreguen módulos adicionales.


Los planes determinan:


  • Dolor de garganta
  • Cambio en la tez
  • Frecuencia respiratoria
  • Intensidad del movimiento del cuerpo
  • Patrones de pose humana
  • Voz temblorosa

¿Qué más podemos hacer?


Como fanático de la visión por computadora y ML, te conté un poco sobre los algoritmos utilizados en nuestro software. Pero debido a su carácter incompleto, para esta aplicación, las características anteriores son, más bien, una adición agradable. La parte más importante es el sistema desarrollado para determinar el psicotipo de una persona. Cual es el punto? Desafortunadamente, esto fue hecho por mis colegas (¡amigos!) Y no puedo explicar de qué y de dónde. Pero para una comprensión mínima, puede considerar el procedimiento para trabajar con el software resultante:


HR establece las cualidades que son especialmente necesarias para la vacante en cuestión:


imagen


HR lleva a cabo una entrevista, haciendo parte de las preguntas de la base de datos preparada (durante la entrevista, HR tiene ante sí información adicional sobre las emociones y el nivel de estrés)


Durante o después de la entrevista, RRHH completa las respuestas a las preguntas y los patrones de comportamiento:


imagen


A través de matrices desarrolladas, el software crea infografías que muestran la coincidencia de cualidades dadas y específicas:


imagen


Después de la entrevista, hay un registro que le permite volver a la entrevista en cualquier momento y evaluar este o aquel momento.


Total


imagen


14 días x 12 horas + 3 desarrolladores + 2 expertos en el campo de la determinación del MVP lie = ready. La inmersión fue máxima, hasta el punto de que a la hora del almuerzo vimos la serie Deceive Me , lo recomiendo encarecidamente.


Para no ser infundado, adjunto un ejemplo de cómo funciona la aplicación ahora:


Además del video promocional para la gran solución de Anne que estamos avanzando.


imagen

Source: https://habr.com/ru/post/es432030/


All Articles