Actividad 3.1 - 1851265 - SIS
Actividad 3.1 - 1851265 - SIS
Actividad 3.1 - 1851265 - SIS
lOMoARcPSD|9215748
Introducción
Tema escogido: Clasificación/reconocimiento de patrones
El sistema de reconocimiento debe asignar a cada objeto su categoría o clase (conjunto de entidades que
comparten alguna característica que la diferencia del resto). Para reconocer los patrones se siguen los siguientes
procesos:
Adquisición de datos
Extracción de características
Toma de decisiones
Para esta práctica se desarrolló un programa que consiste en identificar los rostros de una
fotografía.
La detección de rostros es una técnica que permite encontrar en una imagen, el rostro o cara de una o varias personas,
mientras que ignora el fondo de la imagen u otros objetos que estén presentes dentro de ella.
Objetivo
Desarrollar un sistema en Python que logre identificar los rostros de la imagen proporcionada.
Justificación
Elegí este tema porque es la técnica más adecuada para la resolución del problema, lo que asegura un desarrollo
óptimo de la práctica.
Marco teórico
La detección de rostros está presente en muchas aplicaciones que usamos día a día, por ejemplo en Facebook con las
imágenes que subimos que ya detectan el rostro y lo que muchas veces nos pide es adicionar el nombre de las
personas que allí aparecen. También tenemos los filtros de Instagram en donde se necesita detectar el rostro para que
los filtros que deseamos aplicarse sean empleados. Incluso está presente en algunas aplicaciones bancarias o cuando
usamos un smartphone para tomar una foto y muestra en un recuadro o círculo los rostros de las personas que
aparecen allí.
Desarrollo
Para el desarrollo de la práctica se implementaron librerías especiales de Python, una de ellas fue
HaarCascades de OpenCV, la cual nos ofrece clasificadores pre-entrenados no solo de rostros de personas,
sino de ojos, sonrisa, etc.
Para emplear la detección de rostros con Haar Cascade en OpenCV, se instaló el módulo detectMultiScale que nos
ayuda a detectar los objetos de acuerdo al clasificador que se utilice, con esto podemos obtener un rectángulo
delimitador en donde se encuentre el objeto que se desea encontrar dentro de una imagen.
ScaleFactor: Este parámetro especifica cuánto va a ser reducida la imagen. Por ejemplo, si se ingresa
1.1, quiere decir que se va a ir reduciendo la imagen en un 10%, con 1.3 se reducirá un 30%.
MinNeighbors: Este parámetro especifica cuántos vecinos debe tener cada rectángulo candidato para
retenerlo.
MinSize: Este parámetro indica el tamaño mínimo posible del objeto. Objetos más pequeños son
ignorados.
MaxSize: Este parámetro indica el tamaño máximo posible del objeto. Objetos más grandes son
ignorados.
Para empezar a desarrollar el código, primero guardamos el archivo XML que contiene el clasificador de rostros
frontales (haarcascade_frontalface_default.xml) en la misma carpeta donde está almacenado el script de Python, junto
con la siguiente imagen que es la que vamos a usar para detectar los rostro
Código
El sistema funcionó correctamente. Se implementaron bien las librerías y las técnicas, y el sistema detectó los rostros de la
imagen en base a los parámetros bien establecidos.
Conclusiones
La detección de rostros es una técnica que permite encontrar en una imagen, el rostro o cara de una o varias personas,
mientras que ignora el fondo de la imagen u otros objetos que estén presentes dentro de ella.
Las técnicas utilizadas fueron adecuadas para desarrollar el sistema. Debemos tomar en cuenta que los valores de los
parámetros varían dependiendo de la aplicación. En este caso, los valores proporcionados en los parámetros fueron
los correctos para la implementación del sistema.
Referencias
https://opencv-python- tutroals.readthedocs.io/en/latest/py_tutorials/py_objdetect/py_face_detection/py_face_
detection.html
https://www.bogotobogo.com/python/OpenCV_Python/python_opencv3_Image_Object_
Detection_Face_Detection_Haar_Cascade_Classifiers.php
https://realpython.com/face-recognition-with-python/