implementación de un algoritmo para el reconocimiento y ...figura 13. diagrama de bloques del...

79
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

Upload: others

Post on 13-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 2: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 3: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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”

Page 4: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 5: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 6: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 7: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

Í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

Page 8: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 9: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

Figura 58. Porcentaje de Falsos Negativos vs Porcentaje de Falsos Positivos en el video “Prueba

4.avi” ............................................................................................................................................. 61

Page 10: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

Í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

Page 11: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 12: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 13: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 14: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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]

Page 15: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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]

Page 16: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

𝐼𝑅 𝑚, 𝑛 𝐼𝐺 𝑚, 𝑛 𝐼𝐵 𝑚, 𝑛

𝑚

𝑛

Page 17: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 18: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 19: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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).

Page 20: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 21: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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”

Page 22: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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].

Page 23: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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 𝑒𝑡.

Page 24: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 25: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 26: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 27: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 28: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 29: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 30: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 31: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 32: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 33: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 34: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 35: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

25

Figura 22. Cuadros Segmentados por el Algoritmo sin memoria.

Page 36: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 37: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

27

Figura 24. Descriptor para dos peatones al azar de la Base de Datos y un Negativo al azar de Ejemplos Difíciles

Page 38: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 39: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 40: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 41: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 42: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 43: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 44: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 45: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 46: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 47: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

37

Figura 31. Segmentaciones realizadas con las variantes del Algoritmo Matrices de Covarianza sin Subventana

Page 48: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 49: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 50: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 51: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 52: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 53: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 54: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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).

Page 55: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 56: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 57: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 58: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 59: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 60: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 61: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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%

Page 62: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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%

Page 63: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 64: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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%

Page 65: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 66: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 67: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 68: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 69: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 70: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 71: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 72: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 73: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 74: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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

Page 75: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 76: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 77: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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).

Page 78: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

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.

Page 79: Implementación de un algoritmo para el reconocimiento y ...Figura 13. Diagrama de Bloques del Algoritmo de Matrices de Covarianza incluyendo subventanas..... 18 Figura 14. Diagrama

69

ANEXOS