Está en la página 1de 21

Ingeniería en Desarrollo de Software

REPORTE TÉCNICO
ESTADÍA PROFESIONAL

Captura de Rostros

Jorge Humberto Martínez Albillo

Suchiapa, 2019
Resumen

En las instituciones educativas se necesita una mayor organización, en la captura de datos de


las personas que acceden a las distintas zonas de la institución. En los últimos años la
tecnología nos ha proporcionado herramientas para agilizar los procesos rutinarios de datos
de sus alumnos, se propuso cambiar las credenciales de los alumnos por sus datos
biométricos de sus caras , así la institución será más llamativa e innovadora que su
competencia ofreciendo mayor seguridad a su personal.
En este documento se considera la experiencia técnica, las buenas prácticas, y la
implementación de un desarrollo ágil para de las actividades desarrolladas. La información
que se encuentra en este documento contiene el reporte de las actividades asignadas por la
empresa receptora, y la solución propuesta.
Tabla de contenido

Empresa o Institución................................................................................................................................4
I.1.1 Misión ........................................................................................................................................4
I.1.2 Visión .........................................................................................................................................4
Diagramas……………………………………………………………………………………………………….5

Definición del Proyecto .............................................................................................................................7


II.1 Planteamiento del Problema.......................................................................................................7
II.2 Justificación..................................................................................................................................8
II.3 Alcances y Restricciones..............................................................................................................8
II.4 Objetivo general ..........................................................................................................................8
II.5 Objetivos específicos...................................................................................................................9

Marco Teórico............................................................................................................................................10
3.1 Generalidades ..............................................................................................................................10
3.1.1 Tecnologías usadas.........................................................................................................................10
3.1.2 Filtro Kalman.....................................................................................................................................10
3.1.2 Concurrencia....................................................................................................................................11
3.3.1 Node jS ....................................................................................................................................11

Desarrollo del Proyecto...........................................................................................................................12


4.1 Implementaciones de Tecnologías............................................................................................12
4.1.1 OpenCv................................................................................................12
AdaBoost.........................................................................................................13
Direccionamiento ......................................................................................................................................13
4.1.2 Uso de características de la imagen...........................................................................................14
4.2 Base de Datos en uso.................................................................................................................15
4.2.1 Base de Datos Generado ........................................................................................................16

Conclusiones............................................................................................................................................32
Anexos......................................................................................................................................................33
Referencias Bibliográficas.........................................................................................................................33
Instituto de Ingles Javier
Mckeever
I.1 Antecedentes de la empresa
El instituto Javier Mckeever ​fundado en 1960 por Anne Mckeever y Humberto Javier. impartiendo cursos
de inglés para niños, jóvenes y adultos en todos los niveles. ofrece

I.1.1 Misión
Para Dar herramientas a los jóvenes en construir el futuro

I.1.2 Visión
Consolidarnos con líder en la enseñanza del inglés, con enseñanzas de calidad y profesores
nativos
Diagrama de secuencia de detectar rostro
Diagrama de secuencia de reconocer rostro
Definición del Proyecto
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á.

II.1 Planteamiento del Problema


La limitación que tiene la escuela en gastos y contaminación debido a credenciales hechas a
base de plástico a obligado a la escuela a tomar medidas necesarias para modernizarse y
utilizar un software para identificar al alumno, y así ser más eficaces en el área de biblioteca.
II.2 Justificación
La realización de este proyecto es necesario para dicha institución le permitirá ahorrarse
dinero, en la expedición de credenciales y fichas de biblioteca que generan un alto costo que
debido a la contingencia necesitan ahorrar en todos los ámbitos.

La implementación de este software impactará de forma positiva a sus usuarios ya que verán
una mejor fluidez de tiempo en lo que antes se empleaba a varias personas en hacer dicha
tarea, además que verá una mayor ventaja frente a sus competencias.

II.3 Alcances y Restricciones


El proyecto está planificado para poder ser un software hecho a la medida, poder ver el
registro de base de datos , modificación de datos, restricción de libros, generar un reporte de
actividades y la implementación de una red neuronal entrenada.

II.4 Objetivo general


El Desarrollo de una aplicación que registre los datos de un alumno y así la escuela tenga un
control sobre qué y cuando el alumno ingresó al área de biblioteca y así ofrecer un servicio
moderno y de calidad a los alumnos de esta institución dado que el uso de plásticos ya no es
viable en estos tiempos.
II.5 Objetivos específicos

- 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 Teórico
En este capítulo el conjunto de habilidades que tiene un solo individuo para poder trabajar en
un producto final es, la agilidad que nos permite desenvolvernos en un entorno de trabajo
pesado en periodos cortos de tiempo para poder entregar módulos completados previamente
testeados, permitiendo realizar iteraciones continuas y mejorando código en cada
refactorización. El uso de frameworks utilizados para la lógica detrás en un servidor llamada
Backend y cómo se representarán los datos de manera visual llamada Frontend. La utilización
de plugins para la codificación y optimización del tiempo, entre otras herramientas de trabajo
para el desarrollo previamente analizado.

3.1 Generalidades
Para el desarrollo de los módulos se acoplo un módulo de Jupyter , con una red neuronal
entrenada , para esto se tomó muestras de caras , donde el programa por medio de
blancos y negros reconocerá los datos biométricos de las caras

3.2 Tecnologías utilizadas

Anaconda

Es una 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.
Desarrollo del Proyecto
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.

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​, M ​ ac 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

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
Base de datos en uso

Base de Datos en uso MySQL es un sistema para la gestión de base de datos con más de seis
millones de instalaciones en el mundo, y que por lo tanto es el más extendido dentro de las
aplicaciones relacionadas. MySQL funciona como software libre dentro del esquema de
licencias GNU GPL.
Para el desarrollo del software se cuenta con una base de datos que ya se encuentra en
producción, es decir se cuenta con un banco de información en el cual se puede hacer consultas
a la información. Se requiere que la información existente, esté a disposición de otros medios,
en este caso esa información será de utilidad para la creación de una nueva API, está a API
orquesta información de varias Tablas de una base de datos, para poder incluirlo en un solo
servicio.
A diferencia de una Coreografía de Servicios, la orquestación de servicios solo me permitira
usar un solo servicio que es abstracto de otros servicios, la diferencia es que una Coreografía
de servicios es que los servicios son varios y estos están enlazados entre ellos, es decir más de
un servicio, Características por la cual se opta tener un único servicio a que varios servicios
ligeramente.
Base de datos Generado

Base de Datos Generado En el desarrollo se tiene la necesidad de la creación de una nueva


base de datos, el nombre corresponde a la aplicación que se hizo, Si bien ya se cuenta con una
base de datos, esta solo es para traer información, sin embargo por razones de seguridad, NO
se puede modificar la integridad de los datos existentes, por ello mismo se crea una base de
datos que contenga la información generada en esta nueva API, también se contempla que no
sea redundancia de información, Una de las medidas para prevenir esto es el uso de una
Entidad Relacion.
El modelo entidad relación es una herramienta que permite representar de manera simplificada
los componentes que participan en un proceso de negocio y el modo en el que estos se
relacionan entre sí
. El modelo entidad relación tiene tres elementos principales:

- Entidades: El modelo contará con una entidad por cada uno de los componentes del proceso
de negocio. Así, en un negocio de venta de suscripciones a revistas, podemos tener entidades
‘Cliente’, ‘Dirección’, ‘Factura’, ‘Producto’, o ‘Incidencias’, entre otras.
- Atributos: Los atributos, componente fundamental de cada modelo entidad-relación, nos
permiten describir las propiedades que tiene cada entidad. ‘Nombre’, ‘Primer Apellido’, ‘Segundo
Apellido’, ‘Fecha de nacimiento’, ‘Género’ o ‘Segmento de valor’ serán atributos de la entidad
‘Cliente’.

- Relaciones: Con las relaciones se establecen vínculos entre parejas de entidades. Cada
‘Cliente’ tendrá una ‘Dirección’ de envío en la que recibirá la suscripción, podrá estar suscrito a
uno o varios ‘Productos’, y recibirá una ‘Factura’ con la caducidad acordada.

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.

4.1 Resultados
Como se puede apreciar el programa reconoce al individuo previamente registrado, donde se le
tomó varias capturas del rostro para poder identificarlo , al no reconocer al individuo aparecerá
el mensaje de “Unknow”

Acoplando pequeños módulos solicitados, gracias a la arquitectura con la que está diseñada
nos permite ser escalables en todos los aspectos, llegando a soportar las peticiones que se
realizan a lo largo del día, sin comprometer la rapidez y disponibilidad de los recursos que se
soliciten hacia el servidor.

Surgieron problemas de usabilidad para aquellas personas no tan jóvenes, ya que no están
familiarizados con los cambios tecnológicos que hoy en día surgen como en otras plataformas
digitales. A cada área administrativa se les proporcionó tutoriales en video para su mayor
comprensión, así como una presentación formal de cómo administrar las notas.
Conclusiones
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, Su implementación no está limitada a las grandes
compañías, sino que cualquier tipo de empresa puede utilizar esta tecnología. Esta tecnología
ayuda a transformar a empresas en negocios claves y llegar a cualquier público.

Las habilidades que tenemos cada trabajador para poder llevar a cabo un proyecto de
semejante tamaño, junto con la experiencia con otros proyectos previamente realizados, nos
permiten desenvolvernos en áreas y roles diferentes para cumplir con todos los requisitos
solicitados.
Referencias Bibliográficas
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