2012-04-22 25 views
28

¿Cómo puedo hacer reconocimiento facial en el iPhone? ¿Podría alguien proporcionarme referencias/artículos para señalarme en la dirección correcta, por favor? Investigué y me di cuenta de que primero tenía que hacer la detección facial para extraer la imagen y luego hacer un reconocimiento facial al compararla con otras imágenes dentro de una base de datos.Reconocimiento facial en el iPhone

Me he dado cuenta de que tengo la detección de rostros usando OpenCV o utilizando iOS 5.0 y superior para detectar la cara. No estoy seguro del reconocimiento facial (planeo almacenar imágenes en una base de datos remota y luego hacer la comparación con la base de datos remota).

+1

posible duplicado de [Reconocimiento de caras en OpenCV] (http://stackoverflow.com/questions/4856929/face-recognition-in-opencv) – karlphillip

+1

también posible duplicado de [¿Cómo hacer Reconocimiento de caras usando OpenCV?] (Http : //stackoverflow.com/questions/7949494/how-to-do-face-recognition-using-opencv) y muchos más. – karlphillip

+1

posible duplicado de [¿Cómo puedo realizar el reconocimiento facial en iOS?] (Http://stackoverflow.com/questions/8020842/how-can-i-perform-facial-recogntion-on-ios) – Monolo

Respuesta

14

detección de rostros

me gustaría utilizar los Haarcascades disponibles en CV abierta para llevar a cabo la detección de rostros rápida y precisa.

http://opencv.willowgarage.com/wiki/FaceDetection

de reconocimiento de rostro

me gustaría utilizar un método como el Análisis de Componentes Principales (PCA) a.k.a Eigenfaces.

http://www.cognotics.com/opencv/servo_2007_series/part_5/index.html

Ese vínculo muestra un tutorial sobre cómo conseguir que el trabajo con OpenCV - Creo que esto está escrito para C, pero estoy seguro de que puede obtener el jist básica de la misma.

También podría mirar a implementar por sí mismo si se siente valiente (que no es demasiado malo) ...

http://www.face-rec.org/algorithms/PCA/jcn.pdf

http://blog.zabarauskas.com/eigenfaces-tutorial/

base de datos

realidad hice algo similar a usted, aunque en una PC no es un iPhone, pero sigue siendo el mismo concepto. Almacenaba todas mis imágenes en la base de datos como tipos de datos Blob y luego las cargaba en mi programa cuando era necesario.

Editar

La base de datos es una parte particularmente complicado del sistema ya que es donde la mayor cuello de botella es. En mi solicitud, me gustaría ir a través de los siguientes pasos ...

  1. aplicación abierta y formación de agarre imágenes de la base de datos
  2. Generar conjunto de entrenamiento basado en estas imágenes
  3. vez 1 y 2 se ha completado el sistema es muy rápido ya que solo realiza reconocimiento contra el conjunto de entrenamiento.

Afortunadamente para mí, mi servidor de base de datos estaba ubicado en una LAN por lo tanto la velocidad no era un problema, pero puedo ver por qué tiene un problema debido a que en un dispositivo móvil tiene una conexión de datos limitada (velocidad/ancho de banda). Puede comprimir las imágenes, pero esto puede llevar a una peor tasa de reconocimiento, debido a la reducción de la calidad de la imagen y también tendrá que decodificar en el dispositivo. También está la cuestión de cómo exponer la base de datos remota a la aplicación, sin embargo, sí creo que esto es posible utilizando PHP y JSON (y otras tecnologías, ver a continuación).

Retrieving data from a remote database

Tal vez usted podría hacer una Sincronizar inicial con la base de datos para que las imágenes se almacenan en caché en el teléfono? De una forma u otra, creo que probablemente tendrá que tener las imágenes en el teléfono en algún momento independientemente.

Descubrir la mejor manera de almacenar los datos/imágenes de reconocimiento en la base de datos fue uno de los mayores desafíos que enfrenté, por lo que me interesaría saber si encuentra un buen método.

+0

Muchas gracias por la respuesta . Con respecto a la base de datos, ¿se conectó el programa a la base de datos y luego descargó todas las imágenes y luego realizó el reconocimiento para cada una ?.Ese wouldent me será de gran utilidad ya que sería un dispositivo móvil con capacidades limitadas. (Probablemente estoy equivocado así que por favor corrígeme, estoy en la etapa en la que estoy tratando de descifrar algoritmos/código psudo sobre cómo abordar las cosas para más adelante). –

+0

@RoryLester Hola, he actualizado la respuesta para poder responder algunas de sus preguntas. ¡Buena suerte! – TomP89

+0

@ TomP89 Los enlaces de reconocimiento facial ya no funcionan ... Sería genial actualizar la respuesta, si conoce algunos enlaces nuevos para reconocimiento de rostros. – Dave

2

El reconocimiento de rostros se puede implementar como un algoritmo de aprendizaje automático. This book tiene un capítulo que describe esta tarea y cómo implementarla. ¡Vale la pena la lectura!

Utiliza Descomposición de valor único (SVD), más específicamente Tensor SVD method.

12

Como ha señalado, el primer paso (detección de la cara) es fácil con iOS 5 y CoreImage.framework. Ejemplo rápido:

CIImage *image = [CIImage imageWithCGImage:image_ref]; 
NSDictionary *options = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy]; 
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:options]; 
NSArray *features = [detector featuresInImage:image]; 

for (CIFaceFeature *feature in features) 
{ 
    CGRect face_bounds = [feature bounds]; 
    CGPoint mouth_position = [feature mouthPosition]; 
    // do something with these values 
} 

Con respecto a la segunda parte de su pregunta (es decir, el reconocimiento facial ), dejaré eso a alguien más calificado que yo para contestar. :)

+10

Esto es ** detección de cara **, no ** reconocimiento **. – UIAdam

+1

@UIAdam: Excelente punto, he editado para aclarar eso en mi respuesta. La pregunta indica que el OP entiende las dos partes de la tarea y he modificado la respuesta en consecuencia. –

9

Es probable que desee ver el proyecto midian de Pedro Centieiro, que realiza Reconocimiento de rostros en iOS 5 con OpenCV. Es en github en:

que utiliza partes de mi libfacerec, por lo que soporta Eigenfaces, Fisherfaces y patrones binarios locales histogramas para el reconocimiento de rostros.

1

Hemos siguiente cara API de reconocimiento: -

1. OpenCV 

2. Kairos 

3. CraftarAR 

4. AAFaceDetection 

5. MoodMe 

Y en mi opinión CraftAR es bueno si se desea utilizar en aplicaciones fuera de línea y en caso de que desee utilizar en línea, entonces Kairos es lo mejor. Mientras que OpenCV es también una opción famosa y confiable.

Y la mejor ventaja de OPENCV es que es de código abierto.

Busque estos en google para obtener más detalles y también vea ejemplos de github para ver cómo funcionan estas API.

Cuestiones relacionadas