Iniciar sesión

Redondela en Foto

Shotwell Faces Tool: Informe Semanal 07 y 08

::

Estas últimas dos semanas he continuado el trabajo en la suite de pruebas, añadiendo reconocimiento facial utilizando para ello la clase FaceRecognizer de Philipp Wagner y unos scripts para ayudar en el proceso de testing. También he escrito las instrucciones para utilizar estos pequeños programas en [1] —pueden estar incompletas, pregunta lo que necesites ;)

Esto del reconocimiento facial parece que se trata sobretodo de recolectar caras para hacer una base de datos decente y realista con la que entrenar el modelo y luego tratar de reconocer a esa misma gente en otras fotos. Realmente hay muy poco código que enseñar: Desde que he descubierto, leído y entendido la nueva clase FaceRecognizer de OpenCV, el código escrito es realmente muy simple [2] —de hecho, mi tarea principal estas últimas dos semanas ha sido la de hacer pruebas, tratando de crear una base de datos decente con las caras de mis amigos para mejorar los resultados que estoy obteniendo en dichas pruebas: Sobre un 30% de precisión reconociendo gente —en algunos artículos que he leído se habla de una mayor precisión, pero tal precisión no parece ser muy real, ya que ellos están utilizando bases de datos de caras como la que puedes encontrar en [3], y no podemos esperar que los usuarios de Shotwell hagan ese tipo de fotos.

Así que dichas pruebas son reales. Quiero decir con esto que no hubo una preselección de las fotos que he utilizado. Simplemente he elegido 4 eventos —el mismo concepto que en Shotwell, i.e. fotos de la misma fecha—, y entrené un modelo con las caras autodetectadas —descartando algunas realmente malas, pero manteniendo algunas de una calidad digamos media las cuales se veía que empeorarían el modelo. Lo hice de esta forma porque creo que un usuario normal de Shotwell etiquetaría caras de estas características.

Luego he elegido otros eventos, he recolectado las caras presentes en cada uno de ellos utilizando facedetect, y he descartado los falsos positivos y la gente que no estaba presente en las muestras con las que entrené el modelo. Con esta aproximación estoy obteniendo más o menos un 30% de precisión en reconocimiento facial —pero es posible aumentar esta marca a algo así como un 50-70% descartando las caras de las personas con menos de 40 muestras en la base de datos con la que se entrenó el modelo. Así que podríamos esperar unos mejores resultados simplemente incrementando el tamaño de la base de datos de pruebas —pero he tratado de hacerlo de una forma que emulase un uso normal del programa...

Pero de todas formas creo que esto no debería ser muy molesto para los usuarios de Shotwell... Incluso teniendo una tasa de errores de un 70%, podemos tratar de minimizar la molestia de dichos errores. Dejadme que me explique: Al presionar Detectar Caras podríamos esperar que el programa trate de reconocer a las personas en la foto y pregunte algo del tipo ¿Es este Valentín Barros?... Si la persona de la foto no soy yo, tenemos un error, y el usuario debería presionar No, y luego escribir el nombre correcto —pero podríamos hacerlo de otra forma: No preguntaríamos al usuario si la cara pertenece a este o el otro, simplemente escribiríamos el nombre de la persona reconocida en el campo de texto al efecto, pero totalmente seleccionado. Si es un error, el usuario simplemente deberá escribir el nombre correcto, como si no hubiese reconocimiento facial de ningún tipo —y ya que el texto está completamente seleccionado el usuario ni siquiera tiene que presionar el botón de borrar. Y si el programa ha acertado, el usuario simplemente presionaría la tecla Intro o el botón Aceptar y el foco pasaría a la siguiente cara detectada —y, si ni siquiera es una cara, el usuario podría presionar Esc o Cancelar para descartarla.

¿Que os parece?

Por cierto, estaré en la GUADEC ;)

I am attending GUADEC at A Coruña, Spain

[a] Mi código es el que es realmente simple, pero es porque todo el trabajo duro al respecto lo ha hecho otra gente y ha sido incluido en OpenCV ;)

[1] https://github.com/Sanva/facedetect#simple-face-detection--recognition-test-suite-using-opencv

[2] http://docs.opencv.org/trunk/modules/contrib/doc/facerec/index.html

[3] http://www.cl.cam.ac.uk/research/dtg/attarchive/pub/data/att_faces.zip

NOTA: Esto es una traducción del original en inglés, aquí → http://sanva.net/blog/112/

Tags: Google Summer of Code, Shotwell

Comentarios (0)

Escribe tu comentario

Nos encantará que des tu opinión, para lo cual puedes utilizar el siguiente formulario. Por favor, intenta que tus comentarios estén relacionados con este artículo. Así mismo te pedimos que no faltes al respeto a nadie, y que no escribas como en un teléfono móvil. Cualquier comentario fuera de lugar (insultos, spam, off-topic, etc) puede ser borrado sin previo aviso.

¿No tienes una cuenta?

Regístrate

Es fácil, rápido y gratuito.

Inicia sesión en sanva.net

He olvidado mis datos de acceso.

Redondela en Foto 8.6.11 - XHTML 1.0 Strict - CSS - Política de Privacidad