TG - 1816 - Deteccion y Seguimiento de Personas - Montoya

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 49

Detección y Seguimiento de Personas en

Video

Estephanie Montoya Morales

Pontificia Universidad Javeriana


Facultad de Ingenierı́a, Departamento de Electrónica
Bogotá D.C, Colombia
2018
Detección y Seguimiento de Personas en
Video

Estephanie Montoya Morales

Trabajo de grado para optar al tı́tulo de:


Ingeniero Electrónico

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

3 Objetivo del Proyecto 16


3.1 Objetivo General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Objetivos Especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Descripción General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 Especificaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

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

2.1. Inteligencia Artificial


El aprendizaje automático o machine learning permite que las máquinas realicen una distinción
de forma automática por medio de algoritmos matemáticos. Hay dos formas principales para el
aprendizaje automático: Aprendizaje supervisado y no supervisado.

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

2.1.1. Redes Neuronales


Una red neuronal artificial (ANN) es un paradigma de procesamiento de información inspirado en
sistemas nerviosos biológicos y la manera en que procesan información. Está compuesto por un gran
número de elementos de procesamiento, neuronas, interconectados y trabajando en conjunto para
resolver un problema especı́fico, dividido en capas, de entrada, de procesamiento llamadas hidden
layers, y de salida [11]. Existen varios tipos de redes, algunas de ellas se describen a continuación.

Red neuronal estándar


El algoritmo detecta y determina automáticamente cuales carcterı́sticas de los datos de en-
trada son esenciales para una tarea dada. Las capas son unidimensionales y la información
solo viaja en la dirección de entrada a salida (feedforward neural network) [12].

4
2.2 Visión por computador

Red neuronal convolucional (CNN)


En vez de tener conexiones uno a uno entre neuronas, las CNN analizan un conjunto de datos
de entrada al tiempo. Esto disminuye el numero de variables requeridas y permite al modelo
detectar y aprender de caracterı́sticas similares sin importar en donde se encuentran los datos
de entrada [13].

2.2. Visión por computador


Es un campo interdisciplinario donde se desarrollan algoritmos avanzados que buscan imitar a los
realizados por los humanos para detectar objetos, reconocer caras, etc. por medio de extracción
de caracterı́sticas de las imágenes. También cubre los métodos de procesamiento de imágenes en
donde se utilizan más de dos cámaras, como reconstrucción de escenas o estimación de puntos en
3D [14].

2.3. Detección de objetos


Se pretende identificar la posición de objetos en una imagen y clasificarlos por categorı́a de una
manera automática. Para esto, se generan caracterı́sticas de la imagen por regiones o por pı́xeles
usando métodos de machine learning o deep learning. Es necesario entrenar la máquina para que
encuentre patrones que identifican el objeto de interés a encontrar. Por ende, se deben tener datos
o imágenes etiquetadas donde se encuentren las coordenadas de una caja (bounding box) donde se
encuentra el objeto y etiquetas que correspondan al objeto. Tı́picamente hay tres pasos a seguir en
un sistema de detección de objetos:
1. Se generan regiones de interés con un modelo o algoritmo. Las regiones propuestas son un gran
número de bounding boxes que abarcan toda la imagen.
2. Se extraen caracterı́sticas visuales de cada bounding box. Se evalúan y se determinan qué objetos
se encuentran presentes en las cajas propuestas.
3. Se combinan las cajas sobrelapadas en donde fue positivo que se haya encontrado el objeto en
una sola bounding box [15].

2.3.1. You Only Look Once (YOLO)


You Only Look Once (YOLO) es un algoritmo de detección de objetos que genera bounding boxes
espacialmente separadas con probabilidades de clase asociadas a estas cajas. Ver la figura 2-1.
Para esto, una red convolucional predice simultáneamente varias cajas y probabilidades de clase para
cada caja de la siguiente manera: La red usa caracterı́sticas de toda la imagen para la predicción de
cajas. El sistema divide la imagen en una malla de SxS. Si el centro de un objeto cae en una celda
de la malla, esa celda es responsable de detectar el objeto. Cada celda predice 8 bounding boxes y
puntajes de confianza para cada caja. Estos puntajes reflejan el nivel de confianza el modelo de que
la caja contenga al objeto y que tán preciso cree que es la caja que predice. Cada caja consiste de
5 predicciones: x,y,w,h,confianza. Las coordenadas (x,y) representan el centro de la caja relativos a

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

Figura 2-1: Modelo de regresión de YOLO [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.

2.3.2. Single Shot Multibox (SSD)


Single Shot Multibox Detector (SSD) es un detector de objetos que utiliza una sola red neuronal
para obtener bounding boxes donde se encuentren los objetos detectados. Es el primer detector de
objetos basado en deep neural networks que no hace re-muestreo de pı́xeles ni saca caracterı́sticas
de cajas hipotéticas y es tán preciso como modelos basados en regiones. Ver figura 2-2.
Su enfoque consiste en discretizar el espacio de salida de los bounding boxes en un conjunto de cajas
por defecto sobre diferentes proporciones y escalas de aspecto por ubicación del mapa de carac-
terı́sticas. En el tiempo de predicción, la red genera puntajes para la presencia de cada categorı́a de
objeto en cada caja por defecto y realiza ajustes a la caja para mejorar su correspondencia con la

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

Figura 2-3: Modelo de OpenPose [19]

2.3.4. Medidas de Evaluación


Intersection Over Union (IOU)

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.

Figura 2-4: Intersección sobre unión. (IOU). [21]

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.

Figura 2-5: Ejemplos de IOU. [22]

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

Verdaderos Positivos Verdaderos Positivos


P recision = = (2-1)
Verdaderos Positivos + Falsos Positivos Todas las detecciones
Verdaderos Positivos Verdaderos Positivos
Recall = = (2-2)
Verdaderos Positivos + Falsos Negativos Todos los ground truth

Mean Average Precision (mAP)

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

2.4. Seguimiento o tracking

Existen dos métodos que muy a menudo se encuentran en algoritmos de seguimiento.


1. Seguimiento por detección
Se realiza detección en cada imagen y se correlaciona un objeto en un cuadro con el mismo objeto
en otro cuadro. La forma más simple de seguimiento es cuando la posición estimada es actualiza
usando los estados previos [25].
2. Predicción
Si el objeto se mueve más rápido que el framerate de la cámara, no se puede seguir, en caso
contrario, es posible predecir donde se encuentra el objeto aproximadamente en la siguiente imagen
si lo hemos encontrado en una imagen previa. Esto se hace introduciendo una región de interés
(ROI) centrada en la posición donde se predice que el objeto esté y solo se analizan los pı́xeles en
el ROI.
Para saber donde se predice la posición del objeto, se introduce un modelo de movimiento, donde
se explica cómo se está moviendo el objeto. Este modelo puede incluir la velocidad y la aceleración
del objeto y si el movimiento no se puede explicar por un modelo de movimiento, se suelen usar
varios [25]. Un modelo clásico de este enfoque se muestra en la figura 2-7.

Figura 2-7: Modelo de seguimiento por predicción [25]

2.4.1. Método BOOSTING

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

Figura 2-8: Pasos del tracker Boosting [27]

2.4.2. Multiple Instance Learning (MIL)

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

Figura 2-9: Pasos del tracker MIL [28]

11
2 Marco Teórico

2.4.3. Kernelized Correlation Filter (KCF)


KCF es un tracker que utiliza propiedades de la matriz circulante para mejorar la velocidad de
procesamiento. Utiliza el siguiente método: al tener un parche de la imagen donde se tiene el
objeto de interés, se entrena un clasificador para discriminar entre la apariencia del objeto y de su
entorno. Para mejorar el desempeño del tracker se debe aumentar el numero de parches negativos
de la imagen que indiquen la no presencia del objeto de interés. Se desarrollan herramientas para
incorporar analı́ticamente miles de muestras en diferentes traslaciones relativas. Se demuestra que la
matriz resultante es circulante(ver figura 2-10) y entonces se puede diagonalizar con la transformada
de Fourier discreta, reduciendo tanto el almacenamiento como la computación en varios órdenes de
magnitud.

Figura 2-10: Matriz circulante usada por el algoritmo KCF [29]

La formulación de la regresión lineal es equivalente a un filtro de correlación. En el caso de regresión


kernelizada, se deriva un filtro de correlación kernelizada (KCF) que tiene la misma complejidad
que su contraparte lineal. De esta manera es posible incorporar canales de múltiples caracterı́sticas
[29].

2.4.4. Tracking, Learning, Detection (TLD)


El tracker descompone la tarea de seguimiento a largo plazo en tres componentes: seguimiento,
aprendizaje y detección (tracking, learning and detection TLD). El tracker sigue al objeto cuadro
a cuadro. El detector localiza todas las apariciones que han sido observadas hasta el momento y
corrige el tracker de ser necesario. El aprendizaje estima los errores del detector y lo actualiza para
evitar esos errores en el futuro. Esto se realiza usando un paradigma de aprendizaje P − N . El
detector se evalúa en cada cuadro del video. Sus respuestas son analizadas por dos instancias: 1-
experto P , reconoce las detecciones fallidas, y 2-experto N , reconoce las falsas alarmas. Los errores
estimados son utilizados para re-entrenar el detector para evitar estos errores en el futuro [30]. El
diagrama de bloques se muestra en la figura 2-11.

2.4.5. Median Flow


Al operar simultáneamente el seguimiento y la detección es posible que se beneficien el uno al
otro, ya que por separado no pueden resolver la tarea de seguimiento. El tracker puede proveer
datos de entrenamiento etiquetados de manera pobre al detector y ası́ mejorarlo. El detector puede

12
2.4 Seguimiento o tracking

Figura 2-11: Diagrama de bloques de TLD [30]

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

(a) Penalización de error forward-backward (b) Diagrama de bloques

Figura 2-12: Funcionamiento del tracker MedianFlow [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].

2.4.6. Minimum Output Sum of Squared Error (MOSSE)


Minimum Output Sum of Squared Error (MOSSE) es un tracker que usa correlación adaptiva para
realizar seguimiento de objetos, lo cual produce filtros de correlación estables al ser inicializados

13
2 Marco Teórico

usando un solo cuadro. Es robusto a variaciones en iluminación, escala, pose y deformaciones no


rı́gidas [32]. La apariencia del objetivo se modela con filtros de correlación adaptiva y el seguimiento
se realiza por convolución. Para crear filtros que sean robustos en variaciones de la apariencia del
objetivo se realiza un promedio de MOSSE produciendo filtros que son mejores discriminando entre
objetos y el fondo. La razón Peak-to-Sidelobe (PSR), que mide la fuerza de un pico de correlación,
puede ser usada para detectar oclusiones o fallos de seguimiento, para detener la actualización y
para reactivar el tracker si el objeto reaparece con una apariencia similar.
En la imagen 2-13 se muestra un ejemplo donde se muestra el funcionamiento del filtro MOSSE.
La caja gris alrededor de la cara muestra la posición inicial del tracker. La caja roja muestra la
posición actualizada. En las imágenes de abajo se muestran la entrada, el filtro actualizado para
ese cuadro y la salida de correlación [33].

Figura 2-13: Ejemplo de funcionamiento de MOSSE [33]

2.4.7. Correlation Filter with Channel and Spatial Realiability (CSRT)


Filtro discriminativo de correlación con confiabilidad de espacial y de canal Discriminative Corre-
lation Filter with Channel and Spatial Realiabity (CSR-DCF) es un tracker que utiliza un mapa de
confiabilidad espacial para ajustar el soporte del filtro a la parte de la región seleccionada del cua-
dro para seguimiento. Los pesos de confiabilidad de canal calculados en el paso de optimización en
el aprendizaje del filtro de correlación reducen el ruido de la respuesta del filtro (Ver figura 2-14).
Esto asegura ensanchamiento y localización en la región seleccionada y mejora el seguimiento de
regiones o objetos no rectangulares.
Un beneficio importante de una región de entrenamiento grande es que los ejemplos de fondo en un
área más grande alrededor del objetivo se obtienen para mejorar el poder discriminativo del filtro.
El mapa de confiabilidad espacial estimado identifica los pı́xeles en la región de entrenamiento que
probablemente pertenezcan al objeto de interés. Un procedimiento de optimización se aplica para
aprender un filtro de correlación. La confiabilidad de canal se estima de las propiedades del diseño
del filtro. Los resultados son usados para pesar las respuestas de localización del filtro por canal.
Usa solo 2 caracterı́sticas estándares (HOGS y Colornames).

14
2.4 Seguimiento o tracking

Figura 2-14: Pasos del tracker CSRT [34]

2.4.8. Medidas de Evaluación


Existen múltiples medidas utilizadas para evaluar la eficacia de un tracker. Se evidencia que es
posible comparar las trayectorias que genera el tracker al estar siguiendo un objeto de interés con
la trayectoria verdadera haciendo uso de los bounding boxes del objeto durante la escena, general-
mente obtenida manualmente. Una trayectoria se define como una secuencia de posiciones en el
tiempo. En el dominio de visión por computador, los pasos en tiempo son generalmente iguales
y son medidos en cuadros. Las métricas comparando las dos trayectorias nos permiten identificar
cuan similares o cuan diferentes son. Una métrica usada es el promedio de la diferencia entre po-
siciones en cada tiempo, o la distancia euclidiana, es decir la longitud entre la posición del tracker
y del ground truth en un tiempo especifico, como se ilustra en la figura 2-15 y en la ecuación 5-1
[35]. También es posible obtener el error cuadrático medio dividiendo el valor anterior en el número
de puntos que hay (Ver ecuación 2-4).

Figura 2-15: Métrica de distancia entre trayectorias [35]

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

3.1. Objetivo General


Desarrollar un sistema de estimación del flujo de personas en secuencias de video utilizando
visión por computador.

3.2. Objetivos Especı́ficos


Obtener y caracterizar una base de datos de video donde haya movimiento de personas por
la escena.

Adecuar un algoritmo pre-entrenado de detección de personas para ser utilizado cuadro a


cuadro en el video.

Desarrollar e implementar un algoritmo de seguimiento de personas a partir de detecciones


en imágenes y en base a un algoritmo de tracking.

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.

3.3. Descripción General


El sistema desarollado permite facilitar el conteo de personas en un lugar, realizándolo de manera
automática, mediante algoritmos de detección de objetos y seguimiento. La entrada del sistema es
un video. Se realiza una adquisición de todos los cuadros del video. Por cada uno de estos cuadros
se realiza la detección de personas en el bloque Detección de Personas. Este bloque usa la unidad de
procesamiento gráfico (GPU). A partir de estas detecciones, se inicializa los trackers que pretenden
dar apoyo a las detecciones, en el bloque Tracking. Teniendo los bounding boxes del detector y del
tracker se debe desarrollar un algoritmo de seguimiento que integre las detecciones y el tracker.
El tracker da el apoyo cuando no hay detección, y realiza la correlación para identificar y contar
cada objeto. En el caso de que uno de los dos no se encuentre debido a fallos, el otro debe suplir el
bounding box de manera que en todos los cuadros exista bounding box si se encuentra presente la
persona. Teniendo entonces un bounding box por persona en el cuadro n y en el siguiente cuadro, se

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.

Figura 3-1: Diagrama de bloques del sistema

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

Python 3 con la dependencia “tracking ”. Librerı́as: numpy y scipy

PyQt 4

18
4 Desarrollo

4.1. Base de datos


La base de datos consiste en 10 videos de 1 minuto de duración de una cámara de seguridad del
5to piso de la Facultad de Ingenierı́a de la Universidad Javeriana (Ver Anexo 3). Estos videos
fueron obtenidos como parte del trabajo de grado 1711 titulado “Detección y conteo de personas
en espacios cerrados utilizando estrategias basadas en visión artificial”[36]. Para el trabajo de gra-
do mencionado, se realizaron los respectivos consentimientos informados para obtener los videos,
respetando la identidad de las personas que aparecen allı́, ver Anexo 1.

Figura 4-1: Región de interés

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.

Figura 4-2: Herramienta de etiquetado

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

demás cuadros habrı́a información redundante. Ver la figura 4.3(a).

(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

Figura 4-3: Ground truth y resultados de detectores

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

Figura 4-4: Salidas de OpenPose

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.

4.4. Algoritmo de integración


Se desarrolla un algoritmo que integra las detecciones de YOLO y las detecciones del tracker CSRT.
Estos algoritmos fueron escogidos por los resultados en la comparación, presentada en el capı́tulo de
análisis de resultados. La razón por la cual se realiza una integración entre estos dos algoritmos es
para obtener un seguimiento más consistente y para que el sistema sea más robusto. Esto debido a
que al realizar seguimiento usando solo las detecciones de YOLO, pueden existir problemas donde se

22
4.4 Algoritmo de integración

Figura 4-5: Trayectorias ground truth de una persona en el video

pierda la detección de una persona en particular en un cuadro y se presenten errores de sobreconteo.


Además en el momento que YOLO no haya sido capaz de detectar a la persona en alguna zona
donde no haya mucha visibilidad o existan problemas de luz, el conteo falları́a.
Por otro lado, el seguimiento haciendo solo uso de un algoritmo de tracking también puede tener
problemas cuando el algoritmo no sea capaz de actualizar el bounding box de manera correcta,
ya que a veces existen cambios de forma en el objeto seguido, es decir cambios en los pı́xeles del
bounding box a seguir, como es el caso de una persona que se voltea. Además para inicializar el
tracker es necesario tener ya un bounding box en el cuadro donde salga la persona por primera vez
y como se quiere un sistema automático, no es posible obtener el bounding box manualmente. Al
implementar los dos algoritmos, es posible depender en uno cuando el otro presente problemas. Por
ejemplo, si el algoritmo detector no detecta a una persona en el cuadro, el tracker puede proveer su
bounding box predicho ya que ha sido inicializado con una detección previa. Por otro lado, actualizar
el bounding box de la persona al tracker durante el video con el bounding box de una detección,
permite que el tracker pueda seguir el objeto cuando este haya cambiado de forma o visualización.
Lo deseable serı́a realizar las detecciones con YOLO y con CSRT cada vez que se lee un frame del
video, sin embargo, no existe compatibilidad entre OpenCV 3.14 en Python 2, lo necesario para
que YOLO funcione correctamente, y OpenCV en Python 3 con dependencia de tracking. Por este
motivo, se realiza la detección en todos los cuadros del video primero, obteniendo un archivo texto
con los bounding boxes de las detecciones, y luego se implementa el sistema de seguimiento con
CSRT, leyendo las detecciones de YOLO del archivo anterior.
El algoritmo que implementa las dos detecciones se describe a continuación. Se lee un frame del
video y en el momento que exista una detección de YOLO en ese cuadro, se crea un tracker para
esa detección y se actualiza en cada cuadro. En cada frame siguiente, se calcula el IOU entre el
bounding box de la detección y el bounding box del tracker. Si este valor es mayor que un umbral,
escogido como 0.25, quiere decir que los dos bounding boxes corresponden a la misma persona y

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.

4.5. Interfaz gráfica


Se desarrolla la interfaz gráfica (GUI) haciendo uso de PyQt 4. La interfaz permite una correcta
visualización de tanto los resultados del conteo de las personas como los bounding boxes de las
personas que se están siguiendo y la región de interés. Es posible utilizar cualquier video de los que
hacen parte de la base de datos.
Las instrucciones de uso se dan a continuación. Para seleccionar el video que se desea probar, se
debe hacer click sobre el botón Archivo y luego en Abrir Archivo. Se abre una ventana, en donde el
usuario puede buscar en cualquier carpeta del equipo el video a usar. Después de seleccionado, se
debe oprimir el botón Empezar y el sistema mostrará el video seleccionado junto con las detecciones
de las personas que se encuentren dentro de la zona de interés. Debajo de donde se muestra el video,
se encuentran los resultados del sistema: el número de personas que se encuentran en la escena, el
conteo total de personas que han pasado por la zona de interés y el número de FPS. Es posible
mostrar u ocultar diferentes funcionalidades como lo son los bounding boxes de las personas, al
presionar el item Mostrar bbox, los centros de los bounding boxes (que están por defecto para
mostrar el seguimiento de las personas), al presionar el item Mostrar centros, y la región de interés,
al hacer click sobre Mostrar ROI. Además es posible seleccionar otro video haciendo click sobre el
botón Reset y siguiendo los pasos anteriores. En la figura 4-7, se muestra la interfaz gráfica. El
código de esta implementación se presenta en el Anexo 2.

24
4.5 Interfaz gráfica

Figura 4-6: Diagrama de flujo del algoritmo

25
4 Desarrollo

Figura 4-7: Interfaz gráfica del sistema

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.

5.1. Evaluación de detectores


Es necesario evaluar el desempeño de los tres algoritmos de detección: YOLO, SSD y OpenPose,
de manera que se utilice el mejor y sea posible disminuir los errores. Se realiza la evaluación de los
detectores sobre un conjunto de 100 imágenes del video prueba. El ground truth y los detectores
generan los bounding boxes aportando las coordenadas x,y de la esquina superior izquierda y de la
esquina inferior derecha, como se muestra en la figura 5-1. En los archivos texto se obtienen estas
coordenadas en el orden mostrado en la tabla 5-1.

Figura 5-1: Coordenadas x,y para generar el bounding box

Tabla 5-1: Formato de salida de las coordenadas de los algoritmos de detección


left top right bottom

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.

Algorithm 1 Calcular Falsos Positivos, Falsos Negativos, Verdaderos Positivos


1: vp = 0
2: f p = 0
3: f n = 0
4: Abrir archivo ground truth
5: Abrir archivo detecciones
6: for tamaño detecciones do
7: for tamaño ground truth do
8: Calcular IOU entre los dos bounding boxes
9: if iou > 0,5 then
10: vp ← vp + 1
11: if no hay correspondencia entre la detección y los ground truth then
12: fp ← fp + 1
13: if no hay correspondencia entre las detecciones y los ground truth then
14: fn ← fn + 1

5.2. Evaluación de trackers

Al evaluar el desempeño de los trackers implementados en OpenCV, es posible determinar el mejor


e implementarlo en el sistema total. A pesar de tener varias maneras de evaluar los trackers, se
obtiene el error cuadrático medio de la distancia euclidiana entre las trayectorias de los trackers
contra la trayectoria del ground truth del video prueba, ya que el objetivo del sistema es contar las
personas que cruzan por el video y no es necesario medir precisión en el bounding box, como serı́a
al utilizar IOU. Se obtiene la trayectoria de las personas que pasaron por el video (en el caso del
video de prueba 5) en todos los cuadros en donde se encuentra presente, al tener la coordenada
del punto central del bounding box de tanto el ground truth como el bounding box del tracker. Y se
calcula el error con la ecuación 5-1 y 5-2, donde pi , qi son las coordenadas x,y de ground truth y

28
5.3 Evaluación del sistema

xi , yi son las coordenadas del tracker.


v
u n
uX
di = |di | = t [(pi − xi )2 + (qi − yi )2 ] (5-1)
i=1

di
RM SE = (5-2)
n

5.3. Evaluación del sistema


Es necesario evaluar el sistema usando los videos que hacen parte de la base de datos, con cambios
en el flujo de personas. Para esto se definen tres errores de conteo. Además se definen las siguientes
variables
Ngt : Número de personas en el ground truth

Nsis : Número de personas contadas por el sistema

Nnocontados : Número de personas no contadas por el sistema

Nsobrecontados : Número de personas sobre contadas por el sistema

Fgt : Flujo de personas en el ground truth

Fsis : Flujo de personas resultantes del sistema

5.3.1. Error relativo de conteo


El error de conteo se refiere a la diferencia entre la cuenta de personas presentes en el ground truth
y el sistema. Matemáticamente, se define en la ecuación 5-3.
|Ngt − Nsis |
ec = (5-3)
Ngt

5.3.2. Error de sobreconteo


El error de sobreconteo se refiere a la cantidad de personas que se contaron de más en el algoritmo,
porque el algoritmo contó algo que no era una persona, o porque se contaron múltiples veces una
persona. Se define matemáticamente en la ecuación 5-4.
Nsobrecontados
esobre = (5-4)
Nsis − Nsobrecontados

5.3.3. Error de subconteo


El error de subconteo se refiere a la cantidad de personas que no fueron contadas por el algoritmo.
Se define matemáticamente en la ecuación 5-5.
Nnocontados
esub = (5-5)
Nsis − Nsobrecontados

29
5 Protocolo de Pruebas

5.3.4. Error relativo de flujo


Para obtener el flujo de personas en el video, es necesario dividir el conteo total de personas que
pasaron por la escena sobre el tiempo total de duración del video. (Ver ecuación 5-6). Este valor
será de Personas por segundo.
El error de flujo se refiere a la diferencia entre el flujo resultante del sistema y el flujo del ground
truth. Se define en la ecuación 5-7.

F lujo = N personas/DuracionV ideo (5-6)

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

Figura 6-2: Falsos positivos de OpenPose

(a) OpenPose (b) YOLO

(c) SSD

Figura 6-3: Errores de Falsos Negativos en los detectores

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.

Tabla 6-1: Resultados para la evaluación de detectores


Tp Fp Fn precisión Recall IOU mAP @0.5
SSD 63 0 109 1.00 0.3663 0.7562 50.14
YOLO 133 0 39 1.00 0.7733 0.7694 81.20
OpenPose 152 27 20 0.85 0.8837 0.7499 72.28

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

Figura 6-4: Curva Precision-Recall para todos los detectores

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

(a) Cuadro 1 (b) Cuadro 2

(c) Cuadro 3 (d) Cuadro 4

Figura 6-5: Buen seguimiento

Figura 6-6: Trayectoria de ground truth(rojo) y trayectoria de un buen tracker(azul)

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.

(a) Error del tracker (b) Tracker que se pierde

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

Tabla 6-3: Resultados del conteo de personas


Video Ground truth Conteo Subconteo Sobreconteo
Flujo bajo 1 3 2 1 0
Flujo bajo 2 4 5 0 1
Flujo bajo 3 6 5 2 1
Flujo medio 1 6 4 2 0
Flujo medio 2 10 8 3 1
Flujo medio 3 10 7 4 1
Flujo alto 1 11 8 3 0
Flujo alto 2 12 10 2 0
Flujo alto 3 11 10 1 0

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

Tabla 6-4: Errores en el sistema


Error relativo
Video Error de subconteo Error de sobreconteo
de conteo
Flujo bajo 1 0.3 0.5 0
Flujo bajo 2 0.25 0 0.25
Flujo bajo 3 0.16 0.5 0.25
Flujo medio 1 0.3 0.5 0
Flujo medio 2 0.2 0.42 0.14
Flujo medio 3 0.3 0.6 0.16
Flujo alto 1 0.27 0.3 0
Flujo alto 2 0.16 0.2 0.25
Flujo alto 3 0.11 0.125 0

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.

Tabla 6-5: Resultados de flujo


Flujo Gt Flujo sistema
Video Error de flujo
[Personas/s] [Personas/s]
Flujo bajo 1 0.05 0.03 0.4
Flujo bajo 2 0.067 0.083 0.25
Flujo bajo 3 0.1 0.083 0.17
Flujo medio 1 0.1 0.067 0.34
Flujo medio 2 0.16 0.13 0.18
Flujo medio 3 0.16 0.116 0.26
Flujo alto 1 0.15 0.11 0.2
Flujo alto 2 0.2 0.16 0.33
Flujo alto 3 0.8 0.16 0.11

39
7 Conclusiones y Recomendaciones

7.1. Conclusiones

En este proyecto se desarrolló un sistema de estimación de flujo de personas en videos, obteniendo


un error de flujo máximo del 40 %. En la base de datos de videos se obtuvo una región de interés
en donde era necesario seguir a las personas para contarlas.
Los resultados obtenidos para la evaluación de los algoritmos de detección presentan a YOLOv3
como el mejor algoritmo para esta aplicación en particular, ya que tiene la mejor curva de precisión
vs recall en comparación con SSD y OpenPose. Sin embargo, OpenPose al realizar detección de
partes corporales tiene un mucho mejor desempeño encontrando personas donde los otros fallan.
Por esto mismo, OpenPose es muy propenso a tener falsos positivos y a encontrar varias personas
donde solo hay una. Por su parte, SSD tiene muy buen desempeño siendo preciso, lo que indica que
cualquier predicción que realice es probablemente acertada. La implementación de YOLO para ser
utilizada es muy sencilla de realizar, teniendo en cuenta las dependencias, librerı́as y programas
previos que deben ser instalados para su correcto funcionamiento. El tiempo que requiere a YOLO
detectar a las personas en los videos es bastante corto si se utiliza con GPU.
Por otro lado, en los algoritmos de tracking, en esta aplicación, el tracker que tuvo mejor desempeño
fue CSRT, ya que seguı́a a las personas de una manera más consistente, es decir que no presentaba
error de seguimiento, ni seguiı́a otros objetos comparados a otros trackers. Además al calcular
el error cuadrático medio de la distancia euclidiana entre los centros de los bounding boxes del
ground truth y los de los trackes, el que obtuvo menor error en promedio fue CSRT. Sin embargo,
todos los trackers evaluados tienden a perderse cuando existe oclusión del objeto a seguir. La
implementación de trackers usando OpenCV es fácil de realizar con unica dependencia de tener
“tracking” en OpenCV
El sistema completo que integra el algoritmo de detección y el algoritmo de seguimiento presenta
un error relativo de conteo del 30 %. Además presenta un error más grande de subconteo que de
sobreconteo. Esto significa que el sistema tiende a no contar personas que hayan pasado por la
escena a que cuente más personas de las que habı́a. El sistema no aumenta sus errores al aumentar
el flujo de personas por la escena, sino que la razón del error es por oclusiones o por falta de
detecciones.
La interfaz gráfica diseñada permite al usuario verificar y visualizar los resultados del conteo de
personas en el video de prueba que decida usar. El tiempo de ejecución del sistema es lento debido
al uso de múltiples trackers.

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

.1. Anexo 1: Consentimientos informados


En el siguiente enlace https://bit.ly/2zYhNzD se encuentran los consentimientos informados de
las personas que aparecen en los videos, obtenidos como parte del trabajo de grado 1711 titula-
do “Detección y conteo de personas en espacios cerrados utilizando estrategias basadas en visión
artificial.”[36]

.2. Anexo 2: Código del sistema


En el siguiente enlace se encuentran los códigos desarrollados en Python para este proyecto.
https://drive.google.com/open?id=1kz4X04n5mkBgvziGKdjESeVIuA0AhYgA
El archivo detectar.py genera las detecciones de YOLO para todas las imágenes de un video de
entrada. El archivo guisistema.py consiste en el algoritmo que integra estas detecciones con el
algoritmo de tracking para seguir y contar a las personas en el video, además de presentarlas en la
interfaz gráfica.

.3. Anexo 3: Base de datos


En el siguiente enlace se encuentra los videos que hacen parte de la base de datos.
https://drive.google.com/open?id=1p8s9WgyP-RwlXyKyfbp7BDQfydUNgnqL

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.

[2] El Tiempo. Impacto de las cámaras de vigilancia en la seguridad de Bogotá - Bogotá -


ELTIEMPO.COM, jan 2018. Online: https://bit.ly/2zn5ehI, last accessed on 15/02/18.

[3] Pontificia Universidad Javeriana. Seguridad e información. Online: https://bit.ly/2zn5ehI,


last accessed on 15/02/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.

[5] El Espectador. Edificio se desplomó en Cartagena, apr 2017. Online: https:


//www.elespectador.com/noticias/nacional/bolivar/construccion-que-se-
desplomo-en-cartagena-era-ilegal-curador-articulo-691314, last accessed on
20/03/18.

[6] Counterest. Contadores de personas para centros comerciales, 2016.


Online: https://bit.ly/2DPA3zs, last accessed on 30/10/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.

[14] The-Crankshaft Publishing. Introduction to Video and Image Processing.


Online: https://bit.ly/2Aim5lN, last accessed on 20/07/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.

[26] OpenCV 3.0.0-dev documentation. Tracker Algorithms. Online: https://bit.ly/2PEfYm0,


last accessed on 13/09/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

También podría gustarte