TG - 1816 - Deteccion y Seguimiento de Personas - Montoya
TG - 1816 - Deteccion y Seguimiento de Personas - Montoya
TG - 1816 - Deteccion y Seguimiento de Personas - Montoya
Video
Director(a):
M.Sc. Carlos Andrés Wilches Pérez
Lı́nea de Investigación:
Procesamiento de Imágenes y Video
Pontificia Universidad Javeriana
Facultad de Ingenierı́a, Departamento de Electrónica
Bogotá D.C, Colombia
2018
Contenido
1 Introducción 2
2 Marco Teórico 4
2.1 Inteligencia Artificial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1 Redes Neuronales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Visión por computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Detección de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 You Only Look Once (YOLO) . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 Single Shot Multibox (SSD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.3 OpenPose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.4 Medidas de Evaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Seguimiento o tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.1 Método BOOSTING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4.2 Multiple Instance Learning (MIL) . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4.3 Kernelized Correlation Filter (KCF) . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.4 Tracking, Learning, Detection (TLD) . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.5 Median Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.6 Minimum Output Sum of Squared Error (MOSSE) . . . . . . . . . . . . . . . 13
2.4.7 Correlation Filter with Channel and Spatial Realiability (CSRT) . . . . . . . 14
2.4.8 Medidas de Evaluación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Desarrollo 19
4.1 Base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2 Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 Seguimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.4 Algoritmo de integración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.5 Interfaz gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
iii
Contenido
5 Protocolo de Pruebas 27
5.1 Evaluación de detectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 Evaluación de trackers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3 Evaluación del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3.1 Error relativo de conteo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3.2 Error de sobreconteo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3.3 Error de subconteo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3.4 Error relativo de flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6 Análisis de Resultados 31
6.1 Detección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.2 Seguimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3 Conteo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
7 Conclusiones y Recomendaciones 40
7.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7.2 Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
.1 Anexo 1: Consentimientos informados . . . . . . . . . . . . . . . . . . . . . . . . . . 42
.2 Anexo 2: Código del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
.3 Anexo 3: Base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Bibliografı́a 43
1
1 Introducción
Los videos de cámaras de seguridad, además de contribuir a la seguridad de los lugares, brindan
información de interés en muchos otros campos como monitoreo de pacientes, afluencia de personas,
transporte, etc [1]. Estas cámaras pueden contar con la automatización de procesos de monitoreo
que permiten el reconocimiento de objetos, rostros, placas de vehı́culos, detección de movimiento,
paquetes abandonados, control de vehı́culos, control de tráfico, seguimiento de individuos, aglome-
ración de multitudes, conteo de personas, patrones de comportamiento, entre otras [2]. En el caso
particular, la Universidad Javeriana cuenta con un sistema de seguridad con personal de seguridad
interna y de vigilancia, además de redes de cámaras de seguridad por el campus [3]. Sin embargo,
no se realiza ningún tipo de procesamiento automático sobre las imágenes. Esto trae consigo que
no se cuente con información estadı́stica del número de personas que ingresan en un edificio o la
cantidad de personas circulan por la universidad.
Esta falta de información sobre la afluencia de personas puede ser un problema significativo en
distintas situaciones como en rescate, en mercadeo y en transporte masivo. La deficiencia en es-
tructuras donde se presenta afluencia masiva de público puede generar tragedias debido al sobrecupo
y suelen deberse a errores de diseño [4]. Además, en algunas ocasiones luego de presentarse la tra-
gedia se desconoce la cantidad de personas dentro del lugar para ser rescatadas, como fue el caso
del desplome de un edificio en construcción de seis pisos en Cartagena, Colombia en abril del 2017,
donde solo se contaba con las estimaciones de la Cruz Roja sobre el número de obreros atrapados
[5].
Por otro lado, los operadores de centros comerciales y dueños de empresas que realizan publicidad
dentro de éstos, tienen como objetivo principal atraer cada vez a más personas al lugar. Para esto
deben hacer uso de diversas estrategias de mercadeo y evaluar estas estrategias con respecto a la
cantidad de personas que ingresan al lugar. Ası́ se verifican los lugares más populares de visita y
su valor de arrendamiento, también se analiza la distribución óptima para los visitantes [6].
Finalmente, la empresa de transporte masivo Transmilenio S.A genera reportes de estadı́sticas
mensuales en los cuales se detallan el uso del sistema por zonas, horas y evoluciones en el tiempo
de la demanda [7]. Sin embargo, aquı́ no reflejan el verdadero estado de las estaciones ya que los
datos son aportados por los buses y la subgerencia económica. Datos externos, como la cantidad de
colados, que en 2017 eran cerca de 16000 [8], son extraı́dos por vigilantes de Transmilenio o policı́as
en ciertas estaciones y en la mayorı́a de los casos, Transmilenio no tiene cifras concretas al respecto
[8].
En los últimos diez años se ha triplicado la cantidad de artı́culos relacionados para mejorar la
estimación del número de personas en videos (de 52 a 181) y solo en el 2017 se han publicado 20
artı́culos. Además en la Universidad Javeriana se han presentado varios trabajos de grado con fines
2
similares.
El objetivo de este proyecto es desarrollar un sistema que permite contar personas en un video,
a partir de algoritmos de detección de personas y de tracking. El contenido de este documento se
divide en introducción en el primer capı́tulo, marco teórico en el segundo, el objetivo del proyecto
en donde se describe la descripción del sistema, sus especificaciones y alcances en el tercer capı́tulo.
En el cuarto, desarrollo, se muestran los procedimientos de diseño seguidos para obtener cada uno
de los objetivos planteados. En el quinto capı́tulo, se describe el protocolo de pruebas para evaluar
cada parte del sistema y en su totalidad. En el sexto capı́tulo se muestran los resultados y se realiza
un análisis de ellos. Finalmente, en el séptimo, se concluye y se muestran recomendaciones para
continuar con el trabajo a futuro.
3
2 Marco Teórico
Aprendizaje supervisado
Donde existen variables de entrada y una variable de salida y se hace uso de un algoritmo
que aprende la función de forma que asigne las entradas a la salida. La meta es aproximar la
función de tal manera que al tener nuevos datos de entrada, sea posible predecir las variables
de salida para esos datos.
Tı́picamente se realiza en el contexto de clasificación y de regresión. Algunos algoritmos co-
munes incluyen Regresión logı́stica, Clasificación Bayesiana, Support Vector Machines(SVM),
Redes Neuronales y Bosques Aleatorios. La salida correcta es determinada enteramente por
los datos de entrenamiento [9, 10].
Aprendizaje no supervisado
Donde solo se tienen datos de entrada sin tener varibles de salida que les correspondan. Se
desea aprender la estructura inherente de los datos sin usar etiquetas provistas explı́citamen-
te. Las tareas más comunes son clustering o agrupamiento, aprendizaje de caracterı́sticas y
estimación de densidad. Entre los algoritmos comunes se encuentran K-means Clustering,
Principal Component Analysis (PCA) y Autoencoders [9, 10].
4
2.2 Visión por computador
5
2 Marco Teórico
los bordes de la celda. El ancho y alto (w,h) son predichos a la imagen en su totalidad. La confianza
representa la intersección entre la caja predicha y la caja ground truth. Cada celda predice una
probabilidad condicional de clase. Estas probabilidades están condicionadas a la celda que contiene
el objeto. Se multiplica la probabilidad condicional de clase y las predicciones de confianza dando
puntajes de confianza de clase para cada caja que dicen tanto la probabilidad de una clase en la
caja como qué tan bien la caja predicha se ajusta al objeto [16].
YOLO corre a 45 cuadros por segundo (FPS) en una GPU Titan X y una versión más rápida a
más de 150 FPS. Alcanza más del doble del Mean Average Precision (mAP) de otros sistemas de
tiempo real. YOLO ve la imagen completa en vez de tener una ventana que corre o técnicas por
regiones. Su principal error recide en localizaciones incorrectas debido a una restricción espacial
en la predicción de esta manera el modelo tiene problemas con objetos pequeños que aparecen en
grupo.
6
2.3 Detección de objetos
forma del objeto. Adicionalmente, la red combina predicciones de varios mapas de caracterı́sticas
con diferentes resoluciones para manejar objetos de diferentes tamaños. Se eliminan las propuestas
de bounding box y el proceso subsecuente de re-muestreo de caracterı́sticas.
Figura 2-2: El enfoque de SSD vs. el enfoque clásico de ventanas que se desplazan. [17]
Para lograr una alta precisión se realizan predicciones en diferentes escalas en mapas de carac-
terı́sticas y se separan las predicciones explı́citamente por proporción de aspecto [18].
2.3.3. OpenPose
OpenPose es un sistema para detectar eficientemente las poses 2D de múltiples personas en una
imagen. Usa representación no paramétrica Part Affinity Fields (PAFS) para aprender a asociar
partes del cuerpo con personas en la imagen. Es el primer sistema de tiempo real de varias personas
que detecta puntos importantes, articulaciones del cuerpo humano, de las manos y de la cara en
imágenes.
La arquitectura codifica un contexto global, permitiendo un paso de bottom up parsing que man-
tiene una alta precisión mientras logra un desempeño en tiempo real, sin importar el número de
personas en la imagen. La arquitectura está diseñada para aprender las ubicaciones de partes y su
asociación por medio de dos ramas del mismo proceso de predicción secuencial.
El sistema toma como entrada una imagen y produce como salida las ubicaciones 2D de los puntos
anatómicos para cada persona en la imagen. Primero, una red neuronal feed-forward simultánea-
mente predice un conjunto de mapas de confiaza S para ubicaciones de partes del cuerpo y un
conjunto de campos vectoriales 2D de afinidades de las partes L, que representan el grado de aso-
ciación entre partes. Esto se hace por medio de PAFs donde se codifica la ubicación y orientación
de extremidades en el dominio de la imagen. El conjunto S tiene J mapas de confianza, uno por
parte. El conjunto L tiene C campos vectoriales, uno por extremidad. Finalmente, los mapas de
confianza y los campos de afinidad son analizados sintácticamente (parsing) por inferencia para
sacar los puntos 2D de todas las personas en la imagen [19]. Ver figura 2-3.
7
2 Marco Teórico
Para evaluar los detectores usados, es necesario evaluar que tan bien determina que un objeto esté
en la imagen (clasificación) ası́ como que tan bien localiza el objeto (localización) [20]. Esto se hace
uso de la herramienta IOU. En la figura 2-4 se observa el método IOU.
Lo que se pretende es determinar si la detección fue positiva o si no hubo detección, al comparar con
el ground truth. Por tanto, se realiza una relación entre las áreas de los bounding boxes predichos y
los del ground truth. Este valor estará entre 0 y y, siendo 0 dos bounding boxes sin sobrelape alguno,
y 1 un sobrelape completo entre los dos bounding boxes, ver la figura 2-5.
8
2.3 Detección de objetos
También es necesario determinar que tan bueno es el detector no encontrando objetos no interesan-
tes. Es posible obtener la cantidad de objetos que son verdaderos positivos, falsos positivos o falsos
negativos, ya que el IOU los determina. Para evaluar el desempeño de los algoritmos de detección
se encuentran los valores de precisión ecuación (2-1) y recall (ver ecuación 2-2).
mAP (mean Average Precision) es un métrica usada para medir la desempeño de detectores de
objetos. Es el promedio de las precisiones máximas en diferentes valores de recall. Precisión es la
relación de detección positiva contra todas las detecciones, es decir, el porcentaje de las predicciones
que son correctas. Si se tiene una precisión cercana a 1 significa que hay una alta probabilidad de
que lo que sea que el clasificador predice como una detección positiva es en verdad una predicción
correcta. Recall mide que tan bien se encuentran todos los positivos, es decir el porcentaje de
correctos entre todos los ground truths [23].
Si se tiene un recall cercano a 1 significa que casi todos los objetos que están en la base de datos serán
encontrados por el modelo. Es importante notar que hay una relación inversa entre la precisión y el
recall y son dependientes del umbral de detección que se tiene. Para calcular la precisión promedio
(Average Precision AP), para una clase en especifico, la curva precision-recall se realiza variando
el umbral del detector, que determina lo que se cuenta como una detección positiva para esa clase.
El mAP es tomar el valor promedio de la precisión en todos los valores de recall para todas las
clases, variando el umbral de IOU [24]. (Ver figura 2-6).
Figura 2-6: Ejemplo de curva precision - recall (mAP) para diferentes umbrales IOU [24]
9
2 Marco Teórico
BOOSTING es un tracker de objetos de tiempo real basado en un versión online del algoritmo Ada-
Boost. La idea principal es formular el problema de seguimiento como una tarea de clasificación
binaria y lograr robustez actualizando continuamente el clasificador actual del objeto de interés.
Esto se muestra en la figura 2-8. El clasificador usa el fondo que rodea el objeto como ejemplos
negativos en el paso de actualización [26].
Dada una posición inicial de un objeto en el tiempo t(figura 2-8 (a)), el clasificador se evalúa en
muchas posibles posiciones en una región de búsqueda en los alrededores de la imagen en el cuadro
t+1. El mapa de confianza (figura 2-8 (c))alcanzado se analiza para estimar la posición más pro-
bable y finalmente el tracker se actualiza (figura 2-8 (d)) [27].
10
2.4 Seguimiento o tracking
El algoritmo de MIL entrena un clasificador para separar un objeto de interés del fondo. Su pro-
puesta consiste en usar un modelo de apariencia basado en Multiple Instance Learning (MIL) para
seguimiento de objetos [26].
El sistema de seguimiento implementado se ilustra en la figura 2-9. El sistema contiene tres compo-
nentes: representación de la imagen, modelo de apariencia y modelo de movimiento. Como entrada
al sistema se tiene un cuadro de video k y se segmenta un conjunto de regiones de la imagen. La
representación de imagen consiste en un conjunto de caracterı́sticas Haar que son calculadas para
cada región de la imagen. El modelo de apariencia está compuesto por un clasificador discrimina-
tivo que es capaz de retornar una probabilidad de la presencia del objeto de interés en el cuadro.
Seguido de esto, se actualiza la ubicación del tracker. Para cada nuevo frame se corta un conjunto
de pedazos de imagen que están dentro de un radio de búsqueda de la ubicación actual del tracker
y se calcula la probabilidad para cada conjunto de pedazos. Luego se actualiza la ubicación del
tracker [28].
11
2 Marco Teórico
12
2.4 Seguimiento o tracking
re-inicializar el tracker, minimizando las fallas en seguimiento [30]. Este tracker es adecuado para
movimientos lentos y predecibles cuando el objeto es visible en toda la secuencia. Internamente,
el tracker sigue al objeto en direcciones hacia adelante y hacia atrás en el tiempo y mide las
discrepancias entre esas dos trayectorias (Ver figura 2.12(a)). Al minimizar ese error, le permite
detectar fallos de seguimiento y seleccionar trayectorias de confianza en secuencias de video [31].
El tracker acepta un par de imágenes It , It+1 y un bounding box βt y saca el bounding box βt+1 .
Un conjunto de puntos se inicializa en una malla rectangular dentro del bounding box βt . Estos
puntos son seguidos por el tracker de Lucas-Kanade generando un flujo de movimiento entre It , y
It+1 . Ver figura 2.12(b). La calidad de las predicciones de los puntos se estima y se asigna un error
a cada punto. 50 % de las peores predicciones son filtradas afuera. Las predicciones restantes son
usadas para estimar el desplazamiento de la totalidad del bounding box [31].
13
2 Marco Teórico
14
2.4 Seguimiento o tracking
v
u n
uX
di = |di | = t [(pi − xi )2 + (qi − yi )2 ] (2-3)
i=1
di
RM SE = (2-4)
n
15
3 Objetivo del Proyecto
Definir un protocolo de pruebas y evaluar el sistema desarrollado con videos con diferentes
flujos de personas (alto, medio, bajo).
Diseñar e implementar una interfaz gráfica que muestre los resultados del conteo para los
diferentes videos.
16
3.4 Especificaciones
realiza una correlación para determinar que la persona se encuentra en los dos cuadros y que una
detección en un cuadro corresponde a otra detección en otro cuadro. A partir de esto se determina
si la detección es consistente en ciertos cuadros para aumentar el conteo total de personas que han
pasado por la escena. Ver figura 3-1.
3.4. Especificaciones
3.4.1. Hardware
El sistema es desarrollado en un servidor de la Pontificia Universidad Javeriana de 48 núcleos y 8
tarjetas gráficas (GPU) a manera de mejorar el tiempo de cómputo.
3.4.2. Software
Las dependencias necesarias para el desarrollo del sistema de detección y seguimiento son:
OpenCV 2.13
Tensorflow
CUDA 8
Cmake
Caffe
17
3 Objetivo del Proyecto
cuDNN 5.1
PyQt 4
18
4 Desarrollo
Los videos tienen una velocidad de 30 FPS sin embargo, la captura de movimiento se realizó a
5 FPS, es decir que cada 5 cuadros es donde hay cambio en movimiento, los demás cuadros son
iguales. Cada cuadro tiene un tamaño de 1080 x 1920 pı́xeles. Debido a que los videos fueron cap-
turados con una cámara tipo domo, es posible observar una distorsión en la imagen. Sin embargo,
la distorsión no afecta ni las detecciones ni el seguimiento, por lo que no fue necesario realizar una
corrección.
Los 10 videos son el video base, 3 videos de prueba y otros 6 videos de evaluación en donde se
encuentran distintos flujos de personas: 3 videos de flujo bajo, 3 videos de flujo medio y 3 videos
de flujo alto. Flujo bajo se refiere a que no más de 2 personas pasan por el cuadro al tiempo,
flujo medio se refiere que pasan por el cuadro entre 3 y 4 personas al tiempo y flujo alto es donde
19
4 Desarrollo
confluyen más de 4 personas. En todos los videos existen oclusiones parciales y totales entre las
personas. El video base tiene en cuenta estas situaciones.
Se debe determinar la zona de interés o región de interés (ROI) en donde se realizará el conteo de
las personas, de manera que sea posible conocer tanto su entrada como su salida de la escena. Esta
región se escoge como el espacio libre del pasillo en la escena como se observa en la figura 4-1. Se
trata de evitar la zona de las escaleras como región de interés debido a que la iluminación en esta
zona es problemática y genera problemas tanto en la detección como en el seguimiento.
4.2. Detección
Primero, se procedió a realizar las etiquetas de las detecciones, también llamado ground truth, de
manera que sea posible comparar los resultados de los detectores, evaluarlos y escoger el que tiene
mejor rendimiento. Para esto, se utilizó un programa de etiquetado en Python desarrollado en la
comunidad GitHub, llamado BBox Label Tool [37], ver figura 4-2.
Este programa permite definir las coordenadas de una caja o bounding box en donde se encuentra la
totalidad del objeto de interés. Estas coordenadas son guardadas en un archivo de texto en donde
se encuentran la cantidad de objetos etiquetados, sus coordenadas y su etiqueta. Este proceso se
realiza para cada frame del video base y de los videos de prueba. Los videos en cuestión tienen 30
FPS sin embargo la captura de movimiento de video a tan solo 5 FPS, por tanto la información de
las etiquetas y las coordenadas de los objetos detectados se realizaron cada 5 cuadros ya que en los
20
4.2 Detección
(a) Ground truth (b) Predicción de un cuadro del video prueba por YO-
LO
(c) Predicción de un cuadro del video prueba por SSD (d) Predicción de un cuadro del video prueba por Open-
Pose
El siguiente paso es utilizar los tres algoritmos de detección para realizar las detecciones de las
personas en los mismos cuadros en donde se encontraron los bounding boxes del ground truth y
compararlos. Los detectores a usar son YOLO (You Only Look Once) [16], SSD (Single Shot
MultiBox Detector) [18] y OpenPose [19]. Tanto YOLO como SSD al recibir una imagen o video de
entrada, generan las detecciones y dibujan los bounding boxes predichos en el cuadro original (ver
Figuras 4.3(b) y 4.3(c)), además es posible sacar las coordenadas de esos bounding boxes en un
archivo texto. Por otro lado, OpenPose no es un detector de objetos sino un algoritmo que detecta
la posición de las personas, es decir que se obtienen las detecciones de diferentes partes del cuerpo
y no un bounding box, ver figura 4.4(a). Se obtiene un archivo JSON en donde se encuentran las
coordenadas de puntos del cuerpo llamados keypoints. Estos puntos son 25 en donde se incluyen:
hombro izquierdo y derecho, codo izquierdo y derecho, rodilla izquierda y derecha, ojo izquierdo y
derecho, entre otros. A partir de estos puntos, se realizó un código en Python donde se obtienen los
bounding boxes de las personas detectadas. El bounding box se genera a partir de las coordenadas
encontradas que permiten delimitar a las personas: el valor x más pequeño (lı́mite superior), el valor
x más grande (lı́mite inferior), el valor y más pequeño (lı́mite por la izquierda) y el valor y más
grande (lı́mite por la derecha). El resultado del bounding box por este procedimiento se muestra en
21
4 Desarrollo
la figura 4.4(b).
(a) Detección de los keypoints (b) Bounding boxes de las personas detectadas
4.3. Seguimiento
Lo primero a realizar es el ground truth de las trayectorias de las personas, de manera que sea
posible compararlo con las trayectorias que realicen los trackers y escoger el que provee un mejor
seguimiento. Para esto, se encuentra el punto central de los bounding boxes del ground truth de las
detecciones y se pinta la trayectoria en los cuadros donde aparece la persona. Estas trayectorias se
muestran en la figura 4-5. Seguido de esto, se obtienen las trayectorias de los trackers siguiendo
las personas en el video de prueba. Se pintan las dos trayectorias y se evalúan usando la distancia
euclidiana entre los puntos del ground truth y los generados por los trackers. Esto se profundiza
más en el protocolo de pruebas. Los trackers a probar son Boosting, MIL, KCF, TLD, Median
Flow, MOSSE y CSRT, todos implementados en OpenCV 3 con Python 3.
A pesar de que es posible realizar la comparación de los trackers utilizando la misma medida de
evaluación de los detectores, IOU, para esta aplicación en particular, no es de vital importancia que
sea localizada la persona de manera precisa, ya que lo necesario es que el tracker sea capaz de seguir
el objeto de interés sin perderse y contarlo. Además realizando la evaluación por IOU generarı́a un
cambio importante en el tamaño de los bounding boxes lo que presentarı́a una inconsistencia entre
la comparación con el ground truth.
22
4.4 Algoritmo de integración
23
4 Desarrollo
por ende el tracker se actualiza con el bounding box de la detección de YOLO. Si la detección falla,
es decir no detecta a la persona en el cuadro, el tracker sigue a la persona con el bounding box de
la última detección guardada. Si el IOU no es mayor que 0.25, quiere decir que las detecciones no
corresponden con los trackers y se puede deber a que exista una nueva persona en el cuadro o que
no hubo detección para una persona ya seguida antes. Entonces es necesario crear un tracker si
la persona es nueva, o actualizar el tracker que no tuvo detección en el cuadro. Por otro lado, se
deben eliminar trackers por diferentes razones: El centro del bounding box se salió de la zona de
interés que realmente es una máscara booleana, el tracker está repetido, es decir, que hay más de un
tracker siguiendo a una persona y si el tracker no ha sido actualizado con una detección de YOLO
en mucho tiempo, lo que quiere decir que hubo una falso positivo en la detección. Para realizar el
conteo de personas se debe presentar un seguimiento consistente en el video, ya que esto previene
el sobreconteo por falsos positivos que pueda presentar YOLO. Además la cantidad de trackers
presentes en la escena marca la cantidad de personas en la escena, ya que cada detección de una
persona nueva inicializa un nuevo tracker. Este algoritmo se puede ver representado mediante un
diagrama de flujo en la figura 4.4. Teniendo el conteo de personas en el video, se puede encontrar
el valor de flujo de personas, diviendo este conteo en la duración del video.
Con el propósito de evaluar el sistema, es necesario generar el ground truth para compararlo contra
los resultados del sistema. Este ground truth se realiza manualmente, contando la cantidad de
personas que pasan por la zona de interés en todos los videos de la base de datos.
24
4.5 Interfaz gráfica
25
4 Desarrollo
26
5 Protocolo de Pruebas
Para evaluar correctamente todas las partes del sistema es necesario generar pruebas para los
algoritmos de detección, para los algoritmos de tracking y para el sistema integrado, comparando
sus resultados contra una referencia, el ground truth, realizado manualmente. Para la comparación
en la detección y el seguimiento se obtiene el ground truth del video base. Para evaluar el sistema
completo, se hace uso de los nueve videos en la base de datos.
Al tener estas coordenadas es posible calcular el IOU entre un bounding box del ground truth
y el de una detección. Se obtienen los valores de verdaderos positivos, si el valor IOU entre un
bounding box de la detección y el del ground truth es mayor a 0.5, falsos positivos, cuando no hubo
27
5 Protocolo de Pruebas
correspondencia entre una detección y todos los ground truth, y falsos negativos, cuando no hubo
correspondencia entre todos los ground truth y todos los objetos detectados. Este proceso se observa
en el Algoritmo 1 como pseudocódigo.
Para obtener la curva precision-recall para cada detector se debe cambiar el umbral de detección del
algoritmo y cambiando el umbral IOU que define cuando se considera hay un verdadero positivo.
De igual manera, se calcula el mAP para determinar que detector usar. Se hace uso del código
presentado en [24] en el cual un script de Python calcula el mAP para una clase si se tienen los
bounding boxes del ground truth y de las detecciones. Además Los resultados se muestran en la
siguiente sección.
28
5.3 Evaluación del sistema
di
RM SE = (5-2)
n
29
5 Protocolo de Pruebas
|Fgt − Fsis |
ef lujo = (5-7)
Fgt
30
6 Análisis de Resultados
6.1. Detección
Para garantizar el uso del mejor algoritmo de detección de objetos en esta aplicación particular,
se debe evaluar los detectores y compararlos para encontrar el que da menor error. Para eso, se
debe decidir que se considera como una detección exitosa y una que no. Los falsos positivos, falsos
negativos y verdaderos positivos dan información acerca de esto. Se considera una buena detección
si el IOU de la detección contra el ground truth es mayor a 0.5. Esto se muestra en la figura 6-1.
Figura 6-1: Ejemplo en donde hay una buena detección. Cuadro verde: ground truth, cuadro rojo:
detección
También se debe determinar cuales son los errores de los detectores. Estos a veces no detectan
un objeto que se debı́a detectar o detectan algo donde no se debe detectar nada (falsos negativos
y falsos positivos). En los resultados obtenidos en el video de prueba, en particular, en los 100
cuadros escogidos aleatoriamente, los algoritmos de YOLO y SSD no presentan falsos positivos pero
OpenPose si. Los errores de falsos positivos de OpenPose son debido a que el algoritmo detecta las
partes corporales de las personas no en conjunto y cuando hay oclusión o poca visibilidad como
en la figura 6-2 se presentan errores detectando diferentes personas incluso cuando solo hay una.
31
6 Análisis de Resultados
Además, también existe el problema de que a veces el algoritmo detecta partes donde no las hay
por efectos de luz.
(c) SSD
32
6.1 Detección
Los otros errores de falsos negativos, es decir, las personas que el detector no detectó y dejó pasar,
los comenten todos los detectores, como se muestra para OpenPose en la figura 6.3(a), para YOLO
en la figura 6.3(b) y para SSD en la figura 6.3(c). Los cuadros mostrados son diferentes debido
a que los detectores fallan en diferentes momentos. En las imágenes el marco verde representa los
bounding boxes del ground truth y el rojo representa los bounding boxes de los detectores.
Para cuantificar estos resultados se realizan las curvas de precision-recall para cada detector y ver
su comportamiento al aumentar el umbral de detección. Estas curvas son utilizadas para determinar
el mejor umbral del detector que permite un valor alto tanto de precisión como de recall.
Para realizar la evaluación de los detectores, se evalúa su precisión para clasificar los objetos de
interés obteniendo medidas tales como recall y precisión. Para evaluar su precisión en localizar los
objetos, es decir, que tan cerca del bounding box del ground truth esta la caja predicha, se utiliza el
IOU. Estas medidas se realizan en 100 frames del video de prueba, de manera que existan cuadros
en todo el video. Los resultados para los tres detectores se muestran en la tabla 6-1. Tp son los
verdaderos positivos, es decir, las detecciones que corresponden a ground truth y que su sobrelapa-
miento es mayor a 0.5 en IOU. Fp son los falsos positivos o las detecciones que no corresponden a
ground truth, es decir, cuando el detector detecta una persona donde no la hay. Fn son los falsos
negativos que corresponden a personas que no fueron detectadas. Precisión es una medida de los
verdaderos positivos en todo el rango de detecciones. Recall es la medida de los verdaderos posi-
tivos en todo el rango de ground truth. Finalmente, IOU es la medida del sobrelapamiento de los
bounding boxes entre el ground truth y las detecciones.
Los valores resaltados en la tabla indican el mejor resultado por cada categorı́a. YOLO y SSD son
mejores que OpenPose en precisión, lo que sugiere que las detecciones que encuentran son muy
probables que sean acertadas. Por otro lado, OpenPose es mejor que los demás en recall, lo que
indica que es mejor en detectar más personas. Por último, YOLO es mejor prediciendo cajas de
manera más cercana a los ground truth que los demás. Además en la figura 6-4 se muestra la curva
P-R para todos los detectores en un umbral de IOU de 0.5. Es posible ver que el algoritmo de
detección que tiene un mejor valor tanto de recall como de precisión (0.85-recall, 0.92- precisión)
es YOLO. En este punto el mAP es de 81.20 sobrepasando a los demás algoritmos.
A partir de estos resultados se escoge a YOLO como el detector a usar ya que tiene el mejor mAP.
El problema mayor de OpenPose es que al ser un detector de partes del cuerpo y no en general un
detector de personas, tiende a tener muy mala precisión en general debido a que tiene un numero
33
6 Análisis de Resultados
alto de falsos positivos. En esta aplicación en particular, la aparición de falsos positivos es crucial
en el desempeño del sistema, ya que introduce errores en el conteo de las personas. Sin embargo,
es importante notar que OpenPose realiza un análisis mucho más preciso de las personas, ya que
obtiene las coordenadas del esqueleto de las personas. El algoritmo SSD a pesar de tener muy buena
precisión, no detecta la cantidad de personas que YOLO, y cuando lo intenta la precisión disminuye
de manera considerable. Además se escoge el umbral del IOU en 0.5 como el mejor umbral para
decidir si una detección es correcta o no debido a que es el estándar en la literatura y además
porque es el mejor umbral comparando entre diferentes umbrales.
6.2. Seguimiento
A manera de referencia, un buen seguimiento requiere que el tracker siga al objeto de interés
y no lo pierda. Además que el centro del bounding box sea lo más cercano al ground truth. En la
figuras 6.5(a)-6.5(d) se muestra una sucesión de cuadros en donde se obtiene un buen seguimiento.
Además en la figura 6-6 se muestra la trayectoria de un buen seguimiento.
34
6.2 Seguimiento
35
6 Análisis de Resultados
Sin embargo, incluso en el mejor de los casos los trackers tienen errores y pierden al objeto de
interés que dependiendo del algoritmo indican su pérdida generando una alerta de un error como lo
hace KCF, MedianFlow o MOSSE (ver figura 6.7(a)), o siguen un objeto del fondo (figura 6.7(b)),
o siguen a otro objeto de interés (figura 6.7(c)), o en donde el tracker busca al objeto en cualquier
lugar del cuadro (figura 6.7(d)) generando inconsistencia. Desafortunadamente, todos los trackers
evaluados se pierden en algunos cuadros debido a cambios de forma o visualización del objeto de
interés, como cuando la persona se voltea, o porque no es muy distinguible el objeto del fondo,
como cuando el fondo es del mismo color que el objeto de interés o cuando ocurre oclusión.
(c) Tracker que sigue a otro objeto (d) Tracker que tiene una región de búsqueda muy
grande
Figura 6-7: Errores en los trackers (curva roja - ground truth, curva azul - tracker)
Para evaluar los trackers de manera cuantitativa, se obtienen las trayectorias y se comparan con
la trayectoria ground truth por medio del error cuadrático medio en pı́xeles dado en la ecuación
5-2 del capı́tulo anterior. En la tabla 6-2 se muestran los resultados de este error para todas las
personas que aparecen en el video base y para cada tracker, además de la velocidad de tracker, ya
que es necesario evaluarlos también por gasto computacional. Las lineas indican que no se pudo
evaluar el tracker puesto que se perdió y no fue posible obtener una posición de un nuevo bounding
box.
De acuerdo a estos resultados, es posible observar que el tracker con mejor desempeño es CSRT.
Ya que a pesar de no ser el más rápido, es el tracker que sigue de manera consistente el objeto
36
6.3 Conteo
de interés incluso en algunos momentos de oclusión. Sin embargo, ya que en algunas partes si se
pierde, es aquı́ donde es necesario que haya una relación entre la detección y el tracker de manera
que se ayuden mutuamente a mejorar el seguimiento de los persona que atraviesan la escena.
Tabla 6-2: Resultados para la evaluación de trackers usando el error cuadrático medio de la dis-
tancia euclidiana
P00 P01 P02 P03 P04 P05 FPS
Boosting 151.11 163.32 131.67 108.87 32.76 35.5 17
MIL 108.74 79.94 131.35 109.66 13.30 30.66 7
KCF - 152.27 - 112.93 - - 100
TLD 229.53 156.93 97.66 112.46 59.72 73.12 6
MedianFlow 181.35 169.80 - 118.96 - - 40
MOSSE 114.21 - - 87.75 - - 500
CSRT 13.10 13.78 22.88 112.19 10.80 338.54 18
6.3. Conteo
Dados los errores de conteo explicados en el capı́tulo de Protocolo de Pruebas, se pretende analizar
el rendimiento del sistema integrado de detección, seguimiento y conteo de personas. Se obtienen
la cantidad de personas en los nueve videos de pruebas del ground truth, el conteo resultado del sis-
tema, la cantidad de personas que no contó (Subconteo) y la cantidad de personas que se volvieron
a contar o que se contaron de más (Sobreconteo). Esta información se muestra en la tabla 6-3.
Conociendo estos valores, se procede a calcular los errores de conteo: relativo, subconteo y sobre-
conteo. Estos valores se muestran en la tabla 6-4.
37
6 Análisis de Resultados
De acuerdo a estos resultados es posible ver que el sistema tiene errores relativamente bajos relativos
de conteo siendo su mayor error del 27 %, sin embargo, es porque a veces los error de subconteo y
sobreconteo se equilibran. Es posible ver que el error de subconteo es mayor al error de sobreconteo
siendo sus valores máximos, 50 % y 25 %, respectivamente. La causa de un error tan grande de
subconteo se debe a la condición puesta en el sistema como seguimiento consistente. Entonces, si la
persona es detectada y seguida en unos cuadros pero por algún motivo deja de ser detectada en un
cuadro, el seguimiento no es consistente y el sistema no cuenta esta persona. Además las oclusiones
totales hacen que el seguimiento tampoco pueda ser consistente o que el algoritmo de detección ni
siquiera sea capaz de detectar a esta persona.
El error de sobreconteo se debe en gran parte a múltiples conteos de una misma persona debido a
oclusiones con otras personas. Ya que si la persona es contada porque hubo seguimiento consistente
y luego se pierde por una oclusión y después vuelve a ser detectada como seguimiento consistente,
el sistema cuenta a esta persona dos veces. Es posible disminuir estos errores cambiando el número
de cuadros que se considera un seguimiento consistente, o cambiar el umbral de detección, sabiendo
que esto puede introducir errores de falsos positivos. Además para evitar errores de sobreconteo por
oclusiones, se podrı́a implementar algún sistema de memoria de trackers perdidos para recuperar
la persona si esta vuelve a ser detectada en cuadros posteriores luego de haberse perdido.
En la tabla 6-5 es posible observar los resultados de error del flujo de personas en los diferentes
videos de prueba. Es posible observar que el mayor error es del 40 % debido a que el flujo es el
conteo sobre la duración de tiempo del video. De manera que si el conteo del sistema falla, también
fallará el flujo resultante del sistema. Es importante aclarar que puede que en algunos casos el error
no sea tan grande, sin embargo puede ser debido a que los errores de subconteo y sobreconteo se
compensaron.
El alcance del proyecto se limita a videos en donde no existan personas en la región de interés que
no se muevan durante la duración del video, es decir, que se encuentren como fondo de la escena.
38
6.3 Conteo
En estos casos, el algoritmo en cuestión genera grandes errores de sobreconteo, debido a las posibles
oclusiones que se puedan presentar a estas personas en el fondo.
39
7 Conclusiones y Recomendaciones
7.1. Conclusiones
40
7.2 Recomendaciones
7.2. Recomendaciones
Al utilizar GPU en las secciones implementadas en CPU, es decir, en el algoritmo de tracker y
en el de integración disminuirı́a el tiempo de procesamiento del sistema y podrı́a ser modificado
para ser utilizado en tiempo real. Serı́a deseable escoger un espacio 3D de interés para mejorar la
detección de las personas en la escena, para eliminar problemas de perspectiva. Ası́ se obtendrı́a
además una posición espacial de la localización de las personas. Por otro lado, para disminuir los
errores de subconteo, se podrı́a disminuir el umbral del algoritmo de detección y se podrı́a incluir
un sistema de recuperación de trackers perdidos por oclusiones.
41
7 Conclusiones y Recomendaciones
42
Bibliografı́a
[1] An Braeken, Pawani Porambage, Andrei Gurtov, and Mika Ylianttila. Secure and Efficient
Reactive Video Surveillance for Patient Monitoring. Sensors (Basel, Switzerland), 16(1), jan
2016. Online: http://www.ncbi.nlm.nih.gov/pubmed/26729130, last accessed on 02/08/18.
[4] Evento Masivo, Los Eventos, Multitudes Vulnerabilidad, Recuento Hist, Lugares Tipo, and
Incluye Medidas. Anexos del Plan Nacional de Emergencia y Contingencia para Eventos de
Afluencia Masiva de Público. pages 1–72. Online:
http://www.corpoboyaca.gov.co/cms/wp-content/uploads/2015/11/Decreto-3888-de-
2007.pdf, last accessed on 15/02/18.
[7] Transmilenio. Estadı́sticas de oferta y demanda del Sistema Integrado de Transporte Público -
SITP - Septiembre 2017, 2018. Online: https://bit.ly/2Ew4lUL, last accessed on 30/10/18.
[8] Nasser H Ali and Ghassan M Hassan. Kalman Filter Tracking. Technical Report 9, 2014.
Online: https://bit.ly/2BlVQMK, last accessed on 22/09/18.
[9] Jason Brownlee. Supervised and Unsupervised Machine Learning Algorithms, 2016. On-
line: https://machinelearningmastery.com/supervised-and-unsupervised-machine-
learning-algorithms/, last accessed on 14/09/18.
[10] Devin Soni. Supervised vs. Unsupervised Learning - Towards Data Science.
Online: https://bit.ly/2J2yi1r, last accessed on 14/09/18.
43
Bibliografı́a
[11] Pulkit Sharma. Introduction to Neural Networks, Deep Learning (Deeplearning.ai course),
2018. Online: https://www.analyticsvidhya.com/blog/2018/10/introduction-neural-
networks-deep-learning/, last accessed on 20/11/18.
[12] Luke Dormehl. What is an artificial neural network? Here’s everything you need to know —
Digital Trends, 2018. Online: https://www.digitaltrends.com/cool-tech/what-is-an-
artificial-neural-network/, last accessed on 20/11/18.
[13] Johan Edvinsson. A Neural Network Primer — Condé Nast Technology, 2017. Online:
https://technology.condenast.com/story/a-neural-network-primer, last accessed on
20/11/18.
[15] Lars Hulstaert. A Beginner’s Guide to Object Detection (article) - DataCamp, 2018. Onli-
ne: https://www.datacamp.com/community/tutorials/object-detection-guide, last ac-
cessed on 20/07/18.
[16] Joseph Redmon and Ali Farhadi. YOLOv3: An Incremental Improvement. Technical report.
Online: https://pjreddie.com/yolo/, last accessed on 02/08/18.
[17] Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang
Fu, and Alexander C Berg. SSD: Single Shot MultiBox Detector. Technical report. Online:
https://unc.live/2OSjZOz, last accessed on 15/09/18.
[18] Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy, Scott Reed, Cheng-Yang
Fu, and Alexander C Berg. SSD: Single Shot MultiBox Detector. Technical report. Online:
https://github.com/weiliu89/caffe/tree/ssd, last accessed on 02/08/18.
[19] Zhe Cao, Tomas Simon, Shih-En Wei, and Yaser Sheikh. Realtime multi-person 2d pose
estimation using part affinity fields. In CVPR, 2017.
[20] Timothy C. Arlen. Understanding the mAP Evaluation Metric for Object De-
tection, 2017. Online: https://medium.com/@timothycarlen/understanding-the-map-
evaluation-metric-for-object-detection-a07fe6962cf3, last accessed on 01/09/18.
[21] Jonathan Hui. mAP (mean Average Precision) for Object Detection - Medium, 2018. Online:
https://bit.ly/2PpmSLc, last accessed on 18/08/18.
[22] Adrian Rosebrock. Intersection over Union (IoU) for object detection - PyImageSearch. On-
line: https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-
object-detection/, last accessed on 20/08/18.
[23] Jonathan Hui. mAP (mean Average Precision) for Object Detection - Medium, 2018. Online:
https://bit.ly/2PpmSLc, last accessed on 14/10/18.
44
Bibliografı́a
[24] Timothy C. Arlen. Understanding the mAP Evaluation Metric for Object Detection. Onli-
ne: https://medium.com/@timothycarlen/understanding-the-map-evaluation-metric-
for-object-detection-a07fe6962cf3, last accessed on 14/10/18.
[25] The-Crankshaft Publishing. Tracking (Introduction to Video and Image Processing) Part 1.
Online: https://bit.ly/2R3XIiV, last accessed on 28/07/18.
[27] Helmut Grabner, Michael Grabner, and Horst Bischof. Real-Time Tracking via On-line Boos-
ting. Technical report. Online: https://bit.ly/2TuSwWz, last accessed on 02/09/18.
[28] Boris Babenko, Ming-Hsuan Yang, and Serge Belongie. Visual Tracking with Online Multiple
Instance Learning. Technical report. Online: https://bit.ly/2Ty2zun, last accessed on
15/09/18.
[29] Joao F Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista. IEEE TRANSACTIONS
ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE 1 High-Speed Tracking with
Kernelized Correlation Filters. Technical report. Online: https://bit.ly/2DyBEsx, last ac-
cessed on 15/09/18.
[30] Zdenek Kalal, Krystian Mikolajczyk, and Jiri Matas. Tracking-Learning-Detection. Technical
Report 1, 2010. Online: https://bit.ly/2FzBO5y, last accessed on 15/09/18.
[31] Zdenek Kalal. Forward-Backward Error: Automatic Detection of Tracking Failures. Technical
report. Online: https://bit.ly/2BlmWno, last accessed on 15/09/18.
[32] Satya Mallick. Object Tracking using OpenCV (C++/Python) — Learn OpenCV, 2017. On-
line: https://www.learnopencv.com/object-tracking-using-opencv-cpp-python/, last
accessed on 09/10/18.
[33] David S Bolme, J Ross Beveridge, Bruce A Draper, and Yui Man Lui. Visual Object Tracking
using Adaptive Correlation Filters. Technical report. Online: https://bit.ly/2Q9Pfxj, last
accessed on 15/09/18.
[34] Alan Lukežič, Tomáš Vojı́ř, Čehovin Zajc Luka, Jiřı́ Matas, and Matej Kristan. Discriminative
Correlation Filter Tracker with Channel and Spatial Reliability. Technical report. Online:
https://arxiv.org/pdf/1611.08461.pdf, last accessed on 15/09/18.
[35] Chris J Needham and Roger D Boyle. Performance Evaluation Metrics and Statistics for Posi-
tional Tracker Evaluation. Technical report. Online: https://bit.ly/2DQPDuV, last accessed
on 15/09/18.
[36] A. Luna and N. Rodrı́guez. Detección y conteo de personas en espacios cerrados utilizando
estrategias basadas en visión artificial, 2017. Director: Ing. Julián Quiroga M.Sc.
45
Bibliografı́a
[37] Qiushi. GitHub - puzzledqs/BBox-Label-Tool: A simple tool for labeling object bounding
boxes in images. Online: https://github.com/puzzledqs/BBox-Label-Tool, last accessed
on 18/07/18.
46