NUESTROS CLASIFICADORES

Ahora vamos a explicar el uso que les dimos a los clasificadores y los problemas que fueron surgiendo. Es importante señalar que es mucho mejor hacer un clasificador de Persona 1 sonriendo y otro de Persona 2 sonriendo que uno de Personas sonriendo, así como también es mucho mejor hacer uno para sonrisa frontal y otro para sonrisa de perfil, los primeros clasificadores los hicimos con la cara de solo uno de los alumnos, yo, al principio y después con las caras del otro alumno. Comprobamos que un clasificador que a mí me podía funcionar muy bien, a Jorge le fallaba mucho o viceversa. Esto se debe a que para haartraining puede que las muestras de una persona sonriendo sean más definidas que las de otra por ejemplo, para el programa.

El objetivo primordial era detectar “caras sonrientes” así que eso hicimos, tomamos como muestras positivas caras sonrientes ENTERAS y como negativas el resto de caras. El resultado fue catastrófico. Conforme hemos ido realizando clasificadores nos hemos dado cuenta de que a mayor simplicidad de la muestra, más preciso es el clasificador. Así que decidimos pasarle imágenes de sonrisas, o mejor dicho del último cuarto de la imagen de la cara pero sonriendo exageradamente, sacando los dientes. El cambio fue impresionante, teníamos un detector de sonrisas que funcionaba el 90% de las veces.

A partir de aquí nos planteamos detectar otras emociones, la siguiente fue sorpresa. El clasificador eran bocas abiertas. Comprobamos que cuanto más nitido era el agujero de la boca al sorprendernos, cuanto más contrate había entre el labio y el resto de la boca, mejor funcionaba, eso es lo que hemos tratado de buscar en todos los casos, imágenes nítidas, que se distingan fácilmente unas de otras y que definan una emoción.

La siguiente fue sonrisa sin sacar dientes y vimos que ya no funcionaba tan bien, lo cual nos extrañó pues el performance de ese clasificador iba muy bien, así que pensamos en qué podríamos estar haciendo en facedetect.c para que fuese tan mal. El error era que le pasábamos al clasificador solo el último cuarto de la cara, donde está la sonrisa porque pensamos que así evitaríamos que hubiese falsas detecciones en el resto de la cara. Pero esto fue un error. Nos hemos dado cuenta de que para que funcione adecuadamente, la imagen debe contener la muestra positiva y “un poquito más”, creemos que esto es así porque dado que no siempre miramos a la cámara bajo el mismo ángulo, ni bajo la misma iluminación, ni tiene exactamente los mismos límites, hay que darle algo de holgura a la detección. Después de pasar la cara entera como imagen en la que buscar muestras, los resultados de todos los clasificadores mejoraron notablemente.

La dificultad vino a la hora de hacer clasificadores de ojos. Queríamos hacer que la detección de una cara sorprendida por ejemplo se basase también en tener los ojos con las cejas levantadas, para que fuese más robusto. Así que hicimos una prueba tomando solamente uno u otro de los ojos que nos detectaba facedetect abierto y cerrado y vimos que funcionaba relativamente bien, pero que a veces facedetect pasaba cosas que no eran un ojo sino dos ojos, un trozo de la cara en el que creyó ver un ojo, etc… Así que decidimos hacer un rectángulo más o menos a la altura de los ojos y tomar eso como muestras. Las muestras parecían correctas y esperábamos buen resultado pero no fue así, eran demasiado complejas como para detectarse apropiadamente y además, aún no habíamos hecho el cambio de pasar toda la imagen de la cara para buscar positivos, sino que le pasábamos el tercio superior.

Una vez hecho este cambio los resultados con dos ojos mejoraron algo pero muy poco. La situación era la siguiente:

-Sonrisa fuerte: Se detectaba correctamente

-Sonrisa débil: Se detectaba correctamente.

-Boca de sorpresa: Se detectaba demasiadas veces.

Así pues para solucionar este problema lo que se decidió hacer fue seguir jugando con las bocas viendo que los ojos no nos servían y añadir un clasificador hecho con la boca en estado neutral. Posteriormente se realizaba un filtrado en la parte de clasificación de facedetect.c que consistía en tomar 20 capturas y al llegar a 20 si alguno de los clasificadores se había disparado más de 13 o 15 veces (tuvimos que ir ajustando) esa era la emoción detectada.

Por otra parte como sorpresa se disparaba casi siempre y el resto de clasificadores solo cuando debían dispararse, lo que hicimos fue establecer condiciones booleanes por las cuales, si se tenía cara de sorpresa y cualquier otra se elegía la otra y si solo se tenía sorpresa se elegía sorpresa, todo esto incluyendo la cara neutra. El resultado fue muy satisfactorio.

Aún nos quedaba por detectar la cara de enfadado. Tras probar con otro rectángulo para los ojos pero más ajustado vimos que fracasábamos de nuevo. Finalmente decidimos pasarle únicamente al programa un clasificador de un ojo (en el programa guardábamos los ojos izquierdos por un lado y los derechos por otro, ya que cuanto más parecidas sean las muestras mejor, y tener un ojo de cada lado de la cara no ayudaba), a pesar de que algunas muestras no fuesen apropiadas. El resultado fue bastante satisfactorio pero es bastante sensible a cambios de luz.

En general todos son sensibles a cambios de luz, si las condiciones lumínicas en las que se han tomado las muestras difieren de las condiciones lumínicas para probar los clasificadores normalmente hay problemas, conviene realizar las clasificaciones con un nivel de luz muy parecido. Para solucionar esto simplemente habría que introducir muestras con diferentes niveles lumínicos, pero no se hizo porque requería más muestras y por tanto más procesado.

Dado que el clasificador de ojos enfadados (entrecejo fruncido) tenía menos falsas alarmas pero también menos aciertos que los otros disminuimos su cantidad de aciertos necesarios en 20 capturas a 9 y así funcionó más o menos adecuadamente. Es reseñable el hecho de que en el momento en que se disparaba el clasificador de enfado no se tenían en cuenta todos los demás pues se sabía que se estaba enfadado. Este clasificador ha resultado muy importante para desarrollar el diferenciador de identidad entre Jorge y yo como explicaremos más adelante.

La última expresión facial que es la tristeza es más difícil de capturar, pero si disponemos de tiempo intentaremos modelarla posteriormente.

Esperamos que os haya gustado, un saludo.

About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: