¿Qué necesito?

  • Cualquier servidor dedicado o virtual
  • Ubuntu
  • OpenCV
  • pitón

¿Qué es el reconocimiento facial?

OpenCV utiliza algoritmos de aprendizaje automático para buscar caras en una imagen. Debido a que los rostros son tan complicados, no existe una prueba simple que pueda decirle si se ha encontrado o no un rostro. En cambio, hay miles de pequeños patrones y funciones que deben coordinarse entre sí. Los algoritmos dividen la tarea de identificar la cara en miles de tareas más pequeñas y del tamaño de un bocado, cada una de las cuales es fácil de resolver. Estas tareas también se conocen como clasificadores.

Para algo como una cara, puede tener 6.000 o más clasificadores, todos los cuales deben coincidir para que una cara sea reconocida, dentro de los límites de error, por supuesto. Pero ahí es donde radica el problema: para el reconocimiento facial, el algoritmo comienza en la parte superior izquierda de una imagen y se mueve hacia abajo sobre pequeños bloques de datos, mirando cada bloque y preguntando constantemente: “¿Es una cara? … eso es una cara? … eso es una cara? Debido a que hay 6,000 o más pruebas por bloque, es posible que deba realizar millones de cálculos que paralizarán su computadora. Para evitar esto, OpenCV usa cascadas. ¿Qué es una cascada? La mejor respuesta se puede encontrar en el diccionario: «Una cascada o una serie de cascadas».

Como una serie de cascadas, la cascada OpenCV divide el problema del reconocimiento facial en varias etapas. Se realiza una prueba muy aproximada y rápida para cada bloque. Si tiene éxito, se realiza una prueba un poco más detallada y así sucesivamente. El algoritmo puede tener de 30 a 50 de estas etapas o cascadas y solo reconoce una cara si se han superado todas las etapas.

La ventaja es que la mayor parte de la imagen devuelve un negativo en las primeras etapas, lo que significa que el algoritmo no pierde tiempo probando las 6.000 funciones que contiene. En lugar de tomar horas, el reconocimiento facial ahora se puede realizar en tiempo real. Aunque la teoría suena complicada, en la práctica es bastante simple. Las cascadas en sí mismas son solo una serie de archivos XML que contienen datos OpenCV que se utilizan para reconocer objetos. Inicializan su código con la cascada que desea y luego hacen el trabajo por usted.

Debido a que el reconocimiento facial es una ocurrencia tan común, OpenCV tiene una serie de cascadas integradas que pueden reconocer todo, desde rostros hasta ojos y manos hasta piernas.

faceRecognition.py

strong>import cv2
import sys

# Get user supplied values
imagePath = sys.argv[1]
cascPath = "haarcascade_frontalface_default.xml"

# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)

# Read the image
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect faces in the image
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.CASCADE_SCALE_IMAGE
)
print("Found {0} faces!".format(len(faces)))

# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow("Faces found", image)
cv2.waitKey(0)

Utilice el siguiente comando para comenzar:

python3 faceRecognition.py group-of-people-of-mixed-ethnicity.jpg 
haarcascade_frontalface_default.xml

Siga los comandos a continuación cuando utilice las imágenes proporcionadas como parte del paquete de descarga vinculado:

python3 faceRecognition.py crowd-of-white-people.jpg haarcascade_frontalface_default.xml
python3 faceRecognition.py crowd-of-black-and-white-people.jpg haarcascade_frontalface_default.xml

Si desea cambiar a una imagen diferente para el análisis, asegúrese de cambiar la línea 5 de faceRecognition.py:

imagePath = "insert-name-of-image.jpg"

Imágenes de origen

Cómo hacer reconocimiento facial con OpenCV

Cómo hacer reconocimiento facial con OpenCV

Cómo hacer reconocimiento facial con OpenCV

Una de las cosas que notará de inmediato es que hay algún defecto en estas imágenes. Aunque logramos identificar la mayoría de las caras en las fotos, también logramos clasificar erróneamente varios objetos, lo que resultó en una clasificación de objetos incorrecta. Puede optimizar la precisión de la coincidencia de detección cambiando el parámetro scaleFactor.

Salida de script de reconocimiento facial

Fuente estándar 1.2 1.3-1.4
Cómo hacer reconocimiento facial con OpenCV Cómo hacer reconocimiento facial con OpenCV Cómo hacer reconocimiento facial con OpenCV
Cómo hacer reconocimiento facial con OpenCV Cómo hacer reconocimiento facial con OpenCV Cómo hacer reconocimiento facial con OpenCV
Cómo hacer reconocimiento facial con OpenCV Cómo hacer reconocimiento facial con OpenCV Cómo hacer reconocimiento facial con OpenCV

Conclusión

El reconocimiento facial es uno de los usos más comunes de la visión por computadora, especialmente OpenCV. La construcción de plataformas utilizando los algoritmos de reconocimiento facial utilizados en OpenCV es rápida y eficiente. Sin embargo, debe tenerse en cuenta que se trata de una gran cantidad de distorsión incrustada. Esto se debe principalmente a los conjuntos de entrenamiento que se utilizaron para entrenar los algoritmos de reconocimiento facial. Sin embargo, se puede mitigar, pero se necesita tiempo y paciencia para solucionarlo. Al crear una aplicación o algoritmo para la visión por computadora, especialmente el reconocimiento facial, siempre considere primero las implicaciones de las tecnologías que está desarrollando. Antes de crearlo, considere las consecuencias del uso negativo. Porque una vez que se abre la caja de Pandora, nunca se puede cerrar.

Descargar secuencias de comandos e imágenes de reconocimiento facial