implementación de un algoritmo para el reconocimiento y ...figura 13. diagrama de bloques del...
TRANSCRIPT
Implementación de un algoritmo para el reconocimiento y
análisis de peatones utilizando visión por computador
Daniel Felipe Cortés Sanabria
Director:
Ing. Alejandro Forero Guzmán PhD (c)
Ingeniería Electrónica
Facultad de Ingeniería
Pontificia Universidad Javeriana
Bogotá D.C.
Colombia
2013
PONTIFICIA UNIVERSIDAD JAVERIANA
FACULTAD DE INGENIERÍA
CARRERA DE INGENIERÍA ELECTRÓNICA
RECTOR MAGNÍFICO: PADRE JOAQUÍN EMILIO SÁNCHEZ GARCÍA S.J.
DECANO ACADÉMICO: ING. JORGE LUIS SÁNCHEZ TÉLLEZ
DECANO DEL MEDIO UNIVERSITARIO: PADRE SERGIO BERNÁL RESTREPO S.J.
DIRECTOR DE CARRERA: ING. JAIRO ALBERTO HURTADO LONDOÑO
DIRECTOR DE PROYECTO: ING. ALEJANDRO FORERO GUZMÁN
ARTÍCULO 23 DE LA RESOLUCIÓN N° 13 DE JUNIO DE 1946
“La universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus trabajos
de grado. Solo velará porque no se publique nada contrario al dogma y la moral católica y porque
los trabajos no contengan ataques o polémicas puramente personales. Antes bien que se vea en
ellos el anhelo de buscar la verdad y la justicia”
AGRADECIMIENTOS
Primero que todo quiero dar gracias a Dios por la vida y las cualidades que me dio y me han
permitido llegar hasta este punto. Agradezco a mi director Alejandro Forero y a mi asesor Francisco
Calderón, por toda su colaboración en este trabajo, pero especialmente por su paciencia y
comprensión en momentos difíciles de mi vida. Agradezco también a mis padres, quienes me han
patrocinado en estudiar en esta gran universidad. A mi hermano Andrés, por su ayuda y
explicaciones oportunas en varias materias de la carrera. A todas mis tías y primos, ya que siempre
me apoyaron con sus oraciones y palabras de fortaleza. A todos mis profesores por sus valiosas
enseñanzas.
Quiero agradecer especialmente y dedicar este libro, a una persona que no está conmigo y cuya
ausencia marcó mi vida definitivamente: A la Mamá Anita (mi abuelita) quien desde el año pasado
me acompaña desde muy cerca de Dios y quien durante toda su vida fue un gran apoyo en todo
sentido.
Tabla de Contenido
Tabla de Contenido
Índice de Figuras
Índice de Tablas
1. INTRODUCCIÓN ................................................................................................................... 1
2. OBJETIVOS............................................................................................................................. 3
2.1. Objetivo General ............................................................................................................................ 3
2.2. Objetivos Específicos ...................................................................................................................... 3
3. MARCO TEÓRICO ................................................................................................................. 4
3.1. OpenCV........................................................................................................................................... 4
3.2. Descriptores HOG ........................................................................................................................... 5
3.3. Imágenes en Espacio de Color RGB ................................................................................................ 6
3.4. Gradiente........................................................................................................................................ 7
3.5. Descriptores de Covarianza ............................................................................................................ 8
3.6. Imágenes en el Espacio HSV .........................................................................................................11
3.7. Máquinas de Soporte Vectorial (SVM) .........................................................................................11
3.8. Boosting ........................................................................................................................................13
3.9. Algoritmo de Seguimiento ...........................................................................................................14
4. ESPECIFICACIONES ........................................................................................................... 15
4.1. Diagramas en Bloques y Descripción General ..............................................................................15
4.2. Descripción de las Escenas Trabajadas ........................................................................................19
5. DESARROLLO ..................................................................................................................... 21
5.1. Algoritmo HOG sin memoria ........................................................................................................22
5.1.1. Ejemplos de Descriptores HOG ............................................................................................26
5.2. Algoritmo HOG con memoria .......................................................................................................31
5.3. Entrenamiento de la Máquina de Soporte Vectorial ...................................................................33
5.4. Algoritmo Matrices de Covarianza sin Subventanas ....................................................................34
5.4.1. Ejemplos de Descriptores de Matrices de Covarianza .........................................................38
5.5. Algoritmo Matrices de Covarianza con Subventanas...................................................................44
5.6. Entrenamiento de Clasificadores para Matrices de Covarianza ..................................................46
5.7. Comportamiento de Personas .....................................................................................................47
5.8. Protocolo de Pruebas ...................................................................................................................49
6. ANÁLISIS DE RESULTADOS ............................................................................................ 51
6.1. Resultados de Entrenamiento ......................................................................................................51
6.2. Detección de Personas .................................................................................................................51
6.3. Comportamiento de Personas .....................................................................................................62
7. CONCLUSIONES ................................................................................................................. 64
8. TRABAJOS FUTUROS ........................................................................................................ 66
Bibliografía .................................................................................................................................... 67
ANEXOS
Índice de Figuras
Figura 1. Estructura básica de OpenCV .......................................................................................... 4
Figura 2. Descriptores HOG sobre una imagen ............................................................................... 5
Figura 3. Procedimiento para extracción del descriptor para una ventana de detección ................. 6
Figura 4. Representación de una imagen de color en RGB. ............................................................ 6
Figura 5. Obtención de los descriptores de covarianza de la región R ............................................ 8
Figura 6. Integral Image ................................................................................................................ 10
Figura 7. Ventana de detección 𝑅 con subventana 𝑟 ..................................................................... 11
Figura 8. Separación con un Kernel Lineal ................................................................................... 12
Figura 9. Kernel Gaussiano con distintos valores de los parámetros ............................................ 12
Figura 10. Diagrama de bloques del algoritmo HOG sin memoria ............................................... 15
Figura 11. Diagrama de Bloques del Algoritmo HOG con memoria ............................................ 16
Figura 12. Diagrama de Bloques del Algoritmo de Matrices de Covarianza ................................ 17
Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo
subventanas .................................................................................................................................... 18
Figura 14. Diagrama de Bloques para la detección del comportamiento de los peatones ............ 19
Figura 15. Escenas Trabajadas ...................................................................................................... 20
Figura 16. Ejemplos de la base de datos propia ............................................................................ 21
Figura 17. Imágenes Negativas de la Base de Datos INRIA ......................................................... 22
Figura 18. Imágenes de Gradiente ................................................................................................. 23
Figura 19. Imágenes de Gradiente en términos de Magnitud y Ángulo ........................................ 23
Figura 20. Imagen dividida en celdas ............................................................................................ 24
Figura 21. Intervalos de Orientación de Ángulos sin Signar ......................................................... 24
Figura 22. Cuadros Segmentados por el Algoritmo sin memoria. ................................................ 25
Figura 23. Descriptor para tres Imágenes al azar de la Base de Datos .......................................... 26
Figura 24. Descriptor para dos peatones al azar de la Base de Datos y un Negativo al azar de
Ejemplos Difíciles ......................................................................................................................... 27
Figura 25. Descriptor para dos Peatones al azar de la Base de Datos y un Negativo de 64X104
con el que se tuvo problemas en los videos de prueba .................................................................. 28
Figura 26. Descriptor para dos Peatones al azar de la Base de Datos y un Negativo de 64X104
con el que se tuvo problemas en los videos de prueba .................................................................. 29
Figura 27. Descriptor para dos Peatones al azar de la Base de Datos y un Negativo de 48X72 con
el que se tuvo problemas en los videos de prueba ......................................................................... 30
Figura 28. Cuadros segmentados con el Algoritmo HOG con memoria ....................................... 32
Figura 29. Cómo definir las matrices de Posición de Píxeles ....................................................... 34
Figura 30. Imágenes de las características extraídas ..................................................................... 35
Figura 31. Segmentaciones realizadas con las variantes del Algoritmo Matrices de Covarianza sin
Subventana .................................................................................................................................... 37
Figura 32. Muestras para Obtención de Descriptores de Covarianza............................................ 38
Figura 33. Descriptores obtenidos con la Matriz de Covarianza sin normalizar y con las
características 1.............................................................................................................................. 38
Figura 34. Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las
características 1.............................................................................................................................. 39
Figura 35. Descriptores obtenidos con la Matriz de Covarianza normalizada con 2 y con las
características 1.............................................................................................................................. 39
Figura 36. Descriptores obtenidos con la Matriz de Covarianza normalizada con 2 y con las
características 2.............................................................................................................................. 40
Figura 37. Descriptores obtenidos con la Matriz de Covarianza normalizada con 3 y con las
características 2.............................................................................................................................. 40
Figura 38. Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las
características 2.............................................................................................................................. 41
Figura 39. Descriptores obtenidos con la Matriz de Covarianza sin normalizar y con las
características 2.............................................................................................................................. 41
Figura 40. Descriptores obtenidos con la Matriz de Covarianza sin normalizar y con las
características 3.............................................................................................................................. 42
Figura 41 Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las
características 3.............................................................................................................................. 42
Figura 42. Descriptores obtenidos con la Matriz de Covarianza normalizada con 2 y con las
características 3.............................................................................................................................. 43
Figura 43. Descriptores obtenidos con la Matriz de Covarianza normalizada con 3 y con las
características 3.............................................................................................................................. 43
Figura 44. Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las
características 4.............................................................................................................................. 44
Figura 45. Ventanas y Subventanas para representar una Región ................................................. 45
Figura 46. Descriptor obtenido con Matrices de Covarianza de ventana y subventanas .............. 45
Figura 47. Detecciones hechas por el algoritmo Matrices de Covarianza con Subventana .......... 46
Figura 48. Utilización del Sistema para Detección de Comportamiento ...................................... 48
Figura 49. Aciertos en video “Prueba 3.avi”. ................................................................................ 52
Figura 50. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba
3.avi” ............................................................................................................................................. 53
Figura 51. Aciertos en el video “Prueba 16.avi” ........................................................................... 54
Figura 52. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba
16.avi” ........................................................................................................................................... 55
Figura 53. Aciertos en el video “Prueba 5.avi” ............................................................................. 56
Figura 54. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba
5.avi” ............................................................................................................................................. 57
Figura 55. Aciertos en el video “Prueba 14.avi” ........................................................................... 59
Figura 56. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba
14.avi” ........................................................................................................................................... 59
Figura 57. Aciertos en el video “Prueba 4.avi” ............................................................................. 60
Figura 58. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba
4.avi” ............................................................................................................................................. 61
Índice de Tablas
Tabla 1. Comportamiento de las Personas según su Velocidad .................................................... 49
Tabla 2. Resultados de Entrenamiento de algunos Clasificadores ................................................ 51
Tabla 3. Aciertos en el Video “Prueba 3.avi”................................................................................ 52
Tabla 4. Error en el video “Prueba 3.avi”...................................................................................... 53
Tabla 5. Aciertos en el video “Prueba 16.avi” .............................................................................. 54
Tabla 6. Error en el video “Prueba 16.avi”.................................................................................... 55
Tabla 7. Aciertos en el video “Prueba 5.avi” ................................................................................ 57
Tabla 8. Error en el video “Prueba 5.avi”...................................................................................... 58
Tabla 9. Aciertos en el video “Prueba 14.avi” .............................................................................. 59
Tabla 10. Error en el video “Prueba 14.avi”.................................................................................. 60
Tabla 11. Aciertos en el video “Prueba 4.avi” .............................................................................. 60
Tabla 12. Error en el video “Prueba 4.avi”.................................................................................... 61
Tabla 13. ECM sobre los aciertos en los cinco videos .................................................................... 62
Tabla 14. Comportamiento de las Personas en Algunos Videos ................................................... 63
1
1. INTRODUCCIÓN
“Entre 1980 y 2000 la población mundial total creció de 4.400 millones a 6.000 millones” [1], en el año
2011 nació el habitante número 7.000 millones [2]. Adicionalmente, para el 2008 ya más de la mitad de la
población mundial vivía en zonas urbanas, ésta cifra sigue en aumento, pues las personas buscan un escape
a la pobreza trasladándose hacía las grandes ciudades [3]. Ésta situación es más evidente en los países en
vía de desarrollo, sin ser Colombia la excepción de ésta problemática, en su capital se evidencia el aumento
de la población.
El crecimiento poblacional en espacios cada vez más reducidos, genera diversos problemas de índole social
y económica, entre los que se destacan, la inseguridad, las dificultades en la movilidad y la contaminación
ambiental. Algunos de estos problemas se evidencian con más fuerza en determinados sitios de la ciudad,
por ejemplo, en zonas comerciales, administrativas y educativas, ya que en estas se presenta alta afluencia
de personas.
Las autoridades gubernamentales y privadas, con jurisdicción en zonas de alta afluencia, deben velar por la
comodidad y seguridad de la gente, por tal razón, han desarrollado planes de ordenamiento, que han
implicado grandes sumas de dinero. A pesar de ello, las inversiones han sido insuficientes, debido a falta y
deficiencia de estudios que revelen el comportamiento, las necesidades y algún estimado de la cantidad de
transeúntes en ciertos lugares.
Por ejemplo, en lugares comerciales como bares, almacenes, tiendas, casinos, entre otros, el número de
personas que visitan el lugar a una hora determinada, permitiría planear y coordinar eficientemente a los
empleados del establecimiento para prestar un buen servicio a los visitantes, ya que en horas de alta afluencia
se necesitarían más empleados que en horas de bajo flujo. Además, la cantidad de personas, permitiría en
eventos de asistencia masiva saber cuándo se llegue a la capacidad máxima y poder cumplir con las normas
de seguridad, así como optimizar los recursos disponibles, controlando por ejemplo la ventilación,
calefacción y sistemas de aire acondicionado disponibles.
La Pontificia Universidad Javeriana no es ajena a la búsqueda de soluciones a esta problemática, pues cuenta
con más de 20000 estudiantes, por ello actualmente invierte en la comodidad de la comunidad, para que sus
miembros encuentren en el campus un lugar agradable y tengan la oportunidad de permanecer allí la mayor
parte de su tiempo. De esta forma se hace necesario poder precisar los requerimientos que se tengan
haciendo un análisis de los espacios que se visitan frecuentemente y el uso que se les da. Hacer este análisis
utilizando únicamente trabajo humano puede ser tedioso e infructuoso, ya que depende del momento en que
se realice y es un trabajo repetitivo y aburrido, para lo que el ser humano no es muy competente, lo cual
según el principio de Fitts [4], abre la posibilidad a la automatización.
En la actualidad existen varios métodos para el conteo y detección de personas, los más utilizados son los
basados en sensores de infrarrojo por su economía y facilidad de instalación, sin embargo, no son muy
precisos; también existen las imágenes térmicas, que aunque no dependen de la intensidad de luz, tienen
limitaciones por condiciones climáticas y de vestuario.
Por las razones anteriormente mencionadas, se implementó un algoritmo de visión por computador
buscando automatizar la adquisición de información del número de personas que ocupan algunos espacios
de la universidad, ya que es uno de los campos más activos de investigación y desarrollo, gracias al auge de
2
nuevas tecnologías de bajo costo y alto desempeño. La visión por computador, incluye métodos para
adquirir, analizar y entender imágenes para producir características numéricas o información simbólica.
Además de registrar la ocupación del espacio, puede ser posible hacer un análisis del uso que se da a los
espacios. Para evaluar esta hipótesis se aplicó el desarrollo de este trabajo en dos sitios a campo abierto del
campus, específicamente en la playita del edificio Gabriel Giraldo y en la playita de la facultad de ingeniería
como prueba piloto. En estos sitios, fue posible tomar videos a diferentes horas del día y en días diferentes,
los cuales se analizaron utilizando los algoritmos implementados con la librería OPENCV. Las técnicas en
las que se basaron los desarrollos de este trabajo son el algoritmo de histograma de gradientes orientados
(HOG) [5][6][7][14] y las matrices de covarianza [9][10][11][12]. El propósito inicial, era dar un estimado
de la ocupación y el uso que las personas dan a los espacios en el campus, es decir, si hay sitios donde se
quedan quietas, caminan o corren. Sin embargo como se depende de condiciones de luz, clima, vestuario,
es un proceso aleatorio y por consiguiente tiene un resultado estocástico.
Para poder adquirir la información del uso de espacios es imprescindible identificar algunos patrones que
permitan identificar el uso que la persona hace del espacio.
El grupo de investigación SIRP del departamento de electrónica de la Universidad Javeriana, ha adelantado
estudios relacionados con el tráfico de peatones y de vehículos, empleando algunos de estos algoritmos. La
experiencia adquirida en estos trabajos se usó como insumo para el desarrollo del presente trabajo de grado.
3
2. OBJETIVOS
2.1. Objetivo General
Implementar los algoritmos HOG y Matrices de covarianza en OPENCV para el reconocimiento y análisis
de peatones.
2.2. Objetivos Específicos
1. Identificar personas en imágenes de vista superior utilizando los algoritmos HOG y Matrices de
Covarianza implementados en OPENCV.
2. Evaluar el resultado de las implementaciones ubicando la cámara en dos escenarios exteriores de la
Universidad Javeriana, a diferentes alturas, con diferente campo visual y teniendo en cuenta las
condiciones ambientales.
3. Evaluar la factibilidad de extraer información del comportamiento1 de las personas asociado a la
ocupación de determinados espacios del equipamiento urbano.
1 Hace referencia a la dinámica del movimiento de las personas observadas en el espacio de visualización
de la cámara.
4
3. MARCO TEÓRICO
El problema de detección de objetos en imágenes o videos utilizando visión por computador es un tema de
actualidad muy estudiado por la comunidad científica. Para adquirir las imágenes pueden utilizarse cámaras
convencionales, la cámara Kinect, cámaras en el infrarrojo, entre otras; Para el procesamiento de las
imágenes, algunos autores utilizan técnicas basadas en extracción de características y patrones de formas
[5][6][7][8][9][10][11][12][14]; Para la clasificación, se utilizan técnicas de Boosting [23], Máquinas de
Soporte Vectorial (SVM) [21][22], redes neuronales, redes neuronales convolucionales, árboles de decisión,
entre otros.
El caso particular de detección de personas sigue siendo un problema abierto para la comunidad científica,
sin embargo, el estado del arte reporta buenos resultados para los algoritmos HOG [5][6][7][14] y para el
algoritmo de matrices de covarianza [9][10][11][12], utilizando técnicas de Boosting y máquinas de soporte
vectorial como clasificadores; Por su parte, para el seguimiento de las personas detectadas, [14] y [24]
presentan algunas posibilidades.
3.1. OpenCV
OpenCV (Open Source Computer Vision) es una librería para visión por computador, de código abierto,
que está escrita en lenguajes C y C++. Fue diseñada para obtener alta eficiencia computacional enfocándose
en aplicaciones en tiempo real. La librería cuenta con más de 500 funciones que abarcan muchas áreas en
visión por computador, incluyendo, manufactura, inspección de productos, imágenes médicas, seguridad,
interfaz para el usuario, calibración de cámara, visión estéreo y robótica, entre otras. Además incluye una
librería de aprendizaje de máquina de propósito general.
OpenCV surgió como una iniciativa de investigación de Intel para avanzar en aplicaciones intensivas de
CPU. Al principio los objetivos de OpenCV eran entre otros, avanzar en investigaciones de visión por
computador al brindar un código abierto y optimizado para infraestructura de visión básica; diseminar el
conocimiento de visión por computador al entregar una infraestructura común sobre la que los
desarrolladores pudieran trabajar, haciéndolo más fácil de leer y de escribir; por último, se buscaba avanzar
en aplicaciones comerciales basadas en visión por computador, haciendo que el código fuera portable, con
rendimiento optimizado y sin costo.
OpenCV se estructura en cinco componentes principales, cuatro de los cuales se muestran y describen en la
Figura 1.
Figura 1. Estructura básica de OpenCV. Tomada de [19]
5
CV contiene funciones para el procesamiento básico de imágenes y los algoritmos de visión por computador
de más alto nivel; ML es la librería de aprendizaje de máquina, que incluye, varios clasificadores estadísticos
y herramientas de clustering; HighGUI contiene rutinas Entrada/Salida y funciones para almacenar y cargar
videos e imágenes y CXCore contiene las estructuras de datos básicas y el contenido. Otro componente es
el CvAux, que contiene áreas extintas (Reconocimiento Fácial) y algoritmos experimentales (Segmentación
de Fondo y Primer Plano) [19].
OpenCV fue diseñado para ser de plataforma múltiple, ya que tiene versiones para GNU/Linux, Mac OS X
y Windows.
Al ser OpenCV software libre, se da a los usuarios la libertad para ejecutar, copiar, distribuir, estudiar,
cambiar y mejorar el software. De una forma más precisa, los usuarios del software tienen cuatro libertades:
[20]
La libertad de usar el programa con cualquier propósito (libertad 0).
La libertad de estudiar cómo funciona el programa y adaptarlo a sus necesidades (libertad 1). El
acceso al código fuente es una condición previa para esto.
La libertad de distribuir copias (libertad 2).
La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la
comunidad se beneficie. (libertad 3). El acceso al código fuente es un requisito previo para esto.
3.2. Descriptores HOG
Las bases teóricas de los descriptores HOG tienen lugar en los histogramas de bordes orientados [16], los
descriptores SIFT (Scale-Invariant Feature Transform) [17] y en el algoritmo shape contexts [18], sin
embargo, los descriptores HOG están basados en histogramas de gradientes orientados.
Según [14], para obtener los descriptores HOG, se estima el gradiente horizontal y vertical de una imagen,
a partir de estos se obtiene su orientación en cada píxel así como el candidato del mismo, este último puede
ser la magnitud, la magnitud elevada al cuadrado, o alguno similar. Luego, la imagen es dividida en celdas
uniformes, teniendo en cuenta que el número de celdas verticales y horizontales debe ser el mismo, sobre
estas se obtiene un histograma de los candidatos dependiendo del intervalo de orientación del gradiente. El
descriptor final es constituido por el histograma de todas y cada una de las celdas. En la Figura 2, se puede
apreciar una imagen de una persona y la representación de su gradiente.
(a) (b)
Figura 2. Descriptores HOG sobre una imagen. (a). Imagen Original (b). Representación del Gradiente. Tomada de [6]
6
Según [5], el procedimiento para el cálculo de los histogramas de gradientes orientados corresponde al
diagrama que se muestra en la Figura 3. Dada una ventana de detección dentro del cuadro, se hace una
normalización de color, se obtienen los gradientes de la subimagen para con estos calcular el histograma de
candidatos sobre celdas uniformes. Es posible agrupar las celdas en bloques con cierto sobrelapamiento, los
cuales se normalizan de manera independiente. Finalmente, el vector de características está conformado por
el conjunto de los descriptores de los bloques.
Figura 3. Procedimiento para extracción del descriptor para una ventana de detección. Tomada de [5].
3.3. Imágenes en Espacio de Color RGB
Una imagen de color en el espacio RGB, es un arreglo de 𝑚𝑥𝑛𝑥3 que contiene pixeles de colores, donde
cada uno de ellos es una correspondencia entre los componentes rojo (Red), verde (Green) y azul (Blue).
Una imagen en RGB se puede ver como una pila de tres imágenes en grises, que cuando alimenta cada una
de las entradas: roja, verde y azul de un monitor a color produce una imagen a color [15]. En la Figura 4, se
muestra la representación de una imagen RGB.
Figura 4. Representación de una imagen de color en RGB.
𝐼𝑅 𝑚, 𝑛 𝐼𝐺 𝑚, 𝑛 𝐼𝐵 𝑚, 𝑛
𝑚
𝑛
7
Para obtener una imagen en escala de grises a partir de una imagen en RGB, se realiza una conversión a
cada uno de los pixeles de la imagen en RGB por medio de la ecuación 𝑌 = 0.299𝑅 + 0.587𝐺 + 0.114𝐵
donde 𝑌 es el valor de los pixeles en la imagen en gris y 𝑅, 𝐺 y 𝐵 son los componentes de la imagen a color.
3.4. Gradiente
En el procesamiento de imágenes, el gradiente se utiliza para la detección de bordes, ya que estos representan
la frontera entre dos regiones con propiedades de nivel de gris relativamente distintas. Para el cálculo del
gradiente, se utilizan los filtros diferenciales, los cuales tienen máscaras como la de Roberts horizontal
(Ecuación 3.4.1.a) y vertical (Ecuación 3.4.1.b), la de Prewitt horizontal (Ecuación 3.4.2.a) y vertical
(Ecuación 3.4.2.b), la de Sobel horizontal (Ecuación 3.4.3.a) y vertical (Ecuación 3.4.3.b), entre otras.
[1 00 −1
] 3.4.1. 𝑎
[0 1−1 0
] 3.4.1. 𝑏
[−1 −1 −10 0 01 1 1
] 3.4.2. 𝑎
[−1 0 1−1 0 1−1 0 1
] 3.4.2. 𝑏
[−1 −2 −10 0 01 2 1
] 3.4.3. 𝑎
[−1 0 1−2 0 2−1 0 1
] 3.4.3. 𝑏
Con los gradientes horizontales se obtiene el gradiente en 𝑦: 𝐺𝑦 y con los verticales el gradiente en 𝑥: 𝐺𝑥.
Por otra parte, el gradiente se puede expresar en términos de magnitud (Ecuación 3.4.4) y ángulo (Ecuación
3.4.5).
|𝐺 𝑚, 𝑛 | = √𝐺𝑥2 𝑚, 𝑛 + 𝐺𝑦
2 𝑚, 𝑛 3.4.4
8
∠𝐺 𝑚, 𝑛 = 𝑎𝑟𝑐𝑡𝑎𝑛 (𝐺𝑦 𝑚, 𝑛
𝐺𝑥 𝑚, 𝑛 ) 3.4.5
3.5. Descriptores de Covarianza
El algoritmo de Matrices de Covarianza busca representar una región con características de la imagen, como
ubicación espacial, derivadas de orden superior, intensidad, etc. El problema de estos descriptores, es
construir un clasificador donde el dominio es el espacio de las matrices de covarianza. Según [10], el
procedimiento para calcular los descriptores de covarianza es el que se muestra en la Figura 5.
Figura 5. Obtención de los descriptores de covarianza de la región R. Tomada de [10].
Dada una imagen unidimensional o tridimensional se obtienen varías imágenes o matrices de características.
Sea 𝐹 la matriz o imagen de características extraídas de la imagen de entrada 𝐼 y 𝜙 la función de mapeo
como intensidad, posición del píxel, respuestas de filtros, gradientes, etc. La Ecuación (3.5.1) describe la
relación entre estas variables.
𝐹 𝑥, 𝑦 = 𝜙 𝐼, 𝑥, 𝑦 3.5.1
Al tener una subventana rectangular R dentro del cuadro, {𝒛𝑖}𝑖=1…𝑆2 son los puntos de cada una de las
características extraídas de 𝑅, además, 𝒛 es de 𝑑 dimensiones, donde 𝑑 es el número de características que
se extraen de cada imagen. De esta forma, la región 𝑅 se representa con la matriz de covarianza de tamaño
𝑑 × 𝑑 de los puntos de características extraídos como lo indica la Ecuación (3.5.2)
𝑪𝑅 =1
𝑆 − 1∑ 𝒛𝑖 − 𝝁 𝒛𝑖 − 𝝁 𝑇𝑆
𝑖=1
3.5.2
Donde 𝝁 es la media de los puntos y 𝑆 es el total de puntos de cada una de las características. En la matriz
de covarianza, la diagonal principal representa la varianza de cada una de las características y todo el resto
de valores corresponden a sus correlaciones.
Los autores mencionan distintas ventajas de utilizar matrices de covarianza como descriptores de una
imagen, entre las que se destacan, que es un método que combina múltiples características que pueden estar
2 La notación en negrilla indica que se refiere a un vector o matriz.
9
correlacionadas; los descriptores son de una dimensión baja, ya que por la simetría la matriz 𝑪𝑅 tiene
solamente 𝑑2 + 𝑑 /2 valores diferentes.
En [10], se demuestra que para hacer el cálculo de la matriz de covarianza en una forma rápida se pueden
utilizar Integral Images, en estas, cada píxel es la suma de todos los píxeles dentro del rectángulo encerrado
por la esquina superior izquierda de la imagen y el píxel de interés. Para una imagen 𝐼, su Integral Image se
define como en la Ecuación (3.5.3).
𝐼𝑛𝑡𝑒𝑔𝑟𝑎𝑙 𝐼𝑚𝑎𝑔𝑒 𝑥′, 𝑦′ = ∑ 𝐼 𝑥, 𝑦
𝑥≤𝑥′,𝑦≤𝑦′
3.5.3
En ese sentido, se define 𝑃 y 𝑄 de las Integral Images en las ecuaciones (3.5.4) y (3.5.5) respectivamente.
𝑃 𝑥′, 𝑦′, 𝑖 = ∑ 𝐹 𝑥, 𝑦, 𝑖
𝑥≤𝑥′,𝑦≤𝑦′
𝑖 = 1,… , 𝑑 3.5.4
𝑄 𝑥′, 𝑦′, 𝑖, 𝑗 = ∑ 𝐹 𝑥, 𝑦, 𝑖 𝐹 𝑥, 𝑦, 𝑗
𝑥≤𝑥′,𝑦≤𝑦′
𝑖, 𝑗 = 1,… , 𝑑 3.5.5
Ahora bien, 𝑷𝒙,𝒚 y 𝑸𝒙,𝒚 son, un vector de dimensión 𝑑 y una matriz de dimensión 𝑑 × 𝑑, que se expresan
en las Ecuaciones (3.5.6) y (3.5.7) respectivamente. Estos son utilizados para el cálculo de la matriz de
covarianza.
𝑷𝒙,𝒚 = [𝑃 𝑥, 𝑦, 1 , … , 𝑃 𝑥, 𝑦, 𝑑 ] 3.5.6
𝑸𝒙,𝒚 = [𝑄 𝑥, 𝑦, 1,1 … 𝑄 𝑥, 𝑦, 1, 𝑑
⋮𝑄 𝑥, 𝑦, 𝑑, 1 … 𝑄 𝑥, 𝑦, 𝑑, 𝑑
] 3.5.7
La matriz 𝑸𝒙,𝒚 es simétrica, por lo que se reduce el número de operaciones a realizar. En la Figura 6, se
muestra una Integral Image, dentro de la cual hay una región 𝑅 a la que se calcula la matriz de covarianza.
Finalmente se calcula la matriz de covarianza en la región 𝑅 (definida por la esquina superior izquierda
𝑥′, 𝑦′ y por la esquina inferior derecha 𝑥′′, 𝑦′′ ) con la Ecuación (3.5.8) donde 𝑆 se describe en la
Ecuación (3.5.9).
10
Figura 6. Integral Image. Tomada de [10]
𝑪𝑅(𝑥′,𝑦′;𝑥′′,𝑦′′) =1
𝑆 − 1[𝑸𝑥′′,𝑦′′ + 𝑸𝑥′−1,𝑦′−1 − 𝑸𝑥′′,𝑦′−1 − 𝑸𝑥′−1,𝑦′′
−1
𝑆(𝑷𝑥′′,𝑦′′ + 𝑷𝑥′−1,𝑦′−1 − 𝑷𝑥′′,𝑦′−1 − 𝑷𝑥′−1,𝑦′′)
∙ (𝑷𝑥′′,𝑦′′ + 𝑷𝑥′−1,𝑦′−1 − 𝑷𝑥′′,𝑦′−1 − 𝑷𝑥′−1,𝑦′′)𝑇]
3.5.8
𝑆 = 𝑥′′ − 𝑥′ + 1 𝑦′′ − 𝑦′ + 1 3.5.9
Además, se define la función de mapeo 𝜙 como en la Ecuación (3.5.10), donde 𝑥 e 𝑦 corresponden a la
ubicación de los píxeles, 𝐼𝑥, 𝐼𝑥𝑥, … son las derivadas de la imagen en escala de grises.
[𝑥, 𝑦, |𝐼𝑥|, |𝐼𝑦|, √𝐼𝑥2 + 𝐼𝑦
2, |𝐼𝑥𝑥|, |𝐼𝑦𝑦|, atan (|𝐼𝑦|
|𝐼𝑥|)] 3.5.10
Asimismo, es posible establecer algunas subventanas para aumentar el número de características para una
imagen, el autor las obtiene implementando un método alternativo de Boosting utilizando Variedades de
Riemannian.
Por lo demás, se puede observar que las características ligadas a la ubicación del píxel tienen una varianza
que es constante siempre que el tamaño de la imagen sea el mismo, sin embargo, sí aportan información
relevante en la correlación con las demás características. También, se puede ver que estás correlaciones
están relacionadas con el tamaño de la ventana, lo cual obliga a establecer algún tipo de normalización. En
[10] se propone hacerlo con la Ecuación (3.5.11), sin embargo en [11] se propone normalizar únicamente
las filas en las que están involucradas las características 𝑥 e 𝑦.
�̂�𝑟 = 𝑑𝑖𝑎𝑔 𝑪𝑅 −12𝑪𝑟𝑑𝑖𝑎𝑔 𝑪𝑅
−12 3.5.11
11
Donde 𝑟 (Figura 7) representa una subregión dentro de 𝑅, por tanto, 𝑪𝑟 representa su matriz de covarianza
y �̂�𝑟 su matriz de covarianza normalizada; 𝑑𝑖𝑎𝑔 𝑪𝑅 es igual a una matriz formada por la diagonal principal
de 𝑪𝑅 y el resto de elementos truncados a cero. Para normalizar la matriz de toda la ventana de detección
𝑪𝑅, se debe hacer 𝑟 = 𝑅 en la Ecuación (3.5.11).
Figura 7. Ventana de detección 𝑅 con subventana 𝑟 Tomada de [9].
Resulta importante aclarar que tanto el algoritmo HOG como el algoritmo de Matrices de Covarianza
pertenecen al grupo de extracción de características de representaciones densas, es decir, se utiliza la ventana
de detección nombrada antes, con esta se hace un escaneo dentro de todo el cuadro y se evalúa un
clasificador del objeto previamente entrenado.
3.6. Imágenes en el Espacio HSV
El Espacio de Color HSV (Hue-Tono, Saturation-Saturación, Value-Valor) define un modelo de color en
términos de sus componentes, fue creado por Alvy Ray Smith y corresponde a una transformación no lineal
del espacio RGB. El tono, es un atributo cromático que describe un color puro, mientras que la saturación
proporciona una medida del grado en que un color puro esta diluido en luz blanca. Este modelo es útil por
dos hechos básicos: el primero, la componente de valor está desacoplada de la información cromática
contenida en la imagen; el segundo, las componentes de tono y saturación están íntimamente relacionadas
con la forma en que los seres humanos perciben el color.
3.7. Máquinas de Soporte Vectorial (SVM)
Una Máquina de Soporte Vectorial es un sistema de aprendizaje automático utilizado para resolver
problemas de clasificación y regresión de manera muy eficiente, lo que le ha permitido posicionarse por
encima de otras técnicas de clasificación.
Las SVM se basan en la Teoría de Aprendizaje Estadístico, su éxito se basa en tres ventajas: La primera
radica en que poseen una base matemática muy sólida; la segunda, en que se basan en el concepto de
minimización del riesgo estructural, es decir, en minimizar el riesgo de una clasificación errónea al
introducir nuevos ejemplos y la tercera, en que disponen de potentes herramientas y algoritmos para hallar
la solución de manera rápida y eficiente.
De esta manera, estas máquinas son capaces de clasificar muestras en dos posibles conjuntos: “positivos” y
“negativos”, que en el caso de detecciones de peatones corresponden a “personas” y “no personas”
12
respectivamente. Para ello, se necesita un entrenamiento previo de la máquina, facilitándole ejemplos de
“positivos” y ejemplos de “negativos”.
Para solucionar un problema de clasificación linealmente separable, la máquina debe aprender una
superficie de decisión adecuada, basada en los datos de entrenamiento. La superficie de decisión es un
hiperplano que divide el conjunto de entrenamiento en las dos clases. En ese sentido, el conjunto de
entrenamiento es de la forma 𝒙𝟏, 𝑦1 , 𝒙𝟐, 𝑦2 , … , 𝒙𝑵, 𝑦𝑁 , donde 𝒙𝒊 ∈ ℝ𝑚 y corresponde al vector a
clasificar, en tanto que 𝑦𝑖 ∈ {0,1} es la etiqueta correspondiente a cada vector.
En el problema linealmente separable pueden existir varios hiperplanos, sin embargo, el que selecciona la
SVM es el que maximiza la distancia entre este y el dato más cercano de cada clase (Figura 8). Esa distancia
se llama margen y el hiperplano que la maximiza se llama Hiperplano de Separación Óptima. [21]
Figura 8. Separación con un Kernel Lineal. Tomada de [21].
En el caso de que no exista una superficie lineal de decisión, se mapea el vector de entrada 𝒙 en un espacio
de dimensión ℝ𝑐, donde 𝑐 > 𝑚, este espacio es llamado espacio de características 𝜏 y está dotado de
producto escalar. En seguida, se busca el Hiperplano de Separación Óptima que es lineal en ℝ𝑐, pero es no
lineal en ℝ𝑚. Entre los kernel no lineales, se encuentran el polinomial 𝑘 𝑥, 𝑥′ = 𝑠 𝑥𝑥′ + 𝑐 𝑑, el
exponencial 𝑘 𝑥, 𝑥′ = 𝑒−𝛾‖𝑥−𝑥′‖2, el de tangente hiperbólica 𝑘 𝑥, 𝑥′ = tanh 𝑠 𝑥𝑥′ + 𝑐 , el gaussiano
(Figura 9), el RBF (Radial Basis Function), entre otros.
Figura 9. Kernel Gaussiano con distintos valores de los parámetros. Tomada de [22].
13
Una vez trazada la curva que divide ambos espacios, cuando se quiera clasificar una nueva muestra no
identificada, se debe introducir en la máquina y representarla como un punto en este espacio. La distancia
euclideana entre la muestra y la curva trazada en la etapa de entrenamiento de la máquina es una medida
que da la predicción sobre la muestra. El signo de esta magnitud indica que la muestra pertenece a un
conjunto u otro. Un signo positivo indica que la muestra clasificada es positiva. Análogamente, un signo
negativo indica que la muestra es negativa. Además, el módulo de la misma revela la probabilidad de que
la muestra esté en un conjunto u otro. Así por ejemplo, valores como 3,2 indican que la muestra pertenece
al espacio de “personas” con mayor probabilidad que si la predicción hubiera sido de 0.2. [22]
3.8. Boosting
El método Boosting se enmarca dentro de los llamados métodos de combinación. Para los métodos de
combinación de clasificadores, es necesario tomar dos decisiones: Cómo obtener el conjunto de
clasificadores y cómo combinarlos. Para obtener los clasificadores es posible utilizar métodos de
aprendizaje distintos, que implican un método de combinación de clasificadores heterogéneos; o bien,
obtenerlos mediante un único método de aprendizaje, este se llama método de combinación de clasificadores
homogéneos. La segunda decisión a tomar, es como se combinan los clasificadores en el método Boosting
esto puede ser por votación o por stacking. La votación consiste en que se consideran las predicciones de
cada clasificador débil como un voto y la predicción del clasificador combinado será el resultado de la
votación. Es posible asignar la clase con más votos, pero se puede ponderar el voto de cada clasificador
débil de acuerdo con algún criterio. Por otra parte, en el stacking se utiliza un método de aprendizaje
adicional cuya entrada son los resultados de los clasificadores débiles. A continuación se hace una
descripción del algoritmo Boosting.
Sea 𝑋 el dominio. Un concepto es una función booleana 𝑐: 𝑋 → {0,1}.
Un algoritmo de aprendizaje tiene acceso a un conjunto de muestras etiquetadas 𝑥, 𝑐 𝑥 , denominado
conjunto de entrenamiento, donde 𝑥 es escogido aleatoriamente acorde a una distribución fija pero
desconocida del dominio 𝑋 𝑦 𝑐 es la etiqueta correspondiente a la muestra. El algoritmo debe retornar una
hipótesis o clasificador:
ℎ 𝑥 : 𝑋 → {0,1}
Sea 𝑒 el error de ℎ, medido por la probabilidad de que ℎ 𝑥 ≠ 𝑐 𝑥 .
La tarea del Boosting es estimar una función 𝐹: 𝑋 → {0,1}, utilizando como base un algoritmo de
aprendizaje, de la siguiente manera:
Se recibe un conjunto de entrenamiento donde 𝑥 ∈ 𝑋 y 𝑐 toma los valores {0,1} representando la
clase a que pertenece cada muestra.
Iterar desde 𝑡 = 1 hasta 𝑇, donde 𝑇 es el parámetro de la cantidad de iteraciones deseadas.
Entrenar un clasificador débil mediante el algoritmo de aprendizaje base en función de la
distribución y se obtiene una hipótesis ℎ𝑡 ∶ 𝑋 → {0,1}.
Se calcula el error 𝑒𝑡 de la hipótesis.
Se actualiza la distribución en función de 𝑒𝑡.
14
Combinar los clasificadores débiles obtenidos en función de la regla de combinación escogida
ℎ𝑡 𝑖 = 1…𝑇 .
Adaboost y logitboost son variaciones de este algoritmo que pueden funcionar muy bien. Por omisión
OpenCV obtiene cada uno de los clasificadores débiles utilizando árboles de decisión y no es posible
cambiar la forma en la que se obtienen.
3.9. Algoritmo de Seguimiento
Para poder obtener información referente al comportamiento de las personas, se hace necesario calcular su
desplazamiento en un tiempo conocido y con esta información se puede obtener la velocidad. De esta forma,
al conocer el vector de características de un peatón a seguir y su posición dentro del cuadro, hay varias
formas para seguirlo [14][24] y calcular la velocidad.
El método propuesto por [24] es muy válido, sin embargo, no es aplicable al presente trabajo por distintas
razones: En primer lugar, está orientado a casos donde el ángulo de visión de la cámara permite ver muy
pocos peatones (específicamente tres) y por ende hay pocas cosas que pueden hacer y pocos caminos que
pueden tomar dentro de la escena, en segundo lugar, el emparejamiento entre los peatones del 𝑘 − é𝑠𝑖𝑚𝑜
cuadro y el 𝑘 + 1 − 𝑒𝑠𝑖𝑚𝑜 cuadro, se realiza utilizando como características, la posición del centroide, el
tamaño del blob, el tamaño del clúster, un histograma de color, un histograma de profundidad y la
información de la cantidad de personas en el blob, siendo las características de HOG muy distintas.
Por su parte, el método que propone [14] trabaja con los descriptores HOG, en este, se busca al peatón en
los cuadros siguientes en el que es segmentado en posiciones aledañas a donde se encontraba antes. Esto se
hace utilizando el error cuadrático medio (Ecuación 3.9.1) entre las características segmentadas y las
extraídas donde se presume es la ubicación siguiente del peatón.
𝐸𝐶𝑀 =1
𝑇𝐷∑ 𝐷𝐴𝑖 − 𝐷𝐵𝑖
2
𝑇𝐷
𝑖=1
3.9.1
Donde 𝑇𝐷 corresponde al tamaño del descriptor, 𝐷𝐴𝑖 es el descriptor del peatón a buscar y 𝐷𝐵𝑖 es el
descriptor del peatón en la que se asume como siguiente posición.
15
4. ESPECIFICACIONES
4.1. Diagramas en Bloques y Descripción General
En el presente trabajo de grado se implementaron dos algoritmos (que según el estado del arte entregan
características que permiten diferenciar correctamente entre los peatones y los no peatones), para la
identificación de personas en videos. Los algoritmos fueron implementados utilizando las librerías de
OpenCV en Windows, por lo cual se utilizó Microsoft Visual Studio 2008 como compilador.
Los algoritmos implementados reciben como entrada un video en formato .avi, de 320X240 píxeles y con
una tasa de captura de 30 fps, los videos tanto de entrenamiento como de prueba, fueron tomados con vista
superior y cámara fija en escenarios de la Universidad Javeriana. En ambos algoritmos, la salida es un
archivo con el número de peatones que se detectaron en cada uno de los cuadros del video. Ninguno de los
algoritmos funciona en tiempo real por la complejidad tanto de la extracción de características como de la
clasificación de las mismas.
El primer algoritmo implementado es el HOG, cuyo diagrama en bloques se muestra en la Figura 10. Este
algoritmo al recibir un video obtiene cada uno de los cuadros, los cuales va procesando, extrayendo una
ventana de detección, la cual convierte a escala de grises para hacer el cálculo del gradiente y con este
obtener un histograma. El histograma se normaliza y se clasifica con un clasificador entrenado previamente.
Figura 10. Diagrama de bloques del algoritmo HOG sin memoria.
16
Al utilizar este algoritmo en los videos de prueba, se pudo ver a simple vista el reconocimiento de falsos
positivos3, especialmente en peatones que no han terminado de aparecer completamente en la escena (los
peatones que se deben contar son los que están completamente en la escena) y la presencia de falsos
negativos4. Esto hizo, que se hiciera una modificación al algoritmo, resultando un nuevo diagrama de
bloques (Figura 11). En este, se almacenan cuadros anteriores y posteriores, para poder ver si existen falsos
positivos o falsos negativos y tratar de eliminarlos.
Figura 11. Diagrama de Bloques del Algoritmo HOG con memoria.
3 Son descriptores reconocidos como peatones, pero que no lo son. 4 Son los peatones que están en la escena, pero que no son reconocidos como tal.
17
Por su parte, para el algoritmo de matrices de covarianza, se implementaron dos variantes al no poder
encontrar buenos resultados de clasificación. Estas corresponden a la Figura 12 y a la Figura 13 , donde la
diferencia radica en la inclusión de subventanas para aumentar el número de características por imagen. En
ambos casos se recibe el video, del cual se obtienen los cuadros y de estos a su vez, la ventana de detección;
de ésta, se extraen las matrices de características, con las cuales se obtienen el vector 𝑷𝑥,𝑦 y la matriz 𝑸𝑥,𝑦,
para con estas obtener la matriz de covarianza de la ventana de detección y las matrices de covarianza de
subventanas de detección, según corresponda; Estas matrices se normalizan independientemente, para
formar el descriptor final, el cual es clasificado.
Figura 12. Diagrama de Bloques del Algoritmo de Matrices de Covarianza.
18
Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas.
Finalmente, para detectar el comportamiento5 de las personas se utiliza el diagrama de bloques de la Figura
14, en este, se utiliza el algoritmo HOG de la Figura 11, y para relacionar el peatón a buscar con los peatones
encontrados en cuadros posteriores se utiliza el error cuadrático medio.
5 Se especifican tres estados: Estar quieto, estar caminando, estar corriendo.
19
Figura 14. Diagrama de Bloques para la detección del comportamiento de los peatones.
4.2. Descripción de las Escenas Trabajadas
Las escenas trabajadas son dos: La playita del edificio Gabriel Giraldo y la playita de la Facultad de
Ingeniería de la Pontifica Universidad Javeriana. Sin embargo, resulta útil diferenciar tres escenas, ya que
en algunos de los videos tomados en la playita del Edificio Gabriel Giraldo hay un árbol de navidad, el cual
altera el espacio libre de recorrido del peatón. En la Figura 15 se muestran las escenas trabajadas. En la
escena del Edificio Gabriel Giraldo sin Árbol de Navidad se observa espacio libre, en un sitio donde
únicamente pasan personas. En la escena del Edificio Gabriel Giraldo con Árbol de Navidad, este es el único
obstáculo que se presenta, el resto de la escena corresponde a espacio libre de tránsito. En la Escena de la
playita de la Facultad de Ingeniería, se observa un sitio común de tránsito, sin embargo por la presencia de
mesas con parasoles, pueden acercarse personas a hablar; en esta se evidencian obstáculos como parasoles
(donde la persona no se detecta) y árboles.
20
Figura 15. Escenas Trabajadas. (a) Playita del Edificio Gabriel Giraldo con Árbol de Navidad. (b) Playita del Edificio Gabriel Giraldo sin
Obstáculos. (c) Playita de la Facultad de Ingeriería.
21
5. DESARROLLO
Antes de implementar cualquier algoritmo, fue necesario realizar una base de datos de positivos, ya que las
existentes [25][26] están orientadas a trabajar con cámara horizontal y en el problema planteado la vista es
superior. Por esta razón, se tomaron videos en la playita del edificio Gabriel Giraldo, en los parqueaderos
del rector y en la calle 40 desde el edificio de Relaciones Internacionales, logrando así una altura aproximada
de 5 metros; también, se tomaron videos en la playita de la facultad de Ingeniería desde su terraza, como la
ubicación de la cámara era muy alta, fue necesario utilizar el zoom óptico de la cámara.
Los videos fueron tomados en días distintos y a horas distintas. Los mismos fueron divididos en cuadros
utilizando MATLAB y cada uno de los cuadros se analizó manualmente buscando peatones, algunos se
segmentaron utilizando Adobe PhotoShop, buscando obtener diferentes poses. La segmentación se realizó
con el rectángulo contenedor del peatón, en la Figura 16 se muestran algunos ejemplos de la base de datos.
Figura 16. Ejemplos de la base de datos propia.
De los positivos en la base de datos, se decidió utilizar ventanas de detección de 48X72 píxeles para los
videos tomados en la playita de la Facultad de Ingeniería y de 64X104 para los videos tomados en la playita
del Edificio Gabriel Giraldo, ya que en estos tamaños cabe completamente un peatón y es posible tener un
margen en los cuatro lados de la imagen. Los positivos son de peatones completos únicamente, sin embargo,
cuando hay personas juntas, se presenta el peatón completo y algunos segmentos de las personas que están
al lado.
Por su parte, para los ejemplos de negativos, se utilizaron las 1218 imágenes de la base de datos de INRIA
y las imágenes correspondientes a los fondos de la playita de la Facultad de Ingeniería y de la playita del
edificio Gabriel Giraldo, dado que en estas se presentan todo tipo de negativos que puedan encontrarse en
la cotidianidad. Como estas imágenes son totalmente negativas (Figura 17), cualquier segmento de estas
imágenes es también un negativo, razón por la cual fueron obtenidas diez imágenes de 64X104
aleatoriamente de cada imagen. De esta manera se obtuvieron 12200 imágenes negativas.
22
Figura 17. Imágenes Negativas de la Base de Datos INRIA. Tomada de [25]
5.1. Algoritmo HOG sin memoria
En este algoritmo, entra un video RGB de 320X240 píxeles, del cual se obtiene cada uno de los cuadros que
se procesa independientemente. En cada uno de los cuadros, se pasa una ventana de detección deslizante.
El tamaño de la ventana y el porcentaje de sobrelapamiento son variables de entrada al algoritmo y pueden
ser modificados por el usuario en el encabezamiento del programa.
La ventana de detección se extrae utilizando las funciones cvGetSubRect() y cvCopy(), con las cuales se
obtiene una porción de la imagen de entrada y se copia respectivamente, esta se almacena en nuevo arreglo.
Los prototipos de estas funciones son:
CvSize cvGetSubRect(const CvArr* arr, CvArr* submat, CvRect rect, );
void cvCopy(const CvArr* src, CvArr* dst, const CvArr* mask = NULL);
Una vez se ha extraído una ventana de detección, se convierte a escala de grises utilizando la función
cvCvtColor() cuyo prototipo es el siguiente:
cvCvtColor(const CvArr* src, CvArr* dst, int code);
Donde el último parámetro corresponde a la conversión a realizar, que en este caso es CV_BGR2GRAY,
dado que OpenCV por omisión lee las imágenes en BGR.
La imagen en escala de grises se analiza con la función implementada Histograma, la cual entrega un vector
que contiene el descriptor.
Esta función calcula el gradiente horizontal y vertical utilizando las máscaras de las ecuaciones (5.1.1) y
(5.1.2) respectivamente. Las imágenes resultantes de utilizar estas máscaras se muestran en la Figura 18 ,
en estas se puede apreciar cómo se resaltan los bordes del peatón de una manera muy notoria, sin embargo,
por las condiciones del suelo (una especie de granito) se resaltan algunos bordes del mismo.
23
[−1 0 1]𝑇 5.1.1
[−1 0 1] 5.1.2
Figura 18. Imágenes de Gradiente. (a) Imagen Original (b) Gradiente Horizontal (c) Gradiente Vertical
Para hacer el filtrado de las imágenes, se utilizó la función cvFilter2D(), cuyo prototipo es el siguiente:
void cvFilter2D(const CvArr* src, CvArr* dst, const CvMat* kernel, CvPoint anchor);
Donde kernel es la máscara para filtrar y anchor es el punto donde está centrada.
Una vez se obtienen los gradientes horizontales y verticales, la función obtiene a partir de estos dos matrices:
la de candidatos, que corresponde a la magnitud (Ecuación 3.4.4) y la de ángulos (Ecuación 3.4.5); los
ángulos se calculan como ángulos sin signar, es decir, en el intervalo de 0° a 180°, en ese sentido, para los
ángulos del tercero y cuarto cuadrante se calcula el valor absoluto; según [6], la escogencia del ángulo sin
signar radica en que para los humanos la gran variedad de vestuario y colores de fondo hace que el signo de
los contrastes no aporte información relevante, como si puede suceder con otros objetos. Para poder
representar gráficamente la matriz de ángulos, se convirtió en imagen y se mapeó en el intervalo 0-255. En
la Figura 19 se muestran las imágenes de magnitud y de ángulo, en las que se puede apreciar una tendencia
similar a las de la Figura 18, dado que corresponden a otra representación de las mismas.
Figura 19. Imágenes de Gradiente en términos de Magnitud y Ángulo. (a) Imagen Original (b) Imagen de Magnitud (c) Imagen de Ángulo
Con los gradientes en términos de magnitud y ángulo, la función realiza un histograma sobre cada celda,
recorriendo la imagen (Figura 20). De esta forma, cada celda se representa con nueve valores dentro del
histograma, ya que se acumulan las magnitudes del gradiente de cada píxel dentro de la celda, dependiendo
del intervalo del ángulo; Al haber definido nueve intervalos de ángulos, entonces, los intervalos son de 20°
(Figura 21). De otra parte, el número de celdas horizontales y verticales debe ser el mismo, entonces, este
número se escoge como ocho, debido a que las imágenes son de 64X104 y de 48X72 y con ocho celdas la
imagen se puede dividir exactamente.
24
Figura 20. Imagen dividida en celdas
Figura 21. Intervalos de Orientación de Ángulos sin Signar
Luego, el Histograma se normaliza con la norma euclideana, para lo cual se utiliza la función cvNormalize()
cuyo prototipo es el siguiente:
cvNormalize(const CvArr* src, CvArr* dst, double a , double b, int norm_type, const CvArr*)
Donde norm_type corresponde a CV_L2, es decir, norma euclideana. La normalización es importante en la
eventualidad de cambio de tamaño en la ventana de detección.
Finalmente, la función Histograma retorna un vector con el descriptor HOG, en el cual, el primero de cada
nueve datos corresponde al primer intervalo del ángulo, el segundo al segundo intervalo del ángulo y así
sucesivamente. Es de resaltar, que el tamaño del descriptor se puede obtener con la Ecuación (5.1.3), donde
NC es el número de celdas en que se divide la imagen y NBO es el número de intervalos de ángulo, en el
caso particular, el descriptor tiene un tamaño de 576.
𝑇𝐷 = 𝑁𝐶 × 𝑁𝐵𝑂 5.1.3
Por otra parte, el descriptor obtenido es evaluado con un clasificador de máquina de soporte vectorial con
kernel lineal, entrenado con antelación; Cuando el resultado del clasificador es 1, indica que corresponde a
un peatón y el programa lo encierra en una elipse centrada en el rectángulo contenedor, en tanto que si es 0
no le hace nada. Un cuadro termina de analizarse cuando se hayan extraído y analizado todas las ventanas
de detección que quepan en él, con el sobrelapamiento inicialmente escogido y teniendo en cuenta que la
ventana de detección comienza a extraerse desde la esquina superior izquierda de la imagen.
En la Figura 22 se muestran algunos cuadros segmentados por el algoritmo sin memoria, en estos es posible
observar las tres escenas trabajadas y darse cuenta de la constante al reconocer el árbol de navidad y los
postes que lo rodean como positivos, el reconocimiento de positivos de peatones que no han entrado del
todo a la escena, además, en la escena de la playita de la Facultad de Ingeniería se observan las imágenes
pixeladas que sumadas al suelo (ladrillo) pueden presentar bordes bruscos y general falsos positivos.
25
Figura 22. Cuadros Segmentados por el Algoritmo sin memoria.
26
5.1.1. Ejemplos de Descriptores HOG
En esta sección se presentan los descriptores de imágenes tanto de positivos como de negativos al azar y de
los que se observaron problemas en los videos de prueba, los cuales fueron entregados por la función
Histograma. En la Figura 23, se tomaron dos positivos y un negativo al azar, su histograma muestra
diferencias notorias entre lo que es un positivo y un negativo, los positivos presentan picos especialmente
en celdas centrales y contiguas, en tanto que el negativo presenta picos aislados y por tanto un
comportamiento no muy bien definido. En la Figura 24, se tomaron dos positivos y un negativo de los
ejemplos difíciles al azar, el histograma del Peatón 1 presenta picos en celdas centrales, en tanto que el
histograma del Peatón 2 presenta picos en otras celdas por la aparición de medio cuerpo del otro peatón, el
negativo presenta picos contiguos, lo cual lo puede hacer parecer un peatón. En la Figura 25, Figura 26 y
Figura 27, los negativos corresponden a imágenes de falsos positivos segmentadas por el algoritmo descrito
en esta sección y los positivos fueron escogidos al azar, estos negativos presentan grandes picos en celdas
centrales y contiguas, haciéndolos muy similares a los positivos. El graficar estos descriptores resulta útil al
lector para visualizar como cambian las características HOG con ejemplos sencillos de la base de datos y
con ejemplos que el clasificador tuvo que re-aprender ante la imposibilidad de clasificarlos correctamente.
Figura 23. Descriptor para tres Imágenes al azar de la Base de Datos
27
Figura 24. Descriptor para dos peatones al azar de la Base de Datos y un Negativo al azar de Ejemplos Difíciles
28
Figura 25. Descriptor para dos Peatones al azar de la Base de Datos y un Negativo de 64X104 con el que se tuvo problemas en los videos de prueba
29
Figura 26. Descriptor para dos Peatones al azar de la Base de Datos y un Negativo de 64X104 con el que se tuvo problemas en los videos de prueba
30
Figura 27. Descriptor para dos Peatones al azar de la Base de Datos y un Negativo de 48X72 con el que se tuvo problemas en los videos de prueba
31
5.2. Algoritmo HOG con memoria
Este algoritmo se implementó como una modificación para aprovechar el sobremuestreo que se tiene de los
objetos de interés, los peatones, con una cámara que captura a 30 cuadros por segundo y tratar de disminuir
los falsos positivos y los falsos negativos presentados en la sección 5.1, por ello, solamente se explican los
bloques de la Figura 11 que difieren a los de la Figura 10, los restantes funcionan igual a lo presentado en
la sección 5.1.
Inicialmente se tiene un bloque de almacenamiento de cuadros, que permite almacenar siete cuadros –se
escogió como número de almacenamiento debido a la velocidad del peatón que nunca es mayor a 10 m/s y
a la tasa de captura de la cámara que es 30 fps–, de esta forma el cuadro actual (el que se muestra) tiene un
retardo de tres cuadros con respecto al cuadro que entra, así por ejemplo, cuando se obtiene el cuadro 4 se
muestra el 1, sin embargo, el cuadro que se analiza es el que se obtiene instantáneamente; Este es analizado
extrayendo la ventana de detección, pasándola a escala de grises, obteniendo el histograma y clasificándolo.
Una vez se ha clasificado una ventana de detección como positiva, es almacenada utilizando memoria
dinámica, de tal forma que el bloque de almacenamiento de positivos por cuadro tiene siete vectores, donde
en cada uno se almacenan los peatones encontrados en cada cuadro así como sus posiciones dentro del
cuadro.
Además, cuando entra un nuevo cuadro al sistema, se borra el más antiguo y se graba el nuevo, igual pasa
con los peatones encontrados. De esta manera, el cuadro actual es el central del arreglo de siete cuadros.
Finalmente, el bloque de Análisis de Falsos Positivos y Negativos enciende alarmas al comparar las
detecciones del cuadro actual con las del anterior de la siguiente manera:
Si en el cuadro actual se encontraron más peatones que en el anterior, se presume un falso positivo.
Si en el cuadro actual se encontraron menos peatones que en el anterior, se presume un falso
negativo.
Si hay igual número de peatones en el cuadro anterior y en el actual, se buscan los peatones del
cuadro actual en el cuadro anterior utilizando el error cuadrático medio, comparando todas las detecciones
actuales con las anteriores, si hay alguno que no se encuentre, quiere decir que antes no estaba y puede ser
un falso positivo. Este caso puede ocurrir cuando el número de falsos positivos y negativos sea el mismo o
cuando un peatón sale de la escena y ocurre un falso positivo.
Si hay igual número de peatones en el cuadro anterior y en el actual, se buscan los peatones del
cuadro anterior en el cuadro actual utilizando el error cuadrático medio, comparando todas las detecciones
anteriores con las actuales, si hay alguno que no se encuentre, quiere decir que antes estaba y ahora no, por
ello puede ser un falso negativo. Este caso puede ocurrir cuando el número de falsos positivos y negativos
sea el mismo o cuando un peatón entra en la escena y ocurre un falso negativo.
Una vez se obtienen las alarmas, se trata de solucionarlas según sea el caso:
Si es una alarma de falso positivo, se buscan los peatones del cuadro actual en el anterior con el
error cuadrático medio y se almacenan los peatones que no se puedan emparejar; luego, se buscan en los
tres cuadros siguientes, eliminando del vector de falsos positivos los que se puedan emparejar, para esto se
tiene en cuenta el error cuadrático medio y que la posición no varíe más del sobrelapamiento de la ventana
32
de detección, tanto en x como en y. Finalmente, los que no se encuentren en ninguno de los tres cuadros, se
eliminan del cuadro actual.
Si es una alarma de falsa negativo, se buscan los peatones del cuadro anterior que no aparezcan en
el cuadro actual con el error cuadrático medio y se almacenan en un vector de falsos negativos. Los peatones
del vector de falsos negativos se buscan en los tres cuadros siguientes con el error cuadrático medio y
teniendo en cuenta que la posición del asumido falso negativo y del encontrado no superen un
sobrelapamiento de la ventana de detección, tanto en x como en y, en el caso de encontrarse en alguno de
ellos, se asume que sí hubo un falso negativo y se almacena en el vector de peatones actuales y la posición
para marcarlo en el cuadro se interpola. Además, en el caso de no encontrarse con el error cuadrático medio
en los tres cuadros siguientes, se verifica que la última posición que tuvo no esté cerca a las márgenes del
cuadro, en cuyo caso se almacena en el vector de peatones actuales y su posición se asume como la anterior.
Una vez se hayan corregido los falsos positivos y negativos, se muestra el cuadro actual, encerrando en una
elipse o en un rectángulo los peatones encontrados en el vector de peatones actuales.
A pesar de corregir varios falsos positivos y negativos, se sigue presentando la constante de reconocer
negativos como los de la Figura 25 y Figura 26 como positivos, esto en razón a la similitud del histograma
del negativo con el de un positivo como ya se analizó. Por esto, es posible hacer un reentrenamiento de la
máquina de soporte vectorial utilizando “Fuerza Bruta6” para obligarle a aprender eso como un negativo,
sin embargo, eso solo se presenta con imágenes de árboles. En la Figura 28 es posible ver algunas
detecciones hechas con el algoritmo con memoria.
Figura 28. Cuadros segmentados con el Algoritmo HOG con memoria
6 Se trata de obligar al clasificador a aprender un positivo o un negativo que no ha aprendido como tal.
33
5.3. Entrenamiento de la Máquina de Soporte Vectorial
Para el entrenamiento de la máquina de soporte vectorial, se utiliza la librería ML de OpenCV y se realiza
en tres etapas: Entrenamiento, obtención de Ejemplos Difíciles y Reentrenamiento. Para la etapa de
entrenamiento y reentrenamiento se utilizó como base el código suministrado en [27].
En la etapa de entrenamiento, se utilizan los descriptores de 1984 ejemplos de positivos de 64X104 y de
48X72 (los cuales se incluyen en los anexos en digital) y los descriptores de 12200 ejemplos de negativos.
El tiempo de esta etapa es de aproximadamente 24 horas.
En la etapa de obtención de Ejemplos Difíciles se pasa una ventana de detección exhaustivamente por cada
una de las 1220 imágenes de negativos, ya que estás son totalmente negativas, se busca encontrar positivos
en ellas, los cuales son considerados ejemplos Dificiles y se graban para el reentrenamiento.
Finalmente, en la etapa de reentrenamiento se utilizan los descriptores de 1984 ejemplos de positivos de
64X104 y de 48X72, los descriptores de los 12200 negativos y los descriptores de los ejemplos difíciles. El
tiempo de esta etapa es de aproximadamente 72 horas. El descriptor obtenido aquí es el que utiliza.
Para poder entrenar la máquina, se utilizan las siguientes funciones:
CvSVM nombre_de_la_maquina=CvSVM();
Para declarar la máquina de soporte vectorial.
CvTermCriteria nombre_del_criterio=cvTermCriteria(int type, int max_iter, doublé epsilon);
La cual permite establecer el criterio para terminar un algoritmo iterativo. Type es el criterio para la
terminación del algoritmo, donde se escogió CV_TERMCRIT_EPS, así se termina el algoritmo cuando la
exactitud alcanzada dependiente del algoritmo sea menor que épsilon.
Nombre_parametros=CvSVMParams(int svm_type, int kernel_type, double degree, double gamma,
double coef0, double Cvalue, doublenu, double p, CvMat* class_weights, CvTermCriteria term_crit);
Con la cual se establecen los parámetros de la máquina de soporte vectorial como el tipo de kernel y
parámetros para optimización del problema. En este caso, se escogió un kernel lineal, pues era el que menos
vectores de soporte entregaba de todos los posibles kernels.
Nombre_de_la_maquina.train(trainingDataMat, labelsMat, Mat(), Mat(), Params);
Con esta función se entrena la máquina de soporte vectorial, se le debe entregar la matriz de datos de
entrenamiento, donde cada fila corresponde a un dato diferente y cada dato tiene tantos números como
columnas; además, se debe entregar un vector columna de etiquetas para saber a qué clase pertenece cada
dato.
En los discos anexos, se incluyen todas las máquinas de soporte vectorial entrenadas así como archivos de
descripción de cada una, incluyendo datos de entrenamiento, tipo de kernel, valor de épsilon, entre otros.
34
5.4. Algoritmo Matrices de Covarianza sin Subventanas
En este algoritmo la obtención del cuadro y la extracción de la ventana de detección se hace en la misma
forma y teniendo en cuenta las mismas consideraciones que con el algoritmo HOG. Por su parte, las matrices
de características se obtienen de cada una de las ventanas de detección, se realizan distintas combinaciones
de características ante la imposibilidad de lograr una buena detección, estas son:
1. Posición del píxel en x, posición del píxel en y, derivada en x, derivada en y, magnitud de la
derivada, segunda derivada en x, segunda derivada en y, ángulo de la primera derivada, completando así
ocho matrices.
2. Posición del píxel en x, posición del píxel en y, plano h, plano s, derivada en x, derivada en y,
segunda derivada en x, segunda derivada en y, completando así ocho matrices.
3. Plano h, plano s, derivada en x, derivada en y, magnitud de la derivada, segunda derivada en x,
segunda derivada en y, ángulo de la primera derivada, completando así ocho matrices.
4. Posición del píxel en x, posición del píxel en y, plano h, plano s, derivada en x, derivada en y,
magnitud de la derivada, segunda derivada en x, segunda derivada en y, ángulo de la primera derivada,
completando así diez matrices.
Las primeras y segundas derivadas horizontales se obtienen con la máscara de la ecuación (5.1.1) y las
verticales con la máscara de la ecuación (5.1.2); La magnitud de la primera derivada se obtiene con la
ecuación (3.4.4) y el ángulo con la (3.4.5), salvo que se calcula en el primer cuadrante, es decir, es un ángulo
entre 0° y 90°; para definir la posición del píxel, se asume como posición (1; 1) la esquina superior izquierda
de la imagen y los planos coordenados como se muestra en la Figura 29; finalmente para obtener los planos
h y s se utilizan las funciones cvCvtColor() y cvPixToPlane(), con esta última se separan cada uno de los
canales de una imagen multicanal. Cabe aclarar que las derivadas de primero y segundo orden y por ende la
magnitud y el ángulo se obtienen con la imagen en escala de grises.
Figura 29. Cómo definir las matrices de Posición de Píxeles
35
En la Figura 30 se muestran las imágenes correspondientes a las características extraídas. Las imágenes de
posiciones de píxeles x e y, así como la de ángulos son mapeadas en el intervalo 0-255.
Figura 30. Imágenes de las características extraídas. (a) Imagen Original. (b) Posición en x. (c) Posición en y. (d) Derivada vertical. (e) Derivada
Horizontal. (f) Segunda Derivada Vertical. (g) Segunda Derivada Horizontal. (h) Magnitud de la Derivada. (i) Ángulo de la Derivada (j). Plano h. (k) Plano s.
En la Figura 30 se puede apreciar la importancia de incluir los planos h y s como características, ya que
inicialmente no se había planeado incluirlas, pues muestran de una forma muy clara la radiografía del peatón
separándola del fondo. Por otra parte, la inclusión de la posición en x e y también es fundamental, pues a
pesar de que está matriz es constante para una ventana de detección de tamaño constante y por ende su
varianza también es constante, la correlación con las otras características sí da una buena caracterización de
la imagen. Asimismo, en las derivadas horizontales y verticales, de primero y segundo orden, se aprecia una
muy buena caracterización de los bordes del peatón, incluyendo detalles por ejemplo de sus manos.
Para el cálculo del vector 𝑷𝒙,𝒚 y de la matriz 𝑸𝒙,𝒚 se implementaron dos funciones llamadas get_pvector()
y get_qmatrix(), las cuales reciben como parámetros las matrices de características y las coordenadas donde
36
se quiere calcular la Integral Image; las funciones realizan el cómputo de las ecuaciones (3.5.6) y (3.5.7) y
regresan un vector columna y una matriz cuadrada respectivamente. El tamaño del vector y la matriz son
correspondientes con el número de características utilizadas.
Luego, se implementó una función llamada covmatrix(), la cual recibe como parámetros el vector 𝑷𝒙,𝒚, la
matriz 𝑸𝒙,𝒚, y las coordenadas 𝑥′, 𝑦′ y 𝑥′′, 𝑦′′ que se muestran en la Figura 6. Esta función realiza el
cómputo de la Ecuación (3.5.8) y devuelve la matriz de covarianza de la ventana de detección. Sin embargo,
como se tienen dos posibles tamaños de la ventana de detección se hace necesario normalizar la matriz de
covarianza, para ello se utilizaron los siguientes métodos:
1. Normalizar toda la matriz con la norma euclideana, sin embargo, esta normalización genera un error
grande, ya que a medida que aumenta el tamaño de la ventana, aumentan los valores de las varianzas y
correlaciones relacionadas con la posición del píxel, provocando que se disminuyan bastante los demás
valores de la matriz.
2. Normalizar con la Ecuación (3.5.11), sin embargo como no se utilizan subventanas, los valores de
la diagonal principal de la matriz resultan siendo iguales a 1, esto hace que el descriptor sea más pequeño,
lo cual no lo hace conveniente.
3. Normalizar con la norma euclideana únicamente las filas que tienen valores relacionados con la
posición del píxel, esto disminuyó un poco el error, sin embargo siguió siendo considerable, tal vez por las
pocas características que genera el no utilizar subventanas.
4. No normalizar. Esta es una opción al tener un tamaño de ventana constante, sin embargo, al plantear
un algoritmo genérico no funcionaría.
Una vez normalizada la matriz de covarianza se obtiene el descriptor final, siendo este el formado por el
triángulo superior de la matriz de covarianza incluyendo la diagonal principal, ya que por ser la matriz
simétrica tener datos repetidos no es una buena práctica.
Finalmente, el descriptor se clasifica utilizando técnicas de Boosting, el clasificador es entrenado con
antelación en OpenCV. Cuando el resultado del clasificador es 1, indica que corresponde a un peatón y el
programa lo encierra en el rectángulo contenedor, en tanto que si es 0 no le hace nada. Un cuadro termina
de analizarse cuando se hayan extraído y analizado todas las ventanas de detección que quepan en él, con el
sobrelapamiento inicialmente escogido y teniendo en cuenta que la ventana de detección comienza a
extraerse desde la esquina superior izquierda de la imagen.
Con las distintas implementaciones, fue posible ver una constante en la múltiple detección de un peatón y
en la detección de falsos positivos. En la Figura 31 se muestran segmentaciones realizadas con las distintas
variantes del algoritmo; la (a) fue segmentada con Boosting discreto, con la matriz sin normalizar y con los
descriptores mencionados en el número 1; la (b) fue segmentada con LogitBoost, con la matriz de covarianza
normalizada como en el número 1 y los descriptores 1; la (c) fue segmentada con Boosting discreto, con la
matriz normalizada con 2 y con los descriptores 1; la (d) fue segmentada con Boosting Real, la matriz
normalizada con 1 y con los descriptores 3; la (e) fue segmentada con Boosting Real, con la matriz sin
normalizar y con los descriptores 2, la (f) fue segmentada con Boosting real, con la matriz normalizada con
3 y con los descriptores 2; la (g) fue segmentada con LogitBoost, con la matriz de covarianza normalizada
con 3 y con los descriptores 4; y la (h) fue segmentada con LogitBoost, con la matriz sin normalizar y con
los descriptores 4. En estas, se observa una constante en el múltiple reconocimiento de una persona.
37
Figura 31. Segmentaciones realizadas con las variantes del Algoritmo Matrices de Covarianza sin Subventana
38
5.4.1. Ejemplos de Descriptores de Matrices de Covarianza
Figura 32. Muestras para Obtención de Descriptores de Covarianza
En esta sección se presentan los descriptores de imágenes tanto de positivos como de negativos al azar,
obtenidos con la función covmatrix(), los descriptores corresponden a las muestras de la Figura 32, en las
cuales se presentan dos peatones con poses totalmente diferentes y dos negativos con los que se observaron
problemas en videos de prueba. El graficar estos descriptores resulta útil al lector para visualizar como
cambian cada uno de los grupos de características utilizados en este trabajo y ver cuál podría usarse con
mejores resultados.
En la Figura 33 los descriptores fueron obtenidos con la Matriz de Covarianza sin normalizar y utilizando
como características la posición del píxel en x, la posición del píxel en y, la derivada en x, la derivada en y,
la magnitud de la derivada, la segunda derivada en x, la segunda derivada en y, el ángulo de la primera
derivada. Con estos descriptores se observan diferencias entre los peatones y los negativos, sin embargo,
aparentemente las características no son muy dicientes dado que las curvas de los negativos están por encima
y por debajo de las curvas de los positivos.
Figura 33. Descriptores obtenidos con la Matriz de Covarianza sin normalizar y con las características 1
En la Figura 34, los descriptores fueron obtenidos con la Matriz de Covarianza normalizada con la norma
euclideana y utilizando como características la posición del píxel en x, la posición del píxel en y, la derivada
en x, la derivada en y, la magnitud de la derivada, la segunda derivada en x, la segunda derivada en y, el
39
ángulo de la primera derivada. A pesar de que en cierta forma es más fácil de distinguir entre las curvas de
peatones y de no peatones, existen comportamientos particulares similares a los de la Figura 33, no obstante,
es clara la ventaja de utilizar estos, pues al estar normalizados se logra un poco más de independencia con
el tamaño de la ventana de detección.
Figura 34. Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las características 1
En la Figura 35 los descriptores fueron obtenidos con la Matriz de Covarianza normalizada con la Ecuación
(3.5.11) y utilizando como características la posición del píxel en x, la posición del píxel en y, la derivada
en x, la derivada en y, la magnitud de la derivada, la segunda derivada en x, la segunda derivada en y, el
ángulo de la primera derivada. En esta es fácil ver una pérdida de datos al tener varias características en 1,
por lo cual no se puede diferenciar a simple vista.
Figura 35. Descriptores obtenidos con la Matriz de Covarianza normalizada con 2 y con las características 1
40
En la Figura 36, los descriptores fueron obtenidos con la Matriz de Covarianza normalizada con la Ecuación
(3.5.11); en la Figura 37 con la Matriz normalizando independientemente con la norma euclideana las filas
que involucran datos de la posición del píxel; en la Figura 38 con la Matriz de Covarianza normalizada con
la norma euclideana y en la Figura 39 con la Matriz de Covarianza sin normalizar. Los descriptores de estas
son obtenidos con la posición del píxel en x, la posición del píxel en y, el plano h, el plano s, la derivada en
x, la derivada en y, la segunda derivada en x, la segunda derivada en y. con estas características es más fácil
encontrar diferencias a simple vista entre peatones y no peatones.
Figura 36. Descriptores obtenidos con la Matriz de Covarianza normalizada con 2 y con las características 2
Figura 37. Descriptores obtenidos con la Matriz de Covarianza normalizada con 3 y con las características 2
-0,6
-0,4
-0,2
0
0,2
0,4
0,6
0,8
1
1,2
0 10 20 30
Val
or
del
Des
crip
tor
Posición del Descriptor
Peaton 1
Peaton 2
Negativo 1
Negativo 2
41
Figura 38. Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las características 2
Figura 39. Descriptores obtenidos con la Matriz de Covarianza sin normalizar y con las características 2
42
En la Figura 40, los descriptores fueron obtenidos con la Matriz de Covarianza sin normalizar; en la Figura
41 con la Matriz de Covarianza normalizada con la norma euclideana; en la Figura 42 con la Matriz de
Covarianza normalizada con la Ecuación (3.5.11) y en la Figura 43 con la Matriz normalizando
independientemente con la norma euclideana las filas que involucran datos de la posición del píxel. Los
descriptores de estas son obtenidos con el plano h, el plano s, la derivada en x, la derivada en y, la magnitud
de la derivada, la segunda derivada en x, la segunda derivada en y, el ángulo de la primera derivada.
Utilizando estas características es menos fácil identificar a simple vista entre peatones y no peatones que
con las anteriores características, dado que la correlación entre la posición del píxel y las demás
características contiene información muy útil que deja ver mayor diferencia entre las curvas de positivos y
negativos.
Figura 40. Descriptores obtenidos con la Matriz de Covarianza sin normalizar y con las características 3
Figura 41 Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las características 3
43
Figura 42. Descriptores obtenidos con la Matriz de Covarianza normalizada con 2 y con las características 3
Figura 43. Descriptores obtenidos con la Matriz de Covarianza normalizada con 3 y con las características 3
44
En la Figura 44, los descriptores fueron obtenidos con la Matriz de Covarianza normalizada con la norma
euclideana y se utilizaron la posición del píxel en x, la posición del píxel en y, el plano h, el plano s, la
derivada en x, la derivada en y, la magnitud de la derivada, la segunda derivada en x, la segunda derivada
en y, el ángulo de la primera derivada. Con estas características es más fácil diferenciar entre peatones y no
peatones, además se observa claramente que aumentan las características diferenciadoras.
Figura 44. Descriptores obtenidos con la Matriz de Covarianza normalizada con 1 y con las características 4
5.5. Algoritmo Matrices de Covarianza con Subventanas
En la sección 5.4, de alguna forma se vio que la variante del algoritmo con mejores resultados, es en la que
se utilizan matrices de covarianza de10X10, de este modo, tratando de aumentar el número de características
de una ventana de detección, se implementó el algoritmo con subventanas utilizando matrices de covarianza
de 10X10 (Figura 13).
En el algoritmo se obtiene el cuadro; se extrae una ventana de detección del mismo, con esta se obtienen las
matrices de características para luego obtener el vector 𝑷𝒙,𝒚 y la matriz 𝑸𝒙,𝒚, todo ello como se explicó en
la sección 5.4.
Luego, se obtienen las matrices de covarianza: de la ventana de detección y de subventanas. Las subventanas
de detección inicialmente se definieron de tamaño y posiciones al azar, sin embargo, se tuvo un tiempo de
entrenamiento muy alto con resultados muy bajos, por ello se decidió utilizar cuatro subventanas con
sobrelapamiento, donde cada una ocupa la mitad de la ventana de detección (Figura 45).
45
Figura 45. Ventanas y Subventanas para representar una Región.
Luego se utiliza la función covmatrix() para obtener las cinco matrices de covarianza de tamaño 10X10.
Cada una de estas se normaliza independiente con la Ecuación (3.5.11), para formar el descriptor final que
consta de 275 características por la simetría de las matrices de covarianza, este se almacena en forma de
vector para ser clasificado. En la Figura 46, se muestran los vectores para muestras de positivos y negativos.
Figura 46. Descriptor obtenido con Matrices de Covarianza de ventana y subventanas
Además en la Figura 47 , se muestran algunas detecciones hechas por este algoritmo.
46
Figura 47. Detecciones hechas por el algoritmo Matrices de Covarianza con Subventana
5.6. Entrenamiento de Clasificadores para Matrices de Covarianza
Para clasificar los descriptores de las matrices de covarianza se utilizaron dos tipos de clasificadores:
Boosting y Máquinas de Soporte Vectorial, esto para tratar de disminuir las detecciones múltiples de un
peatón al correr los programas.
El entrenamiento consta de tres etapas: entrenamiento, obtención de Ejemplos Difíciles y reentrenamiento,
descritas en la sección 5.3. El entrenamiento de cada clasificador utilizando Boosting dura aproximadamente
6 horas y el reentrenamiento aproximadamente 24. Para poder entrenar los clasificadores se utiliza la librería
ML de OpenCV con las siguientes funciones:
CvBoost nombre_del_clasificador = CvBoost();
Para declarar el clasificador de Boosting.
CvBoostParams nombreparametro = CvBoostParams(int boost_type, int weak_count, double
weight_trim_rate, int max_depth, bool use_surrogates, const float* priors);
Esta función establece los parámetros para el entrenamiento del clasificador. Boost_type permite escoger el
tipo de Boosting que se desea, en este caso se utilizaron DISCRETE, REAL y LOGIT, que corresponden a
las variantes AdaBoost discreto, AdaBoost real y LogitBoost; weak_count es el número de clasificadores
47
débiles a utilizar, algunos se entrenaron con 100 y otros con 1000; weight_trim_rate permite establecer la
probabilidad necesaria para ignorar una muestra en la siguiente iteración, se programó en 0.95; max_depth
es el número máximo de niveles en el árbol de decisión, se trabaja con 100.
Nombre_del_clasificador.train(const Mat& trainData, int tflag, const Mat& responses, const Mat&
varIdx=Mat(), const Mat& sampleIdx=Mat(), const Mat& varType=Mat(), const Mat&
missingDataMask=Mat(), CvBoostParams params=CvBoostParams(), bool update=false);
Esta función hace el entrenamiento del clasificador, con los datos de entrenamiento y sus etiquetas como se
explicó para las máquinas de soporte vectorial en la sección 5.3. Se utilizan los parámetros obtenidos con la
función anterior.
El entrenamiento de las Máquinas de Soporte Vectorial se hace como se explicó en la sección 5.3, sin
embargo, se probó con kernel polinomial y RBF obteniendo en el primero clasificaciones erróneas para
todos los negativos de entrenamiento y con el segundo tantos vectores de soporte como datos de
entrenamiento.
Se entrenó una única máquina con kernel lineal, pero utilizando la ventana de detección completa y
subventanas normalizadas con la Ecuación (3.5.11), esto por el tiempo requerido; para la etapa de
entrenamiento se requirieron 48 horas y para la etapa de reentrenamiento aproximadamente 120 horas.
Además, la mejoría que se presentó fue leve lo cual lo hace infructuoso.
En los discos anexos se encuentran todos los clasificadores entrenados al igual que una descripción de cada
uno de ellos.
5.7. Comportamiento de Personas
La detección del comportamiento de las personas se hizo según el diagrama de la Figura 14, en este, van
entrando los cuadros al sistema, a los cuales se les aplica el algoritmo HOG con memoria de la Figura 11,
los cuadros segmentados se muestran al usuario.
Luego se utiliza el bloque de Configuración del Sistema, en el cual cuando el usuario desee seguir un peatón
presiona la tecla ESC, ahí se muestran enumerados los peatones detectados para que el usuario escoja cual
quiere seguir para inferir su comportamiento. El descriptor del peatón que el usuario quiere seguir al igual
que su posición, se almacenan en el bloque de Memoria de descriptor y posición. El usuario tiene derecho
a seguir solamente una persona. En la Figura 48 se muestra como se ve el sistema para el usuario.
Una vez se ha almacenado el peatón que se quiere seguir, se inicia un contador de cuadro, para poder inferir
el tiempo que tarda el desplazamiento de un sitio a otro. Como la posición del peatón solamente se puede
ubicar en sitios donde se encuentre la ventana de detección, entonces la búsqueda del peatón almacenado,
se hace cuando hayan transcurrido mínimo diez cuadros, es decir, cuando el contador de cuadro llega a diez
se utiliza el error cuadrático medio (Ecuación 3.9.1) con todos los peatones encontrados en ese cuadro, el
peatón que presente el mínimo puede ser el peatón buscado, ya que pueden ocurrir falsos negativos, entonces
se necesita que ese mínimo sea menor que alguna constante, la cual es definida por el usuario. En el caso
que no se encuentre el peatón, se siguen avanzando los cuadros hasta encontrarlo.
48
Figura 48. Utilización del Sistema para Detección de Comportamiento
Luego se obtiene la distancia euclideana entre la posición inicial y la posición actual (Ecuación 5.7.1) y se
obtiene el tiempo transcurrido en ese recorrido utilizando el contador de cuadro, como el video fue tomado
a una tasa de 30 fps, entonces el tiempo se puede calcular con la Ecuación (5.7.2). El contador de cuadro se
reestablece y la posición inicial se actualiza.
𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎 = √(𝑃𝑓𝑖𝑛𝑎𝑙𝑥 − 𝑃𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑥)
2+ (𝑃𝑓𝑖𝑛𝑎𝑙𝑦 − 𝑃𝑖𝑛𝑖𝑐𝑖𝑎𝑙𝑦)
2
5.7.1
𝑡𝑖𝑒𝑚𝑝𝑜 𝑠 =𝑐𝑜𝑛𝑡𝑎𝑑𝑜𝑟 𝑑𝑒 𝑓𝑟𝑎𝑚𝑒
30 5.7.2
49
Con el dato de tiempo y de distancia recorrida se calcula la velocidad del peatón (Ecuación 5.7.3) utilizando
memoria dinámica y un factor de conversión (FC) de píxeles a metros, que es variable de entrada al
algoritmo y es introducida por el usuario en el encabezamiento del programa.
𝑣 (𝑚
𝑠) =
𝑑 𝑝𝑥
𝑡 𝑠 𝐹𝐶 (
𝑚
𝑝𝑥) 5.7.3
Es importante calcular la velocidad en espacios cortos de tiempo y después promediarla, ya que el peatón
puede hacer desplazamientos que no sean rectos y la ventana de detección clasificada como positiva para
un mismo peatón, no se mueve en todos los cuadros, por ello puede hacerse un cálculo erróneo.
Este procedimiento se hace hasta que el peatón deje de encontrarse en la escena, esta condición se asume
cuando al haber pasado otros diez cuadros el peatón no sea encontrado, en cuyo caso se deja de buscar y se
obtiene la velocidad promedio con las velocidades parciales obtenidas, para con esta inferir el
comportamiento según la Tabla 1. Una vez obtenida la velocidad se indica al usuario lo que la persona está
haciendo.
Comportamiento Rango de Velocidad
Quieto 𝑣 < 0,1 𝑚/𝑠
Caminando 0,1 𝑚/𝑠 < 𝑣 < 1,8 𝑚/𝑠
Corriendo 𝑣 > 1,8 𝑚/𝑠 Tabla 1. Comportamiento de las Personas según su Velocidad
5.8. Protocolo de Pruebas
Es necesario ahora fijar una forma para evaluar los algoritmos implementados, para ello se cuenta con 22
videos de prueba tomados en las tres escenas descritas en la sección 4.2. Estos videos se convirtieron en
cuadros utilizando MATLAB y manualmente utilizando técnicas de conteo se obtuvo el número de peatones
presentes en cada cuadro (Total_de_Peatones_Manualmente), teniendo en cuenta que para que una persona
sea contada debe aparecer de cuerpo completo en la escena.
Como los algoritmos entregan los videos segmentados, así como el número de peatones en cada uno de los
cuadros, que corresponde con el número de detecciones realizadas, estos videos también se convierten en
cuadros para poder comparar los datos y poder determinar la eficiencia de la segmentación, definiendo tres
características sobre estos:
El número de aciertos que se obtuvieron, siendo este el número de detecciones hechas que sí
corresponden a personas.
El número de falsos positivos que se obtuvieron, siendo este el número de detecciones hechas que
no corresponden a personas. De esta forma se satisface la Ecuación (5.8.1).
El número de falsos negativos, que corresponde a las personas que no fueron detectadas. De esta
forma se satisface la Ecuación (5.8.2).
𝐷𝑒𝑡𝑒𝑐𝑐𝑖𝑜𝑛𝑒𝑠 𝑅𝑒𝑎𝑙𝑖𝑧𝑎𝑑𝑎𝑠 = 𝐹𝑎𝑙𝑠𝑜𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 + 𝐴𝑐𝑖𝑒𝑟𝑡𝑜𝑠 5.8.1
50
𝑇𝑜𝑡𝑎𝑙_𝑑𝑒_𝑝𝑒𝑎𝑡𝑜𝑛𝑒𝑠_𝑀𝑎𝑛𝑢𝑎𝑙𝑚𝑒𝑛𝑡𝑒 = 𝐹𝑎𝑙𝑠𝑜𝑠_𝑁𝑒𝑔𝑎𝑡𝑖𝑣𝑜𝑠 + 𝐴𝑐𝑖𝑒𝑟𝑡𝑜𝑠 5.8.2
Teniendo en cuenta las definiciones hechas, se halla el porcentaje de aciertos (Ecuación 5.8.3), de falsos
positivos (Ecuación 5.8.4) y de falsos negativos (Ecuación 5.8.5).
𝑃𝑜𝑟𝑐𝑒𝑛𝑡𝑎𝑗𝑒_𝑎𝑐𝑖𝑒𝑟𝑡𝑜𝑠 =𝐴𝑐𝑖𝑒𝑟𝑡𝑜𝑠
𝑇𝑜𝑡𝑎𝑙_𝑑𝑒_𝑃𝑒𝑎𝑡𝑜𝑛𝑒𝑠_𝑀𝑎𝑛𝑢𝑎𝑙𝑚𝑒𝑛𝑡𝑒100% 5.8.3
𝑃𝑜𝑟𝑐𝑒𝑛𝑡𝑎𝑗𝑒_𝐹𝑎𝑙𝑠𝑜𝑠𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 =𝐹𝑎𝑙𝑠𝑜𝑠_𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠
𝐷𝑒𝑡𝑒𝑐𝑐𝑖𝑜𝑛𝑒𝑠 𝑅𝑒𝑎𝑙𝑖𝑧𝑎𝑑𝑎𝑠100% 5.8.4
𝑃𝑜𝑟𝑐𝑒𝑛𝑡𝑎𝑗𝑒_𝐹𝑎𝑙𝑠𝑜𝑠𝑁𝑒𝑔𝑎𝑡𝑖𝑣𝑜𝑠 =𝐹𝑎𝑙𝑠𝑜𝑠_𝑁𝑒𝑔𝑎𝑡𝑖𝑣𝑜𝑠
𝑇𝑜𝑡𝑎𝑙_𝑑𝑒_𝑃𝑒𝑎𝑡𝑜𝑛𝑒𝑠_𝑀𝑎𝑛𝑢𝑎𝑙𝑚𝑒𝑛𝑡𝑒100% 5.8.5
Además, el error se define con la Ecuación (5.8.6).
𝑃𝑜𝑟𝑐𝑒𝑛𝑡𝑎𝑗𝑒_𝐸𝑟𝑟𝑜𝑟
=𝐹𝑎𝑙𝑠𝑜𝑠_𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 + 𝐹𝑎𝑙𝑠𝑜𝑠_𝑁𝑒𝑔𝑎𝑡𝑖𝑣𝑜𝑠
𝐴𝑐𝑖𝑒𝑟𝑡𝑜𝑠 + 𝐹𝑎𝑙𝑠𝑜𝑠_𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑜𝑠 + 𝐹𝑎𝑙𝑠𝑜𝑠_𝑁𝑒𝑔𝑎𝑡𝑖𝑣𝑜𝑠100%
5.8.6
Finalmente, para evaluar la detección de comportamiento, se seleccionaron al azar 15 personas en algunos
de los videos de prueba y se pidió inferir su comportamiento, la correspondencia del comportamiento con
la realidad se contrastó con verificación humana al ser obvia la determinación de los estados: caminar,
correr, estar quieto.
51
6. ANÁLISIS DE RESULTADOS
6.1. Resultados de Entrenamiento
En esta sección se incluyen los resultados del entrenamiento de los clasificadores que se utilizaron para
hacer las pruebas así como de clasificadores con otros kernel, estos se incluyen en la Tabla 2. Es posible
darse cuenta que las máquinas utilizadas para las pruebas: “SVM lineal HOG” y “SVM lineal MC” no se
encuentran sobreentrenadas por los porcentajes de falsos positivos y negativos que presentan. Por su parte,
la máquina con kernel RBF si se encuentra sobreentrenada, tanto para HOG como Matrices de Covarianza;
además, los kernel polinomiales presentaron total error en cuanto a falsos positivos se refiere.
Tabla 2. Resultados de Entrenamiento de algunos Clasificadores
6.2. Detección de Personas
Se tomaron 22 videos de pruebas (los cuales se incluyen en los anexos en digital) para realizar las pruebas
de segmentación utilizando el Algoritmo HOG sin Memoria, el Algoritmo HOG con Memoria y el
Algoritmo de Matrices de Covarianza con Subventanas. Siguiendo el protocolo de pruebas definido se
eligen 5 videos que se considera incluyen todas las posibles situaciones en las tres escenas trabajadas.
Para realizar un análisis general del funcionamiento del algoritmo, se hacen las comparaciones en grupos
de 30 cuadros, ya que en estos alcanza a transcurrir un segundo, tiempo suficiente para que un peatón se
alcance a mover.
El video “Prueba 3.avi” fue tomado en la escena de la Figura 15 (a), en este la iluminación es muy buena
ya que se presenta sol de atardecer, además, pasan tres personas de forma separada, pero en dos ocasiones
se encuentran dos y una tapa un gran porcentaje de la otra. En la Tabla 3 se puede evidenciar que el algoritmo
con mayor porcentaje de aciertos es el algoritmo HOG con memoria, sin embargo presenta un lapso de bajos
aciertos (46,67%) que corresponde a la segunda vez en que se encuentran dos personas, las cuales se
demoran en separarse nuevamente. Asimismo, es evidente el aumento del porcentaje de aciertos que se
presenta durante todo el video al utilizar memoria en el algoritmo HOG, pero también se puede evidenciar
bajos porcentajes de acierto en el algoritmo de Matrices de Covarianza teniendo un mínimo de 42,86%.
Total
Muestras
Positivas
Falsos
Negativos
Porcentaje
Falsos
Negativos
Total
Muestras
Negativas
Falsos
Positivos
Porcentaje
Falsos
Positivos
SVM lineal HOG 1984 172 8,67% 13340 1010 7,57%
SVM RBF HOG 1984 0 0,00% 13820 0 0,00%
SVM Polinomial HOG 1984 4 0,20% 13145 13141 99,97%
SVM lineal MC 1984 78 3,93% 13334 718 5,38%
SVM RBF MC 1984 0 0,00% 12981 0 0,00%
SVM Polinomial MC 1984 12 0,60% 13152 13151 99,99%
Boosting MC 1984 0 0,00% 13447 1 0,01%
52
Tabla 3. Aciertos en el Video “Prueba 3.avi”7
Para poder dar una medida acerca de los peatones presentes en el video, resulta lógico obtener en cada
segundo el promedio de peatones detectados manualmente y de aciertos, teniendo en cuenta que no puede
haber fracciones de peatones, por ello, promedios con parte decimal superior o igual a 0,5 se aproximan al
siguiente entero y con parte decimal inferior a 0,5 se aproximan a su parte entera. En la Figura 49 se muestran
los aciertos cada segundo donde se ratifica que el algoritmo con mejores resultados es HOG con memoria,
y la máxima diferencia que tiene con el conteo manual es de una persona, en los otros algoritmos se
presentan diferencias de una o dos personas en los segundos 3, 4 y 6.
En la Figura 50 se muestran las curvas de falsos negativos como función de los falsos positivos. Es posible
darse cuenta que la disminución de falsos negativos por parte del algoritmo HOG con memoria, tiene en
ocasiones su coste en el aumento de falsos positivos, esto en razón de las detecciones aisladas que pueden
presentarse con persistencia en el video y que a futuro son reconocidas como presencia de falsos negativos
y corregidas como tal, como se presentó en la Sección 5.2. No obstante, en la Tabla 4 es clara la disminución
del error total al utilizar memoria y se corrobora que es el algoritmo con mejores resultados, con un error
máximo que ocurre al encontrarse dos personas y solamente una vez durante el video, también, se observa
que el algoritmo con peores resultados es el de Matrices de Covarianza, ya que tiene porcentaje de falsos
positivos muy altos llegando hasta el 56,45%.
Figura 49. Aciertos en video “Prueba 3.avi”.
7 Spx corresponde al porcentaje de sobrelapamiento de la ventana de detección en x; Spy al porcentaje de sobrelapamiento en y.
Aciertos % Aciertos Aciertos % Aciertos Aciertos % Aciertos
1-30 39 30 76,92% 36 92,31% 25 64,10%
31-60 40 29 72,50% 39 97,50% 34 85,00%
61-90 60 12 20,00% 28 46,67% 33 55,00%
91-120 53 27 50,94% 46 86,79% 24 45,28%
121-150 30 26 86,67% 30 100,00% 27 90,00%
151-180 28 11 39,29% 25 89,29% 12 42,86%
Frame No. Manual
HOG sin memoria spx
61 % spy 57%
Matriz de Covarianza spx
50% spy 50%
HOG con memoria spx
61 % spy 57%
53
Figura 50. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba 3.avi”
Tabla 4. Error en el video “Prueba 3.avi”
Asimismo, en el video “Prueba 16.avi” aparece caminando una única persona en la escena de la Figura 15
(a), el video fue tomado en una tarde con sol tenue pero con buena iluminación. En la Tabla 5 se puede ver
que el algoritmo HOG con memoria segmenta correctamente todos los peatones presentes en el video, en
tanto que el algoritmo HOG sin memoria y el algoritmo Matrices de Covarianza presentan resultados muy
similares en los que se tiene mínimo 53,33% y máximo 90,00% de aciertos. Esto se puede ver mejor en la
Figura 51, donde se obtiene el promedio de peatones por segundo, en esta se observa que los tres algoritmos
tienen muy buenos resultados al no diferir el número de aciertos entre ninguno de ellos.
HOG sin memoria spx
61 % spy 57%
HOG con memoria
spx 61 % spy 57%
Matriz de Covarianza
spx 50% spy 50%
%Error %Error %Error
1-30 23,08% 10,00% 48,98%
31-60 27,50% 2,50% 35,85%
61-90 80,65% 54,84% 48,44%
91-120 50,00% 20,69% 63,08%
121-150 13,33% 0,00% 58,46%
151-180 62,07% 10,71% 63,64%
Frame No.
54
Tabla 5. Aciertos en el video “Prueba 16.avi”
Figura 51. Aciertos en el video “Prueba 16.avi”
En la Figura 52 se presentan los falsos negativos como función de los falsos positivos. Aquí, se reafirma en
algunos casos el aumento de Falsos Positivos al utilizar memoria, llegando a un máximo de 30,23% al
reconocer erróneamente el árbol de navidad y su cercado, así como algunas detecciones dobles de la persona;
además, se observa que el algoritmo Matrices de Covarianza presenta el mayor número de falsos positivos
por las detecciones múltiples que ocurren en un peatón, llegándose a detectar hasta tres veces. Igualmente,
el número de falsos negativos al utilizar memoria es nulo, lo que quiere decir que el peatón nunca se pierde
en la escena. En el algoritmo HOG sin memoria el número máximo de falsos negativos es del 46,67% y en
Matrices de Covarianza es de 43,33%; además, en este último debido a las detecciones múltiples
ocasionadas por el sobremuestreo en el cuadro aumenta el error total como se evidencia en la Tabla 6 donde
se alcanza a llegar al 86,67%. Adicionalmente, el error al utilizar memoria es menor que cuando no se utiliza
y llega a ser nulo en algunos casos.
Aciertos % Aciertos Aciertos % Aciertos Aciertos % Aciertos
1-30 30 27 90,00% 30 100,00% 24 80,00%
31-60 30 25 83,33% 30 100,00% 26 86,67%
61-90 30 16 53,33% 30 100,00% 17 56,67%
91-120 6 5 83,33% 6 100,00% 4 66,67%
HOG con memoria spx
61 % spy 57%
Matriz de Covarianza spx
50% spy 50%Frame No. Manual
HOG sin memoria spx
61 % spy 57%
55
Figura 52. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba 16.avi”
Tabla 6. Error en el video “Prueba 16.avi”
El video “Prueba 5.avi” fue tomado en la escena de la Figura 15 (b) cerca de las 5:30 p.m. y recién dejaba
de llover, por lo cual tiene una iluminación pobre, sumada a la oscuridad que se presentaba a esa hora y al
suelo húmedo. En este video pasan varias personas separadas las cuales se cruzan tres veces, además, pasan
dos grupos de dos personas muy juntas y permanecen así durante todo el recorrido, algunas veces solamente
es posible identificar la cabeza de una de ellas.
En la Tabla 7 se puede ver que el número de aciertos con los algoritmos Matrices de Covarianza y con el
algoritmo HOG con memoria es muy cercano al conteo manual durante la mayoría del video, en algunos
momentos la diferencia que se presenta es un poco mayor llegando a un porcentaje de aciertos de 36,43%,
esta situación se presenta cuando se cruzan los dos grupos de personas y pasa una persona vestida con ropa
muy oscura que se une con uno de los grupos y que no es fácil de distinguir del fondo; con esto se hace
notoria la imposibilidad del algoritmo para reconocer personas que estén muy juntas y sobrelapandose,
igualmente se nota cierta dependencia del vestuario con el fondo. En la Figura 53 se muestran los peatones
en promedio en cada segundo, observando efectivamente en los momentos en que pasan los dos grupos de
HOG sin memoria spx
61 % spy 57%
HOG con memoria
spx 61 % spy 57%
Matriz de Covarianza
spx 50% spy 50%
%Error %Error %Error
1-30 28,95% 30,23% 53,85%
31-60 30,56% 23,08% 55,17%
61-90 48,39% 0,00% 74,63%
91-120 16,67% 0,00% 86,67%
Frame No.
56
peatones detecciones erradas de dos personas (las que se tapan en grupo) con el algoritmo HOG con
memoria; con los algoritmos Matrices de Covarianza y HOG sin memoria se presenta un mayor error.
Figura 53. Aciertos en el video “Prueba 5.avi”
En la Figura 54 se presentan los falsos negativos como función de los falsos positivos y en la Tabla 8 el
error. Es posible ver que cuando van personas aisladas el algoritmo HOG con memoria es el que mejor se
desempeña, seguido del algoritmo sin memoria, sin embargo, cuando hay grupos de personas juntas el error
aumenta, ya que no es fácil distinguirlas como personas distintas. Con estos algoritmos se presenta un error
del 100% en un lapso del video, sin embargo, sucede porque en la realidad únicamente hay 5 positivos en
ese lapso y se encuentran muy cerca al margen, donde usualmente se presenta error.
El algoritmo de Matrices de Covarianza tiene errores que en su mayoría llegan al 40% los cuales surgen por
las detecciones múltiples de una persona. Al no estar presente el árbol de navidad ni su cercado, los falsos
positivos en general disminuyen.
57
Figura 54. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba 5.avi”
Tabla 7. Aciertos en el video “Prueba 5.avi”
Aciertos % Aciertos Aciertos % Aciertos Aciertos % Aciertos
1-30 30 14 46,67% 27 90,00% 28 93,33%
31-60 30 16 53,33% 30 100,00% 28 93,33%
61-90 30 15 50,00% 30 100,00% 22 73,33%
91-120 30 12 40,00% 30 100,00% 27 90,00%
121-150 30 17 56,67% 30 100,00% 30 100,00%
151-180 30 29 96,67% 30 100,00% 29 96,67%
181-210 0 0 NO 0 NO 0 NO
211-240 5 0 0,00% 0 0,00% 4 80,00%
241-270 30 25 83,33% 30 100,00% 28 93,33%
271-300 30 27 90,00% 30 100,00% 28 93,33%
301-330 30 24 80,00% 30 100,00% 30 100,00%
331-360 18 15 83,33% 18 100,00% 18 100,00%
361-390 15 7 46,67% 7 46,67% 0 0,00%
391-420 30 15 50,00% 18 60,00% 20 66,67%
421-450 52 46 88,46% 47 90,38% 40 76,92%
451-480 84 66 78,57% 75 89,29% 65 77,38%
481-510 90 63 70,00% 76 84,44% 60 66,67%
511-540 156 57 36,54% 96 61,54% 99 63,46%
541-570 174 78 44,83% 106 60,92% 103 59,20%
571-600 121 53 43,80% 68 56,20% 67 55,37%
601-630 129 40 31,01% 47 36,43% 73 56,59%
631-660 140 47 33,57% 76 54,29% 93 66,43%
661-690 90 18 20,00% 60 66,67% 49 54,44%
691-720 70 38 54,29% 45 64,29% 27 38,57%
721-734 7 7 100,00% 7 100,00% 7 100,00%
HOG con memoria spx Matriz de Covarianza spx
Frame No. Manual
HOG sin memoria spx
58
Tabla 8. Error en el video “Prueba 5.avi”
El video “Prueba 14.avi” fue tomado en la escena de la Figura 15 (c) cerca de las 4:30 p.m. Por la altura
desde donde se tomó se utilizó el zoom óptico de la cámara, por ello, el video está pixelado y aparenta tener
poca iluminación, además, los peatones se alcanzan a ver muy pequeños y a simple vista se observa ruido.
Durante todo el video pasa únicamente una persona.
En la Tabla 9 se enseñan los aciertos en el video “Prueba 14.avi”, el mayor número de aciertos lo tiene HOG
con memoria con un máximo de 100%, el peor resultado lo tiene el algoritmo HOG sin memoria que llega
a tener un mínimo de 36,36%. Ahora bien, en la Figura 56 se presentan los falsos negativos como función
de los falsos positivos y en la Tabla 10 el Error. Matrices de Covarianza es el que presenta mayor error por
el alto número de Falsos Positivos, que llega incluso a 53,85%, HOG con memoria presenta alto error en
los últimos Cuadros del video, debido a que se detectó un árbol como positivo y se siguió detectando hasta
el final por el seguimiento obtenido con la memoria.
El algoritmo con menos falsos negativos es HOG con memoria, donde los porcentajes oscilan entre 0,00%
y 10,00%. Sin embargo, en la Figura 55 se puede ver que en promedio los aciertos son los mismos en cada
segundo del video, esto en virtud de la inexistencia de fracciones de peatones. En Matrices de Covarianza,
el peatón se detecta al menos dos veces en cada cuadro, razón ésta para tener 55,22% de Falsos Positivos.
HOG sin memoria
spx 61 % spy 57%
HOG con memoria
spx 61 % spy 57%
Matriz de Covarianza
spx 50% spy 50%%Error %Error %Error
1-30 56,25% 15,63% 26,32%
31-60 50,00% 0,00% 40,43%
61-90 50,00% 0,00% 46,34%
91-120 61,29% 0,00% 30,77%
121-150 48,48% 16,67% 11,76%
151-180 3,33% 0,00% 14,71%
181-210 0,00% 0,00% 100,00%
211-240 100,00% 100,00% 20,00%
241-270 16,67% 0,00% 15,15%
271-300 10,00% 0,00% 17,65%
301-330 20,00% 6,25% 9,09%
331-360 16,67% 0,00% 33,33%
361-390 56,25% 53,33% 100,00%
391-420 50,00% 40,00% 51,22%
421-450 13,21% 11,32% 35,48%
451-480 24,14% 23,47% 29,35%
481-510 35,71% 27,62% 36,17%
511-540 63,46% 38,85% 37,34%
541-570 55,43% 41,11% 43,09%
571-600 56,20% 44,26% 44,63%
601-630 69,23% 63,57% 43,85%
631-660 66,43% 45,71% 34,97%
661-690 80,22% 33,33% 46,15%
691-720 46,48% 40,00% 65,82%
721-734 12,50% 36,36% 30,00%
Frame No.
59
Tabla 9. Aciertos en el video “Prueba 14.avi”
Figura 55. Aciertos en el video “Prueba 14.avi”
Figura 56. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba 14.avi”
Aciertos % Aciertos Aciertos % Aciertos Aciertos % Aciertos
1-30 30 19 63,33% 27 90,00% 30 100,00%
31-60 30 24 80,00% 30 100,00% 30 100,00%
61-90 30 23 76,67% 27 90,00% 28 93,33%
91-120 11 4 36,36% 11 100,00% 5 45,45%
Frame No. Manual
HOG sin memoria spx HOG con memoria spx Matriz de Covarianza spx
60
Tabla 10. Error en el video “Prueba 14.avi”
Igualmente, el video “Prueba 4.avi” fue tomado en la escena de la Figura 15 (c) en las mismas condiciones
que el video “Prueba 14.avi”. En este video, van dos personas muy juntas aproximadamente hasta el cuadro
150 y luego aparece una persona aislada. En la Tabla 11 se muestran los aciertos en el video, es posible ver
que con Matrices de Covarianza se presenta el mayor número de aciertos, seguido del algoritmo HOG con
memoria, además, este último tiene menor porcentaje de aciertos cuando van dos personas juntas y una
utiliza una ropa negra. El algoritmo HOG sin memoria es el que tiene peores resultados con un porcentaje
de acierto de 15,00%.
En la Figura 57 se muestra el promedio de peatones en cada segundo del video, en esta se observa que la
mayor diferencia con las segmentaciones manuales ocurre con un peatón en el algoritmo Matrices de
Covarianza, con el algoritmo HOG con memoria se presenta una diferencia máxima de un peatón en los
segundos 1, 2, 3 y 10, en tanto que con el algoritmo HOG sin memoria, se presenta diferencia de uno y dos
peatones en varios momentos del video.
Tabla 11. Aciertos en el video “Prueba 4.avi”
Figura 57. Aciertos en el video “Prueba 4.avi”
HOG sin memoria
spx 61 % spy 57%
HOG con memoria
spx 61 % spy 57%
Matriz de Covarianza
spx 50% spy 50%%Error %Error %Error
1-30 42,42% 20,59% 53,85%
31-60 31,43% 26,83% 55,22%
61-90 48,89% 43,75% 33,33%
91-120 76,47% 81,67% 58,33%
Frame No.
Aciertos % Aciertos Aciertos % Aciertos Aciertos % Aciertos
1-30 60 16 26,67% 19 31,67% 60 100,00%
31-60 60 15 25,00% 31 51,67% 57 95,00%
61-90 60 9 15,00% 20 33,33% 56 93,33%
91-120 47 22 46,81% 28 59,57% 42 89,36%
121-150 25 18 72,00% 25 100,00% 25 100,00%
151-180 17 12 70,59% 17 100,00% 17 100,00%
181-210 30 21 70,00% 25 83,33% 29 96,67%
211-240 30 17 56,67% 30 100,00% 30 100,00%
241-270 30 12 40,00% 23 76,67% 30 100,00%
271-300 30 10 33,33% 13 43,33% 30 100,00%
301-330 14 13 92,86% 14 100,00% 13 92,86%
HOG con memoria spx Matriz de Covarianza spx
Frame No. Manual
HOG sin memoria spx
61
En la se presentan los falsos negativos como función de los falsos positivos y en la Tabla 12 el error.
Matrices de covarianza es el algoritmo con mayor número de Falsos Positivos llegando al 68,29%, mientras
que HOG sin memoria es el que tiene menor número de Falsos Positivos con un máximo de 44,44%; en el
algoritmo con memoria se presenta un porcentaje máximo de Falsos Positivos de 70,45%, debido a la
persistencia de encontrar las ramas de un árbol como Positivos.
En el algoritmo con memoria, la cantidad de Falsos Negativos se encuentra dispersa debido a la cercanía
entre personas en algunas partes del video, no obstante, sí disminuye con respecto al algoritmo sin memoria
al igual que el error. Las falencias en estos dos últimos videos, radican en su calidad, en las condiciones de
iluminación y en los grupos de personas que aparecen.
Figura 58. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba 4.avi”
Tabla 12. Error en el video “Prueba 4.avi”
HOG sin memoria
spx 61 % spy 57%
HOG con memoria
spx 61 % spy 57%
Matriz de Covarianza
spx 50% spy 50%%Error %Error %Error
1-30 76,81% 75,32% 41,18%
31-60 76,19% 50,79% 42,42%
61-90 86,15% 68,75% 28,21%
91-120 55,10% 49,09% 33,33%
121-150 30,77% 16,67% 53,70%
151-180 33,33% 43,33% 63,04%
181-210 38,24% 30,56% 42,00%
211-240 46,88% 3,23% 42,31%
241-270 63,64% 48,89% 53,85%
271-300 73,68% 78,69% 46,43%
301-330 13,33% 68,18% 69,05%
Frame No.
62
Además, de las gráficas de aciertos es posible obtener el error cuadrático medio entre los aciertos y el conteo
manual, los datos se aproximaron a enteros ya que no puede haber fracciones de peatones, esta información
se incluye en la Tabla 13.
Tabla 13. ECM sobre los aciertos en los cinco videos
Por último, es posible darse cuenta que el algoritmo que mejores resultados presenta es HOG con memoria,
sin embargo, en los videos de la Playita de la Facultad de Ingeniería el error es considerable, teniendo en
cuenta la calidad del video ocasionada por la altura y el tamaño que tienen las personas en esas condiciones,
también, se puede ver que este algoritmo presenta errores cuando hay grupos de personas muy juntas y no
son separables; al disminuir los falsos negativos, en algunas ocasiones hay un ligero aumento de los falsos
positivos, ya que cuando hay un falso positivo que se repite por al menos tres cuadros consecutivos, al
desaparecer de la escena, el algoritmo lo busca como un Falso Negativo y lo corrige. El algoritmo sin
memoria pierde varias veces al peatón dentro de una escena. Por su parte, el algoritmo Matrices de
Covarianza tiene en varios videos un gran porcentaje de aciertos, pero esto lo logra haciendo varias
detecciones falsas alrededor del peatón, por ello, tendría su utilidad en aplicaciones en las que lo más
importante sea detectar las personas sin importar que haya detecciones falsas, por ejemplo para abrir una
puerta cuando alguien vaya a pasar. Además, el algoritmo Matrices de Covarianza presenta mejores
resultados en aciertos en los videos de la Playita de la Facultad de Ingeniería, ya que es un algoritmo pensado
para trabajar en videos con vista horizontal y tomando a la persona de frente o de espalda, donde se puedan
llegar a segmentar partes del cuerpo.
6.3. Comportamiento de Personas
Debido a que los 22 videos de prueba tomados inicialmente tienen solamente una persona corriendo y el
resto caminando, se tomaron 5 videos más utilizando actores, en los cuales hay personas corriendo y quietas.
En algunos videos se seleccionaron personas para inferir el comportamiento, los resultados obtenidos se
incluyen en la Tabla 14, donde el número de Cuadro corresponde al momento en que se detuvo el video, el
número de Persona es la persona que se siguió y la velocidad es la estimada que usa el sistema para calcular
el comportamiento. Es posible ver que en dos casos la persona no se encuentra, en el video “Prueba 9.avi”
ocurre porque una vez se selecciona la persona a seguir, esta se pierde al pasar detrás de otra y no es posible
dar su comportamiento. En el video “Prueba 14.avi” que fue tomado en la Playita de Ingeniería, el número
de falsos negativos es alto y el video tiene alta distorsión, razón por la cual para una misma persona el error
cuadrático medio aumenta, por estas razones no es posible encontrar a la persona nuevamente ni calcular su
velocidad. Por otra parte, en el video “Prueba c5.avi” hay una persona corriendo, al utilizar memoria se
corrige un alto número de falsos negativos, sin embargo, la posición de corrección no es exactamente la de
la persona y por ello aparenta moverse más lento de lo que sucede. En los demás videos las predicciones
son adecuadas.
VideoHOG sin
memoria
HOG con
memoria
Matrices de
Covarianza
Prueba 3.avi 1 0 1
Prueba 4.avi 1 0 0
Prueba 5.avi 2 1 1
Prueba 14.avi 0 0 0
Prueba 16.avi 0 0 0
63
Tabla 14. Comportamiento de las Personas en Algunos Videos
Con lo anterior es posible darse cuenta que sí es factible extraer información relacionada con el
comportamiento de las personas, sin embargo, depende del funcionamiento del algoritmo de segmentación
al no tener un algoritmo de seguimiento independiente de la segmentación (Como el que plantea [14]).
Video Frame Persona
Velocidad
(m/s) Estado Sistema Estado Real
Prueba 2.avi 41 1 1,82 Corriendo Corriendo
Prueba 3.avi 28 2 0,91 Caminando Caminando
Prueba 5.avi 249 1 0,8 Caminando Caminando
Prueba 5.avi 460 3 1,1 Caminando Caminando
Prueba 7.avi 25 2 1,04 Caminando Caminando
Prueba 9.avi 44 1 0,8 Caminando Caminando
Prueba 9.avi 90 1 NO No lo encontró Caminando
Prueba 9.avi 125 1 1,2 Caminando Caminando
Prueba 14.avi 8 1 1 Caminando Caminando
Prueba 14.avi 948 1 NO No lo encontró Caminando
Prueba c1.avi 24 2 0 Quieto Quieto
Prueba c2.avi 14 1 0 Quieto Quieto
Prueba c3.avi 32 1 1,82 Corriendo Corriendo
Prueba c4.avi 44 1 1,8 Corriendo Corriendo
Prueba c5.avi 14 1 1,2 Caminando Corriendo
64
7. CONCLUSIONES
Al comparar los diferentes algoritmos de segmentación implementados, se concluye que el
algoritmo que en promedio entrega mejores resultados en aciertos y en falsos negativos es HOG con
memoria, esto se logra al agregar memoria al algoritmo. No obstante, en algunos casos el porcentaje de
falsos positivos aumenta al tener detecciones incorrectas que persisten en el tiempo y al desaparecer de la
escena son consideradas por el algoritmo con memoria como falsos negativos y corregidos.
Los algoritmos HOG sin memoria y HOG con memoria implementados no están destinados a
trabajar en escenas saturadas de personas que se tapan entre sí, ya que en la mayoría de los casos el
porcentaje de la persona que se cubre llega mínimo a un 50%.
Los descriptores HOG a pesar de ser muy robustos, tienen alta dependencia en las condiciones
climáticas y de iluminación, esto afecta su desempeño al utilizarlos como descriptores de personas, ya que
estas pueden variar mucho las posiciones que adoptan así como su vestuario. En ese sentido, se evidenció
una gran dificultad para la identificación de personas en escenarios donde el color de su ropa sea similar al
del fondo, así como en momentos donde por la posición adoptada su cuerpo salga de la ventana de detección.
Una fuente de error muy importante en los algoritmos implementados se encuentra en la altura de
la cámara, ya que cuanto mayor sea, mayor es la distorsión en el video y por tal motivo la definición con
que puede distinguirse una persona es mínima.
El algoritmo Matrices de Covarianza implementado presenta en la mayoría de los videos un
porcentaje de falsos negativos bajo, sin embargo, es el que tiene mayor porcentaje de falsos positivos. Esto
quiere decir que identifica bien los peatones, pero hace múltiples detecciones de ellos al identificar partes
del cuerpo aisladas como personas, esto quiere decir que una persona se identifica al menos tres veces. De
ahí que puede ser utilizado en aplicaciones donde tener más detecciones de las necesarias no es relevante,
en cambio si lo es no hacer varias detecciones.
Al utilizar subventanas en el algoritmo Matrices de Covarianza se presenta una disminución en las
múltiples detecciones de un peatón, ya que se aumenta el número de características útiles con que se
identifica una imagen. Sin embargo, el tiempo para la obtención del descriptor es muy alto, llegando a
segmentar un video de 15 segundos en aproximadamente 12 horas.
Las detecciones fallidas en el algoritmo Matrices de Covarianza tienen su nacedero en la forma en
que está orientado, pues en trabajos previos, se utiliza cámara horizontal y con personas de frente o de
espalda [28], donde es fácil identificar partes del cuerpo, por el aumento del número de características en
una persona, de ahí la disminución de falsos negativos y el aumento de aciertos en el escenario de la Facultad
de Ingeniería.
La inclusión de características de posición del píxel para el cálculo de la Matriz de Covarianza en
ventanas y subventanas, muy a pesar de tener varianza constante, resulta muy útil para caracterizar una
imagen, ya que la información de correlación con las demás características implica información importante,
por ejemplo la correlación entre el borde y la posición.
Las características de Covarianza por si solas tienen una complejidad matemática que es muy alta,
llegando a dificultar su comprensión y muchas demostraciones matemáticas relacionadas, por todo ello, se
65
hizo evidente la dificultad para la separabilidad de las características de dos grupos (Peatones y No Peatones)
llegando a tener una semana para el entrenamiento de los clasificadores.
La factibilidad de extraer información del comportamiento de las personas se hace evidente al
utilizar el algoritmo HOG, ya que una vez detectada una persona es posible seguirla y calcular su velocidad.
Por ello, se implementó el algoritmo que se presentó en la sección 5.7, este presenta detecciones de
comportamiento acertadas en la gran mayoría de los casos, su error surge por el error en las detecciones del
algoritmo HOG sumadas a la imposibilidad de extraer la posición exacta de la persona.
De las figuras de promedio de aciertos, se pueden ver mínimos errores en los algoritmos HOG con
memoria y Matrices de Covarianza, de ahí se evidencia que estos algoritmos pueden ser utilizados de una
forma confiable en próximos trabajos.
66
8. TRABAJOS FUTUROS
Bajo la hipótesis de que la orientación del ángulo podría dar más robustez al algoritmo HOG en
cambio del cálculo de su valor absoluto en los cuadrantes III y IV, se recomienda hacer una implementación
en la que se incluya la orientación. Además se recomienda el uso de características diferenciales verticales
y horizontales para aumentar la robustez del algoritmo.
Se sugiere en próximos trabajos, evaluar otras alternativas para la normalización de los histogramas
y para su respectivo cálculo de error entre uno y otro.
Con el objeto de disminuir el porcentaje de falsos positivos en cualquier escena, se recomienda en
próximos trabajos incluir un bloque en el que se pueda de una forma sencilla detectar el fondo y el primer
plano, teniendo en cuenta que personas que estén quietas pertenecerían al fondo y por ende no se podría
obtener información de su comportamiento.
Se recomienda para trabajos futuros, buscar la forma de disminuir las múltiples detecciones
ocasionadas en el algoritmo Matrices de Covarianza, con la implementación de un algoritmo robusto de
clasificación, o bien buscando un algoritmo para pasar de varias detecciones a una detección por persona.
Debido a que ninguno de los autores explica el por qué utilizar unas u otras características en el
algoritmo Matrices de Covarianza, se recomienda realizar este análisis buscando un grupo de características
que permita mejorar significativamente el resultado del algoritmo.
Para mejorar los resultados obtenidos en lo que respecta al comportamiento de las personas, se
sugiere para trabajos futuros utilizar el algoritmo HOG con memoria implementado en este trabajo para
realizar la segmentación automática de una persona, en tanto que para obtener la velocidad, se recomienda
utilizar un algoritmo de seguimiento totalmente independiente (como el que utiliza [14]) una vez sea
segmentada la persona.
67
Bibliografía
[1]. Grupo del Banco Mundial. Disponible en
http://www.worldbank.org/depweb/spanish/modules/social/pgr/index.html. Consultado el 4 de abril de
2012.
[2]. Centro de Noticias ONU. Disponible en
http://www.un.org/spanish/News/fullstorynews.asp?newsID=22135. Consultado el 4 de abril de 2012.
[3]. United Nations Population Fund. Disponible en
http://www.unfpa.org/swp/2007/english/introduction.html. Consultado el 4 de abril de 2012.
[4]. Sandon and Harvey, “Human factors for Engineers”. London. IE.
[5]. N. Dalal and B. Triggs. “Finding People in Images and Videos”. Tesis Doctoral, (Julio 2006).
[6]. N. Dalal and B. Triggs. “Histograms of Oriented Gradients for Human Detection”. Conference on
Computer Vision and Pattern Recognition, (junio de 2005).
[7]. G. Xu, X. Wu, L. Liu, Z. Wu. “Real-time pedestrian detection based on edge factor and Histogram
of Oriented Gradient”. Conference on Information and Automation (ICIA), (junio de 2011).
[8]. A. Broggi, M. Bertozzi, A. Fascioli, and M. Sechi, “Shape-based pedestrian detection”, Proceedings
of the IEEE Intelligent Vehicles Symposium, (octubre de 2000).
[9]. O. Tuzel, F. Porikli, P. Meer. “Human Detection via Classification on Riemannian Manifolds”.
Conference on Computer Vision and Pattern Recognition, (junio de 2007).
[10]. O. Tuzel, F. Porikli, P. Meer. “Pedestrial Detection via Classification on Riemannian Manifolds”.
IEEE Transactions on Pattern Analysis and Machine Intelligence, (octubre de 2008).
[11]. O.Tuzel, F. Porikli, P. Meer. “Region Covariance: A Fast Descriptor for Detection and
Classification”.
[12]. S. Paisitkriangkrai, C, Shen, and J. Zhang. “Fast Pedestrian Detection Using a Cascade of Boosted
Covariance Features”. IEEE Transactions on Circuits and Systems for Video Technology. (agosto de 2008).
[13]. D. M. Gavrila. “The Visual Analysis of Human Movement: A Survey”. Computer Vision and Image
Understanding, (enero de 1999).
[14]. E. Ávila, J. Quiroga, A. Forero. “Seguimiento de Personas Basado en los Descriptores HOG”. XVI
Simposio de tratamiento de señales, imágenes y visión artificial. (2011).
[15]. R. Gonzalez, R. Woods. Digital Image Processing Using Matlab. Ed Person Education New Jerssy
2004.
[16]. W. T. Freeman and M. Roth. “Orientation histograms for hand gesture recognition”. Workshop on
Automatic Face and Gesture- Recognition. (junio de 1995).
68
[17]. D. G. Lowe. “Distinctive image features from scale-invariant keypoints”. International Journal of
Computer Vision. (enero de 2004).
[18]. S. Belongie, J. Malik, and J. Puzicha. “Matching shapes”. Conference on Computer Vision. (julio
de 2001).
[19]. G. Bradski y Adrian Kaehler. “Learning OpenCV: Computer Vision with the OpenCV Library”.
O’Reilly Media. (septiembre de 2008).
[20]. HISPALINUX. Disponible en http://www.hispalinux.es/SoftwareLibre. Consultado el 23 de abril
de 2013.
[21]. L. Jiménez, P. Rengifo. “Al Interior de una Máquina de Soporte Vectorial”. Revista de Ciencias
Universidad del Valle. (octubre de 2010).
[22]. P.H. Chen, C.J. Lin, B. Schölkopf. “A Tutorial on ν-Support Vector Machines”. Applied Stochastic
Models in Business and Industry. (2005).
[23]. Centro de Aplicaciones de Tecnologías de Avanzada. Disponible en:
http://www.cenatav.co.cu/doc/RTecnicos/RT%20SerieAzul_041web.pdf. Consultado el 15 de marzo de
2013.
[24]. A.M. Ocaña. “Contador de Flujo de Personas Con La Cámara RGB-D Kinect”. Trabajo de Pregrado.
[25]. INRIA Person Dataset. Disponible en http://pascal.inrialpes.fr/data/human/. Consultado el 20 de
octubre de 2012.
[26]. MIT Pedestrian Data. Disponible en http://cbcl.mit.edu/software-datasets/PedestrianData.html.
Consultada el 20 de octubre de 2012.
[27]. OpenCVJaveriana. Disponible en http://opencvjaveriana.wikispaces.com/SVM. Consultado el 17
de febrero de 2013.
[28]. Fast Pedestrian Detection Using a Cascade of Boosted Covariance Features. Disponible en
http://www.youtube.com/watch?v=y9iz3Dd2JRM. Consultado el 10 de marzo de 2013.
69
ANEXOS