Sebas página 1 - Smeilb00/PPP GitHub Wiki
Librería proporcionada por Proconsi. Open Source, incluye múltiples algoritmos diferentes para el tratamiento de imágenes; el módulo principal se llama imgproc que incluye métodos tanto lineales como no lineales para el procesamiento de imágenes.
OpenCV utiliza el algoritmo de Viola & Jones para la detección de objetos (caras en este caso), que, por lo que he podido encontrar en internet es el más recomendado a la hora de realizar proyectos de este tipo. Se necesitará un Clasificador entrenado para poder diferenciar rostros, este busca Haar-Like Features con diferentes formas para identificar los objetos buscando estas combinaciones eligiendo las más significativas para que formen parte del clasificador. Entonces, cuando quiere identificar un objeto el algoritmo aplica los clasificadores y si todos devuelven un valor positivo considerará que hay una coincidencia. El problema de este algoritmo es que requiere que las caras estén de frente y con una luz decente para asegurar que el resultado sea correcto.
El algoritmo de Viola & Jones aplica además un algoritmo para mejorar su rendimiento a la hora de encontrar objetos a los que aplicar su algoritmo para la detección facial, este algoritmo se llama AdaBoost.
Además OpenCV proporciona clasificadores ya entrenados en formato xml desde un repositorio de Github.
Por lo que he encontrado, esta librería necesita que las imágenes estén en blanco y negro para poder realizar
la detección, por suerte cuenta con un método que convierta la imagen de RGB a escala de grises de
por si cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
.
OpenCV no es suficiente para identificar a quién corresponde cada rostro, por lo tanto necesitamos otra librería, por ejemplo:
Esta librería está especialmente diseñada para imágenes de humanos. Incluye métodos que genera en base a una imagen un array de encodings (face_encodings) de los rostros que contiene (características únicas de cada uno de ellos). Después sería comparar los encoding de los rostros que tenemos para buscar con los que aparecen en la imagen que queremos buscarlos con el método `compare_faces` y devolvería un valor tipo boolean en función de si encuentra la cara dentro de la pool de caras que le proporcionamos.
Animetrics cuenta con varios productos relacionados con la Inteligencia Artificial, entre ellos encontramos un algoritmo para reconocimiento facial tanto en 3D como en 2D en imágenes.
Desde su página web podemos probar el producto en una versión “Demo” con unas imágenes de prueba que nos proporcionan directamente. Como vemos, el software busca dentro de una serie de candidatos y devuelve el que tenga la mayor coincidencia como resultado.
He encontrado varias implementaciones de clasificadores de de tipo Haar para detectar caras y poder diferenciarlas utilizando clasificadores. Tiene buenos resultados aunque resulta un poco más lenta que Face_Recognition por lo que veo en las demos.
He encontrado más librerías y algoritmos pero creo que estas son las más destacables, además he encontrado bastante documentación sobre ellas y he podido probarlas mediante demos o archivos de prueba en mi equipo. Algunas:
· Kairos
· Lambda
· Inferdo
· Luxand