Blog de Amazon Web Services (AWS)
Construyendo un estacionamiento inteligente y seguro con servicios serverless en AWS
Por Abraham Silva Arquitecto de Soluciones,
Omar De León Associate Migration CSM
y Memo Del Río Arquitecto de Soluciones
En el mundo moderno la incorporación de tecnologías de punta como uso cotidiano se ha convertido en una necesidad. Cada vez es más común encontrar negocios tradicionales adoptando tecnologías de Machine Learning, Inteligencia Artificial e Internet de las cosas (IoT), las cuales mejoran la experiencia de los clientes en el uso de sus productos o servicios, y permiten aprovechar capacidades que años atrás no era posibles debido a las limitantes tecnológicas.
En el siguiente blog se muestra cómo se integraron servicios de AWS como Amazon Rekognition, AWS DeepLens, AWS IoT Core y AWS Lambda para volver más sencillo y eficiente el proceso de acceso a un estacionamiento comercial al reconocer las placas de los autos y los rostros de los usuarios para permitir o denegar el acceso, y así ayudar a la administración de los estacionamientos a controlar el acceso.
El alcance de este proyecto se delimitó al registro de nuevos usuarios en una aplicación web que simula la página oficial de la empresa administradora del estacionamiento, y al acceso de los clientes mediante la detección de las placas del automóvil y el reconocimiento facial del usuario. Estas dos tareas permiten realizar el proceso de validación necesario para autorizar o negar el acceso al estacionamiento.
Contexto
Es una realidad que los sistemas de estacionamientos en México (y gran parte de América Latina) se han enfrentado a distintos retos en sus mecanismos de control de acceso, seguridad y cobro. Los estacionamientos de tiendas, edificios y restaurantes generalmente generan un costo para el usuario, es decir, el usuario tiene que pagar por el tiempo que se utiliza el estacionamiento. El proceso básicamente consiste en obtener un ticket físico de papel de una máquina al entrar al estacionamiento; este ticket tiene una banda magnética o código de barras en el que se hace referencia a la información de la estadía. Al momento de abandonar el estacionamiento se pueden presentar distintos escenarios para pagar por el servicio. Un escenario común consiste en formarse frente a un cajero automático para ingresar el ticket, pagar por su estadía y posteriormente depositar el ticket en otra máquina que autoriza la salida. Otro escenario consiste en pagar el ticket de estacionamiento directamente en la taquilla de salida donde el usuario es atendido por un operador del estacionamiento.
Con base en información recabada por el Instituto Mexicano para la Competitividad (IMCO), hablando únicamente de la Ciudad de México, se sabe que existen al menos 2500 establecimientos de estacionamiento, que se traducen en 6.5 millones de cajones de estacionamiento individuales. En promedio, el proceso normal de obtener un ticket, pagar por la estadía y depositar el ticket para salir, toma alrededor de 10 minutos. Los centros comerciales más populares de la Ciudad de México suelen recibir hasta 2 millones de visitantes por mes. Estos números nos dan una idea de la inmensa cantidad de tiempo que se pierde en el proceso, sin contar el tiempo adicional que se puede generar debido a aglomeraciones o fallas en los sistemas de cobro y pago, lo cual puede ocasionar una mala experiencia en los usuarios finales.
ARQUITECTURA Y FLUJO DE LA SOLUCIÓN
A continuación, se muestra la arquitectura que se construyó para esta solución que incluye distintos servicios de AWS. Uno de los mayores beneficios de esta arquitectura es que todos los servicios son serverless, por lo que el consumo mensual de esta solución está basado en la cantidad de usuarios que se registran, imágenes reconocidas tanto de autos como de rostros, envío de peticiones IoT y de correos electrónicos enviados por mes. En otras palabras, si solamente hubo actividad de un número determinado de usuarios, se pagará por el consumo generado por dichos usuarios. Esto hace que la solución sea efectiva desde el punto de vista de costos para estacionamientos de cualquier tamaño, ya que los costos están asociados directamente al uso real de la solución y no se paga por infraestructura ociosa mientras la solución no está en uso.
También se ha creado una maqueta informativa que muestra una pluma de estacionamiento controlada por una placa ESP32 que activa un servomotor y un semáforo de acceso hecho de LED simples.
La forma en la que el sistema trabaja se divide en dos partes que serán explicadas a continuación. La primera parte se encarga del registro de los usuarios y la segunda se encarga de detectar el auto y el rostro del usuario para dar el acceso al estacionamiento.
Este es el diagrama de la primera parte donde se realiza el registro de los usuarios:
Los nuevos usuarios deben registrarse en un sitio web donde ingresarán distintos datos como su correo electrónico, nombre completo, matrícula de la placa, contraseña y una foto de su rostro (selfie). Toda esta información servirá para que el sistema pueda autorizar o denegar acceso a los autos.
Una vez que se completa dicho registro, se toman todos los datos obtenidos de la página principal y se ejecuta una función de AWS Lambda que procesa la foto del usuario mediante el SDK de Amazon Rekognition para obtener la información del rostro del usuario. Esto genera un ID que se almacena en los registros de Amazon Rekognition y en una tabla Amazon DynamoDB. Este ID se utiliza para identificar al usuario. En cuanto este proceso es finalizado exitosamente, la misma función AWS Lambda envía un correo de confirmación al usuario indicando que el registro fue satisfactorio.
Para la segunda parte, la detección del auto y del rostro del usuario, el sistema se apalanca de la arquitectura mostrada a continuación:
En este proceso, el auto se aproxima a la pluma para entrar al estacionamiento, y una cámara AWS DeepLens identifica la matrícula de la placa del auto utilizando el servicio de Amazon Rekognition. A continuación, se muestra una imagen de la detección de la placa:
Una vez que la matrícula de la placa ha sido detectada exitosamente, se procede a detectar el rostro del conductor del auto utilizando nuevamente el servicio de Amazon Rekognition. Amazon Rekognition detecta cada uno de los nodos del rostro del conductor, y esta información es procesada mediante otra función AWS Lambda la cual realiza una comparación con la información que se ingresó durante el proceso de registro (compara el rostro y matrícula actual contra lo que se tiene en el registro). Este proceso de validación nos entrega un nivel de confianza que se obtiene del proceso de comparación de las imágenes. En este caso, se considera válido un índice de confianza igual o mayor al 90% (la certeza de la captura y comparación). Si el nivel de confianza no es el esperado, se niega el acceso al usuario y se repite el proceso. A continuación se muestra una imagen donde se realiza la identificación del rostro y de los logs de Amazon CloudWatch con el resultado nivel de confianza.
Cuando el usuario es autenticado exitosamente, se procede a mandar la señal a la placa ESP32 que activa la pluma para que esta dé acceso al estacionamiento. Simultáneamente se envía un correo electrónico al usuario que le indica el centro comercial al cual ingresó, incluyendo la entrada por la cual ingresó. A continuación, se muestra la arquitectura para el envío de la información y del correo, así como los logs que confirman el envío, y una captura del correo que se recibe.
Una vez que se envía esta información, la placa ESP32 la recibe y la procesa y permite el acceso al usuario levantando la pluma del recinto. Esta señal se recibe a través de wifi por medio del servicio de AWS IoT Core.
En la siguiente imagen se muestra el IDE de Arduino, parte del código y los logs para permitir el acceso.
Conclusión
Esta solución provee la ventaja de automatizar y modernizar el acceso a estacionamientos de una manera ágil, ya que se aprovechan los servicios de AI/ML que tienen algoritmos previamente entrenados sin la necesidad de realizar un desarrollo desde cero. Estas tecnologías también permiten que el desarrollo y lanzamiento al mercado de nuevos productos sea más ágil y rápida. Otra de las ventajas es la elasticidad que tiene esta solución, ya que, al ser una solución totalmente serverless, esta puede escalar a mayor o menor capacidad dependiendo del uso que se tenga de la aplicación, lo cual permite a los desarrolladores enfocar su esfuerzo en el desarrollo de la aplicación y no tanto en la configuración y el aprovisionamiento de infraestructura. Por último, los costos se reducen drásticamente, ya que, al ser serverless, no se mantiene infraestructura encendida que está ociosa, y solamente se paga por lo que se consume durante la ejecución.
Con esta solución, se busca mejorar la experiencia de las personas al ingresar a los estacionamientos, mejorar la seguridad en ellos y apoyar a las empresas para que aprovechen las bondades que ofrece la nube de AWS. Como se mencionó al inicio, este proyecto se delimitó al registro de usuarios y el acceso de los mismos, sin embargo, la idea principal del proyecto es tener todo un flujo de trabajo que permita identificar que el usuario que ingresó al estacionamiento sea el mismo que sale y de no ser así, alertar al establecimiento o a las autoridades locales acerca del posible robo de un automóvil; este proyecto también busca calcular el cobro con base en el tiempo de estadía y realizar el cobro automatizado al cliente para permitir la salida.
Este blog fue inspirado en el trabajo presentado por Amit Mukherjee y Georges Lescheneen en el AWS Machine Learning Blog del cual se aprovechó el contenido para la creación de las funciones para la detección de las placas de los autos y la conexión entre servicios. A continuación se comparte el link de referencia: Building a smart garage door opener with AWS DeepLens and Amazon Rekognition.
Referencias:
Sobre los autores
Abraham Silva es un Arquitecto de Soluciones en AWS basado en México para el equipo de Cloud Solutions Center. Apoya a pequeñas y medianas empresas a potencializar su negocio con la nube de AWS. En su tiempo libre, le gusta escuchar a sus bandas favoritas de los 80s, 90s y pasar tiempo con su familia.
Omar De León es un Customer Solutions Manager de Migraciones para Latinoamérica que está basado en México. Es miembro del LatAm Migration CoE Team en el cual ha formado parte esencial para la definición del framework de entrega y coordinación de migraciones en Latinoamérica definiendo, desarrollando y automatizando el proceso de cumplimiento de términos. Trabaja alineando a AWS, partner y cliente para acelerar migraciones y hacerlas llegar a su máximo desempeño.
Memo Del Río es un Arquitecto de Soluciones del equipo de Cloud Solutions Center México, en Latinoamérica. Durante su trayectoria Memo ha atendido a clientes tanto de México como Sudamérica dando guía en diseño de arquitecturas, compartiendo buenas prácticas e impartiendo distintos webinars, pláticas y workshops para acelerar el viaje hacia la nube.