2009-10-20 19 views

Respuesta

6

Consulte OpenCV. Se ha implementado una técnica de detección de rostros bien documentada y aclamada por Viola & Jones, conocida como Haar Cascade.

Un tutorial completo - de la formación a la experimentación - is available here. Tenga en cuenta que en realidad no necesita hacer entrenamiento; OpenCV viene incluido con varias cascadas de características, incluidas algunas para la detección de rostros.

+1

El documento de Viola & Jones, Detección rápida de objetos utilizando una cascada potenciada de características simples, se puede encontrar en Google Scholar: http://scholar.google.com/scholar?cluster= 6119571473300502765 –

+1

Gracias por responder.puedo usarlo para hacer un sistema de asistencia comercial. Mi idea es crear un sistema de asistencia mediante el cual las personas se marquen automáticamente como presentes cuando pasen por un pasaje que contiene cámaras. – user189352

+1

Bueno, técnicamente, podría ejecutar el algoritmo en una foto, contar el número de caras detectadas y tomarlo como una respuesta. De manera realista, sin embargo, sería muy impredecible y propenso al error. En primer lugar, no detecta una cara específica. Es decir, no distingue entre su cara o la mía. Por esa razón, determinar si un determinado individuo está presente o no requeriría algo más discriminatorio. –

17

Hay algunos sistemas Java de Reconocimiento de Rostros de código abierto que puedes probar, pero no esperes mucho, porque estoy buscando lo mismo, ¡pero aún estoy buscando una mejor opción!

Tenga en cuenta que encontrar cualquier cara dentro de la imagen se denomina "Detección de cara", seguir cualquier cara se denomina "Seguimiento de cara" y determinar la identidad de una cara detectada se llama "Reconocimiento de cara". ¡Te digo esto porque probablemente tienes que usar diferentes software y algoritmos para hacer cada uno! La respuesta de Paul le dice que OpenCV puede hacer Detección de la cara fácilmente (Haar Cascade Detector), pero no Reconocimiento de la cara tan fácilmente (en realidad tiene una forma de hacer Reconocimiento de la cara), que parece que necesita Reconocimiento de la cara, por lo que OpenCV no está No necesariamente es tu mejor opción ya que estás usando Java.

Puede probar FAINT que tiene Detección de Rostros y Reconocimiento de Rostros en Java, pero está prácticamente indocumentado. También existe "http://darnok.org/programming/face-recognition/", pero parece que no puedo obtener buenos resultados. También está "http://uni.johnsto.co.uk/faces/" para el Reconocimiento de Rostros, y "Neuroph" para Reconocimiento/Detección de Rostros.

Si encuentra una buena solución, dígame en "[email protected]" ¡Buena suerte! Shervin Emami

+1

actualización: OpenCV v2.4.1 ahora viene con una nueva clase FaceRecognizer que es bastante fácil para el Reconocimiento de rostros usando varios algoritmos posibles (Eigenfaces, Fisherfaces y LBP-Histograms). Por lo tanto, debe buscar una forma de usarlo desde Java, como OpenCV en Android (admite Java) o tal vez JavaCV (puede que aún no tenga FaceRecognizer). –

+0

No utilice eigenfaces para mayor precisión. Es una comparación de píxeles directa basada en promedios. Comparar las descripciones faciales después de escalar, rotar y recortar las caras encontradas es mejor. Se necesita un aprendizaje profundo para entrenar un modelo para encontrar estas descripciones. –

1

de reconocimiento facial precisa es una tarea que se puede dividir en varios pasos:

  1. Detección de rostros
  2. facial punto hito descubrimiento
  3. rotación, recorte, la alineación y la ampliación utilizando sus puntos de referencia
  4. Detección del punto del descriptor facial (no son legibles para el ser humano)
  5. Comparación de rostros conocidos para encontrar la coincidencia más cercana

Esto se puede hacer con varias bibliotecas pero requiere bytedeco envoltorios para OpenCV y Caffe, así como una biblioteca como ND4j para la comparación de matrices.

OpenCV tiene cascadas HAAR para la detección de rostros y puede usar flandmark para reconocimiento de puntos faciales. Esto le permitirá realizar los pasos 1-3.

descubrimiento descriptor facial se puede hacer usando la envoltura bytedeco para Caffe y la biblioteca VGG Cara Descriptor (http://www.robots.ox.ac.uk/~vgg/software/vgg_face/)

Finalmente, Nd4j se pueden utilizar para la comparación de imágenes. Si tiene suficientes imágenes clasificadas por individuo, quizás pueda usar una red neuronal de la biblioteca para su clasificación.

Cuestiones relacionadas