0% encontró este documento útil (0 votos)
29 vistas

Propuesta DSI

Este documento describe un proyecto de reconocimiento facial que tiene como objetivo desarrollar un programa para registrar residentes de una privada mediante datos biométricos de su rostro. El proyecto utilizará las librerías OpenCV, Python y Tkinter, y algoritmos como AdaBoost y el filtro de Kalman. El software realizará detección facial, extracción de características de imagen y comparación con una base de datos para verificar la identidad y controlar el acceso.

Cargado por

JorgeMtzAlbillo
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas

Propuesta DSI

Este documento describe un proyecto de reconocimiento facial que tiene como objetivo desarrollar un programa para registrar residentes de una privada mediante datos biométricos de su rostro. El proyecto utilizará las librerías OpenCV, Python y Tkinter, y algoritmos como AdaBoost y el filtro de Kalman. El software realizará detección facial, extracción de características de imagen y comparación con una base de datos para verificar la identidad y controlar el acceso.

Cargado por

JorgeMtzAlbillo
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

Jorge Humberto Martinez Albillo

Desarrollo de sistemas inteligentes

Proyecto

Reconocimiento Facial
Introducción:

Los seres humanos desde tiempos remotos hasta la actualidad se han visto en la
obligación de reconocerse unos a otros mediante nombres, apodos, etc., pero es el
rostro el que nos da una propia identidad a cada persona ya que por medio de
estudios la cara es una de las cosas que imposible de olvidar, es por esto que, por
medio de las nuevas tecnologías y algoritmos, se han implementado varias
funcionalidades propias en respecto a esta identidad. En los inicios de esta
tecnología llamada “Reconocimiento facial” se usaba algoritmos de reconocimientos
muy simples el cual daba mayor oportunidad a que los errores se produjeran, ya que
al ser así el mismo reconocimiento se podría dar para 2 personas diferentes. En la
actualidad y con los avances logrados, además de los algoritmos que han sido
exponencialmente mejorados, los errores son mínimos ya que se han afinado la
forma en cómo se reconoce cada rostro. A continuación se explica cómo funciona
cada uno de estos algoritmos además del funcionamiento y cada etapa en un
reconocimiento facial, como se muestra en la figura consta de varias secciones las
cuales en complemento darán un buen funcionamiento del software que se
implementará.

Objetivo General ​:

Desarrollo de un programa que permita un registro pleno


de los residentes de una privada mediante los datos
biométricos de su rostro, y registrarlos para que áreas
tiene permitido la persona ingresar, como :
-El ingreso a la privada
-El ingreso a una casa específica
- El ingreso a un cuarto específico
Objetivo específico :
- Conocer y comprender las ventajas de utilizar Opencv en el ámbito de
reconocimiento de patrones y entender sus librerías para aplicarlas en el uso
del reconocimiento facial.
- Realizar estudios en torno a los distintos algoritmos de reconocimiento facial
e indicar cuál de éstos funcionar de mejor manera.

- Usar una interfaz intuitiva y fácil de usar

Marco de referencia

Anaconda

Es un distribución ​libre y abierta​ de los lenguajes ​Python​ y ​R​, utilizada en ciencia de


datos, y aprendizaje automático (​machine learning​). Esto incluye procesamiento de
grandes volúmenes de información, análisis predictivo y cómputos científicos. Está
orientado a simplificar el despliegue y administración de los paquetes de software.

Filtro Kalman

El filtro de Kalman es un ​algoritmo​ desarrollado por ​Rudolf E. Kalman​ en 1960 que


sirve para poder identificar el estado oculto de un ​sistema dinámico​ lineal, al igual
que el ​observador de Luenberger​, pero sirve además cuando el sistema está
sometido a ​ruido blanco​ aditivo.​
El filtro de Kalman es un algoritmo recursivo, puede correr en tiempo real usando
únicamente las mediciones de entrada actuales, el estado calculado previamente y
su matriz de incertidumbre, y no requiere ninguna otra información adicional.
Concurrencia

Concurrencia se refiere a la habilidad de distintas partes de un programa, algoritmo,


o problema de ser ejecutado en desorden o en orden parcial, sin afectar el resultado
final. Los cálculos pueden ser ejecutados en múltiples ​procesadores​, o ejecutados
en procesadores separados físicamente o virtualmente en distintos ​hilos​ de
ejecución.

Tecnologías usadas

Python

Es un lenguaje de programación independiente de plataforma y orientado a objetos,


preparado para realizar cualquier tipo de programa, desde aplicaciones Windows a
servidores de red o incluso, páginas web. Es un lenguaje interpretado, lo que
significa que no se necesita compilar el código fuente para poder ejecutarlo, lo que
ofrece ventajas como la rapidez de desarrollo e inconvenientes como una menor
velocidad. En los últimos años el lenguaje se ha hecho muy popular, gracias a
varias razones como: La cantidad de librerías que contiene, tipos de datos y
funciones incorporadas en el propio lenguaje, que ayudan a realizar muchas tareas
habituales sin necesidad de tener que programarlas desde cero.

OpenCv

Es una ​biblioteca​ ​libre​ de ​visión artificial​ originalmente desarrollada por ​Intel​.


OpenCV significa Open Computer Vision (Visión Artificial Abierta). Desde que
apareció su primera versión alfa en el mes de enero de 1999, se ha utilizado en una
gran cantidad de aplicaciones, y hasta 2020 se la sigue mencionando como la
biblioteca más popular de visión artificial.​ Detección de movimiento, reconocimiento
de objetos, reconstrucción 3D a partir de imágenes, son sólo algunos ejemplos de
aplicaciones de OpenCV.
Su popularidad se debe a que es:
-Libre, publicada bajo ​licencia BSD​, que permite que sea usada libremente
para propósitos comerciales y de investigación
-Multiplataforma, para los sistemas operativos ​GNU/Linux​, ​Mac OS X​,
Windows​ y ​Android​, y para diversas arquitecturas de hardware como ​x86​, ​x64
(PC), ARM (celulares y ​Raspberry Pi​)
-Documentada y explicada: la organización tiene una preocupación activa de
mantener la documentación de referencia para desarrolladores lo más
completa y actualizada posible, ejemplos de uso de sus funciones y tutoriales
accesibles al público no iniciado en visión artificial, además de difundir y
fomentar libros y sitios de formación.

Tkinter

Es una librería que proporciona a las aplicaciones de Python una interfaz de


usuario fácil de programar. Además es un conjunto de herramientas GUI de Tcl/Tk
(Tcl: Tool Command Language), proporcionando una amplia gama de usos,
incluyendo aplicaciones web, de escritorio, redes, administración y pruebas.

AdaBoost

Es un algoritmo de aprendizaje máquina que consiste en la extracción de


características por medio de clasificadores. Basado en la mejor forma de ejecutar
los clasificadores para detectar de forma favorable el rostro humano.
Los pasos del algoritmo son:
- Se tienen las imágenes de ejemplo (X1, Y1),….., (Xn, Yn) donde Yi = 0,1 para
ejemplos negativos y positivos respectivamente.
- Inicializar los pesos, dados por 1/2m y 1/2l donde m y l son el número de ejemplos
positivos y negativos, respectivamente.
- Normalizar los pesos. Para cada característica, se evalúa el error con respecto a
una ventana de 24x24 pixeles y ejemplos positivos.
- De esta forma se escoge un clasificador, con el menor error.
- Se actualizan los pesos.

Para detectar bien el rostro, las características elegidas por AdaBoost son
significativas y de fácil interpretación. La elección de la primera característica se
basa en la propiedad basada en que la región de los ojos es más oscura que la
región de la nariz y las mejillas. La segunda característica se basa en que los ojos
son más oscuros que el puente de la nariz
Desarrollo del Software

El sistema tiene como objetivo reconocer la cara de los usuarios para poder o no
darles acceso a un espacio determinado, las imágenes son procesadas para
obtener información que será procesada por un proceso que se encarga de emitir
eventos según las circunstancias, los eventos que se generan por medio de
predicción son resultados del uso de algoritmos de estimación de estados, mas
especifico el filtro kalman.

Detección de rostros
La detección facial es una tecnología de visión computarizada que determina el
lugar y el tamaño de rostros humanos en imágenes o videos. Es uno de los subtipos
de detección de objeto/clase, cuya tarea es encontrar la localización y el tamaño de
los objetos en una imagen perteneciente a la clase dada . Mientras que para el ser
humano es trivial esta tarea, una computadora presenta dificultades debido a
diversos factores como: variabilidad en la posición del rostro, presencia o ausencia
de componentes estructurales, expresión facial, oclusión (uso de lentes, gorro, etc.)
y condiciones del ambiente. 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.
Método que se encarga de inicializar la configuración de la cámara (cv2
corresponde a la librería de OpenCV

Uso de características de imagen

Es una representación ​visual​, que manifiesta la ​apariencia​ visual de un objeto real o


imaginario. Aunque el término suele entenderse como sinónimo de representación
visual, también se aplica como extensión para otros tipos de ​percepción​, como
imágenes auditivas​, olfativas, táctiles, sinestésicas, etc. Las imágenes que la
persona no percibe sino que vive interiormente, se las denominan ​imágenes
mentales​, mientras que las que representan visualmente un objeto mediante
técnicas diferentes, se las designa como imágenes creadas.
Esta información se representa generalmente mediante tres valores que
corresponden a los tres canales de color: rojo, verde y azul. En el caso de trabajar
con imágenes monocromáticas (en escala de grises) los tres valores RGB
coinciden.

Requerimientos del proyecto

La ingeniería de requerimientos trata de establecer lo que el sistema debe hacer,


sus propiedades emergentes deseadas y esenciales, y las restricciones en el
funcionamiento del sistema y los procesos de desarrollo de software. Por lo tanto se
debe considerar a la ingeniería de requerimientos como el proceso de comunicación
entre los clientes, usuarios del software y los desarrolladores del mismo.

Requerimiento General

La finalidad del proyecto a realizar es el de la implementación de un software que


permita ,a través de algoritmos y librerías , poder reconocer el rostro de una persona
por medio de una fotografía tomada por una cámara web , hacerle modificaciones a
dicha imagen y poder compararla con una base de datos de para verificar la
identidad de la persona.

Requerimientos funcionales

-Implementación de algoritmo para la detección de rostro.


-Implementación de algoritmo para el reconocimiento facial.
-Añadir y eliminar imágenes desde la base de datos.
-Mostrar en una pantalla de Windows la cámara web para la prueba de software.
.Un administrador del sistema podrá ingresar a él por medio de una contraseña
única.
-Añadir opción para elegir el algoritmo de Reconocimiento facial que se desee
ocupar. Mostrar imagen ya entrenada (blanco y negro).
-Crear base de datos local en la cual se almacenará cada imagen.
-Añadir figura geométrica la cual se posicionará en el rostro de la persona.
Implementar segundo algoritmo de reconocimiento facial.
-Generar un manual de usuario para el uso posterior del sistema

Requerimientos no funcionales

-Diseño de una interfaz sencilla para el buen uso de un usuario principiante.


-Completa documentación del código.
-Rendimiento de software será óptimo en donde tomará muy poco tiempo en realizar
sus funciones.
-La Base de datos como se implementara de forma local siempre estará disponible.
-Integridad de las imágenes en la base de datos.
-Fácil interacción del el usuario.

Diagrama de secuencia
Los diagramas de secuencia que se presentan a continuación tienen por finalidad la
de modelar la interacción entre objetos en un sistema.

Diagrama de secuencia detectar rostro


Diagrama de secuencia de reconocer rostro

Funciones

En este apartado se explicará cómo trabaja la parte del código en específico.

En este apartado toma la foto y busca un directorio como en este caso ​data-set y​
guarda la foto en una carpeta interna en este caso ​jorge .
En este apartado se muestra la dirección del video para tomar la captura y como se
desplegara la ventana para la toma de datos.

Conclusión

Con este proyecto se logró a partir de una imagen, reconocer un rostro y saber si
pertenece a alguna de las personas almacenadas en nuestra base de datos,
además de mostrar el rostro almacenado con mayor coincidencia .
Se han obtenido buenos resultados en entornos controlados, aunque en lugares con
mucha variación de luz habría que reconsiderar la utilización de otras herramientas.
El trabajo incluye las mejores prácticas de programación, técnicas de optimización,
entre otras características obtenidas en la carrera.

Referencias
OpenCV Version 2.4.13. Haar feature-based cascade classifier for object detection.
https://docs.opencv.org/2.4/modules/objdetect/ doc/cascade_classification.html,
2018.

Ryan Allred. Image augmentation for deep learning using keras and histogram
equalization. https://towardsdatascience.com/
image-augmentation-for-deep-learning-using-keras-and-\
histogram-equalization-9329f6ae5085, 2017.
José Ramón Cuevas Diez. Interfaces Hombre Máquina Basados en Hardware Libre.
Universidad de Burgos, Burgos, España, 2017.

Python Software Foundation. Python - version 2.7. https://www.


python.org/downloads/release/python-2715, 2018

También podría gustarte