Вы находитесь на странице: 1из 14

UNIVERSIDAD TÉCNICA DEL NORTE

FACULTADE DE INGENIERÍA EN CIENCIAS APLICADAS


CARRERA DE INGENIERÍA EN TELECOMUNICACIONES

LABORATORIO DE DISEÑO DE SISTEMAS DE


COMUNICACIÓN

VISIÓN ARTIFICIAL

DOCENTE:

 Ing. Henry Farinango


 Ing. Jaime Michilena
INTEGRANTES
Nombre Correo Firma
Noboa Rafael rpnoboam@utn.edu.ec
Paspuezan Javier ejpaspuezan@utn.edu.ec
Tucanes Diana dctucanesn@utn.edu.ec

28 de mayo de 2019
Contenido
1. Tema .......................................................................................................................... 3
2. Objetivos ................................................................................................................... 3
General.............................................................................................................................. 3
Específicos ........................................................................................................................ 3
3. Marco teórico ............................................................................................................ 3
A. Visión Artificial......................................................................................................... 3
B. Algoritmos de detección facial .................................................................................. 4
C. Reconocimientos de las personas por rasgos de la cara ............................................ 5
D. ALGORITMO DE HAARCASCADE...................................................................... 5
E. Software de Programación ........................................................................................ 6
Python ............................................................................................................................... 6
4. Materiales y equipos.................................................................................................. 6
5. Procedimiento experimental ...................................................................................... 6
6. Desarrollo .................................................................................................................. 7
7. Resultados ............................................................................................................... 10
8. Conclusiones ........................................................................................................... 13
9. Recomendaciones .................................................................................................... 14
10. Bibliografía.............................................................................................................. 14
1. TEMA
Detección de Rostros utilizando visión artificial
2. OBJETIVOS
GENERAL
Aplicar algoritmos de visión artificial utilizados en la detección de rostros
ESPECÍFICOS
• Instalar los requerimientos necesarios para la realización de la práctica
• Desarrollar algoritmos que permitan realizar el seguimiento del rostro
• Implementar el algoritmo haarcascade para la detección de rostros

3. MARCO TEÓRICO
A. VISIÓN ARTIFICIAL
Se define a la “Visión Artificial” como un campo de la “Inteligencia Artificial” que,
mediante la utilización de las técnicas adecuadas, permite la obtención, procesamiento y
análisis de cualquier tipo de información especial obtenida a través de imágenes digitales
(Titudela, 2016).

La principal finalidad de la visión artificial es dotar a la máquina de “ojos” para ver lo


que ocurre en el mundo real, y así poder tomar decisiones para automatizar cualquier
proceso.

Según la Asociación de Imágenes Automatizadas (AIA), la visión artificial incluye todas


las aplicaciones industriales y no industriales donde una combinación de hardware y
software brindan una guía operativa a dispositivos en la ejecución de sus funciones en
base a la captura y el procesamiento de imágenes. A pesar de que la visión industrial por
computadora utiliza muchos de los mismos algoritmos y enfoques que las aplicaciones
académicas-educativas y gubernamentales-militares, sus limitaciones son diferentes
(Cognex, 2018).

Las principales aplicaciones de la visión artificial en la industria actual son:

▪ Identificación e inspección de objetos.


▪ Determinación de la posición de los objetos en el espacio.
▪ Establecimiento de relaciones espaciales entre varios objetos (guiado de robots)
▪ Determinación de las coordenadas importantes de un objeto.
▪ Realización de mediciones angulares.
▪ Mediciones tridimensionales

B. ALGORITMOS DE DETECCIÓN FACIAL


El objetivo de un sistema de reconocimiento facial es identificar automáticamente a una
persona en una imagen o video en tiempo real, discriminando las señales de entrada
(imágenes) en varias clases (personas).

Existen 2 tipos de técnicas de reconocimiento facial: técnicas basadas en apariencia y


técnicas basadas en modelos, donde sus principales algoritmos son:

 Eigenfaces
 Fisherfaces
 Local Binary Patterns Histograms.

Eigenfaces

En una imagen de entrada existen Principal Components (Componentes Principales) o


características comunes como: ojos, labio, nariz y distancias entre estos componentes,
esos componentes principales son llamados eigenfaces.

El algoritmo de reconocimiento de rostro Eigenfaces sigue los siguientes pasos: El primer


paso es poseer un conjunto de imágenes de entrenamiento de diferentes personas,
compuesto en lo posible de subconjuntos de imágenes para cada persona que contengan
diferentes posturas, condiciones de iluminación, etc. Este proceso es conocido como etapa
de entrenamiento, donde las imágenes poseen el mismo tamaño (Olguín & Guillen, 2015).

FisherFaces

Esta técnica considera las imágenes de entrenamiento de un mismo individuo como


clases, por lo tanto, existen el mismo número de clases que personas. Una vez definida
las clases se procede a calcular dos matrices: la matriz de dispersión entre clases y la
matriz de dispersión dentro de clases. Una vez calculada estas matrices se obtiene una
matriz de proyección donde cada columna será la base del nuevo sub-espacio,
denominada Fisherfaces (Olguín & Guillen, 2015).

Local Binary Pattern

Local BinaryPattern o Patrón Binario Local es un operador de textura que etiqueta los
pixeles de una imagen por thresholding o umbral, método de segmentación de imagen
que a partir de una en escala de grises se crea una imagen binaria, cada vecino del pixel
y el resultado de la operación se considera como un numero binario. Una de las
propiedades más importantes es su indiscriminación frente a los cambios en la escala de
grises como por ejemplo la luminosidad (Olguín & Guillen, 2015).

C. RECONOCIMIENTOS DE LAS PERSONAS POR RASGOS DE LA


CARA
Detectar el rostro humano es el primer paso en un sistema de reconocimiento facial, sin
embargo, influye de manera significante en el resultado del proceso, ya sea dado un
conjunto de imágenes o video en tiempo real. Por lo tanto, debe ser capaz de identificar
los rostros independientemente de los factores que anteriormente se mencionaron (Olguín
& Guillen, 2015).

Los métodos de detección facial se dividen en cuatro categorías:

 Métodos basados en conocimiento: Codifican el conocimiento humano mediante


distancias y posiciones entre las características humanas (ojos, nariz, labios).
 Métodos basados en características invariantes: Las características invariantes son
aquellas que no se modifican a eventuales cambio de luz, pose o ubicación de la
cámara, tales como la ceja, nariz, textura de la piel y línea de pelo. Este método
funciona detectando uno de estos componentes, construyendo un modelo
estadístico y con los resultados, verificar la existencia de un rostro.
 Métodos basados en moldes (patrones): Es la relación entre una imagen de entrada
y un patrón o molde previamente definido, cuyo objetivo es capturar
características del rostro.
 Métodos basados en apariencia: Utilizan modelos obtenidos mediante
entrenamiento de imágenes, tomando la imagen como un vector de características,
es decir, es visto como una variable aleatoria. A diferencia de los métodos basados
en moldes, donde el patrón es definido por un “experto”, los patrones en este
modelo son determinados por el aprendizaje obtenido en el entrenamiento de
imágenes.

D. ALGORITMO DE HAARCASCADE
La Detección de objetos usando clasificadores en cascada basados en características de
Haar es un método efectivo de detección de objetos propuesto por Paul Viola y Michael
Jones en su artículo, "Detección rápida de objetos usando una cascada aumentada de
características simples" en 2001. Es un enfoque basado en el aprendizaje automático
donde La función de cascada se entrena a partir de muchas imágenes positivas y
negativas. Luego se utiliza para detectar objetos en otras imágenes.
E. SOFTWARE DE PROGRAMACIÓN
PYTHON
Python se define como un lenguaje de programación interpretado en donde la filosofía
de trabajo hace énfasis en que la sintaxis siempre asegure que el código pueda ser
legible. Es así mismo un lenguaje de programación multiparadigma, que puede soportar
la orientación a objetos, una programación imperativa y en una medida menor la
programación funcional.
Uno de los objetivos con este lenguaje de programación es que se automaticen procesos
para que así se consiga ahorrar tiempo y evitar complicaciones. Por esa razón son varias
las soluciones que se logran con pocas líneas de código en este programa.

4. MATERIALES Y EQUIPOS
Tabla 1 Materiales y Equipos

MATERIAL CANTIDAD
Computador 1
Cámara Web 1
Software Python y Open CV Versión 2,7 o 3.7

5. PROCEDIMIENTO EXPERIMENTAL

Instale en su computador
Dibuje una figura geométrica Imprima los datos
Python 2.7 los componentes
de lo detectado detectados
necesarios para OpenCV

Realizar la verificación del Ingrese los algoritmos de Valide el funcionamiento de


correcto funcionamiento reconocimiento de rostro su programa robótico

Desarrollar un script y
evidenciar la funcionalidad
Ingrese las librerías
de un tracker con
necesarias.
servomotores para
seguimiento del rostro
6. DESARROLLO
1. Instalación del Software Python y los Complementos necesarios para OpenCV.
Se inicia con la descarga del Software desde su página principal
(https://www.python.org/)en la opción de descargas, de donde se escogerá la versión
según el usuario:

Seguido, ejecutamos el .exe descargado para iniciar con la práctica y verificamos que esté
correctamente instalado.

Se descarga los complementos como “OpenCV” “Comunicación Serail” y “numpy”


desde la consola de comandos.
Para finalizar solo importamos la descarga del OpenCV con el comando “import vc2” y
el comando “”cv2.__version__”

2. Aplicación del Código de Hasscascade en Python


3. Aplicación del Código de Arduino para el servomotor
7. RESULTADOS
Detección de Rostros mediante el Software Python con el algoritmo de haascascade
Conexión entre el Python y Arduino
Pruebas con Servo Motor vista frontal

Pruebas con Servo Motor vista hacia la derecha

Pruebas con Servo Motor vista hacia la izquierda


8. CONCLUSIONES
Rafael Noboa
✓ Con el desarrollo de esta práctica nos abre la posibilidad de variar los ambientes y
características de análisis facial, en donde no es crítico el hecho de medir y etiquetar a
cada sujeto, sino obtener la información que su imagen percibe para asociarla con el
mismo.
✓ En la actualidad los sistemas de visión por computador son utilizados en infinidad de
aplicaciones, desde una estación de inspección de producto, hasta robustos sistemas de
identificación para acceso a edificios.
✓ El motivo para realizar pruebas sobre personas de distinto sexo es con el afán de
enriquecer el entrenamiento ya que, debido a las marcadas diferencias entre hombres y
mujeres, las características de enmarcado, distanciamiento y tamaño de caracteres será
muy variable.
✓ Para realizar la identificación de la cara, hay varios algoritmos, aunque uno de los más
utilizados y extendidos es el llamado Haar Cascade face detection. Hay muchas
aplicaciones, que se aprovechan de esta detección de rostros sin llegar a usar el
reconocimiento facial.

Javier Paspuezan
✓ Para el correcto funcionamiento del programa se necesita que todos los archivos
relacionados al programa estén en una sola carpeta, tanto el archivo del código en
Python como el algoritmo utilizado para el reconocimiento de rostro.
✓ En la parte de resultado y en el video anexo a este informe se puede apreciar como
los tiempos de procesamiento para la detección del rostro no superan los 2
segundos, lo cual es un tiempo más que suficiente para este tipo de reconocimiento
facial.
✓ Se concluye que para poder realizar la comunicación serial entre el Python y el
arduino, se tuvo que descargar una librería llamada pyserial la cual permitía enviar
datos a un puerto serial, y de esta manera hacer que el arduino lea estos datos y
los procese generando el movimiento en el servomotor.
✓ El algoritmo utilizado para el reconocimiento facial es muy eficiente ya que
cuando se estaba realizando las pruebas de reconocimiento, si tan solo nos
poníamos la mano en una parte de la cara ya no nos reconocía y también cuando
se estaba con gorra ya que esta cubría la parte superior del rostro lo cual no
permitía que reconociera el rostro.
✓ Por último, también se han aplicado varios de los conocimientos obtenidos
durante la carrera y nos hemos familiarizado más con el lenguaje de programación
Python. Se ha conseguido utilizar y conocer lo último en tecnología: la visión
artificial. Como reto personal, he conseguido desarrollar una interfaz para una
aplicación en Python. Sencilla, pero que me ha permitido ir conociendo los
campos que se pueden abrir a futuro, mediante estos programas.
Diana Tucanes
✓ Si no se tiene instalado correctamente los drivers necesarios y las librerías, el
programa al iniciarse mostrara un mensaje de error de librerías, por lo que no
detectara ninguna cara.
✓ Actualmente existen algunos algoritmos para el reconocimiento facial pero
también existen otros algoritmos que reconocen parámetros más específicos como
el reconocimiento de los ojos, para lo cual se debe descargar el archivo (.xml) del
algoritmo y colocarlo en la misma carpeta si se desea trabajar con el de
reconocimiento facial y el de los ojos.
✓ En la investigación realizada se encontró un sistema de reconocimiento facial
utilizando Tensorflow, una herramienta muy poderosa y multiusos basada en
machine-learning, la cual está a disposición de cualquiera en su repositorio oficial.
Pero luego de estudiar un poco su funcionamiento y mirar algunos tutoriales sobre
su uso general, se optó por una opción más cómoda y menos engorrosa, como era
el caso de OpenCV.
✓ El reconocimiento facial tiene a su vez muchas aplicaciones, cada día más
utilizadas, destacando las relacionadas con la seguridad, como la utilizada en los
aeropuertos para llevar un control de los pasajeros, o en las cámaras públicas de
las ciudades, para obtener información sobre atracos, ataques terroristas, etc

9. RECOMENDACIONES
▪ Se recomienda instalar todas las librerías a utilizar en el programa ya que, si tan solo
faltara una, el programa generara errores o no se inicia correctamente.
▪ Al momento de instalar los complementos de Python como numpy, hay que instalarlos
en la misma carpeta de instalación de Python.
▪ Se recomienda escribir el puerto COM en el código de Python correctamente, ya que este
será utilizado por el arduino para la lectura de los datos y la generación del movimiento
del servomotor.
▪ Se recomienda procurar que la fuente de luz refleje directamente en el rostro cundo el
reconocimiento facial sea efectuado por la noche, ya que, de otra manera , las imágenes
serán oscuras presentando resultados erróneos.
▪ Se recomienda iniciar una investigación más profunda en el ámbito de la visión artificial,
ya que esta permitirá la interacción con otros ambientes como la seguridad en lugares
públicos y privados.

10. BIBLIOGRAFÍA
Cognex. (20 de Junio de 2018). Qué es la Visión Artificial. Obtenido de
https://www.cognex.com/es-ar/what-is/machine-vision/what-is-machine-vision
Olguín, D. E., & Guillen, P. I. (2015). Reconocimiento Facial. Valparaíso.
Titudela, E. (Marzo de 2016). Visión Artificial. Obtenido de
http://www.etitudela.com/celula/downloads/visionartificial.pdf

Вам также может понравиться