La seguridad del espacio de trabajo puede ser una pérdida de dinero complicada, especialmente para las corporaciones que manejan información confidencial o administran varias oficinas con miles de empleados. Las llaves electrónicas son una de las opciones estándar de cómo se pueden automatizar los sistemas de seguridad, pero en realidad, hay muchas desventajas, como llaves perdidas, olvidadas o falsificadas.
La biometría ha mostrado alternativas sólidas a las medidas de seguridad convencionales, ya que representan un concepto de autenticación de "lo que eres". Esto significa que una persona puede usar sus características únicas, como huellas dactilares, iris, voz o rostro, para demostrar que tiene acceso a un espacio determinado. El uso de la biometría como método para autenticar garantiza que la clave no se puede perder, olvidar o fabricar. Así que hoy hablaremos sobre nuestra experiencia con la biometría de borde, que es la combinación de dispositivos de borde, IA y biometría para implementar sistemas de monitoreo de seguridad de IA.
Lo primero es lo primero, ¿qué es la IA perimetral ? En una arquitectura tradicional de inteligencia artificial, una práctica común es implementar modelos y datos en la nube, separados del dispositivo operativo o del sensor de hardware. Esto nos obliga a mantener el servidor en la nube en un estado adecuado, conservar una conexión a Internet estable y pagar por el servicio en la nube. Si el almacenamiento parece inaccesible en caso de que se pierda la conexión a Internet, toda la aplicación de IA se vuelve inútil.
“Por el contrario, la idea de Edge AI es implementar aplicaciones de inteligencia artificial directamente en el dispositivo, más cerca del usuario. Los dispositivos Edge pueden tener su propia GPU, lo que nos permite procesar la entrada en el lugar del dispositivo.
Esto proporciona una serie de ventajas, como una latencia reducida debido a que todas las acciones se realizan localmente, en el dispositivo. El costo general y el consumo de energía también se vuelven más bajos. Además, el sistema se vuelve portátil, ya que el dispositivo se puede mover fácilmente de un lugar a otro.
Dado el hecho de que no necesitamos grandes ecosistemas, los requisitos de ancho de banda también son menores en comparación con los sistemas de seguridad tradicionales que dependen de una conexión a Internet estable. El dispositivo Edge puede funcionar incluso en caso de que se cierre la conexión, ya que los datos se pueden almacenar en el almacenamiento interno del dispositivo. Lo que hace que todo el diseño del sistema sea más fiable y robusto”.
Ingeniero Python en MobiDev
El único escollo notable es que todo el procesamiento debe realizarse en el dispositivo en un corto período de tiempo, y los componentes de hardware deben ser lo suficientemente potentes y actualizados para esta función.
Para tareas como la autenticación biométrica con reconocimiento facial o de voz, la respuesta rápida y la confiabilidad del sistema de seguridad son fundamentales. Dado que queremos garantizar una experiencia de usuario perfecta y una seguridad adecuada, confiar en los dispositivos de borde brinda esos beneficios.
La información biométrica, como las caras y las voces de los empleados, parece ser lo suficientemente segura, ya que representan patrones únicos que las redes neuronales pueden reconocer. Además, este tipo de datos es más fácil de recopilar, ya que la mayoría de las empresas ya tienen fotos de sus empleados en su CRM o ERP. De esta manera, también puede evitar cualquier problema de privacidad al recopilar, por ejemplo, muestras de huellas dactilares de su gente.
En combinación con Edge, podemos crear un sistema flexible de cámaras de seguridad con IA para la entrada al espacio de trabajo. Así que analicemos la implementación de un sistema de este tipo basado en nuestra propia experiencia de automatización de los procesos de entrada a la oficina con la ayuda de la biometría de borde.
La idea principal detrás del proyecto era autenticar a los empleados en la entrada de la oficina con solo un vistazo a la cámara. El modelo de visión artificial es capaz de identificar el rostro de una persona, compararlo con la foto obtenida previamente y desbloquear la puerta. La verificación de voz se agregó como un paso adicional para evitar engañar al sistema de alguna manera. Toda la tubería consta de 4 modelos que realizan diferentes tareas, desde la detección de rostros hasta el reconocimiento de voz.
Todos estos pasos se realizan a través de un dispositivo de un solo borde que sirve como sensor de entrada de video/audio, así como un controlador para enviar comandos para bloquear/desbloquear puertas. Como dispositivo de borde, se ha elegido NVIDIA Jetson Xavier . Las razones principales detrás de esta elección fueron la presencia de memoria GPU (que es vital para acelerar la inferencia para proyectos de aprendizaje profundo) y la disponibilidad de Jetpack – SDK de NVIDIA, que permite la codificación en dispositivos en Python3. Por lo tanto, no hay una necesidad estricta de convertir el modelo DS a otro formato y los ingenieros de DS pueden adaptar casi todo el código base al dispositivo, por lo que no es necesario volver a escribir de un lenguaje de programación a otro.
Así que el flujo general se ve de la siguiente manera:
Analicemos cada uno de los elementos y elaboremos el procedimiento de capacitación y recopilación de datos.
Antes de profundizar en los módulos del sistema, es importante tener en cuenta qué base de datos se utiliza. Nuestro sistema se basa en la disponibilidad de los llamados datos de referencia o datos reales para los usuarios. Estos datos actualmente incluyen vectores faciales y de voz precalculados para cada usuario y se ven como una matriz de números. El sistema también almacena datos de los intentos exitosos de inicio de sesión para su posible uso para volver a entrenar más tarde. Dado esto, hemos elegido la solución más ligera, SQLite DB. Con esta base de datos, todos los datos se almacenan en un solo archivo que es fácil de explorar y respaldar, mientras que el período de aprendizaje de los ingenieros de ciencia de datos es más corto.
Dado que el reconocimiento facial requiere fotos de todos los empleados que pueden ingresar a la oficina, utilizamos fotos faciales almacenadas en bases de datos corporativas. Un dispositivo Jetson colocado en la entrada de la oficina también recolectó muestras de datos faciales mientras las personas usaban la verificación facial para abrir la puerta.
Los datos de voz no estaban disponibles inicialmente, por lo que organizamos la recopilación de datos pidiendo a las personas que grabaran clips de 20 segundos. Luego, usamos un modelo de verificación de voz para obtener vectores para cada persona y los almacenamos en DB. Las muestras de voz se pueden recopilar con cualquier dispositivo de entrada de audio. En nuestro caso, se utilizaron teléfonos móviles informales y cámaras web con micrófonos incorporados para grabar voces.
La detección de rostros proporciona una respuesta a la pregunta de si hay rostros en una escena determinada. Si los hay, el modelo debe dar las coordenadas de cada uno para que sepa dónde se encuentra cada uno de los rostros en la imagen, incluidos los puntos de referencia faciales. Esta información es importante porque necesitamos recibir una cara en un cuadro delimitador para ejecutar la identificación de la cara en el siguiente paso.
Para la detección de rostros, usamos el modelo RetinaFace con una red troncal MobileNet del proyecto InsightFace. Este modelo genera cuatro coordenadas para cada rostro detectado en una imagen, así como 5 puntos de referencia faciales. El hecho de que las imágenes capturadas en diferentes ángulos o con diferentes ópticas pueden cambiar las proporciones de la cara debido a la distorsión. Esto puede hacer que el modelo tenga dificultades para identificar a la persona.
Para esta necesidad se utilizaron puntos de referencia faciales para realizar warping, una técnica para reducir posibles diferencias entre estas imágenes de una misma persona. Como resultado, las caras recortadas y deformadas obtenidas se verán más similares, y los vectores de cara extraídos también serán más precisos.
El siguiente paso es la identificación facial. En esta etapa, el modelo debe identificar a la persona a partir de una imagen dada, que es la imagen obtenida. La identificación se realiza con la ayuda de referencias (datos de verdad sobre el terreno). Así que aquí, el modelo comparará dos vectores midiendo el puntaje de distancia de la diferencia entre dos vectores para saber si es la misma persona parada frente a la cámara. Esta valoración se compara con la foto inicial de un empleado que teníamos.
La identificación de rostros se realiza con el modelo con arquitectura SE-ResNet-50 . Para hacer que los resultados del modelo sean más sólidos, antes de obtener la entrada del vector de la cara, la imagen se promedia con la versión invertida de sí misma. En este punto, el flujo de identificación del usuario es el siguiente:
A continuación, pasamos a la verificación de voz. Este paso debe verificar si dos audios contienen la voz de la misma persona o no. Puede preguntarse por qué no tener en cuenta también la identificación de voz. La respuesta es que hoy en día el reconocimiento facial funciona mucho mejor que la voz, y una imagen da más información para reconocer al usuario que una voz. Para evitar identificar a la misma persona que el usuario A por la cara y el usuario B por la voz, solo se aplica el reconocimiento facial.
La lógica básica es casi la misma que en la etapa de identificación de rostros, ya que comparamos dos vectores por la distancia entre ellos a menos que encontremos vectores similares. La única diferencia es que ya tenemos una hipótesis sobre quién es la persona que está intentando pasar de un módulo anterior de identificación de rostros.
Durante el desarrollo activo del módulo de verificación de voz, surgieron muchos problemas.
El modelo anterior con arquitectura Jasper no podía verificar las grabaciones de una misma persona tomadas de diferentes micrófonos. Así que resolvimos este problema usando la arquitectura ECAPA-TDNN , que fue entrenada en el conjunto de datos VoxCeleb2 del marco SpeechBrain que hizo un mejor trabajo en la verificación de los empleados.
Sin embargo, los clips de audio aún necesitaban un procesamiento previo. El objetivo era mejorar la calidad de la grabación de audio preservando la voz y reduciendo el ruido de fondo actual. Sin embargo, todas las técnicas probadas afectaron gravemente la calidad del modelo de verificación de voz. Es probable que incluso la más mínima reducción de ruido pueda modificar las características del audio de voz en la grabación, por lo que el modelo no podrá verificar correctamente a la persona.
Además, realizamos una investigación sobre cuánto tiempo debería durar la grabación de audio y cuántas palabras debería pronunciar el usuario. Como resultado de esta investigación, se han hecho algunas sugerencias. Dicha grabación debe tener una duración de al menos 3 segundos y se deben pronunciar alrededor de 8 palabras.
El grano de seguridad final se agregó con anti-spoofing de voz a texto integrado en QuartzNet del marco Nemo. Este modelo proporciona una experiencia de usuario de calidad decente y es adecuado para escenarios en tiempo real. Para medir qué tan cerca está lo que dice la persona de lo que espera el sistema, se requiere calcular la distancia de Levenshtein entre ellos.
Obtener una foto de un empleado para engañar al módulo de verificación facial es una tarea factible, así como grabar una muestra de voz. La función anti-spoofing de voz a texto excluye escenarios en los que un intruso intenta usar una foto y un audio de una persona autorizada para ingresar a la oficina. La idea es bastante simple: cuando cada persona se verifica a sí misma, pronuncia una frase dada por el sistema. La frase consta de palabras seleccionadas al azar de un conjunto elegido. Si bien la cantidad de palabras no es enorme en una frase, la cantidad real de combinaciones posibles sí lo es. Al aplicar la generación aleatoria de frases, eliminamos la posibilidad de suplantar el sistema, ya que requerirá una gran cantidad de frases grabadas pronunciadas por un usuario autorizado. Tener una foto de un usuario no es suficiente para engañar a un sistema de seguridad de IA con esta protección.
En este punto, nuestro sistema biométrico de borde sigue un flujo simple para un usuario, que requiere que diga una frase generada aleatoriamente para abrir la puerta. Además, con la detección de rostros, proporcionamos vigilancia de IA para la entrada de la oficina.
“Al agregar múltiples dispositivos de borde, el sistema se puede escalar a diferentes ubicaciones o modificarse fácilmente. Podemos configurar Jetson directamente a través de la red, configurar la conexión con dispositivos de bajo nivel a través de la interfaz GPIO y actualizarlo con nuevo hardware con bastante facilidad, en comparación con una computadora normal. También podemos integrarnos con cualquier sistema de seguridad digital que disponga de una API web.
Pero el principal beneficio aquí es que podemos recopilar datos para mejorar el sistema directamente desde el dispositivo, ya que parece conveniente recopilar datos en la entrada, sin ninguna interrupción específica”.
Daniil Liadov
Ingeniero Python en MobiDev
Escrito por Dmitriy Kisil , ingeniero de IA en MobiDev.
El artículo completo se publicó originalmente aquí y se basa en la investigación tecnológica de MobiDev.