T08837
T08837
T08837
PROFUNDO
Director
JESÚS ALFONSO LÓPEZ SOTELO
Ph. D. Ingeniero electricista
Jurado
Jurado
3
AGRADECIMIENTOS
Agradezco a mi madre y abuela por los sacrificios que han venido haciendo todos
estos años con el objetivo de apoyarme en el transcurso de mi carrera profesional.
4
CONTENIDO
Pág.
GLOSARIO 12
RESUMEN 14
INTRODUCCIÓN 15
2 JUSTIFICACIÓN 17
3 OBJETIVOS 18
3.1 OBJETIVO GENERAL 18
3.2 OBJETIVOS ESPECÍFICOS 18
4 ANTECEDENTES 19
5
5.5 TASA DE APRENDIZAJE 43
5.6 LOTES 43
5.7 TUNING DE ENTRENAMIENTO (HIPERPARAMETROS) 43
5.8 PROPAGACIÓN INVERSA (BACKPROPAGACIÓN) 44
5.9 DATASET 47
5.9.1 Tipos de Dataset 47
5.9.2 Variables Cualitativas o Categóricas 49
5.9.3 Escala Nominal 49
5.9.4 Escala Ordinal 50
5.10 Extracción de características 50
5.10.1 Aprendizaje profundo (Deep Learning) 51
5.10.2 Aprendizaje supervisado 52
5.10.3 Visión por Computador 53
6
6.7.3 Plataformas de IoT 64
7 METODOLOGÍA 66
7.1 OBTENCIÓN DE DATOS 66
7.2 PREPARACIÓN DE DATOS 66
7.3 DETECCIÓN DE PERSONAS 67
7.4 PREPACIÓN DE LOS DATOS CON YOLO 67
7.5 PLATAFORMAS EN LA NUBE 67
7.6 GRAFO 68
7.7 SOFTWARE DE VISUALIZACIÓN DE INFORMACIÓN 69
7.8 VALIDACIÓN 69
8 RESULTADOS 70
8.1 EJECUCIÓN DE LA OBTENCIÓN DE DATOS 70
8.2 EJECUCIÓN DE LA PREPARACIÓN DE DATOS 76
8.3 ENTRENAMIENTO DE RED PARA CLASIFICACIÓN DE NIVELES DE
OCUPACIÓN EN LA UAO 79
8.4 TESTEO DE LA RED NEURINAL PROFUNDA 83
8.5 BASE DE DATOS 87
8.6 PROCESAMIENTO Y ALMACENAMIENTO DE DATOS 89
8.7 INTERFAZ GRAFICA ADMINISTRADOR 90
8.8 INTERFAZ GRAFICA USUARIO 91
9 CONCLUSIONES 93
REFERENCIAS 96
7
LISTA DE FIGURAS
Pág.
Fig. 1 Cafetería llena 16
Fig. 2 Mejores resultados del desafió ImageNet 2012.[6] 20
Fig. 3 Representación de AlexNet .[5] 20
Fig. 4 Infraestructura de sensores en el estadio Croke Park .[8] 22
Fig. 5 Detección de objetos con TensorFlow MobileNet.[10]. 23
Fig. 6 Vista desde un Celular. [13] 24
Fig. 7 Metodología de conteo de personas utilizando extracción de
colores y segmentación para la detección de rostros 25
Fig. 8 Ejemplo de imagen procesada [16]. 26
Fig. 9 Diagrama del parqueadero con indicaciones [15]. 26
Fig. 10 Prototipo [15]. 27
Fig. 11 Aplicación del prototipo [15]. 27
Fig. 12 Imagen de escala de grises y su máscara correspondiente y c)
ejemplo de subdivisión de imagen [17]. 28
Fig. 13 Imágenes sintéticas: a) imagen inicial, c) inicial más 5 % y d)
inicial más 10 % de información, b), d) y f) los resultados del método
propuesto, respectivamente. [17]. 29
Fig. 14 Etiquetado de imágenes de drones en sabana africana [18]. 29
Fig. 15 Resultados de detección de animales en África [18]. 30
Fig. 16 Neurona Artificial. [20]. 32
Fig. 17 Red Neuronal Monocapa [22]. 35
Fig. 18 Red Neuronal Multicapa. [23]. 36
Fig. 19 Red Neuronal Multicapa Profunda. [23]. 37
Fig. 20 Ejemplo de red convolucional [24]. 37
Fig. 21 Re-entrenar ultima capa Softmax. [25]. 38
Fig. 22 Tasa de entrenamiento según sus hiperparametros [28]. 44
8
Fig. 23 Previsualización de dataset MNIST [31]. 49
Fig. 24 Ejemplo de Visión de Computador [38]. 53
Fig. 25 Tensorboard [51]. 59
Fig. 26 Ejemplo de lente ojo de pez.[60]. 64
Fig. 27 Diagrama cliente - servidor.[61]. 65
Fig. 28 Cámara 360. 70
Fig. 29 Cámara seguridad cafetería. 71
Fig. 30 Cámara Cafetería Primer Piso. 71
Fig. 31 Cámara laboratorio Electrónica. 72
Fig. 32 Cámara laboratorio Automática. 73
Fig. 33 Base de Datos Entrenamiento. 74
Fig. 34 Base de Datos Entrenamiento: 9 videos representativos de 7
minutos y medio en donde se ilustran cada uno de los estados de
ocupación por parte de personas en cafetería primer piso, laborato-
rio de electrónica y laboratorio de automática. 75
Fig. 35 Diagrama de flujo Entrenamiento: Vista general de entrenamiento. 76
Fig. 36 Carpetas de 9 niveles de ocupación con cuadros delimitadores
generados por Yolo Detection. 77
Fig. 37 Carpeta Electrónica Vacía con cuadros delimitadores genera-
dos por Yolo Detection. 78
Fig. 38 Grafo general de la red de clasificación de niveles de ocupación. 80
Fig. 39 Cuellos de botella generados por la red para el entrenamiento
(Bottlenecks). 81
Fig. 40 Entrenamiento con 1000 iteraciones a una tasa de aprendizaje
(learning rate) de 0.01. 82
Fig. 41 Evolución de la Exactitud (accuracy) respecto a las iteraciones. 82
Fig. 42 Evolución del Cruce de entropía cruzada (cross entropy) res-
pecto a las iteraciones. 83
Fig. 43 Base de Datos Testeada. 87
9
Fig. 44 Tabla de MySQL. 88
Fig. 45 Diagrama de flujo IoT. 89
Fig. 46 Interfaz Administrador 90
Fig. 47 Interfaz Administrador 91
Fig. 48 Interfaz usuario Móvil 92
10
LISTA DE TABLAS
Pág.
TABLA I Nomenclatura del Algoritmo BackPropagation 33
TABLA II Tarifas de Taxi en New York 2018 48
TABLA III Resultados DNN MobileNet V1.0 (Primera Parte) 85
TABLA IV Resultados DNN MobileNet V1.0 (Segunda Parte) 86
11
GLOSARIO
12
PESO SINÁPTICO: Representan la intensidad de interacción entre cada neuro-
na.32.
RFID: Identificador por radio frecuencia (Radio Frequency Identification).62
RNA: Las redes neuronales artificiales son un modelo computacional vagamente
inspirado en el comportamiento observado en su homólogo biológico. 34, 51-53
SCRIPT: En informática, un script, archivo de órdenes, archivo de procesamiento
por lotes o, cada vez más aceptado en círculos profesionalesy académicos, es un
programa usualmente simple, que por lo regular se almacena en un archivo de texto
plano [1]. 54
TIPADO DINÁMICO: Un lenguaje de programación es dinámicamente tipado si una
misma variable puede tomar valores de distinto tipo en distintos momentos. La ma-
yoría de lenguajes de tipado dinámico son lenguajes interpretados, como Python o
Ruby. [2].54 .
XOR: Compuerta lógica no lineal, si le entra un 1, saca un 0, si le entra un 0 saca
un 1.44
13
RESUMEN
14
INTRODUCCIÓN
15
1. PLANTEAMIENTO DEL PROBLEMA
16
2. JUSTIFICACIÓN
17
3. OBJETIVOS
18
4. ANTECEDENTES
Algunas tareas que son naturales para el ser humano y utilizadas comúnmente
co-mo lo es la visión, el reconocimiento de la voz o el procesamiento del
lenguaje, son procesos que resultan complicados de llevar a cabo de manera
artificial. Esta es un área que ha estado en constante desarrollo dentro del
campo de la IA por déca-das. Sin embargo, a partir del 2006 se han logrado
unos avances importantes en el desarrollo de estas y otras tareas, gracias a la
utilización del Deep Learning (DL), por respetar su nombre en inglés, o
“Aprendizaje Profundo”.[3]
19
Fig. 2. Mejores resultados del desafió ImageNet 2012.[6]
el llamado ”AlexNet” es lo que se puede considerar hoy en día como una arquitectura
simple con cinco filtros convolucionales consecutivos, capas de agrupación máxima
y tres capas totalmente conectadas [4].
Si bien son bastantes las tareas en las que se ha tenido éxito con el uso de redes
neuronales profundos, lo que tienen en común, es que requieren de una red convo-
lucional (CNN) como parte fundamental. Por ejemplo, para la detección de objetos
(como peatones y vehículos) en imágenes o vídeo, se requiere de dos secciones: la
primera es la red convolucional (CNN) con la que se hace la clasificación de objetos
de interés, y la segunda es en la que se asignan las coordenadas de la ubicación de
dichos objetos en la imagen. Por otra parte, se encuentran las ciudades inteligen-
tes, en las cuales es primordial el uso del internet de las cosas para permitir que se
faciliten herramientas útiles para mejorar el nivel de vida de los ciudadanos. Según
los autores de Global Perspective of Smart Cities [7], las ciudades inteligentes se
20
deben concebir como ”Un sistema urbano que utiliza tecnología de la información
y la comunicación (TIC) para hacer que tanto su infraestructura como sus servicios
públicos sean más interactivos, más accesibles y más eficientes.” Un objetivo de la
ciudad inteligente es mejorar la calidad de vida de los ciudadanos al tiempo que
proporciona un entorno sostenible y reduce el costo de la vida.
Son bastantes los desafíos que enfrentan las ciudades inteligentes, al-
gunos de ellos son poder procesar los datos generados a raíz de los
múltiples sensores instalados alrededor de toda la infraestructura tec-
nológica de la misma, entre esos sensores se encuentran los disposi-
tivos con la capacidad de grabar video, en especial para salvaguardar
la seguridad de los ciudadanos. Sin embargo, lo referente a la captura
de video y el posterior procesamiento conlleva a los siguientes retos:
21
Fig. 4. Infraestructura de sensores en el estadio Croke Park .[8]
Por otro lado, existen avances en software que permiten mediante el uso de redes
neuronales artificiales poder detectar y clasificar diferentes objetos en tiempo real.
Esto se realiza haciendo uso de redes ya pre-entrenadas (Transfer Learning) con
el objetivo de clasificar diferentes objetos en el entorno que se encuentren en el
campo de visión de la cámara. Estos algoritmos son usados por compañías que
desarrollan vehículos autónomos para poder evitar colisiones, desvíos de carril y
predecir a partir de parámetros, posibles accidentes [9].
22
Fig. 5. Detección de objetos con TensorFlow MobileNet.[10].
Google cuenta con Search y Maps, los cuales indican que tan lleno puede estar un
establecimiento dada la hora y el día mediante el uso de la opción "Popular Times".
Esta función es útil si se está planeando un itinerario de cosas para hacer en un
día. Por ejemplo, ir a un restaurante y luego ir una función de cine. Se puede revisar
cuánto tiempo suelen demorarse las personas en ese restaurante y organizar el
tiempo necesario para llegar a tiempo a una película, los niveles de ocupación de
los establecimientos dependiendo del horario, esto se puede observar en la figura 6
[12].
23
Fig. 6. Vista desde un Celular. [13]
Por otro lado, se han hecho implementaciones para el conteo de personas utilizando
otras técnicas de detección como es el procesamiento de imágenes, en donde uno
de los artículos relacionados se denomina ”Crowd Density Estimation using Image
Processing [14]” lo que traduce en español; Estimación de la densidad de multitudes
usando procesamiento de imágenes. En este trabajo los autores buscan clasificar
personas y hacer conteo de las mismas, para hacerlo lo hacen a través de modelos
de colores como por ejemplo el RGB, HSV, YCbCr. Además usan metodologías para
extraer los contornos de las cabezas de las personas usando propiedades circulares
en las imágenes. Con ellos logran extraer diferentes características como son; Color
de piel, contornos de las personas, y las partes de las mismas como las cabezas y
24
brazos. En resumen, lo que realizan es un procesamiento de imágenes para extraer
la segmentación de las personas respecto a otros objetos que existan en la imagen
original.
25
parqueo y genera una dirección web en donde se muestra una guía de ruta que
permite llegar al parqueadero libre asignado [15].
26
Fig. 10. Prototipo [15].
También se hace usó una aplicación para visualizar el parqueadero asignado y como
llegar a esa ubicación [15].
27
Por otra parte un artículo llamado ”Estimación automática de la medida de ocupa-
ción de playas mediante procesamiento de imágenes digitales” utilizando otro mé-
todo para determinar la densidad de ocupación con procesamiento de imágenes, el
cual tiene 2 etapas de proceso, en el primero preprocesamiento se utilizan métodos
de corrección de color, subdivisión de la imagen y aplicación de la máscara como
en la figura 12, posteriormente la estimación de densidad de ocupación con uso de
segmentación y binarización como se muestra en la figura 13, en el que obtienen
mediante sus resultados un error aproximado del 2,6 % lo que sugiere una medida
adecuada a una estimación[17].
28
Fig. 13. Imágenes sintéticas: a) imagen inicial, c) inicial más 5 % y d) inicial más 10 %
de información, b), d) y f) los resultados del método propuesto, respectivamente.
[17].
29
La parte de clasificación la hicieron en algoritmos de machine learning para clasifi-
cación; (SVM) Una máquina de vectores de soporte. Con este modelo se obtuvieron
los siguientes resultados:
30
5. TEORÍA DE LAS REDES NEURONALES ARTIFICIALES
Si se habla de NA quiere decir que la misma proviene de una neurona biológica, es-
tas células se encuentran en el cerebro. Y el principal objetivo de la neurona artificial
es poder emular el comportamiento de la biológica. Al igual que en el cerebro, estas
neuronas están conectadas unas a otras, sin embargo el concepto de las neuronas
artificiales no es algo que apenas se haya descubierto en la actualidad, puesto que
desde los años 40’s se han venido desarrollando avances significativos que han per-
mitido su evolución hacia lo que se conoce hoy en día como el aprendizaje profundo
(Deep Learning) [19]. Ahora bien, se puede preguntar ¿Por qué se intentan emular
las neuronas biológicas? Porque las neuronas artificiales al igual que las biológicas
funcionan por estímulos o señales de entrada provenientes de un medio sensorial
u otra neurona, para poder emular el funcionamiento sináptico de las neuronas se
le nombra a un vector W por peso sináptico encargado de dar importancia a su
señal de entrada. El parámetro θj mostrado en la figura 16 simboliza el bias (b) o
umbral de la neurona encargada de priorizar ciertas neuronas cuando se forman en
red, con ello se forman las Redes neuronales, al agrupar cada neurona se aumenta
las posibilidades de comunicación y aprendizaje, lo que nos lleva a lo mencionado
anteriormente como Deep Learning. Se puede concluir que para el funcionamiento
correcto de una neurona artificial, esta debe contar con las siguientes característi-
cas; Deben ser capaces de percibir entradas, estas señales deben ser modificadas
por los pesos sinápticos, se genera una neta con todas las entradas, transmite da-
tos sí y solo sí, se presenta la circunstancia adecuada, finalmente la salida de la
neurona se transmite hacia las demás[19].
31
por qué hoy en día el Deep learning es tan popular. El primer paso es identificar la
sintaxis de una neurona artificial, según lo mencionado anteriormente las neuronas
biológicas transmiten información, en el caso de las neuronas artificiales le llamare-
mos entradas (X) y en prácticamente todos los casos, estas entradas será un vector
con n cantidad de entradas Xn, la información que llega a la neurona artificial es
modificada por los pesos sinápticos (w) los cuales igualmente son vectores, con el
objetivo de emular la sinapsis presente en las neuronas biológicas. Luego se tiene
un parámetro adicional el cual es el bias (b) el cual tiene un comportamiento similar
a un peso sináptico w, por lo tanto, brinda un estado. Esto se explicará más ade-
lante. Los diferentes valores que recibe la neurona son modificados por los pesos
sinápticos, los sumamos para producir lo que hemos denominado la entrada neta.
32
TABLA I
Nomenclatura del Algoritmo BackPropagation
33
N etj = X1 Wj1 + X2 Wj2 + ......XN WjN + θj (2)
N etj = wT Xj + θj (3)
La ecuación (4):
Yj = F ACTj (N etj ) (4)
Existen diferentes tipos de funciones de activación, en Deep Learning las más co-
munes y además las que menos recursos computacionales gastan son las ReLU y
las Softmax.
34
5.3. RED NEURINAL MONOCAPA
En este tipo de configuración solo nos vamos a encontrar con un vector de entradas
Xn el cual no tiene ningún tipo de procesamiento, estos datos entran a una capa la
cual tiene la particularidad de compartir el mismo tipo de información (por ello, se le
conocen como capas). Antes de entrar a la capa, las entradas X son multiplicadas
por los pesos sinápticos W, esta única capa se comporta al mismo tiempo como
capa de entrada y salida, al tener solo una capa de procesamiento se le denomina
monocapa. A primera vista se puede apreciar una conectividad total entre el nivel de
entrada y la capa de salida, pues todas las neuronas de entrada están conectadas
con todas las neuronas de salida, por ejemplo, la neurona de entrada i-ésima se
conecta a las m neuronas de salida [19].
35
5.3.1. Red neuronal multicapa
En este tipo de configuración de red neuronal ya se pasa a tener una capa oculta
( CO) y una capa de salida (CS), se sigue conservando la entrada n y la capa de
salida m. La CO contiene h cantidad de neuronas y es intermedia entre las entra-
das y la CS. La información fluye en única dirección al igual que la red monocapa,
desde la entrada a la capa oculta y finalmente, a la capa de salida, además existe
conectividad total entre las capas. Hay que aclarar que una red puede tener más
de una capa intermedia. En ese orden de ideas entonces ¿Por qué el nombre de
oculta? Simplemente porque esta capa no tiene contacto con los datos que modelan
el mundo real, es decir, los datos de entrada y salida. [19]. A continuación, se ilustra
el esquema de una red multicapa ( MLP) superficial.
36
pueden tener k capas ocultas, es por ello que se llaman profundas, por la cantidad
de capas ocultas que tienen. Igualmente tienen un nivel de entrada con n neuronas
y una capa de salida con m neuronas. Su esquema se muestra a continuación.
Las redes neuronales convolucionales son similares a las redes neuronales multi-
canal, su principal ventaja es que cada parte de la red se le entrena para realizar
una tarea, esto reduce significativamente el número de capas ocultas, por lo que el
entrenamiento es más rápido. Además, presenta invariabilidad en la traslación de
los patrones a identificar como se ilustra en la siguiente figura 20. [24].
37
5.3.4. Transfer Learning
Esta estrategia de Transfer Learning es una de las más eficientes debido a que se
entrena la capa Softmax para clasificar l as c lases. L a R NA e xtrae l os bottlenecks
que serían las características de cada imagen para posteriormente re-entrenarse
con esos parámetros.
38
redes profundas se basan en el gradiente aplicado a un lote de datos (gradien-
te estocástico) y las nuevas propuestas buscan mejorar el desempeño con este
enfoque[26], lo más utilizados son:
5.4.2. Momentum
Cuando se usa este op, el gradiente se calcula respecto al valor actual de los pesos.
El momentum, también conocido como momento de Nesterov propone una sutil
variación que consiste en modificar el vector de pesos de acuerdo al momentum
que tiene el algoritmo, luego se calcula el gradiente respecto a ese vector de pesos
ya modificado [26]. Momentum reduce la tasa de aprendizaje cuando los valores del
gradiente son bajos.
Como se ilustran en las siguiente ecuaciones (8),(9):
39
∂L
∆w(t) = β∆w(t − 1) + −α (8)
∂(w(t) + βv(t))
5.4.3. AdaGrad
α
αi (t) = p0 (11)
δ + AG(t)
∂L
∆wi (t) = −α(t) ∗ (12)
∂wi (t)
40
5.4.4. AdaDelta
Mejora los resultados de AdaGrad, ya que evita que la tasa de aprendizaje se re-
duzca a cero.
RM S [∆wi (t)] ∂L
∆wi (t) = − (15)
RM S [G(t)] ∂wi (t)
Donde (18),(19):
p
RM S [∆wi (t)] = A∆wi (t − 1) (18)
p
RM S [G(t)] = δ + AG(t) (19)
41
5.4.5. Adam
Este op es un AdaGrad con diferentes mejoras. Usando las ecuaciones (20), (21),
(22), (23), (24), (25):
∂L
M1 (t) = ρ1 M1 (t − 1) + (1 − ρ1 ) (20)
∂wi (t)
2
∂L
M2 (t) = ρ2 M2 (t − 1) + (1 − ρ2 ) (21)
∂wi (t)
M1 (t)
M C1 (t) = (22)
1 − ρ1
M2 (t)
M C2 (t) = (23)
1 − ρ2
α0 M C1 (t)
∆wi (t) = − p (24)
δ + M C2 (t)
5.4.6. Ftrl
42
En la actualidad los optimizadores Adam y Ftrl son muy buenas opciones predeter-
minadas para entrenar modelos de DNN y modelos lineales en Machine Learning
[27].
Este hiperparámetro es aquel que controla el tamaño del paso en el espacio del
peso W, algunos de los valores más comunes son; 0.1, 0.01, 0.001.
5.6. LOTES
43
Si el tamaño del lote es muy grande, el entrenamiento tardará mucho [27].
Como norma general, entre 40 y 100, serán un buen tamaño del lote, incluso en
datasets muy grandes, podría usarse hasta 500. También se debe considerar de
que el tamaño del lote debe ser representativo del tamaño total del dataset, otra
cosa a tener en cuenta, es que el gradiente se calcula dentro del lote, si el lote no
es representativo, la pérdida variará mucho de lote a lote [27]. No hay nada dicho
acerca de cuáles son los valores exactos para encontrar un modelo más óptimo,
la experiencia habla de que es mejor modificar l os v alores a leatoriamente hasta
encontrar la mejor respuesta, entre mayor cantidad de proyectos se realicen, se
podría llegar a estimar unos parámetros mejores que otros, ya que dependiendo del
problema, estos pueden cambiar considerablemente.
44
posibilitó darle solución a una variedad de problemas complejos. La función de este
algoritmo es propagar el error desde la CS hacía las CO [29].
N
X
N etahpj = Wjih Xpi + θjh (27)
i
L
X
N etaopk = Wklo iokl + θko (29)
j=1
45
7) Calcular la salida de la red.
o o 0
δpK = (dpk − ypK )fKo (N etaopK ) (31)
M
0
X
h
δpK = fjh (N etahpj ) o
δpk o
Wkj (32)
k=1
P M
1 XX
Ep = (dpk − ypk )2 (35)
2 p=1 k=1
46
5.9. DATASET
• Tabulares
Los datasets tabulares son aquellos que incluyen variables cualitativas y cuantitati-
vas, un ejemplo de ello es la siguiente tabla II:
47
TABLA II
Tarifas de Taxi en New York 2018
Por ejemplo, en este tipo de datasets, se pueden realizar predicciones del precio
final del recorrido, teniendo en cuenta que las características más relevantes son el
tiempo del trayecto, la distancia, zona (latitud) y la hora de recogida también puede
ser determinante para estimar un posible precio. Estos tipos de datasets son los más
comunes, puesto que, la recolección de información se facilita gracias a lo que se
conoce hoy en día como “BigData”, también son datasets sencillos de organizar y de
manejar mediante una buena gestión de los datos, por ejemplo, SQL (Lenguaje de
consultas estructurado) permite hacer un filtro de los datos que se quieren obtener
de una base de datos y trabajar con ellos para hacer alguna técnica de machine
learning.
• Imágenes
Los datasets de imágenes son aquellos que almacenan miles y millones de imá-
genes, las cuales permiten hacer ejercicios de clasificación, uno de los ejemplos
clásicos, es el dataset MNIST, el cual representa dígitos escritos a mano del 0 al
9, además está conformado por 60.000 imágenes de entrenamiento y 10.000 para
48
validación, el tamaño de las mismas es de 28x28 píxeles.
Se entenderá por variable cualitativa aquella que representa una cualidad o atributo,
por ejemplo; Sexo, nacionalidad, color, raza, estrato social, etc. Las variables cua-
litativas presentan 2 escalas de medición, su conocimiento y comprensión es muy
importante desde el punto de vista práctico porque ayuda a identificar qué medidas
estadísticas es posible utilizar en los análisis [32].
En esta escala los diferentes valores que toma la variable, no se le puede definir un
orden natural, por ejemplo; Sexo, estado civil, raza, color, etc [32].
49
5.9.4. Escala Ordinal
En esta escala los diferentes valores que toma la variable categórica se pueden
clasificar de acuerdo a un orden natural predeterminado, pero las diferencias que se
representan entre ellos no tienen sentido cuantitativo, por ejemplo; Nivel educativo,
estrato social, nivel de satisfacción, etc [32].
50
una vez construidos estos campos derivados, se eliminará el campo
del cual proceden de nuestro dataset, o lo excluiremos del conjunto
de campos a usar en el aprendizaje. Tener dos campos directamente
dependientes como candidatos a predictores para un modelo podría
afectar negativamente, ya que ambos están aportando la misma infor-
mación y eso podría confundir al modelo.
51
Regresión: La regresión es básicamente el método nombrado para poder realizar
una predicción de una variable continua (fracciones o decimales), es decir una va-
riable aleatoria con infinitos valores. Por ejemplo, se puede aplicar regresión para
predecir; Peso de una persona, tiempo que tarda en hacer una actividad específica,
calcular el precio de una tarifa de taxi, etc.
52
5.10.3. Visión por Computador
En este caso se tiene como información de entrada a la RNA una imagen. Las tareas
más representativas de la visión por computador son:
Esta es una breve introducción de lo que son las redes neuronales artificiales y
su aporte a diferentes campos de la ingeniería y sobre todo a la generación de
soluciones a problemas mediante datos de entrada y salidas deseadas. Con esto
finalmente se dejan sembradas las bases para poder profundizar en el desarrollo
del proyecto.
53
6. SOFTWARE REQUERIDO Y TEORÍA IOT
6.1.1. Python
54
6.1.2. Lenguaje C
6.2.1. Matplotlib
55
ciles posibles. Puede generar gráficos, histogramas, espectros de po-
tencia, gráficos de barras, gráficos de error, diagramas de dispersión,
etc. Y con solo unas pocas líneas de código [43].
6.2.2. Numpy
6.2.3. Opencv
56
6.3. ENTORNOS
Los entornos virtuales permiten aislar los paquetes que se usan para un proyecto en
específico y así evitar problemas como por ejemplo los bugs entre las versiones de
Python 2 y 3. También se pueden exportar una lista de paquetes en un archivo con
todas las dependencias del proyecto entre esos se encuentra el que se ha utilizado
de base en proyectos de manera aleatoria [47].
6.3.1. Anaconda
Anaconda una distribución de código abierto que abarca muchas aplicaciones, li-
brerías y conceptos diseñados para el desarrollo de la Ciencia de datos con Python.
”En líneas generales Anaconda Distribution es una distribución de Python que fun-
ciona como un gestor de entorno, un gestor de paquetes y que posee una colección
de más de 720 paquetes de código abierto [48]”.
Características generales de Anaconda Esta Suite cuenta con una gran canti-
dad de características. Entre ellas las más destacables serían las siguientes; Anacon-
da es libre, de código abierto y con una documentación bastante detallada y una
gran comunidad.
57
Permite gestionar de manera avanzada paquetes relacionados a la Ciencia de
datos con Python desde la terminal.
Elimina problemas de dependencias de paquetes y control de versiones.
Está equipado con herramientas que permiten crear y compartir documentos que
contienen código con compilación,
ecuaciones, descripciones y anotaciones.
Permite compilar Python en código de máquina para una ejecución rápida.
Facilita la escritura de complejos algoritmos paralelos para la ejecución de tareas.
Brinda soporte para computación de alto rendimiento.
Los proyectos son portables. Esto permite compartir proyectos con otros y ejecu-
tar estos proyectos en diferentes plataformas. [49].
6.4. TENSORFLOW
6.4.1. Tensorboard
Los cálculos que utilizará TensorFlow para tarea como entrenar una
red neuronal profunda masiva, pueden ser complejos y confusos. Para
58
facilitar la comprensión, la depuración y la optimización de los progra-
mas TensorFlow, se ha incluido un conjunto de herramientas de visuali-
zación llamadas TensorBoard. Puede usar TensorBoard para visualizar
su gráfico TensorFlow, trazar métricas cuantitativas sobre la ejecución
de su gráfico y mostrar datos adicionales como imágenes que pasan
a través de él. Cuando TensorBoard está completamente configurado,
se ve así en la figura 25: [51].
59
6.5. YOLO DETECTION
6.5.1. Darkflow
60
a hardware como CPU y GPU [55].
61
ofrece la GPU que mejor se ajusta las necesidades de los usuarios,
sea cual sea el tamaño de la carga de trabajo.
Se puede conseguir específicamente el hardware necesario para una
tarea específica, independientemente de si la tarea requiere el uso de
GPUs durante horas o semanas. Se puede configurar una instancia
con la proporción exacta de procesadores, memoria y GPUs, en lu-
gar de adaptar la carga de trabajo a los límites de la configuración del
sistema local [57].
Objetos Etiquetados Estos objetos, utilizan la tecnología rfid o nfc que per-mite
tener la información de manera local como los que son códigos, identificación,
descripción, etc. También conocidos como “Objetos No ip” [58].
Objetos Sociales Estos objetos heredan gran parte de los objetos inteligen-tes y
gracias a eso tienen la capacidad de interactuar con otros dispositivos for-
62
mando una comunidad de manera autónoma para cooperar y lograr determinadas
actividades [58].
6.7.2. Sensores
Las sensores son dispositivos utilizados para adquirir información del mundo que los
rodea transformando las señales diferentes dominios de energía al dominio eléctri-
co con una salida determinada, los cuales se utilizan para la adquisición de datos
para experimentación o incluso en el campo de iot llevar esa información a la nube
procesarla y almacenarla [59].
Cámaras Las cámaras son utilizadas en la seguridad, robótica, domótica, etc. Pa-
ra el análisis del entorno y estas a su vez funcionan como sensores para determinar
lo que se encuentra en el lugar.
Cámara ojo de pez Es un lente que se utiliza en las cámaras para ampliar el
ángulo de visión de las cámaras y capturar 270 grados de visión o más, dependiendo
la capacidad o calidad del lente.
63
Fig. 26. Ejemplo de lente ojo de pez.[60].
Una plataforma de IoT se puede definir como un servicio software que reside en
la nube, estos se constituyen en puentes que permiten reunir todos los datos de
los sensores, actuadores para procesarlos, ya sea para almacenarlos en bases de
datos, para visualizarlos o para analizarlos y extraer de ellos información útil.
64
Protocolo
65
7. METODOLOGÍA
El presente proyecto está enfocado en los lugares públicos de la UAO. Es por ello
que los sitios seleccionados son el primer piso de cafetería por su alta concurrencia
de personas y variabilidad de ocupación durante el día, la sala de laboratorio de
electrónica puesto que es uno de los lugares en donde se reúnen estudiantes de
electrónica, eléctrica, biomédica y mecatrónica, por lo tanto también tiene un alto ni-
vel de ocupación y finalmente el laboratorio de automática en el cual se encuentran
estudiantes de asignaturas como control 1, 2 e inteligente, redes neuronales arti-
ficiales y d eep l earning, a ctuadores y a utómatas p rogramables, e tc., l o h acen ser
un lugar muy concurrido sobre todo en épocas de parciales. Para la captura de los
datos necesarios en la realización del proyecto se recolectan vídeos tomados por
una cámara con lente ojo de pez; Estos vídeos tienen una duración de 7.5 minutos
cada uno, con el nivel de ocupación correspondiente a vacío, medio y lleno en los 3
lugares, para un total de 9 vídeos.
Los primeros datos que se obtienen son vídeos, pero como tal, lo que se necesitan
son los frames para poder entrenar la red neuronal y es por ello que se usa un códi-
go escrito en lenguaje python para poderlos extraer; Se ingresa el vídeo y se elige
un periodo de muestreo que en el presente proyecto es de 30 imágenes por segun-
do (frames por segundo), dando un total 121.500 imágenes para el dataset. Hay que
tener en cuenta que los datos a utilizar deben estar normalizados o estandarizados
para poder obtener resultados óptimos en el entrenamiento; En el presente caso,
usando el software que permite hacer grabaciones con la cámara, se define la reso-
lución de 638x360 píxeles puesto que esta resolución permite entrenar la red más
rápido porque recibe menos información y se alcanza a distinguir correctamente a
las personas. Posteriormente se alojan las imágenes en carpetas en donde se les
66
asigna un nombre diferente a cada una y así se tendrían las 9 carpetas necesarias
para posteriormente añadirle la característica de detección de personas.
67
pudo obtener suficiente información de parte de la compañía y de un convenio que
existe con la UAO. Entonces, se decidió cambiar de opción y nos decantamos por
Google Cloud Platorm (GCP), la cual es una plataforma que cuenta con todas las
herramientas necesarias para hacer uso de la misma para el entrenamiento y vali-
dación de redes neuronales. Además, Google actualmente está haciendo eco en la
democratización de la inteligencia artificial, para ello, tiene a disposición de los usua-
rios herramientas como AutoML la cual permite por ejemplo hacer clasificadores de
imágenes de una forma sencilla, sin utilizar código alguno. Por último, se decidió
realizar este proceso en la nube ya que no se dispuso a tiempo de buenos recursos
(GPU’s) en la universidad para el desarrollo óptimo de este proyecto. Sin embargo,
se identificó que el uso de AutoML es bastante costoso (20 dólares la hora). Por lo
tanto, se llevó a cabo la exploración de Google Colaboratory, la cual es gratuita y
brinda la capacidad de computo necesaria para entrenar la red neuronal profunda
en un periodo de tiempo reducido a diferencia de usar CPU. La ventaja de Colab
es que se puede conectar con los servicios de google como Drive y esto facilita el
manejo y administración de la información puesto que el dominio de la universidad
permite tener en la nube aproximadamente 370 Gb de datos.
7.6. GRAFO
68
7.7. SOFWARE DE VISUALIZACIÓN DE INFORMACIÓN
7.8. VALIDACIÓN
69
8. RESULTADOS
Inicialmente se procedió a importar una cámara con lente ojo de pez, las carac-
terísticas técnicas de la misma es que debía dar una buena resolución (mínimo
1280x720 píxeles), además de tener una conectividad wifi para poder transmitir la
imagen a través de una de una red a un servidor (computador). La cámara adquirida
se puede observar en la figura 28:
70
Fig. 29. Cámara seguridad cafetería.
71
Se tuvo como resultado unas imágenes con alta presencia de luminosidad durante
el día por contraste, impidiendo que el lente se enfocara bien; Pero con la ventaja
de que es el mejor lugar para obtener una buena visión de las personas en el primer
piso de cafetería. Por otra parte en la biblioteca fue muy complejo posicionar la
cámara ya que en el interior de la misma hay muchos puntos de visión y para lograr
esto serían necesarias varias cámaras en los diferentes lugares, para poder asi
realizar el análisis en este lugar. Por lo tanto fue descartado por la ausencia de los
recursos necesarios.
72
Fig. 32. Cámara laboratorio Automática.
Posteriormente, se eligieron los días y horarios más propensos para que los sitios
en cuestión estuviesen en estados lleno, medio y vacío; Con esa información se
procedió a grabar 7:30 minutos de video en cada uno de los 3 estados para los
puntos de grabación (cafetería primer piso, laboratorio de electrónica y laboratorio
de automática). Los 9 vídeos fueron almacenados en la nube (Google Drive) para
su posterior procesamiento.
73
Fig. 33. Base de Datos Entrenamiento.
74
Fig. 34. Base de Datos Entrenamiento: 9 videos representativos de 7 minutos y
medio en donde se ilustran cada uno de los estados de ocupación por parte de
personas en cafetería primer piso, laboratorio de electrónica y laboratorio de auto-
mática.
75
8.2. EJECUCIÓN DE LA PREPARACIÓN DE DATOS
76
Posteriormente en la preparación de los datos se hace uso de la herramienta Google
Colaboratory (ver 6.6) en donde se puede implementar el código python. Además
de que se puede hacer uso de manera temporal (12 horas hasta que se restaure
la sesión) y gratuita de GPU’s Tesla T4 las cuales cuentan con 16 GB de memoria
GDDR5. Inicialmente lo que se quiere garantizar es que dentro de las imágenes
captadas por el sistema se detecten personas, para ello se usó YOLO (ver 6.5) co-
mo librería para añadir una característica (feature) adicional que son los cuadros
delimitadores (bounding boxes), los cuales otorgan información (píxeles blancos) a
la red de clasificación que se implementó (MobilenetV1.0).
En primera instancia se obtuvieron los frames de todos los vídeos con los respecti-
vos cuadros delimitadores y se separaron por carpetas. (ver figuras 36 y 37).
77
Fig. 37. Carpeta Electrónica Vacía con cuadros delimitadores generados por Yolo
Detection.
78
8.3. ENTRENAMIENTO DE RED PARA CLASIFICACIÓN DE NIVELES DE
OCUPACIÓN EN LA UAO
En total se generaron 113.900 imágenes con los cuadros delimitadores; Estas imá-
genes posteriormente fueron usadas como dataset de la red neuronal profunda de
clasificación de estados, que para este caso se decidió usar la arquitectura de Mobi-
lenet debido a, que es una red liviana y que por experiencia ha brindado resultados
muy buenos. Los cuales son ilustrados a continuación.
79
Fig. 38. Grafo general de la red de clasificación de niveles de ocupación.
80
Fig. 39. Cuellos de botella generados por la red para el entrenamiento (Bottlenecks).
81
Fig. 40. Entrenamiento con 1000 iteraciones a una tasa de aprendizaje (learning
rate) de 0.01.
82
Fig. 42. Evolución del Cruce de entropía cruzada (cross entropy) respecto a las
iteraciones.
83
No se entrenó con suficientes datos, y la cantidad de datos no es solo deter-
minante. Por ejemplo, si se tiene una gran cantidad de imágenes, pero estas no
representan la aplicación real, es probable que los resultados no sean los espera-
dos.
Una tasa de aprendizaje e iteraciones incorrectas pueden alterar de manera di-
recta los resultados, debido a que, si se usa una tasa de aprendizaje cercana a 1.0
el modelo se entrena con rapidez, pero puede ser inestable y por ende la red no se
entrenaría de forma correcta, es decir con un accuracy inferior al 50 % y un cross
entropy lejano a 0.
Es por ello que a continuación se muestran los resultados obtenidos por nuestro
modelo en situaciones reales; Es decir con datos que no fueron usados en el entre-
namiento.
84
TABLA III
Resultados DNN MobileNet V1.0 (Primera Parte)
Nota: Se representan en tablas los resultados obtenidos a partir del modelo de RNA
entrenado.
85
TABLA IV
Resultados DNN MobileNet V1.0 (Segunda Parte)
Nota: Se representan en tablas los resultados obtenidos a partir del modelo de RNA
entrenado. En los anexos se añade la dirección del repositorio en GitHub para que
se puedan apreciar los códigos necesarios con los que se obtuvieron estos resulta-
dos.
86
8.5. BASE DE DATOS
El código se dejaría ejecutando para que realice muestras cada minuto (hay que
tener en cuenta que está en Colab, por ende, la sesión se reiniciará cada cierto
tiempo, por lo tanto a nivel de escalabilidad, se necesitaría un servidor propio en
la nube como Google Cloud Platform o uno físico); El resultado del procesado se
almacena en una carpeta aparte, con su respectiva ubicación, nivel de ocupación,
fecha y hora. Esto se puede apreciar en la figura 43.
87
id: Identificador de los datos
nombre: Nombre de la imagen.
imagen: Imagen en formato Base64 (blob).
ocupación: Estado del nivel de ocupación del lugar por parte de personas detec-
tado (lleno, medio o vacío).
fecha: Día, mes y año en que se almacenó el dato.
hora: Horario en formato 24 horas en que se almacenó el dato.
88
8.6. PROCESAMIENTO Y ALMACENAMIENTO DE DATOS
89
de JAVA ira a esa carpeta buscando las imágenes. La carpeta es la que se observa
en la figura 43. En Colab se renombra la imagen resultante con la clasificación del
estado de ocupación estimado. Ahora que ya se tiene la imagen en la carpeta espe-
cificada, procedemos a agregar la información a la base de datos de MySQL. Esto
se hace haciendo uso del método POST del protocolo de comunicación REST.
Para el caso del administrador, se realizó una aplicación en Java, en donde podrá
tener acceso a toda la información que se recolecta, es decir, imágenes, niveles de
ocupación, fechas y horas. Además, podrá limpiar y/o filtrar la base de datos cuando
desee. La interfaz se ve de la siguiente forma.
(a) Activar Apache y MySQL (b) Ejecutar programa en Java para adqui-
sición de datos
(c) Mensaje de
bienvenida.
90
(a) Inicio de sesión. (b) Comenzar sincronización de base de datos MySQL
91
(a) Inicio de sesión. (b) Selección de lugar
92
9. CONCLUSIONES
Por otro lado, la solución IoT permite tener un monitoreo prácticamente en tiempo
real de lo que está ocurriendo, además permite almacenar la información para
un posterior estudio en el futuro, con esto se podrían generar estadísticas
relevantes para poder mejorar los servicios prestados en la cafetería y
laboratorios, puesto que se tendría el registro de los lugares y las fechas en
donde se presenta una gran
93
cantidad de congestión. Con esta información también se podrían hacer estudios
de mercado y/o redistribuciones de los espacios. Con este trabajo se grado se
puede comprobar de que no importa el lugar y las condiciones del mismo,
siempre y cuan-do existan imagen es, se pueden sacar los datasets de los
diferentes niveles de ocupación, por lo tanto, es un proyecto totalmente escalable
para aplicarlo en otras areas de la universidad, como el gimnasio, cafetería de
Villa Laurentino, segundo y tercer piso de cafetería, biblioteca, salas 1, área de
mesas, etc. En donde posi-blemente se puede sacar bastante información sobre
el nivel de ocupación y sería muy útil saber por ejemplo que el gimnasio no
tiene congestión para ir a practicar ejercicio.
La cámara que usamos no fue la mejor opción dado a que el lente tipo ojo de
pez genera unas distorsiones en la imagen que producen que el detector de
objetos "YOLO", se confunda fácilmente con otros objetos diferentes a la clase
"Persona", para poder disminuir esos falsos positivos, tuvimos que hacer
corrección de ojo de pez en el software brindado por el fabricante, pero sin
embargo, a futuro se reco-
94
mienda el uso de otro tipo de cámaras con gran angular pero sin que
distorsionen de manera tan radical como la nuestra.
Por ultimo, este sistema se puede utilizar en otros lugares a parte de la univer-
sidad en donde sea relevante tener un registro del nivel de ocupación, como
por ejemplo en centros comerciales, estaciones del MIO, parques, plazoletas de
comi-das, etc. Es información que somos conscientes que puede llegar a ser de
utilidad para empresas de mercadeo, por ejemplo. Adicionalmente, este proyecto
no termi-na aquí, la idea es poder seguir explorando más cosas, como por
ejemplo no solo clasificar nivel de ocupación de personas, sino de vehículos, o
utilizar las bonda-des de Yolo Detection para el conteo de personas y que no
solo se pueda medir la ocupación como algo cualitativo, sino que también de
forma cuantitativa, se pueden realizar múltiples proyectos con Yolo, por ejemplo;
detección de rostros, detección de placas de vehículos para identificar aquellos
que estén registrados y autorizados para usar los parqueaderos de la universidad,
detección de anomalías para detectar y/o predecir posibles robos, choques de
vehículos, se pueden detectar diferentes patologías a partir de imágenes
médicas. Definitivamente las redes neuronales arti-ficiales son un campo
fascinante el cual aún le falta mucho por ser explorado y las oportunidades que
ofrece la visión por computadora son prácticamente ilimitadas.
95
REFERENCIAS
96
https://towardsdatascience.com/teslas-deep-learning-at-scale-7eed85b235d3.
[Accedido: 08- Jul- 2019].
[10] YouTube. Jetson TX1 sorflow object detection with Ten-
SSD Mobilenet. línea] Disponible en:
https://www.youtube.com/watch?v=nd39Yz9CwgEt=102s
[13] Google. (n.d.). Know before you go, with Google. [En línea] Disponible en:
https://blog.google/products/search/know-you-go-google/ [
97
samiento de imágenes digitales.. 16th ed. 2014 [en linea]
Disponible en p.https://ezproxy.uao.edu.co/menu. Disponible: http://
ezproxy.uao.edu.co:2094/eds/pdfviewer/pdfviewer?vid=2sid=b2a4031d-
f87a-4246-b969-9fa24e721f10
[18] Rey, N., Volpi, M., Joost, S. y Tuia, D. (2017). Detecting ani-
mals in African Savanna with UAVs and the crowds. In: Remo-
te Sensing of Environment. MultiModal Remote Sensing, Depart-
ment of Geography, University of Zurich, Switzerland: ELSEVIER,
p.https://www.sciencedirect.com/science/article/pii/S0034425717303942.
[19] J. López Sotelo, Redes Neuronales Artificiales y Deep Learning. ( pp.
1-15-17-19). Cali.
[20] López Sotelo, Aprendizaje Profundo (Deep Learning). Cali, p. 7.
[21] López Sotelo y E. Caicedo, Una aproximación práctica a las redes
neuronales artificiales. Cali, 2009, p. 79.
[22] López Sotelo, Profundo (Deep Learning). Cali, p. 12.
[23] López Sotelo, Aprendizaje (Deep Learning). Cali, p. 13.
[24] “Convolutional Neural Network”, La.mathworks.com, 2018. [En línea]. Disponi-
ble: https://la.mathworks.com/discovery/convolutional-neural-network.html. [Ac-
cedido: 13- Mar- 2018].
[25] N. Diaz Salazar y G. Salazar Gómez, Reconocimiento de objetivos en
imágnes usando aprendizaje profundo. Ingeniería, Universidad Autónoma de
Occidente, 2018.
[26] J. López Sotelo, Aprendizaje Profundo (Deep Learning).
[27] F. Mahvar, ”Art and Science of Machine Learning en Español”, 2018.
Coursera.[En línea] Coursera. Disponible: https://www.coursera.org/learn/art-
science-ml-es/lecture/MSkrm/optimizacion [Accedido 11 Mar. 2019].
[28] Cs231n.github.io. (n.d.). CS231n Convolutional Neural Networks for Visual Re-
cognition. [En línea] Disponible en: http://cs231n.github.io/neural-networks-3/
[Accedido 15 Sep. 2018].
[29] J. López Sotelo y E. Caicedo, Una aproximación práctica a las redes
neurona-les artificiales. Cali, Colombia: Universidad del Valle, 2017, pp. 77-85.
98
[30] “Google Cloud Platform”, Console.cloud.google.com, 2018. [En línea].
Disponible: https://console.cloud.google.com/bigquery?project=wise-shell-
224405p=bigquery-public-datad=new_york_taxi_tripst=tlc_yellow_trips_
2018page=table. [Accedido: 17- Mar- 2019].
[31] ”TensorFlow: MNIST for beginners | basiafusins-
ka | Katacoda”, Katacoda.com. [En línea]. Disponible:
https://www.katacoda.com/basiafusinska/courses/tensorflow-getting-
started/tensorflow-mnist-beginner. [Accedido: 18- Mar- 2019].
[32] D. Cardona Salgado, Analisis Exploratorio de Datos. Diplomado: Métodos Es-
tadísticos utilizados en la Investigación de Mercado, pp. 15,16,17.
[33] M. Alonso Gimeno and M. Martín, ”Introducción al Machine Learning (2.a edi-
ción)”, MiríadaX, 2017.
[34] J. López Sotelo, Redes Neuronales Artificiales y Deep Learning. , p. 15
[35] H. Latinoamérica, 2018, p. 3.
[36] López Sotelo, J. Redes Neuronales Artificiales y Deep Learning. p. 17.
Cali.
[37] López Sotelo, J. Redes Neuronales Artificiales y Deep Learning. (., pp. 19).
Cali.
[38] F. Li, A. Karpathy y J. Johnson, Lecture 8: Spatial Localization and Detection.
Stanford, 2016, p. 8.
[39] Programación. (2019). . [ebook] Instituto Tecnológico de Celaya, p.2.[en linea]
Disponible en: http://www.citethisforme.com/es
[40] http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/4/informatica_ 4.pdf .
informatica_4, 2019, pp. 2-3.
[41] Docs.python.org.ar, 2019. [En línea]. Disponible:
http://docs.python.org.ar/tutorial/pdfs/TutorialPython2.pdf. [
[42] Pablin.com.ar. [En línea]. Disponible: http://www.pablin.com.ar/computer/ cur-
sos/c3/man001.htm.
99
[43] S. Programacion en Castellano, “Introducción a la librería Matplotlib
de Python”, Programación en Castellano., 2019. [En línea]. Disponi-
ble: https://programacion.net/articulo/introduccion_a_la_libreria_matplotlib_de
_python_1599.
[44] 2019. [En línea]. Disponible:
http://webs.ucm.es/info/aocg/python/modulos_cientificos/numpy/index.html.
[52] J. Redmon, “YOLO: Real-Time Object Detection”, Pjreddie.com, 2019. [En lí-
nea]. Disponible: https://pjreddie.com/darknet/yolo/.
100
[53] “Detección de objetos con YOLO: implementaciones y
como usarlas”, Medium, 2019. [En línea]. Disponible:
https://medium.com/@monocasero/detecci %C3 %B3n-de-objetos-con-yolo-
implementaciones-y-como-usarlas-c73ca2489246.
101
https://www.tecnoseguro.com/noticias/cctv/deep-learning-videovigilancia-
hikvision.html
[63] “Falabella.com”, FalabellaCO, 2018. [En línea]. Disponible:
https://www.falabella.com.co/falabella-co/category/cat4920940/Gamers.
[64] “Precios de las instancias EC2 – Amazon Web Services (AWS)”,
Amazon Web Services, Inc., 2018. [En línea]. Disponible:
https://aws.amazon.com/es/ec2/pricing/on-demand/.
[65] X Song, H Kanasugi, R Shibasaki, (2016). DeepTransport: Prediction and
Simulation of Human Mobility and Transportation Mode at a Citywide Level.
Disponible ; https://www.ijcai.org/Proceedings/16/Papers/372.pdf
[66] D. Calvo. Red neuronal Convolucional CNN 2018, Dsiponible ; http://
www.diegocalvo.es/red-neuronal-convolucional-cnn/
102