Cómo detectar si una imagen contiene uno o más rostros humanos

El detector de cara de Dlib es mucho más fácil de usar que el de OpenCV e igual de rápido. Puedes leer sobre esto en el blog dlib. Pero aquí hay un ejemplo completo en C ++:

#include
#include
#include
#include
usando el espacio de nombres dlib;
int main ()
{
detector automático = get_frontal_face_detector ();
array2d img;
load_image (img, “people.jpg”);
pyramid_up (img);
auto dets = detector (img);

std :: cout << "Número de caras detectadas:" << dets.size () << std :: endl;
image_window win (img);
win.add_overlay (dets, rgb_pixel (255,0,0));
win.wait_until_closed ();
}

Y lo mismo pero usando la API de Python de dlib:

importar dlib
de skimage import io

img = io.imread (‘people.jpg’)

detector = dlib.get_frontal_face_detector ()
# Ejecute el detector de rostros, muestreando la imagen 1 vez para encontrar rostros más pequeños.
dets = detector (img, 1)

print “número de caras detectadas:”, len (dets)
win = dlib.image_window ()
win.set_image (img)
win.add_overlay (dets)
raw_input (“Presione enter para continuar”)

Lo probé en una foto grupal aleatoria de imágenes de Google y aquí está la salida:

Además, aquí hay un video de youtube que muestra la salida del detector de rostro OpenCV predeterminado y el detector de rostro predeterminado de dlib:

OpenCV tiene muchas falsas alarmas y requiere muchos ajustes para que funcione razonablemente. Dlib simplemente funciona.

Si está utilizando OpenCV, entonces hay cascadas de cabello que implementan el algoritmo seminal de detección de rostros de viola jones. Este tutorial puede ayudarlo a comenzar Detección de rostros usando Haar Cascades El código de detección de rostros viene junto con la instalación de OpenCV y es extremadamente rápido, así que juegue con los diferentes archivos XML de cascadas que se proporcionan para elegir el que mejor se adapte a sus necesidades.

Existe el muy famoso modelo de piezas discriminatorias de Ramanan que también detecta caras Modelos de piezas deformables discriminadas entrenadas (Versión 5). Es más lento que Viola Jones pero ligeramente más robusto a variaciones como pose, resolución e iluminación.

Si está buscando una solución basada en API, puede consultar Sightengine.com

Es posible analizar 2,000 imágenes gratis por mes.

Es una solución automatizada para detectar cosas como contenido para adultos, violencia, rostros y celebridades en imágenes y videos .

La API analiza imágenes y videos más rápido que los humanos. La API puede analizar varios millones de imágenes por día.

Digamos que quieres subir esta imagen y detectar caras:

Aquí hay un ejemplo en Python, usando el SDK:

cliente = SightengineClient (‘{api_user}’, ‘{api_secret}’)
output = client.check (‘face-atributos’). set_url (‘ https://d3m9459r9kwism.cloudfront.net/img/examples/example-coup-1000.jpg&#039 😉

La salida devolverá la clasificación. Un ejemplo:

“status”: “éxito”,
“solicitud”: {
“id”: “req_1VmdzS10f628UBstXdc8c”,
“marca de tiempo”: 1510757582.1956,
“operaciones”: 1
},
“caras”: [
{
“x1”: 0.5698,
“y1”: 0.24,
“x2”: 0.6773,
“y2”: 0.492,
“caracteristicas”: {
“ojo izquierdo”: {
“x”: 0.6507,
“y”: 0.3533
},
“Ojo derecho”: {
“x”: 0.6276,
“y”: 0.328
},
“punta de la nariz”: {
“x”: 0.6391,
“y”: 0.3773
},
“left_mouth_corner”: {
“x”: 0.6222,
“y”: 0.4307
},
“right_mouth_corner”: {
“x”: 0.5964,
“y”: 0.412
}
},
“atributos”: {
“hembra”: 0,14,
“hombre”: 0.86,
“menor”: 0.04,
“gafas de sol”: 0.2
}
},
{
“x1”: 0.6516,
“y1”: 0.3173,
“x2”: 0,7529,
“y2”: 0.5693,
“caracteristicas”: {
“ojo izquierdo”: {
“x”: 0.7493,
“y”: 0.4453
},
“Ojo derecho”: {
“x”: 0,7067,
“y”: 0.4253
},
“punta de la nariz”: {
“x”: 0.7404,
“y”: 0.4787
},
“left_mouth_corner”: {
“x”: 0.7342,
“y”: 0,52
},
“right_mouth_corner”: {
“x”: 0.6951,
“y”: 0.5027
}
},
“atributos”: {
“hembra”: 0,97,
“hombre”: 0.03,
“menor”: 0,37,
“gafas de sol”: 0.01
}
}
],
“medios”: {
“id”: “med_1Vmd6qHpJNWZy053MOT0L”,
“uri”: ” https://d3m9459r9kwism.cloudfront.net/img/examples/example-coup-1000.jpg&quot ;
}
}

Aquí hay un ejemplo del resultado:

Puedes probar la página de demostración: Demo

(descargo de responsabilidad: yo trabajo allí)

More Interesting

¿Cuáles son las diferencias (y similitudes) en el funcionamiento de una computadora cuántica y una red neuronal artificial?

¿Cómo debo usar máquinas restringidas de Boltzmann para el filtrado colaborativo?

Aprendizaje profundo: ¿Una versión suave de unidades lineales rectificadas funciona mejor o peor que una no lineal?

¿Necesito tener grupos similares en una regresión de diferencia en diferencia?

Si hoy existiera una computadora cuántica, ¿qué pasaría con la IA / aprendizaje automático / aprendizaje profundo? ¿En qué se traduciría esto para las empresas / industrias?

¿Cómo podría usarse el aprendizaje automático para ayudar a las personas enfermas en los países del tercer mundo?

¿Se puede usar una máquina de Boltzmann profunda para la clasificación de imágenes en una base de datos que tiene solo mil imágenes y tiene características de imagen de valor real como unidades de entrada (en lugar de unidades de píxeles binarios)?

¿Cuáles son los formatos estándar para compartir datos de aprendizaje automático?

¿Por qué confiamos en la aleatoriedad de la búsqueda aleatoria en la optimización de hiperparámetros?

¿Qué métodos / códigos están disponibles para estudiar un corpus que consiste en correos electrónicos?

Cómo obtener colores 'visualmente distinguibles' de las imágenes

¿Cuáles son algunas de las ventajas de usar PyTorch sobre TensorFlow?

¿Alguna vez usamos la estimación de máxima verosimilitud?

¿Existe alguna herramienta o API capacitada en datos de tweets para la extracción de entidades con nombre?

¿Podemos obtener un intervalo de confianza para la salida de un clasificador en el aprendizaje supervisado?