
Todo automovilista sabe que los conductores tienden a cansarse. Sucede que sus ojos se mantienen unidos incluso cuando conduce a casa desde el trabajo, y los camioneros tienen uno de los principales problemas profesionales:
miles de accidentes ocurren cada año debido a que las personas se quedan dormidas al volante. La cuestión es que los camioneros deben encontrar constantemente un equilibrio entre el descanso y la conducción segura, por un lado, y la fatiga con mayores ganancias por el otro. Gran tentación de dormir menos, pero más rápido para entregar los productos y obtener un nuevo pedido. Sin mencionar el hecho de que los conductores tienen sus propias vidas personales y no siempre se van a dormir en un vuelo.
Para hacer las carreteras más seguras, lanzamos nuestro proyecto para monitorear la condición de los conductores: de acuerdo con los requisitos de los clientes, creamos soluciones de software y hardware que pueden rastrear el bienestar del conductor en la carretera y evitar la etapa de quedarse dormido para que no se "despierten" en el próximo mundo.
Ojo vigilante
La idea principal es usar la cámara para rastrear la fatiga y las reacciones peligrosas de los conductores. El dispositivo primero recopila estadísticas sobre cómo se comporta un conductor en particular mientras conduce. Y si, sobre la base de estas estadísticas, el sistema decide que el conductor muestra signos de fatiga o está a punto de ver sueños, ella se lo indicará. Si el conductor a menudo comienza a asentir o reacciona a eventos como una mosca adormecida, el sistema también informa al operador sobre esto.
Mediante el análisis de video, monitoreamos cuán enfocado está el conductor y si está mirando el camino. La cámara captura constantemente la cara y las manos, y el sistema rastrea varios puntos clave. Esperamos que los ojos del conductor estén siempre abiertos, sus ojos se dirijan hacia el parabrisas o los espejos laterales. Si los ojos se cierran, o la cabeza se inclina hacia adelante y la barbilla cae sobre el cofre, o la cara se aleja del parabrisas durante mucho tiempo, entonces el sistema emite una señal.
Por supuesto, este seguimiento y señalización no funciona todo el tiempo, pero solo cuando el automóvil está en movimiento, se utiliza un sensor GPS para esto. También proporcionamos la posibilidad de encender y apagar el sistema por la fuerza, porque las situaciones son diferentes. Pero al mismo tiempo, comparamos la duración de la máquina y el momento en que el sistema está apagado. Si es necesario, el dispositivo puede informar al despachador que el conductor ha estado viajando con el "control" apagado durante mucho tiempo.
Implementación
El proyecto consta de dos partes: hardware y software.
¿Cómo determina el sistema que el conductor se está quedando dormido ahora? Usando la biblioteca OpenCV, que se basa en el aprendizaje automático. OpenCV le permite definir puntos clave en la transmisión de video: mentón, manos, ojos (incluyendo su tamaño y amplitud). Y en función de estos parámetros, el sistema determina si el conductor está cansado o no.
El hardware consta de la cámara Waveshare RPi (F) y la Raspberry Pi, ensambladas en una sola carcasa. Crear hardware es más difícil de lo que parece a primera vista: no es necesario conectar y soldar los componentes, sino pensar en su combinación para que el dispositivo funcione de manera confiable durante mucho tiempo y sin fallas. De hecho, esta es una tarea de integración separada. Y los riesgos de integración suelen ser los más altos. Después de todo, es una cosa cuando el paquete de software se ejecuta en su computadora portátil, bajo su sistema operativo y con sus limitaciones, y otra cosa cuando se transfiere a Raspberry Pi, bajo otro sistema operativo, donde el procesador es mucho más débil y tiene menos memoria.
Por supuesto, si el producto se pone en serie, ya no se implementará en la Raspberry Pi. La pieza de hierro es débil, su potencia no es suficiente para procesar la transmisión de video en resolución completa y reconocer la cara, por lo que con ese relleno de hardware tienes que ir a trucos.
Además, implementamos un modo nocturno, para que el sistema pudiera despertar al conductor en la oscuridad, cuando las personas a menudo se quedan dormidas. Es decir, tuve que enseñarle a la computadora cómo manejar el video de una cámara infrarroja. Aquí no fuimos pioneros, un problema similar también se resuelve en los sistemas domésticos inteligentes. Para determinar la fatiga del conductor, no necesita conocer detalles sobre su apariencia: color de cabello, ojos, tono de piel. Solo necesitamos determinar claramente la posición de las manos y los puntos clave en la cara. Por extraño que parezca, resultó ser aún más fácil trabajar con ojos en modo infrarrojo que en modo normal. Si alguna vez has visto clips filmados con cámaras automáticas con animales en la naturaleza, sabes que con un buen ángulo, sus ojos brillan como los de un láser.
Este efecto resultó ser muy útil para nosotros: es más fácil determinar el hecho de los ojos cerrados. Por supuesto, se requirió un ajuste adicional de todos los algoritmos, porque el espectro de la imagen es completamente diferente, pero, en general, los ojos se reconocen con mayor confianza.
Pero en modo infrarrojo, el sistema reconoce situaciones peores cuando el conductor habla por teléfono, presionando su oreja contra su hombro. Esta también es una situación peligrosa, las reglas de tráfico están explícitamente prohibidas para hablar por teléfono mientras se conduce.
Por supuesto, como cualquier modelo de aprendizaje automático, el nuestro tampoco funciona con absoluta precisión. Pero debe comprender bien de qué dependen exactamente los errores de reconocimiento. Por ejemplo, no hemos probado nuestro sistema en controladores con una apariencia no europea. Quizás en este caso, la proporción de reconocimiento ocular preciso y fatiga disminuirá. Sin embargo, durante las pruebas internas, el sistema funcionó exactamente en 8-9 de cada 10 casos.
* * *
Hoy en día, hay muchos buenos algoritmos en el dominio público, y tomamos algunos listos, lo que nos permitió no solo resolver el problema, sino también ahorrar mucho tiempo. Ahora puede encontrar rápidamente un modelo adecuado para resolver una tarea única y refinarlo rápidamente. Por supuesto, esto requiere habilidades y experiencia para resolver problemas de visión por computadora y una adaptación rápida. Luego, solo toma uno o dos días obtener un prototipo en una computadora portátil. Y el trabajo adicional depende de la tarea, de las capacidades disponibles, el almacenamiento y otros factores. Por ejemplo, puede refinar rápidamente nuestro sistema para que desempeñe un papel diferente: digamos, como un dispositivo de seguridad, que garantiza que solo personas específicas ingresen a la sala a una determinada hora del día. Es decir, puede crear rápidamente una solución para una variedad de tareas relacionadas con la visión por computadora.