• No se han encontrado resultados

Reconocimiento de rostros en video con SVM con regularización por manifolds

N/A
N/A
Protected

Academic year: 2020

Share "Reconocimiento de rostros en video con SVM con regularización por manifolds"

Copied!
46
0
0

Texto completo

(1)Reconocimiento de rostros en video con SVM con regularización por manifolds Camilo Castro Rojas ([email protected]) Juan Camilo Ochoa Acuña ([email protected]) Asesor: PhD Fernando Lozano ([email protected]) 1 de Junio de 2006.

(2) A nuestras familias por habernos brindado su apoyo todos estos años y a nuestro asesor por habernos brindado el conocimiento y la conanza en este proyecto..

(3) Capítulo 1 Introducción El reconocimiento de patrones se ha convertido durante las últimas décadas en un área de mucho interés. Hoy en día se escribe mucho sobre el tema y esto se evidencia en la gran cantidad de documentos y proyectos que son realizados al respecto. El presente informe busca mostrar el avance acerca del progreso realizado en un proyecto que se desarrolla en esta área. Los humanos somos los reconocedores de patrones por excelencia. Somos capaces de identicar fonemas a partir de sonidos, entender un texto que ha escrito otra persona a mano hay que tener en cuenta que nunca dos personas escriben igual, ni siquiera una misma persona escribe dos textos exactamente iguales, a partir de una imagen podemos reconocer objetos, etc. Inspirados en esta prodigiosa capacidad del humano, se ha buscado su emulación en computadores y para esto se han desarrollado diversos algoritmos que permiten que un aprendiz 1 aprenda a partir de ejemplos. El proyecto tiene como objetivo el desarrollo de un aprendiz que sea capaz de reconocer rostros a partir de imágenes. El algoritmo empleado es SVM (Support Vector Machine) y ya se han desarrollado aprendices similares; en [7] se desarrolla un aprendiz implementado con redes neuronales mientras que en [5] se hace uso de SVM. La 1 (Término que será empleado de ahora en adelante para referirse a un programa que es capaz de aprender a partir de ejemplos). 5.

(4) 6. CAPÍTULO 1. INTRODUCCIÓN. contribución realizada por este proyecto es la de emplear un nuevo regularizador. La importancia del proyecto radica en las diversas aplicaciones en las que se puede usar un reconocedor de rostros automático. Por ejemplo, en aplicaciones de seguridad, se podría emplear como medio de identicación. El documento presenta en los capítulos 2 y 5 los objetivos del proyecto y los diseños realizados durante la fase de desarrollo. En el capítulo 6 se explican e ilustran los resultados alcanzados al nal del proyecto. Finalmente, en la sección 9 se listan las conclusiones alcanzadas acerca del proceso de desarrollo del proyecto y de la solución realizada para el problema de reconocimiento de rostros en imágenes, al igual que mejoras que pueden ser efectuadas para mejorar el resultado. Para el lector que desconoce la teoría de los SVM se recomienda un tutorial respecto al tema que se encuentra en [2]. Igualmente, [3] explica gradualmente los conceptos más importantes..

(5) Capítulo 2 Objetivos del proyecto Los objetivos especícos que fueron planteados en el documento de avance fueron alcanzados satisfactoriamente durante el desarrollo del proyecto. Cada uno de estos objetivos es explicado a continuación. 1. Desarrollar un framework que permita automatizar una parte importante del proceso de entrenamiento del aprendiz. 2. Determinar la efectividad y eciencia de un aprendiz implementado con Support Vector Machine en el reconocimiento de rostros en video en tiempo real. 3. Aplicar una nueva técnica de regularización por medio de manifolds que permita comparar la efectividad y eciencia del aprendiz con otros aprendices similares realizados por otras personas. 7.

(6) Capítulo 3 Análisis y Descripción del Problema En este capítulo se dará la explicación del problema que se ha planteado, así mismo se explicará cuales fueron los pasos y la planeación para poder resolver el problema.. 3.1.. Descripción del Problema. Entre los diversos problemas de reconocimiento de patrones hay uno que ha llamado la atención a diversas áreas del conocimiento informático que han tratado de resolverlo desde sus diversas perspectivas. Este problema consiste en la identicación de rostros en imágenes. Este problema tiene muchas aplicaciones no solo educativas, sino que llegan hasta el campo de la seguridad, por ejemplo el ideal sería poder decir en una foto quienes se encuentran allí con un error mínimo; sin embargo para poder identicar, el primer paso es reconocer donde están los rostros. Es allí donde se ha centrado nuestro trabajo, en la búsqueda de un método eciente para poder reconocer la ubicación de rostros en imágenes. Una vez se lograra de manera ecaz el reconocimiento en imágenes, se procedería a mejorar la eciencia tal que pudiera llegar a realizar esta tarea en video y posteriormente 9.

(7) CAPÍTULO 3. ANÁLISIS Y DESCRIPCIÓN DEL PROBLEMA. 10. que la adquisición del video se hiciera en tiempo real, es decir lograr que hiciera el reconocimiento en una escena que estuviera pasando en ese mismo instante.. 3.2.. Análisis del Problema. Para poder resolver el problema, se han encontrado diversas soluciones, desde el tratamiento de imágenes [1] hasta el uso de redes neuronales [7] o [4], sin embargo nuestar solución buscaba usar un método de Machine Learning conocido como Support Vector Machines (SVM) 4.3. De esta manera se quería probar la efectividad de esta estrategia como reconocedor de patrones de una manera mas generalizada, es decir que se pudiera utilizar la imagen tal cual sin necesidad de tratamiento previo o extracción de características. La estrategia de solución por SVM ya ha sido estudiada por diversos autores [ 5],[8],[6]; sin embargo en estas estrategias se requiere no solamente de un tratamiento previo de las imágenes, sino que se utiliza la extracción de características en las imágenes. Nuestra solución a diferencia de las anteriormente mencionadas busca la detección sin la necesidad de buscar estas características, es decir usando la imágen sin ninguna clase de tratamiento se pueda realizar un reconocedor eciente y efectivo. El problema con SVM se divide ahora en las siguientes etapas :. Adquisición de datos. Selección de tecnología. Diseño de posibles soluciones. Implementación de la solución. Pruebas y validación..

(8) 3.2. ANÁLISIS DEL PROBLEMA. 3.2.1.. 11. Adquisición de datos. Se debe buscar muchas imágenes en las que se vieran rostros y en las que no, de tal forma que pudieran ser clasicadas fácilmente; el algoritmo requiere que imágenes que si son sean etiquetadas con 1 y las que no con -1. Las fotografías deben ser recolectadas de diversas bases de datos, ya que el problema requiere de un número grande de datos para poder realizar el entrenamiento y posterior validación, además de tener un número importante de imágenes que fueran rostros y otras que no, es decir se espera que la mitad de los datos sean rostros efectivamente y la otra mitad que no lo sean. Posteriormente se realiza un tratamiento pequeño con las imágenes dado que por la diferencia de tamaños todas serán usadas en un mismo tamaño que se conocerá posteriormente como dimensión de los datos de entrada.. 3.2.2.. Selección de tecnología. En esta etapa se elige no solamente el tipo de máquina en la que se implementará la solución, sino también se selecciona el formato de archivo de las imágenes nales (una vez sean escaladas), el lenguaje de programación a ser usado, en este paso se debe tener en cuenta no solo la efectividad del lenguaje sino también la facilidad de uso, reutilización y codicación para los programadores.. 3.2.3.. Diseño de posibles soluciones. Antes de implementar una solución se debe realizar un diseño previo de tal forma que tenga contemplada la solución al problema desde el papel para un posterior paso fácil a un programa computacional. Se selecciona el tipo de herramientas y algoritmos que se deben llevar a cabo para obtener la mejor solución posible como por ejemplo el tipo de Kernel 4.4..

(9) 12. 3.2.4.. CAPÍTULO 3. ANÁLISIS Y DESCRIPCIÓN DEL PROBLEMA Implementación de la solución. Una vez se han determinado los parámetros requeridos para la solución, se genera el reconocedor (también conocido como aprendiz), a partir de ciertos datos de entrenamiento, la idea principal es que dicho reconocedor . aprende.a diferenciar lo que es un rostro de lo que no es entre sus datos de entrenamiento. El aprendiz es bueno en la medida que minimiza el error en los datos, es decir se equivoca menos veces con sus datos de entrenamiento, pero que a su vez puede equivocarse poco con posteriores datos que se le pasen.. 3.2.5.. Pruebas y validación. Finalmente se realizarán las pruebas con otras imágenes de la misma base de datos para probar que el error de generalización sea el mínimo posible, posteriormente los mejores se probarán contra imágenes aleatorias de tal forma que se pueda enmarcar los rostros que encuentre en dicha imágen..

(10) Capítulo 4 Marco Teórico Para poder avanzar a la implementación de la solución debemos exponer brevemente al teoría en la que nos hemos basado. No es nuestra intención hacer un libro sobre esa teoría por lo tanto es un breve resumen, solo entraremos en un mayor detalle en los algoritmos que nos son útiles, para un mejor estudio podemos remiitirlos a las fuentes de donde hemos extraído nuestra información.. 4.1.. Aprendices. Con aprendiz nos referimos a un programa que aprende determinada información a partir de ciertos datos de entrenamiento y luego es capaz de dar un criterio a partir de lo que ha aprendido para un dato que recibe que no ha visto con anterioridad. El nombre aprendiz viene de la idea de que nosotros como humanos nos llamamos aprendices cuando recibimos entrenamiento para efectuar determinada tarea (por ejemplo, aprender a escribir o a hablar). Un ejemplo conocido de estos aprendices son las redes neuronales cuyas cualidades han sido empezadas a usar en áreas de control. En [7] se diseña un aprendiz con redes neuronales que realiza exactamente la misma función que nuestro aprendiz: reconocer rostros en un video en tiempo real. 13.

(11) CAPÍTULO 4. MARCO TEÓRICO. 14. El objetivo resulta ser, que una vez que el aprendiz ha sido entrenado, sea capaz de recibir un dato nuevo y clasicarlo en una de las clases previamente denidas. Por ejemplo, nos interesa que para el proyecto, el aprendiz sea capaz de decidir correctamente si una región de la imagen es una cara o no. En este caso el aprendiz se denomina de clasicación binaria pues al recibir un dato, sólo tiene dos posibles respuestas. Sin embargo, también existen aprendices . Hay varias formas en las que se puede entrenar a un aprendiz. Las dos que más nos interesan para el problema en consideración son las siguientes:. multiclase. 4.1.1.. Aprendizaje supervisado. Este tipo de entrenamiento asume la presencia de un experto durante la fase de entrenamiento. De esta forma, cuando el aprendiz recibe un dato, el experto le dá la respuesta correcta (en nuestro caso, le indica al aprendiz si la imagen que acaba de recibir es o no una cara) para que de esta manera mejore su predicción de datos futuros.. 4.1.2.. Aprendizaje semi-supervisado. En este tipo de entrenamiento, no todos los datos han sido etiquetados por el experto. Esto sucede porque muchas veces se tiene una gran cantidad de datos y no se tiene tiempo para realizar el proceso de etiquetación (algo que suele ser bastante laborioso), por lo que se usan ciertas estrategias con el n de preetiquetar los datos no etiquetados y realizar el proceso de entrenamiento.. 4.2.. Generalización. generalización. El concepto de de un aprendiz es muy importante. Se reere al hecho de que cuando se ha realizado un proceso de entrenamiento, y el aprendiz recibe luego un dato nuevo, sea capaz de identicar la clase del dato así sea diferente de todos los que fueron usados durante entrenamiento. Si esto se logra, se habla de que el aprendiz ha.

(12) 4.3. SUPPORT VECTOR MACHINES. 15. logrado generalizar el concepto ; de lo contrario, se dice que el aprendiz ha memorizado los datos con los que fue entrenado y por tanto no apredió bien el concepto. La forma más natural de medir esta característica de un aprendiz es mediante el error de generalización , denido normalmente de la siguiente manera:. e(f ) = P (f (x) = y) Donde f (x) es la función que dado un dato, indica su etiqueta. Dado que medir este error directamente normalmente no es posible (pues no es posible obtener la distribución de probabilidad sobre todos los posibles datos), lo que se hace es obtener una cota superior de este error (el cual depende de varios parámetros) y se busca minimizar. Esta cota superior generalmente incluye un término que busca limitar la complejidad del aprendiz (si una red neuronal no incluyera este término, podría ser tan compleja como se quisiera y no podría generalizar bien). A este término se le conoce como regularizador. Un regularizador muy conocido es la denominada dimensión VC (VC corresponde a Vapnik-Chervonenkis, los autores) de un aprendiz. Este regularizador mide, a grandes rasgos, la capacidad de memoria de un aprendiz. Entre más alta la dimensión VC, más datos puede memorizar. No es de nuestro interés entrar en más detalles del asunto, si se quiere más información al respecto, se puede consultar [2].. 4.3.. Support Vector Machines. Un Support Vector Machine o SVM es otro método para generar aprendices. Para varias tareas, se ha encontrado un rendimiento superior en los SVM que otros métodos (discriminadores lineales, redes neuronales, etc.) por lo cual se ha convertido en una buena estrategia para su solución. La idea general detrás de este método es la de tomar los datos, aplicarles una función determinada (normalmente una función que proyecta a un espacio de alta dimensión,.

(13) CAPÍTULO 4. MARCO TEÓRICO. 16. incluso dimensión innita) y en este espacio (conocido como features space ) producir un discriminador lineal, todo esto de manera muy eciente. La función φ es la que se encarga de tomar los datos y proyectarlos en la dimensión de interés. El discriminador lineal que se quiere generar, debe tener margen máximo, es decir, separe los datos de dos clases tanto como sea posible en el espacio de alta dimensión; esto se debe a que entre mayor sea el margen del discriminador, mejor es su generalización. Por fortuna, el problema de optimización que genera el aprendiz se puede expresar como el producto punto en el espacio en el que han sido proyectados los datos de entrenamiento. Así, es posible usar el truco del kernel para generar una función (a la que se le conoce precisamente como kernel ) encargada de devolver el resultado del producto punto de dos puntos proyectados:. K(x1 , x2 ) = φ(x1 ), φ(x2 ) El problema de optimización (nosotros usaremos una variante) resultante es el siguiente:. Maximizar W (α) =. l i=1. Sujeto a. αi − l. 1 2. i=1. l i,j=1. yi yj αi αj K(xi , xj ). yi αi = 0,. αi ≥ 0, i = 1, . . . , l. Generalización de un SVM El motivo por el cual un SVM generaliza radica en que su dimensión VC está íntimamente relacionada con el margen del clasicador. En [10] se demuestra la siguiente cota superior del error de generalización de un SVM:.  e(f ) ≤ υ +. c m. . R2 Λ2 ln m2 + ln 1/δ ρ2. .

(14) 4.3. SUPPORT VECTOR MACHINES. 17. Donde υ denota la fracción de datos de entrenamiento con margen menor a ρ/ w, w ≤ Λ, la norma de x (los datos de entrenamiento) es menor a R, m es el número de datos de entrenamiento, ρ > 0, R, Λ ≥ 0, c es una constante. Todo esto con probabilidad 1 − δ. No es posible realizarlo con probabilidad 1 porque los datos de entrenamiento provienen de determinada distribución de probabilidad y no se puede garantizar que para todos los conjuntos de datos de entrenamiento se obtenga un buen aprendiz. Por ejemplo, qué pasaría en el caso en que el conjunto de datos de entrenamiento sólo tiene un dato, pues la distribución que entrega los datos siempre arroja ese mismo dato?. 4.3.1.. Eciencia de un SVM. La fase de entrenamiento de un aprendiz normalmente toma tiempos considerablemente altos. Por ejemplo, algoritmos de entrenamiento para redes neuronales como prunning (poda o eliminación de nodos) pueden tomar tiempos del orden de días para arrojar una respuesta. Los SVM en general también pueden tener tiempos largos de entrenamiento debido a varios factores: el problema en particular que se quiere atacar, pues no es igual clasicar imágenes a clasicar puntos bidimensionales; el kernel escogido y la implementación del mismo son factores muy importantes pues este kernel será empleado tanto en la fase de entrenamiento, como en la fase de clasicación; nalmente, el problema de optimización escogido puede presentar ventajas y desventajas. En el proyecto probablemente haremos uso de una variación del proceso de entrenamiento mencionada en [9]. Esta variación aprovecha la forma del problema para expresar el resultado del proceso como la inversión de una matriz. El tamaño de la matriz a invertir es del tamaño de los datos de entrenamiento; por tanto, es necesario encontrar un equilibrio que permita obtener una buena generalización (sucientes datos de entrenamiento) y una buena eciencia (no demasiados pues la inversión de una matriz es de orden cúbico)..

(15) CAPÍTULO 4. MARCO TEÓRICO. 18. 4.4.. Kernels. Supongamos que nuestros datos se encuentran en un espacio donde no es tan obvia la separación lineal, luego la teoría anterior no nos ayudaría en mucho ya que se requiere hacer una separación a través de un hiperplano, sin embargo consideremos una función que nos permitiría tomar un par de datos x y x que están en un espacio X y llevarlos a un espacio H de una mayor dimensionalidad donde nuestros datos son separables, denimos esta función como:. Φ:. X →H x → x := Φ(x). (4.1). Sin embargo encontrar este espacio no siempre es fácil, es por eso que se usa una nueva función conocida como kernel, que nos permite describir el producto punto (que es lo que más se necesita como vimos en la sección anterior) en el espacio H:. k(x, x ) = Φ(x), Φ(x ). (4.2). En [10] se explica con mayor detalle las características que deben cumplir estas funciones y sus propiedades, nosotros vamos a explicar el funcionamiento de algunos que fueron usados durante el proyecto.. 4.4.1.. Kernels analizados. Para esta sección vamos a suponer que X ⊂ Polinomial RBF Imágenes. N. , tenemos los siguientes kernels:.

(16) 4.4. KERNELS. 19. Polinomial :. k(x, x ) = x, x d Es el producto punto entre ambos vectores elevado a una potencia d. RBF : Su nombre viene de Radial Basis Function, es denido como: k(x, x ) = f (d(x, x )). (4.3). Donde d es una métrica en X , como ejemplo ponemos la clase de kernel que vamos a mencionar como RBF de aquí en adelante:. x − x 2 k(x, x ) = exp(− ) 2σ 2 . Imágenes :. (4.4). Tomado de [10], este kernel busca una correlación entre los píxels cercanos de dos imágenes x y x . . Se asume que x y x son dos imágenes del mismo tamaño y que se tienen 3 valores previamente determinados p,d1 y d2 . 1. Hallar una tercera imagen (x. ∗ x ) denida como el producto píxel a píxel de x y x 2. Muestrear (x. ∗ x ) con campos receptivos piramidales de diametro p, centrados en todas las posiciones (i, j) para obtener los valores. zij := .. . w(max(|i − i | , |j − j  |))(x. ∗ x )i j . i ,j . Una posible elección de la funcion de peso w : N → R es w(n) = max(q − n, 0), donde q ∈ N0 . En este caso, p = 2q + 1 es el ancho del campo receptivo piramidal. 3. Elevar cada zij a la potencia d1 , para tomar en cuenta las correlaciones locales dentro del rango de la pirámide..

(17) CAPÍTULO 4. MARCO TEÓRICO. 20. 4. Sumar zijd1 sobre toda la imagen, y elevar el resultado a la potencia d2 para permitir correlaciones de largo rango de orden d2 Con el n de mejorar la eciencia del kernel, se ha usado la idea de imagen integral descrita en [7] para reducir la cantidad de cálculos que se realizan en el algoritmo. La idea de imagen integral consiste en que a partir de una imagen (en nuestro caso, la imagen de la que partimos es la que se obtuvo del producto píxel a píxel) se calcula una segunda imagen cuya posición (i, j) contiene la suma de todos los píxels de las columnas y las anteriores incluyendo i y j . La denición exacta dada en [7] es:. ii(x, y) =. . i(x , y  ). x ≤x,y  ≤y. Donde i(x, y) es el valor del píxel en la posición (i, j). Y la denición recursiva dada para realizar este proceso de una sola pasada sobre la imagen es:. s(x, y) = s(x, y − 1) + i(x, y) ii(x, y) = ii(x − 1, y) + s(x, y).

(18) Capítulo 5 Implementación de la solución Una vez se ha seleccionado la tecnologia a utilizarse y se ha diseñado la solución, se ha pensado en implementar una serie de herramientas para poder facilitar el trabajo a la hora de realizar las diversas tareas en el proceso; estas herramientas son: 1. Etiquetador de Datos 2. Entrenador 3. Validador La necesidad de realizar estas herramientas surge debido a la naturaleza cíclica del proceso, es decir en caso que una selección de solución no fuera la mejor posible se debía de nuevo tomar otros datos, seleccionar un nuevo kernel entrenar y probar de nuevo buscando una mejor solución. La ventaja de hacer estas herramientas ayudaron a que el tiempo de implementación de un nuevo aprendiz a su respectiva validación fuera básicamente el tiempo de entrenamiento. 21.

(19) 22. CAPÍTULO 5. IMPLEMENTACIÓN DE LA SOLUCIÓN. Figura 5.1: Proceso de desarrollo. 5.1.. Etiquetador de Datos. Cuando se adquirió la base de datos, solo se tenían imágenes en diversos formatos, tamaños y obviamente si etiquetar; la solución que se pensó fue en un programa que permitera realizar este proceso de una manera semi automática, además debía dejar en un formato único para que pudiera ser usado en las posteriores etapas; dado que se buscaba que se pudiera tomar como vector o como dato la propia imagen, por eciencia se debía usar un tamaño pequeño, que como se ha visto en 4.4 se requiere de un producto punto (o al menos un recorrido sobre los componentes del vector) puede ser un factor crucial en búsqueda de la eciencia, por eso usar tamaños pequeños puede ayudar; se ha decidido probar con tamaños pequeños como imágenes de 16 ∗ 16 pixeles, 24 ∗ 24 y 32 ∗ 32, se esperaba que en cada imágen pudieramos identicar un rostro en las diversas escalas: Como se puede ver si se alcanza a diferenciar bien que si es un rostro en las diversas escalas; ahora lo importante era encontrar un formato para almacenar las imágenes de una forma fácil de entender por otras aplicaciones de diversos tipos y lenguajes..

(20)

(21) CAPÍTULO 5. IMPLEMENTACIÓN DE LA SOLUCIÓN. 24. 5.1.1.. Formato PGM. Este formato que fue el que se usó en el resto del desarrollo conocido como "Portable Gray Map.es un formato de uso muy fácil tanto para lectura como escritura, básicamente consta de: Un número mágico para identicar el tipo de archivo, este número en un archivo PGM es "P5". Espacio en blanco (espacio, TAB, CR o LF). Una secuencia de carácteres ASCII (dígitos) representando el ancho (ej: 64). Espacio en blanco. La altura de nuevo en formato ASCII. Espacio en blanco. El valor máximo (Maxval) de la escala de grises, de nuevo en ASCII. Debe ser menor que 65536 y mayor que cero. Los datos que se representan en una matriz de las especicada en la altura y columnas en el ancho, cada dato es representado en 1 byte (o dos si Maxval es mayor que 255), Maxval viene a representar el color blanco y 0 el color negro. Comentarios, comienzan con el caracter #, estas líneas son ignoradas. Debido a esta facilidad se optó por este formato para poder repesentra las imágenes debido a que era fácil extraer y generar los datos de esta clase de archivos. A continuación se muestra un ejemplo de dicho formato: P5 24 24 255.

(22) 5.1. ETIQUETADOR DE DATOS. 25. ÀËÀÀ?È???ȼ¼??¼¼ÈÈÈÈ???? ÀÀ??ÈÈÈ?È«¢???ü?¼¼ÈÈ???ÀÀ ???È?Ȧ???????áü??ÈÈ???ÀÀÀ? ÈÈ?Ê????????Âü??ÈÈ?ÀËË??Èü ... Nótese que los datos no se pueden leer directamente y parecen no tener sentido alguno, pero notemos que cada carácter representa un valor entre 0 y 255. Para poder tener un control más fácil sobre esta clase de archivos se programó una serie de herramientas que permitierian leer y escribir los datos en un archivo PGM, para ver estas aplicaciones ver el CD que se entrega anexo.. 5.1.2.. DataBase Manager. Este es el nombre de la aplicación que se ha generado para poder realizar una etiquetación rápida de los datos y que quedaran preparados para posteriores etapas; Ventajas: Una etiquetación rápida y semi automática de muchos datos en varios formatos de imagen. Escalamiento a una dimensión deseada por el usuario. Generación de un archivo .pgm resultado de la conversión de cada imágen. Generación de un archivo de fácil lectura en programas como excel o MATLAB. Con esta aplicación se podía a medida que se recolectaban nuevas imágenes ir agregándolas en las escalas deseadas a la base de datos que se usaría posteriormente, existen varias formas de agregar una nueva imágen: 1. Manual.

(23) CAPÍTULO 5. IMPLEMENTACIÓN DE LA SOLUCIÓN. 26 2. Auto. Para comenzar la clasicación se ejecuta la aplicación se selecciona un archivo de conguración que cumpla con el siguiente formato: 1. Archivo estilo properties de java, es decir nombre de atributo = valor. 2. Un atributo sourceFolder que es la ruta donde se encuentran las fotos a clasicar. 3. Un atributo destinyFolder que es la ruta donde se van a guardar las imagenes resultado. 4. outputFile donde se va a guardar el nombre del archivo y la etiqueta que se le ha colocado. 5. nalImageSize que establece el ancho y alto de las imagenes nales que se incluirán en la base de datos. Las imágenes generadas son en formato PGM, adicionalmente se genera un archivo x.txt y y.txt en la carpeta descrita por destinyFolder, que son archivos que pueden ser utilizados en MATLAB como los datos de entrenamiento y las etiquetas respectivas.. Manual Imagen por imagen se dice si es o no es rostro, la aplicación va mostrando imagen por imagen que sea un formato compatible con el programa (BMP, GIF, JPG o PGM) y el usuario hace click sobre alguna de las 2 opciones (Yes o No) para etiquetar la imágen.. Auto Antes de comenzar la selección el usuario puede decir si todas las imágenes van a ser rostros o no rostros, de esta manera se facilita más la tarea del usuario, porque a la hora de cargar el archivo de conguración todas las imágenes quedan automáticamente etiquetadas bajo la decisión previa del usuario..

(24) 5.2. ENTRENADOR. 5.2.. 27. Entrenador. Con una cantidad de datos suciente para poder realizar el entrenamiento y una posterior validación cruzada, los datos son seleccionados aleatoriamente de los archivos generados en la etapa previa procurando dejar una cantidad similar de rostros y de no rostros. Para un conjunto de datos se debía realizar varias pruebas con diversos kernels ajustando parámetros de estos mismos para probar la efectividad de cada uno; de esta manera se debía pensar en una herramienta que perimitiera una fácil parametrización para poder realizar varios entrenamientos de una manera fácil, por otro lado el algoritmo propuesto requiere de una serie de operaciones matriciales incluyendo inversiones, esto se traduce en altos tiempos de entrenamiento que crecen de manera exponencial con el número de datos (complejidad O(n3 )), así que la herramienta debía hacer uso de operaciones matriciales de una manera excelente. Por los motivos anteriormente mencionados se ha seleccionado MATLAB para poder realizar esta herramienta; posteriormente en al página de Belkin, encontramos una serie de herramientas para poder realizar dicho entrenamiento usando dos de los kernels que se pensaban utilizar (Polinomial y RBF), luego de una modiicación a estas herramientas donde contemplabamos el caso que si era el kernel de Imágenes 4.4 en la parte del algoritmo deonde se calcula la matriz K o matriz de kernel, la suministrabámos al programa previamiente calculada por una aplicación ralizada con dicho n, debido a que ya se había realizado una herramienta para poder implementar dicho kernel en java. Con dichas modicaciones al algoritmo se realizaron los entrenamientos necesarios, los reslutados de dichas pruebas serán presentados en el siguiente capítulo. El programa arrojaba un archivo en el que se encontraban los α para los vectores de soporte, de tal manera que pudieran ser usados fáclmente en aplicaciones posteriores, ya que es la lectura de un archivo de texto para los α y los x respectivos; de todos los aprendices generados en esta etapa se fueron descartando los que presentaran un mayor.

(25) CAPÍTULO 5. IMPLEMENTACIÓN DE LA SOLUCIÓN. 28. error de generalización, en nuestro caso logramos errores inferiores al 4 %. Lo cual nos había dado una gran conanza en nuestro proceso.. 5.3.. Validador. Una vez teníamos varios aprendices se realizaba la prueba nal, pasar cualquier imágen y que en esta detectara donde se encontraban rostros; dado que en una imágen podía haber varios rostros nuestro algoritmo debía tener en cuenta dicha condición a la hora de evaluar la imágen, lo cual nos hacía pensar en un recorrido de la imágen, inicialmente pensamos en recorrer pixel por pixel la imágen y evaluar, esto sería muy bueno porque no se descartan posibles espacios donde pueda comenzar un rostro, sin embargo en una imágen relativamente pequeña ( 100×100pixels) se tendría que hacer la evaluación sobre 10000 datos, lo cual para una sola imagen nos alejaría completamente de nuestro objetivo de lograr el tiempo real; de esta forma se optó por dejar de forma parametrizable el paso que se debe dar entre cada paso. Un posterior análisis, nos permitió determinar que si se quería tratar con cualquier imágen, los rostros no se encontraban en un tamaño jo y que no era necesariamente el mismo de las imágenes con las que se había entrenado, luego para poder determinar si se encontraba un rostro o no, la imágen debía ser recorrida varias veces tomando por ejemplo segmentos que sean tres veces en ancho y en alto el tamaño original de entrenamiento, con eso recorremos la imágen pasamos a un tamaño una escala menor y recorrer de nuevo, así sucesivamente hasta llegar al tamaño original. La ventaja de comenzar con escalas mayores son las siguientes: Disminuye la superposición de reconocimientos, es decir si se encuentra un rostro en una imágen mas grande no la recalcara de nuevo en una escala menor. A medida que se encuentren rostros en un mayor tamaño se puede ignorar una búsqueda en las posiciones que cubra el recuadro donde se ha encontrado, de tal.

(26) 5.3. VALIDADOR. 29. manera que en la siguiente escala se evalua en menos espacio y va aumentado la velocidad de búsqueda. Sin embargo este método presenta unas desventajas importantes: Disminuye la precisión, es decir puede solo recalcar sobre la mitad de un rostro y posteriormente no recalcar la totalidad del rostro debido a que se ignoran las posiciones al interior que pueden recalcar el rostro de una mejor manera. Por ser una escala amyor, si hay rostros muy juntos, puede encerrar mas de un rostro, sin embargo el segundo rostro puede no ser detectado ya que de nuevo se ignoran las posiciones en las que podría detectar el rostro. El algoritmo básicamente es el siguiente:. Algorithm 1 Iterate(n) Require: An image I of n × m pixels.. A square image size x equal to the size of the vectors of the SVM. A SVM svm.. 1: 2: 3: 4: 5: 6: 7:. while hasMoreSubImages(I, x) do SI ← getNextSubImag (I, x) res ← svm.eval(SI) res > 0 mark SI as face. if end if end while. then. Debido a las pruebas con diversas imágenes que se realizaron (y teniendo en cuenta que el bias arrojado por el entrenamiento daba siempre 0), se pudo observar que el bias afectaba considerablemente el éxito del programa, es decir factores como la iluminación de la imágen y otros, resultaban en que el bias que se usaba para una imágen pudiera no servir para otra, por lo tanto el bias se dejo como un factor que pudiera ser ajustado por el usuario para poder lograr los resultados esperados..

(27) 30. CAPÍTULO 5. IMPLEMENTACIÓN DE LA SOLUCIÓN. El SVM que requiere el algoritmo, viene de cargar los α y el kernel correspondiente de cada aprendiz que se ha realizado a través de un archivo de conguración con las siguientes características: 1. Archivo estilo properties de java, es decir nombre de atributo = valor. 2. kernelType, el tipo de kernel que usa el SVM puede ser RBF, Poly (polinomial) o Image (imágen). 3. alphaFile, el archivo de los α. 4. bias, el bias del SVM. 5. alphaUmbra, en caso que se deseara ignorar algunos α debido a que su magnitud es muy pequeña comparada con otros, se cambia este parámetro para que los alpha que son mayores a este valor sean tenidos en cuenta, también puede ayudar para aumentar la velocidad al disminuir el número de datos para evaluar. 6. supportVectorFile, el archivo donde se encuentran los x que sirven como vectores de soporte. 7. supportVectorSize, el número de vectores de sopprte. 8. kernelP, parámetro del kernel potencia en caso de ser Poly, ancho de sub-imágen en caso de ser Image y σ en caso de ser RBF 9. kernelN, los valores de cada pixel varían entre 0 y 255, al evaluar dichos datos experimentalmente, el entrenamiento nos arrojaba error al tratar de invertir una matriz muy cercana a la singular, ello nos llevo a generar este parámetro, para que cuando se evaluara el kernel cada píxel se dividiera por este valor y así evitar el error. 10. kernelD1 y kernelD2 dos parámteros adicionales del kernel de imágenes..

(28) 5.3. VALIDADOR. 31. Posteriormente el usuario carga la imagen que desea probar y espera los resultados. Los algoritmos y programasse entregan como anexos a este documento..

(29) Capítulo 6 Resultados y Análisis Los resultados que se han obtenido se han tomado en las etapas de entrenamiento y posterior validación. Para estos resultados se ha tenido en cuenta factores como el tiempo de respuesta y la efectividad de cada algoritmo.. 6.1.. Resultados de Entrenamiento. En primerra instancia, vamos a mostrar el error promedio obtenido con los diferentes kernels en los diversos tamaños de imagen, ello es para mostrar como el error iba disminuyendo a medida que aumentaba la cantidad de los datos. Como se puede apreciar en la gura 6.1 podemos inferir que independientemente del kernel que se haya utilizado el error de generalización disminuye a medida que aumentan los datos, además el tamaño de nuestra base de datos no ha permitido que lleguemos al punto donde se pierde generalización, es decir no hemos llegado a un sobreajuste a los datos. Sobre el error en los datos, el algoritmo arroja resultados sorprendentes a llegar a un error del 0 % para los kernels polinomiales y RBF, para el de imágenes inicialmente arrojaba un error aproximado del 35 %, una inspección al valor que tomaban los datos nos permitió notar que el bias no era 0 tal como arrojaba el algoritmo, sino que debía. 33.

(30) 34. CAPÍTULO 6. RESULTADOS Y ANÁLISIS. Figura 6.1: Error de Generalización en el entrenamiento.

(31) 6.1. RESULTADOS DE ENTRENAMIENTO. 35. ser calculado. En primera instancia se calculó como el promedio entre los datos mal etiquetados, con este procedimiento llegamos a un error entre el 1.5 y 2 %, luego utilizando como bias el valor del falso positivo más alto, logramos un error inferior al 1 % lo cual era un gran avance. Es decir independiente del bias, los datos que nos arroja el algoritmo es un margen lo sucientemente bueno para separar los datos, el bias notamos que depende de factores propios de las imágenes con que se haya entrenado, debido a que las condiciones de iluminación afectan los valores que pueden tomar los datos al ser evaluados. El error de generalización lo mostramos como el promedio entre los diversos kernels que probamos, sin embargo había kernels mejores que otros como lo muestra la tabla 6.1 para 800 imágenes de 24 × 24 pixeles.. Tipo de Kernel Error ( %) Imagen 5,2,2 Imagen 7,2,2 Poly 2 Poly 3 RBF 2 RBF 4. 2.75 0.75 1.5 3.75 4 12. Cuadro 6.1: Resultados de Kernels Estas pruebas se realizaron con imágenes de 24 × 24 pixeles dado que mostraron un menor error. A pesar que el kernel polynomial de grado 2 parece comportarse mejor, cuando fue utilizado en imágenes ya no en escala de grises sino en colores, y no de 24 ∗ 24 sino de distintos tamaños, el kernel RBF 2 se comportó mucho mejor, por lo tanto este fue el elegido. Una vez el kernel ha sido elegido, se quería comprobar las bondades del algortimo Laplaciano permitiendo tomar no solo con igualdad las etiquetas de los datos contra el grafo de proximidad, con esto se obtuvieron 3 kernels variaciones del original RBF 2: Se pudo observar una mejora importante, sin embargo, es de esperarse que cuando.

(32) CAPÍTULO 6. RESULTADOS Y ANÁLISIS. 36. γA 1 20 0.5. γI 1 0.5 20. Error ( %) 4 2.5 2.5. Cuadro 6.2: Resultados de Kernels RBF. γA es mucho mayor que γI el error pudo haberse disminuido debdio a un sobreajuste a los datos mas no por que haya generalizado mejor, en el caso contrario se esperaría una mejor generalización. Para comprobar dichas hipótesis vamos a comparar los 3 kernels sobre la misma imagen, los resultados obtenidos (Para facilitar la lectura vamos a nombrar los kernels como, Kernel ID al kernel cuyos gammas son iguales, Kernel A al kernel con un γA > γI y Kernel I al kernel con γA < γI ) están en la gura 6.2.. Figura 6.2: Con gammas iguales, γA > γI , γA < γI Se pudo observar que el "`mejor"' en la medida que encontrara más rostros fue el Kernel A sin embargo es el que más falsos positivos reconoce, lo cual aumenta su error, los otros 2 sacrican no reconocer rostros a cambio de minimizar el número de falsos positivos. Sin embargo la escogencia que vamos a tomar va encaminada a tomar el Kernel A ya que el error de falsos positivos puede llegar a ser corregido agregando un parámetro más al SVM. Básicamente el SVM tiene un tamaño jo para sus vectores, por lo tanto se toman pedazos de la imagen de dicho tamaño, sin embargo a veces las caras no estan en cuadros.

(33) 6.1. RESULTADOS DE ENTRENAMIENTO. 37. de ese tamaño (en nuestro caso 24 × 24) sino que pueden estar en tamaños mas grande, luego una modicación al algoritmo que permite coger pedazos mas grandes pero que los escala de tal forma que queden del tamaño deseado ha sido implementada. Con esto y con los aproximadamente 2500 datos de entrenamiento nos dispusimos a probar sobre una imágen, el resultado se muestra en la gura 6.3.. Figura 6.3: Prueba del. Kernel A. El tiempo tomado para recorrer esta imagen tardo aproximadamente 15 segundos, lo cual es un resultado malo si vemos el tiempo requerido (además que solo se hizo que se tomaran cuadros de 24 × 24), para reducir el tiempo decidimos dejar de tomar algunos α ello implica menos support vector, pero aumenta el tiempo, para decidir cuales evitar, se tuvo en cuenta la magnitud del mas grande, todos aquellos que fueren 10 veces menor que este serían ignorados, esto nos llevo a un SVM con 1899 support vector, el resultado obtenido en 3.5 segundos se ve en la gura 6.4. Se puede observar que el tiempo de respuesta a pesar que disminuyo algo esta aun lejos de los tiempos de ejecución para video, por otro lado, vemos que aunque dejo de reconocer algunos rostros tambien disminuyo el número de falsos positivos, esto puede ser considerado como una mejora..

(34) CAPÍTULO 6. RESULTADOS Y ANÁLISIS. 38. Figura 6.4: Prueba del. Kernel A con menos support vector. El siguiente paso era no solo medir el error, si bien es cierto que se quería precisión también buscabamos rapidez para realizar los cálculos, estos datos dependían de cada kernel y del tamaño de la imágen, buscando comparar cual se demorara menos y consumiera menor cantidad de recursos, probando de nuevo en imágenes de 24 × 24 obtuvimos los resultados en la tabla 6.3 de ,nuevo se realiza con 800 imágenes teniendo en cuenta que es el número de sub-imágenes que se analizaría si se tomara un segmento cada 4 pixels en una imágen de 120 × 120.. Tipo de Kernel Tiempo (s) Memoria (MB) Imagen 5,2,2 Imagen 7,2,2 Poly 2 Poly 3 RBF 2 RBF 4. 108 128 1.5 1.5 1.2 1.2. 40 40 25 25 25 25. Cuadro 6.3: Resultados de Kernels en tiempo y memoria Como podemos ver a pesar que el kernel de imágenes era más preciso era el más.

(35) 6.1. RESULTADOS DE ENTRENAMIENTO. 39. leno, por lo tanto nos mantuvimos con la decisión del kernel RBF; sin embargo podiamos hacer unas mejoras importantes para poder aumentar la velocidad sin reducir la precisión: Se puede notar por la gráca , que el error de generalización tiende a permanecer constante cuando hay mas de 700 datos, por lo tanto e pueden utilizar menos datos como vectores de soporte (1800) lo cual disminuye el número de operaciones. El usar imágenes de 24 × 24, nos implica 576 operaciones de punto otante por cada dato operación en un kernel K(x1 , x2 ), en cambio con imágenes de 16 × 16 serían 256, menos de la mitad, por lo tanto se espera que el tiempo se reduzca, sin embargo el error aumentaría a un 6 %. El error mas común se vio cuando las imágenes eran en tamaños en verdad pequeños, se plantea la posibilidad de evaluar primero imágenes más grandes, escalarlas a la dimensión sobre la que se esta evaluando e ignorar y no volver a preguntar por los pixeles que se encuentren dentro de los recuadros donde se haya identicado un rostro. Sobre la anterior modicación, también se plantea que el usuario pueda congurar hasta que tamaño mínimo desea, es decir si quiere llegar hasta el tamaño base (por ejemplo 16) o si por el contrario desea que pare de recorrerse la imagen cuando sea dos o tres veces el tamaño nal. Las modicaciones anteriormente mencionadas y un preprocesamiento en algunas imágenes para poder aclararlas más nos dieron los resultados mostrados en la gura 6.5. Como se esperaba el procesamiento de cada imágen varía entre 0.75 y 1.5 segundos lo cual ya es bastante mejor para las aproximaciones a tiempo real, teniendo en cuenta que se recorre la misma imagen varias veces (era al menos 3 veces más de datos a analizar que las primeras pruebas)..

(36) 40. CAPÍTULO 6. RESULTADOS Y ANÁLISIS. Figura 6.5: Resultados con modicaciones nales.

(37) Capítulo 7 Alcance de los Obejtivos 1. En la etapa inicial del proyecto de grado, se realizó una investigación respecto a las tecnologías más apropiadas de desarrollo. La selección denitiva se basó principalmente en criterios de conocimiento, facilidad de uso y disponibilidad de las herramientas. Se escogieron Java y Matlab como las tecnologías que mejor satisfacían nuestros criterios de selección. El framework que fue desarrollado permite automatizar más del 75 % de actividades totales, las cuales incluyen generación de los datos de la base de datos, generación de la matriz de Graam para los datos de entrenamiento, entrenamiento de varios aprendices seleccionando el kernel más apropiado y evaluación de dichos aprendices empleando validación cruzada. De esta manera, el framework desarrollado permite extender el trabajo realizado en este proyecto de grado para evaluar el desempeño de distintos aprendices variando la base de datos y el kernel fácilmente. Esto facilitará considerablemente posibles trabajos futuros que se desarrollen en el tema de desarrollo de aprendices usando SVM. 2.. 41.

(38) CAPÍTULO 7. ALCANCE DE LOS OBEJTIVOS. 42. Este objetivo, quizá el más importante de la tesis, permitió comparar el desempeño de distintos aprendices con otros previamente desarrollados. Usando el mismo método, se entrenaron varios aprendices con diferentes parámetros (los ajustes que se efectúan en los kernels básicamente) con lo que se obtenían diferentes resultados. Este procedimiento fue realizado por medio de prueba y error debido a que no es posible saber con exactitud que parámetros del kernel son los óptimos. Sin embargo, dada la forma en la que el aprendiz clasica un dato y que Java es un lenguaje montado sobre una máquina virtual, se presentaron problemas de eciencia, lo cual inevitablemente no permitió realizar la conexión del aprendiz con el dispositivo capturador de video para efectuar el proceso en tiempo real. Las soluciones que planteamos para mejorar este problema se encuentran en la seccion 8 como futuras mejoras que pueden realizarse. 3. En [9] se desarrolla la teoría que sustenta al nuevo método de enseñanza de los aprendices. El autor de este paper también desarrolló, en conjunto con otras personas, algoritmos genéricos que permitían entrenar un aprendiz para cualquier tipo de dato 1 usando Matlab. Nuestro framework incluye estos algoritmos con unas pequeñas modicaciones con el n de ajustarse al kernel empleado, el cual puede cambiarse fácilmente.. 1 Los. algoritmos desarrollados están disponibles http://manifold.cs.uchicago.edu/manifold_regularization/manifold.html. en. la. página.

(39) Capítulo 8 Trabajo Futuro A pesar de no lograrse aún los tiempos para realizarse en video a velocidades aceptables (10 cuadros por segundo mínimo), se puede realizar haciendo varias mejoras al programa; La ventaja del algoritmo de support vector machines, es que elresultado por ser una n sumatoria pude calcularse en varias partes por separado, es decir i=0 αi × K(x, xi ) pol l  demos expresarla como i=0 αi × K(x, xi)+ i=l +1 αi × K(x, xi)+· · ·+ ni=l αi × K(x, xi), cada una de las partes lj no depende de los datos previos, son independientes, por lo tanto para calcular el resultado se puede hacer que el resultado sea la suma del cálculo de varias máquinas trabjando en paralelo que se encargan de evaluar el dato utilizando algunos de los vectores de soporte. Sin embargo la selección del número de máquinas debe ser cuidadosa, se espera que entre más máquinas se use disminuye el tiempo proporcionalmente al número de máquinas; es decir si usamos 2 máquinas (asumiendo que tienen las mismas características), el tiempo se disminuiría a la mitad ya que cada máquina evaluaría la mitad de vectores de soporte; 3 harían el trabajo en la tercera parte de tiempo y así sucesivamente, pero hay que tener en cuenta, que al nal una sola máquina debe ser la que consolide el resultado, así que el número de máquinas no pude llegar a límites donde cada máquina evalua el orden de la centésima parte parte de la cantidad total, porque no se vería la 1. 2. 1. 43. p.

(40) 44. CAPÍTULO 8. TRABAJO FUTURO. gananacia en tiempo dado que el cuello de botella se ve ahora en la parte de consolidación; hemos hecho una estimación para el número de máquinas que podrían usarse y nos hemos aproximado a 10 computadores para poder realizar este proceso. Otro cambio importante que puede realizarse en corto tiempo debido a la forma en que esta implementado, es la conversión de codigo Java a un código que pueda ser compilado y optimizado para las máquinas que se usan como lo son C o C++, ya que al no ser interpretado puede mejorar sustancialmente el tiempo de respuesta. La adquisición en tiempo real de video se puede realizar fácilmente usando un API para java conocido como Java Media Framework (JMF), que se puede conseguir en la página http://java.sun.com/products/java-media/jmf/, utilizando esta herramienta se puede realizar adquisición de video de una forma que se empalme suavemente con lo que hemos realizado. Otro aspecto que puede ser mejorado para futuros desarrollos, es la obtención de una base de datos más completa (una vez que los problemas de eciencia sean resueltos) para obtener un mejor aprendiz, pues la base de datos con la que se entrenó está restringida a rostros con fondos claros, lo cual se evidencia en la gran cantidad de falsos positivos que se observan en los resultados. Por último, a pesar que uno de los objetivos de nuestro trabajo era mostrar la superioridad de SVMs en el sentido que la imágen no requería de un preprocesamiento y una extracción de características principales, vemos que la dimensión de los datos inuye mucho en el tiempo de ejecución, por lo tanto es razonable pensar entonces en realizar una extracción de características previa y así realizar el proceso. En [ 7] vemos una forma interesante de realizar dicha extracción, y para un posterior trabajo la adquisición de la imagen integral (mencionada en dicho artículo) la hemos realizado para el kernel de imágenes por lo tanto es un paso fácil de realizar..

(41) Capítulo 9 Conclusiones El algoritmo de regularización por Manifolds muestra su utilidad a la hora de entrenamiento, ya que a diferencia de procesos iterativos, el algoritmo depende solamente de la inversión de una matriz calculada previamente y además el error de entrenamiento arroja resultados del orden del 1 %. La selección del kernel ha demostrado ser apropiada no solo por si ecacia sino también por su eciecina, en trabajos futuros se seguirán explorando alternativas para mejorar su desempeño en el procesamiento de datos. Los resultados obtenido muestran un resultado favorable para los support vector machines, sin embargo tienen una ligera desventaja y es el tiempo de ejecución, ya que ha medida que aumenta el tamaño de los datos de entrenamiento, aumenta también la demora en los resultados, una futura revisión nos permitirá establecer una mejor manera para poder disminuir el tiempo de ejecución del algoritmo.. 45.

(42) 46. CAPÍTULO 9. CONCLUSIONES. Índice de Contenidos Adquisición de datos, 11 Alcance de los Objetivos, 41 Análisis del Problema, 10 Análisis y Descripción del Problema, 9 Aprendices, 13 Aprendizaje semi-supervisado, 14 Aprendizaje supervisado, 14 Conclusiones, 45 Descripción del Problema, 9 Diseño de posibles soluciones, 11 Entrenador, 27 Etiquetador de Datos, 22 Formato PGM, 24 Generalización, 14 Implementación de la solución, 12, 21 Introducción, 5 Kernels, 18 Marco Teórico, 13 Objetivos del proyecto, 7 Pruebas y validación, 12 Resultados de Entrenamiento, 33. Resultados y Análisis, 33 Selección de tecnología, 11 Support Vector Machines, 15 Trabajo Futuro, 43.

(43) ÍNDICE DE TABLAS. Índice de Tablas Resultados de Kernels, 35 Resultados de Kernels en tiempo y memoria, 38 Resultados de Kernels RBF, 35. 47.

(44) 48. Índice de Figuras Error de Generalización en el entrenamiento, 33 Proceso de desarrollo, 21 Prueba del Kernel A, 37 Prueba del Kernel A con menos support vector, 37 Resultados con gammas iguales, 36 Resultados con modicaciones nales, 39 Una imagen reducida en las escalas mencionadas, 22. CAPÍTULO 9. CONCLUSIONES.

(45) Bibliografía [1] Alan Conrad Bovik.. Handbook of image and video processing. .. Academic Press,. 2000.. [2] Christopher J.C. Burges.. Recognition. A Tutorial on Support Vector Machines for Pattern. . Kluwer Academic Publishers, 1998.. [3] Nello Cristianini.. based methods. An introduction to support vector machines: and other kernel-. . Cambridge University Press, 2000.. [4] Asim Shankar & Priyendra Singh Deshwal. Face detection in images: Neural networks. support vector machines. 2002.. [5] Edgar Osuna & Robert Freund & Federico Girosi. Training support vector machines: an application to face detection. 1997.. [6] Jennifer Huang & Volker Blanz & Bernd Heisele.. Face recognition with support. vector machines and 3d head models. 2000.. [7] Paul Viola & Michael Jones. Robust real-time object detection. 2001.. [8] K Jonsson & J Kittler & Y P Li & J Matas.. Support vector machines for face. authentication. 1999.. [9] Linda G. Shapiro.. Computer vision. . Prentice Hall, 2001.. 49.

(46) 50. BIBLIOGRAFÍA. [10] Mikhail Belkin & Partha Niyogi & Vikas Sindhwani. Manifold regularization: A geometric framework for learning from examples. 2004. [11] Bernhard Schölkopf & Alexander J. Smola. 2002.. Learning with kernels. The MIT Press,.

(47)

Referencias

Documento similar