Aplicación de MATLAB en reconocimiento facial: código, descripción y sintaxis

Publicado: 2020-06-23

Cada vez que desbloquea su teléfono móvil con la cara o pasa por el sistema de vigilancia de su oficina de alta tecnología, una elaborada tecnología de reconocimiento facial está funcionando en segundo plano. Entonces, ¿qué es el reconocimiento facial y cómo puede llevar a cabo el reconocimiento facial utilizando MATLAB ?

El reconocimiento facial es el proceso de identificación de rostros humanos a través de la tecnología. El sistema de reconocimiento facial utiliza técnicas de visión por computadora y aprendizaje automático para modelar y clasificar las características faciales extraídas de imágenes y videos. Los algoritmos para la identificación de rostros extraen y asignan rasgos faciales y los comparan con una base de datos de rostros conocidos para encontrar la mejor coincidencia.

Fuente

Tabla de contenido

MATLAB en reconocimiento facial

Es posible lograr el reconocimiento facial utilizando el código MATLAB. La clase y la función integradas en MATLAB se pueden utilizar para detectar la cara, los ojos, la nariz y la boca. El sistema object vision.CascadeObjectDetector de la caja de herramientas del sistema de visión artificial reconoce objetos basándose en el algoritmo de detección de rostros de Viola-Jones.

Descripción del detector de objetos MATLAB

El vision.CascadeObjectDetector hace uso del algoritmo Viola-Jones para la identificación de caras, ojos, boca, nariz o la parte superior del cuerpo. Se puede entrenar un clasificador personalizado mediante Image Labeler de MATLAB y se puede usar junto con el objeto System. Entonces, ¿cómo se detectan los rasgos faciales o la parte superior del cuerpo en una imagen? Aquí están los pasos:

  1. El primer paso consiste en la creación del objeto vision.CascadeObjectDetector y la configuración de sus propiedades.
  2. En este paso, el objeto se invoca con argumentos (como si se comportara como una función).

Leer: 15 interesantes ideas y temas de proyectos de MATLAB para principiantes

Sintaxis para la creación del detector de objetos

La sintaxis utilizada para la creación del Detector de objetos es la siguiente:

  • detector = vision.CascadeObjectDetector
  • detector = vision.CascadeObjectDetector(modo1)
  • Detector = vision.CascadeObjectDetector(Nombre,Valor)
  • detector = visión.CascadeObjectDetector(XMLFILE)

Descripción de la sintaxis

  • detector = vision.CascadeObjectDetector: Esta sintaxis se usa para la creación de un detector que detecta objetos usando el algoritmo Viola-Jones.
  • detector = vision.CascadeObjectDetector(mode1): Esta sintaxis se utiliza para la creación de un detector que está configurado para detectar objetos definidos por el vector de entrada – mode1.
  • detector = vision.CascadeObjectDetector(Name,Value): esta sintaxis se utiliza para establecer propiedades mediante uno o más pares de nombre-valor, donde cada nombre de propiedad se incluye entre comillas. Por ejemplo: detector = vision.CascadeObjectDetector('ClassificationModel','UpperBody')

Consulte: Ideas de proyectos de aprendizaje automático

Propiedades

A menos que se especifique lo contrario, las características del detector de objetos en cascada no se pueden ajustar, lo que significa que después de llamar al objeto, sus valores no se pueden modificar. Los objetos se bloquean cuando se invocan y su desbloqueo se realiza mediante la función 'liberar'.

Por otro lado, una propiedad ajustable significaría que su valor se puede cambiar en cualquier momento. Entonces, echemos un vistazo a algunas de las características antes de que entendamos el reconocimiento facial usando códigos MATLAB.

  • ClassificationModel: Definido como un vector de caracteres, esta propiedad se encarga de controlar el tipo de objeto a detectar. La configuración predeterminada del detector detecta rostros.
  • MinSize: el tamaño del objeto reconocible más pequeño se denota como un vector de dos elementos [alto ancho]. A menos que se especifique un valor de propiedad, el detector lo establece en el tamaño de imagen utilizado para entrenar el modelo de clasificación.
  • MaxSize: el tamaño del objeto reconocible más pequeño se denota como un vector de dos elementos [alto ancho] . A menos que se especifique un valor de propiedad, el detector lo establece en el tamaño (I).
  • ScaleFactor: Tiene un valor especificado superior a 1.0001. Esta propiedad es para el escalado incremental de la resolución de detección entre MinSize y MaxSize.
  • MergeThreshold: tiene un valor entero especificado igual a 4. En caso de que haya varias detecciones alrededor de un objeto de destino, el umbral define los criterios de detección finales.
  • UseROI: especificada como falsa, esta propiedad se puede establecer en verdadera para la detección de objetos dentro de una región rectangular de interés en la imagen de entrada.

Sintaxis para usar el detector de objetos

  • bbox = detector(I)
  • bbox = detector(I,roi)

Descripción de la sintaxis

  • bbox = detector(I) devuelve bbox, una matriz de M por 4, que define los cuadros delimitadores ' M ' que contienen los objetos detectados.
  • bbox = detector(I,roi) se usa para detectar objetos dentro de la región rectangular de interés, especificada por roi.

Argumentos de entrada

  • I — Imagen de entrada: se especifica como color verdadero o escala de grises (RGB).
  • modelo — Modelo de clasificación: se especifica como un vector de caracteres y describe el tipo de objeto que se detectará.
  • XMLFILE: modelo de clasificación personalizado: especificado como un archivo XML, se puede crear utilizando la funcionalidad de entrenamiento de OpenCV o la función trainCascadeObjectDetector.
  • roi — Región rectangular de interés: se usa un vector de cuatro elementos [ x y ancho alto ] para especificar este argumento de entrada.

Argumentos de salida

bbox — Detecciones: las detecciones se devuelven como una matriz de elementos de M por 4, cada una de las cuales contiene el vector de cuatro elementos [ x y ancho alto ].

Funciones de objeto comunes a todos los objetos del sistema

  • paso: para ejecutar el algoritmo de objetos del sistema
  • release: para liberar recursos del sistema
  • restablecer: para restablecer los estados internos del objeto del sistema.

Código MATLAB para reconocimiento facial

En esta sección, veremos un ejemplo de reconocimiento facial usando código MATLAB.

Detección de rostro

Fuente

Fuente

El paso (Detector,I) devolverá el valor del Cuadro delimitador que contiene [x,y,Altura,Ancho] de los objetos bajo detección:

Fuente

Detección de nariz

Fuente

Fuente

Descripción:

  • El paso del argumento 'Nariz' denota que el objeto de interés es la nariz.
  • La sintaxis predeterminada de detección de nariz es vision.CascadeObjectDetector('Nose')
  • Los valores de parámetros predeterminados pasados ​​a vision.CascadeObjectDetector se pueden modificar en función de la imagen de entrada.
  • El valor 'MergeThreshold' se puede anular para evitar múltiples detecciones alrededor del objeto de destino (como en la imagen de arriba).

Detección de ojos

Fuente

Fuente

Detección de boca

Fuente

Fuente

Lea también: Bucle while en MATLAB: todo lo que necesita saber

Terminando

Si bien la tecnología de reconocimiento facial es beneficiosa para la verificación de la identidad personal, plantea problemas de privacidad. Dado que la tecnología utiliza la huella facial de un individuo, a menudo se considera una violación de la privacidad y la seguridad de una persona. El reconocimiento facial mediante MATLAB se puede emplear en varios casos en los que la seguridad es de suma importancia. Desde aeropuertos y oficinas hasta teléfonos inteligentes, el reconocimiento facial se ha convertido en un componente integral de muchos sistemas y organizaciones.

Si está interesado en obtener más información sobre el aprendizaje automático, consulte el Diploma PG en aprendizaje automático e IA de IIIT-B y upGrad, que está diseñado para profesionales que trabajan y ofrece más de 450 horas de capacitación rigurosa, más de 30 estudios de casos y asignaciones, IIIT- B Estado de exalumno, más de 5 proyectos prácticos finales prácticos y asistencia laboral con las mejores empresas.

¿Qué es el reconocimiento facial?

El reconocimiento facial se puede utilizar para protegerse contra el robo de identidad, así como para identificar a las personas por su nombre. Sin embargo, dado que el reconocimiento facial es relativamente nuevo y se desarrolla continuamente, es importante comprender los conceptos básicos del reconocimiento facial para poder usarlo de manera efectiva. El reconocimiento facial se refiere al proceso de determinar si una imagen facial pertenece a una persona conocida. El problema del reconocimiento de rostros se puede dividir en dos tareas: 1) Detección de rostros: ubicar el rostro en la imagen, 2) Reconocimiento de rostros: identificación de la persona cuyo rostro es.

¿Qué es Matlab?

Matlab es un lenguaje de programación para el cálculo numérico. Básicamente, es un lenguaje de programación matricial. Se utiliza mucho en cálculos científicos y de ingeniería. A diferencia de otros lenguajes de programación, MATLAB fue diseñado para ser un lenguaje matricial, adecuado para el cálculo en matrices. Las matrices se utilizan en muchas ecuaciones diferentes, especialmente en cálculos científicos y de ingeniería. Matlab es un lenguaje de programación de alto nivel que viene con una gran cantidad de funciones. Se utiliza para resolver problemas matemáticos, analizar datos y crear gráficos.

¿Qué es Viola Jones en Matlab?

El algoritmo Viola Jones se utiliza para la detección de rostros y el reconocimiento de expresiones faciales. El algoritmo de Viola Jones se basa en histogramas de gradientes orientados (HOG) que fue presentado por primera vez por Paul Viola y Michael Jones en 2001. Se utiliza en visión artificial, aprendizaje automático y procesamiento de imágenes. El algoritmo Viola Jones proporciona un sistema completo de detección de objetos y puede usarse en la detección de peatones, detección de objetos o detección humana. El algoritmo de Viola Jones consta de un paso de extracción de características, un paso de agrupamiento y un paso de clasificación de objetos.