Está en la página 1de 30

Juan José Fuenzalida González

Diseño e Implementación de un sistema


de seguridad mediante Deep Learning.
Informe 3: Seminario de Proyecto de Ingeniero Civil Electrónico

Escuela de Ingeniería Eléctrica


Facultad de Ingeniería
Valparaíso, 4 de septiembre de 2019
Diseño e Implementación de un sistema de seguridad
mediante Deep Learning

Juan José Fuenzalida González

Informe 3 para optar al título de Ingeniero Civil Electronica


aprobada por la comisión de la
Escuela de Ingeniería Eléctrica de la
Facultad de Ingeniería de la
Pontificia Universidad Católica de Valparaíso
conformada por

Sr. Gabriel Enrique Hermosilla Vigneau


Profesor Guía

Sr. Gonzalo Farías Castro


Profesor Correferente

Sr. Sebastián Fingerhuth Massmann


Secretario Académico

Valparaíso, 4 de septiembre de 2019


Resumen
Los sistemas de monitoreo actuales basados en cámaras de seguridad se han convertido en un requisito
operacional considerado esencial en el ámbito de la seguridad y protección de entidades comerciales,
su funcionamiento está basado en la observación humana mediante el uso de cámaras de seguridad. El
operador al realizar una detección en el lugar de monitoreo notifica lo sucedido a las entidades
encargadas de la seguridad respectivas para que se proceda a las acciones correspondientes según el
caso. Actualmente la estructura de funcionamiento de los sistemas de monitoreo presentan una
considerable ineficiencia, debido al tiempo de detección y de reacción, además de múltiples
limitaciones humanas que se presentan en el monitoreo, este supone una enorme carga y dificultad
para las personas, además que su costo es demasiado alto para ser factible para muchas entidades
comerciales.

En este proyecto se llevará a cabo el entrenamiento de una red neuronal llamada SSD-MobileNet, esta
red es muy utilizada en el procesamiento de imágenes, ya que es efectiva en la visión artificial, como en
la clasificación y segmentación de imágenes, entre otras aplicaciones. De esta forma, la aplicación de
esta red tendrá un buen rendimiento en lo que se quiere realizar en este proyecto, debido a que su
implementación en la detección de objetos en tiempo real ha tenido un gran éxito a lo largo de la
evolución de la inteligencia artificial.

Se comenzará indicando el estado del proyecto, en el sentido de mostrar cual es la problemática del
proyecto y en qué contexto será aplicado. Para ello se expondrá los objetivos generales del proyecto,
los objetivos específicos, y los objetivos específicos de esta mesa para poder cumplir con el objetivo
general del proyecto. De esta manera se podrá orientar al lector para que pueda comprender los
distintos puntos a tratar. Posteriormente, se analizará una red neuronal convolucional CNN para
después proseguir con la red SSD-MobileNet que se utilizará para poder llevar a cabo los distintos
objetivos planteados. Al abarcar el funcionamiento de esta red de manera detallada, el lector podrá
comprender las diversas técnicas que se usarán para lograr la detección del objeto que se quiere
analizar. Esta red se compone de dos redes que trabajan por separado, primero se analizará la SSD, la
cual tiene la función de detectar los objetos. Posteriormente, se analizará la red MobileNet, esta se
encarga de realizar la clasificación de las distintas clases. Luego de haber abordado a fondo estas redes
por separado, se observará estas redes funcionando juntas, para que así puedan ser entrenadas y
cumplir la tarea que se les encomendó. Luego del análisis de las redes a utilizar, se procederá a analizar
el detector de personas que se usará para este proyecto, con el fin de mostrar la precisión que este
tiene. Además de esto se mostrará el dataset que se usará para poder entrenar el modelo, el cual tiene
como finalidad detectar distintos objetos que puede poseer un posible
Índice general
Introducción .............................................................................................................................................. 1

1 Estado del proyecto. ........................................................................................................................... 2


1.1 Problematica. ........................................................................................................................................................................ 2
1.2 Contexto. ................................................................................................................................................................................. 2
1.3 Como atacar el problema................................................................................................................................................. 2
1.4 Objetivos. ................................................................................................................................................................................ 3
1.4.1 Objetivo general. .................................................................................................................................................... 3
1.4.2 Objetivos especificos. ........................................................................................................................................... 3
1.4.3 Objetivo específico de este informe. ............................................................................................................. 3

2 Redes Neuronales Convolucionales. ............................................................................................. 4


2.1 Capa convolucional. ........................................................................................................................................................... 5
2.2 Pooling ..................................................................................................................................................................................... 5
2.3 Capas Totalmente Conectadas. ..................................................................................................................................... 6
2.4 SSD ............................................................................................................................................................................................. 7
2.4.1 Entrenamiento ........................................................................................................................................................ 7
2.4.2 Modelo ........................................................................................................................................................................ 9
2.4.2 Arquitectura y predicion de las Bounding Box. .....................................................................................10
2.5 MobileNet .............................................................................................................................................................................12
2.5.1 Arqutectura de Mobilenet................................................................................................................................12
2.5.2 Convolucion separable en profundidad y su costo computacional. ..............................................14
2.5.3 Multiplicador de ancho α .................................................................................................................................15
2.5.4 Multiplicador de resolución ρ ........................................................................................................................16
2.6 SSD-MobileNet ...................................................................................................................................................................16

3 Dataset. ................................................................................................................................................. 17
3.1 Estructura del Dataset. ...................................................................................................................................................17
3.2 Cantidad de imágenes. ....................................................................................................................................................18
3.3 Algunas imágenes del Dataset. ....................................................................................................................................18

4 Detección de los objetos. ................................................................................................................ 19


4.1 Clase person. .......................................................................................................................................................................19
4.2 Clase Pistol. ..........................................................................................................................................................................20
Índice general

4.3 Clase Knife. ...........................................................................................................................................................................20

Dicusión y conclusion ......................................................................................................................... 22

5 Planificación........................................................................................................................................ 23
5.1 Carta Gantt para el primer semestre. .......................................................................................................................23
5.2 Carta Gantt para el segundo semestre. ....................................................................................................................24

Bibliografía .............................................................................................................................................. 25
Introducción
Una forma de reducir y evitar este tipo de criminalidad es mediante la detección temprana de las armas
cuando ocurren situaciones de peligro como un robo. Lo cual proporcionaría un mejor tiempo de
reacción por parte de las entidades encargadas de la seguridad. Un robo dura aproximadamente 3
minutos o menos, lo cual es una de las razones de que la mayoría de los robos que se cometen no se
resuelven, debido al tiempo de reacción. El uso del monitoreo en vivo es una opción poco viable para la
mayoría de los negocios, debido a su elevado costo y por múltiples limitaciones que posee, como tiempo
de detección, además limitaciones humanas en el aspecto del monitoreo.

Una detección instantánea permitiría notificar a las autoridades en el mismo momento en el que la
situación está sucediendo, no luego como se realiza actualmente, así como activar sistemas que posean
una función disuasiva hacia las personas que cometen estos tipos de hechos.

Para que una red tenga un buen rendimiento es necesario incluir distintos parámetros que están
directamente involucrados con la eficiencia de la red, uno de ellos es la cantidad de imágenes que se
usarán para poder realizar el entrenamiento, de tal manera de lograr la menor perdida posible. Para
ello también es necesario utilizar los mejores pesos que se encontraron en este entrenamiento. Además,
su arquitectura será de suma importancia, en la cual se destacan la profundidad, cantidad de neuronas,
función de activación, épocas, función de pérdidas y batch_size.

La detección de objetos se puede implementar en distintas áreas, como por ejemplo en la identificación
de productos en un supermercado, detección de rostros en el acceso a un departamento, en la
identificación de distintas aves, autos, tarjetas impresas, etc. Y en este caso en la detección de un acto
delictivo. Por esta razón es de suma importancia que la red neuronal sea capaz de procesar imágenes
en tiempo real, y para esto debe ser rápida. Además, tiene que ser precisa de tal manera que pueda
detectar distintos objetos o actitudes en una persona que esta con intenciones de realizar un delito.

En este informe se utilizará la red neuronal convolucional SSD-MobileNet, la cual posee una gran
eficiencia en el procesamiento de imágenes en tiempo real. En este caso la SSD se utilizará como un
detector de objetos y por ende la MobileNet clasificará según la clase correspondiente al objeto.

1
1 Estado del proyecto.
1.1 Problematica.
La implementación de cámaras de vigilancia en entidades comerciales, en medios de transporte o en
conserjería de un edificio, buscan registrar lo sucedido cuando se dan situaciones de peligro como
robos, sin embargo en el caso de estas entidades en la mayoría de los casos no solicitan la
implementación de un monitoreo en vivo a las empresas de seguridad debido en su mayor parte al costo
y a la baja eficiencia de esos sistemas, por lo cual en la mayoría de los casos se implementan solamente
cámaras. Por ejemplo, en conserjería de un edificio existen muchas cámaras que son vigiladas por una
sola persona, en este caso el conserje, pero esta persona no está las 24 horas del día observando estas
cámaras, debido a que tiene que realizar trabajos de administración o cualquier otra tarea
encomendada. De esta manera algunas acciones de peligro ocurridas en el edificio pasan
desapercibidas y no se les toma la importancia correspondiente.

1.2 Contexto.
Este trabajo se enfocará principalmente en la detección de distintos elementos o personas, que pueden
llevar a cabo alguna tarea delictiva que afecte a la seguridad de la población. De esta manera, se enfocará
principalmente en los sectores en donde el delito pueda ser detectado por una cámara, por ejemplo: en
los locales comerciales, vía pública, condominios, universidades, estadios de futbol, etc.

Para dar un ejemplo tomaremos un sector para desarrollar el proyecto, un condominio, en el cual
existen cámaras de seguridad, una persona encargada de vigilar estas cámaras (conserje), además se
sabe que personas pueden entrar al condominio y quiénes no. Por lo tanto, se puede implementar un
sistema para detectar personas que no pertenezcan a este condominio o que porten objetos que afecte
a la seguridad de las personas que viven en este sector.

1.3 Como atacar el problema.


Para poder atacar este problema se usará Deep Learning, principalmente los algoritmos SSD y
MobileNet, los cuales se explicarán a fondo a lo largo del informe. Primero por medio de una cámara se
generará una base de datos de imágenes que contengan diferentes elementos delictivos a clasificar,
luego se entrenará una máquina para que pueda detectar una clase y clasificarla. Si la máquina detecta
este elemento como sospechoso el sistema generará una alarma, advirtiendo a los usuarios que su
seguridad está en peligro. Además de esto, se obtendrán fotos de la persona que está cometiendo esta
acción delictiva.

2
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

1.4 Objetivos.
Para poder desarrollar el proyecto se deben cumplir distinto objetivos. A continuación, se darán a
conocer el objetivo general del proyecto, los objetivos específicos y el objetivo específico de este
informe para poder cumplir con el desarrollo del objetivo general.

1.4.1 Objetivo general.


Generar e implementar un sistema computacional que permita detectar personas (posibles ladrones)
en cámaras de seguridad utilizando Deep Learning

1.4.2 Objetivos especificos.


- Estudiar el estado del arte de Deep Learning (redes neuronales convolucionales, R-CNN, Fast R-CNN,
Faster R-CNN, Mask R-CNN, Mobilnet, etc.)

- Implementar algoritmos de Deep Learning en Keras

- Realizar el dataset para el proyecto, para posteriormente, aplicar el algoritmo seleccionado en videos
para obtener resultados preliminares

- Aplicar algoritmos de detección/clasificación en streaming en tiempo real obtenidos de cámaras de


seguridad de la EIE (u otros)

- Revisión final del proyecto. Realizando evaluaciones, medidas, tasa de acierto, precisión, etc.

1.4.3 Objetivo específico de este informe.


El objetivo de este informe es desarrollar la base de datos que se necesitara para poder entrenar
nuestro modelo, para así obtener buenos resultados en las detecciones. La idea fundamental es que esta
base de datos se robusta y con imágenes claras de los objetos que se quieren detectar.

3
2 Redes Neuronales Convolucionales.
Una red neuronal convolucional (CNN) es una clase de red neuronal artificial que está inspirada en la
corteza visual del cerebro la cual consiste en capas de células simples y complejas. Este tipo de redes
neuronales artificiales permite realizar tareas de clasificación directamente a partir de imágenes, con
el objetivo de reconocer objetos, caras y escenas, aprendiendo directamente a partir de los datos de las
imágenes utilizando patrones para clasificarlas.

Las CNN’s aprenden extrayendo de las imágenes una jerarquía de características no lineales que crecen
en complejidad a través de sus capas, comenzando en sus primeras capas en donde se detectan bordes,
sombras hasta llegar a capas más profundas en donde se detectan características mucho más complejas
como rostros. Estas características extraídas son usadas por sus capas finales para realizar tareas de
clasificación o regresión. A continuación, en la figura 1, se observa la función de las distintas capas.

Figura 1. Función de las capas convolucionales.

Las CNN’s reciben como ingreso imágenes, las cuales son matrices tridimensionales en donde le tamaño
de las dos primeras dimensiones corresponde a la longitud y ancho de las imágenes en pixeles y la
tercera dimensión corresponde al número de canales que posee la imagen, si la misma es una imagen
RGB esta posee 3 canales y si una imagen es a blanco y negro esta posee 1 canal. Estas matrices ingresan
a la red que posee una estructura conformada por capas de convolución, capas pooling y una red
neuronal totalmente conectada.

4
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

2.1 Capa convolucional.


Las capas convolucionales sirven como extractores de características, por lo tanto, aprenden las
características de sus imágenes de entrada, las imágenes a las capas convolucionales en donde se
combinan con ‘filtros’ o ‘kernels’. Al combinar los filtros con las imágenes de ingreso la CNN realiza una
multiplicación de la matriz del filtro de la imagen de entrada y luego suma todos los elementos de la
matriz resultante para obtener un valor único. Estos valores obtenidos al deslizar el filtro por la imagen
realizando la operación de convolución forman el “Mapa de Características”, esto es observado en la
figura 2.

Figura 2. Etapa de convolución.

Durante el entrenamiento la red neuronal emplea el algoritmo del descendimiento del gradiente
mediante el cual aprende los valores óptimos de las matrices (filtros) que le permiten extraer
características significativas como texturas, bordes y formas del mapa de características de ingreso. A
medida que aumenta la cantidad de filtros aplicados a la entrada, aumenta la cantidad de características
que la CNN puede extraer.

2.2 Pooling
Pooling es una operación que reduce las dimensiones espaciales, largo y ancho del mapa de
características, no afectando a la profundidad del mismo, esta capa se suele aplicar luego de la capa
convolucional o luego de la aplicación de una función de activación, esta operación logra reducir el
número de parámetros y por lo tanto ayuda a controlar el sobreajuste de la red, lo descrito se observa
en la figura 3.

5
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Figura 3. Etapa Pooling.

El algoritmo más usado para la operación de Pooling es “Max Pooling”. Max Poling opera de manera
similar a la convolución, esta se desliza sobre el mapa de características utilizando ventanas de un
tamaño especifico, para cada ventana el valor máximo se envía a un nuevo mapa de características y
todos los demás valores se descartan, con lo cual se preservan la características más importantes, esto
se puede observar en la figura 4.

Figura 4. Max Pooling.

2.3 Capas Totalmente Conectadas.


Las capas de neuronas totalmente conectadas se implementan al final de la red neuronal convolucional,
las cuales realizan la operación de clasificación basados en las características extraídas por parte de la
convolución, por lo cual el ingreso a estas capas es una entrada aplanada del mapa de características
resultante de la etapa de convolución, esto se puede observar en la figura 5.

Figura 5. Capas Totalmente Conectadas.

Este proyecto se llevará a cabo por la red neuronal convolucional SSD-MobileNet, la cual tiene una alta
efectividad en la detección de objetos en tiempo real. Para que se entienda mejor esta redes neuronales
convolucionales, se evaluarán por separado, es decir, se detallará SSD como detector de objetos y
MobileNet como clasificador.

6
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

2.4 SSD
Esta red neuronal convolucional solo necesita una imagen de entrada, generalmente se utilizan con una
resolución de 300x300. Además, necesita cuadros de verdad para cada objeto a detectar, de esta
manera cada clase que se quiera detectar debe estar etiquetada. El primer paso a realizar es el
entrenamiento de la red, para que esta pueda detectar los objetos.

El algoritmo SSD se divide en dos grandes partes:

1. Extracción de características, que para ello se apoyará en la arquitectura VGG-16 de la cual se habla
en el siguiente punto.

2. Aplicar filtros convolucionales para la detección de objetos. Para realizar la predicción se utiliza una
capa Conv4_3 (38*38*4), la cual “divide” la imagen en 38*38 recuadros y realiza 4 predicciones por
celda. Cada predicción está formada por la Bounding Box y por el número de clases que queremos
detectar más uno, la cual es el fondo, en caso de que una Bounding Box no tenga objetos pertenecerá a
la clase 0, que es el fondo. En la Figura 6, se puede observar el proceso que realiza la capa Conv4_3 pero
en vez de ser de 38*38*4 en este ejemplo es de 8*8*4.

Figura 6. Aplicación de filtros para la detección de objetos.

2.4.1 Entrenamiento
En el entrenamiento se debe tener previamente las etiquetas de cada clase, el cual se puede realizar con
un programa llamado labelImg. Posteriormente comienza el entrenamiento, debemos determinar en
qué celda de la imagen se encuentra el objeto a detectar. Se comienza pasando el filtro kernel por cada
celda de la imagen de entrada, este irá haciendo coincidir cada cuadro de verdad básica con el cuadro
predeterminado, la idea es obtener la mejor superposición de jaccard (con umbral de 0.5). Cuando se
logre una buena superposición, en la celda correspondiente se le asignará su verdad fundamental,
indicando que en ella se encuentra el objeto a detectar, a este proceso se le llama estrategias de
emparejamiento. Esto simplifica el problema de aprendizaje, lo que permite a la red predecir
puntuaciones altas para múltiples celdas predeterminadas.

Las predicciones de SSD se clasifican como coincidencias positivas o negativas. SSD solo usa
coincidencias positivas en el cálculo del costo de localización. Si el cuadro de límite predeterminado
correspondiente tiene una IoU (la intersección sobre la unión, es la relación entre el área intersectada

7
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

sobre el área unida para dos regiones) mayor que 0.5 con la verdad básica, la coincidencia es positiva.
De lo contrario, es negativo. En la figura 7, se puede observar claramente cómo realizar el cálculo de la
IoU.

Figura 7. Cálculo da la IoU

La idea del entrenamiento es encontrar la pérdida del modelo a entrenar, la cual se determina de la
siguiente manera:

En donde:

N: es el número de cajas con correspondencia positiva.

𝐿𝑙𝑜𝑐 : es la pérdida de localización, determinada por la diferencia entre los parámetros de la caja
pronosticada y la caja de verdad.

𝐿𝑐𝑜𝑛𝑓 : es la perdida de confianza, determinada como la perdida de softmax sobre las confidencias de
varias clases.

Α: es un por la validación cruzada.

Pérdida de confianza.

Esto mide qué tan segura está la red de la objetividad del cuadro delimitador calculado (mide el error
a la hora de predecir la clase a la cual pertenece el objeto) Cada predicción positiva se penaliza de
acuerdo al factor de confianza de la clase correspondiente. Para las predicciones negativas se penaliza
la perdida respecto a la clase “0”, la cual representa que ningún objeto se ha detectado. Los cuadros
predeterminados que no coinciden con ningún cuadro de verdad fundamental se consideran negativos
y contribuyen solo a la pérdida de confianza, mientras que todos los cuadros con coincidencia positiva
se suman a la pérdida de confianza, así como a la pérdida de localización.

8
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Pérdida de localización.

Mide el error entre las Bounding Box predicha y la Bounding Box real, solo de las cajas positivas, las
negativas se ignoran.

Al final, MultiBox solo retiene las principales predicciones de K que han minimizado las pérdidas tanto
de ubicación ( LOC ) como de confianza ( CONF ).

Algunos detalles del entrenamiento:

-La mayoría de los cuadros predeterminados son negativos, Esto introduce un desequilibrio
significativo entre los ejemplos positivos y negativos, los ordenamos usando la pérdida de confianza
más alta para cada uno. Se selecciona la casilla predeterminada y se elige las principales para que la
proporción entre los negativos y positivos sean 3:1. Esto conduce a una optimización más rápida y una
capacitación más estable.

-Aumento de datos para la precisión de objetos más pequeños: Se realiza una operación de alejamiento
para crear más muestras de entrenamiento pequeño. Se toma una imagen al azar y generamos 16
tamaños de la imagen original. De esta manera tenemos un aumento de los datos. Además, tenemos que
duplicar las iteraciones de entrenamiento. Esto logra un aumento de 2% y 3% de mAP en múltiples
conjuntos de datos.

2.4.2 Modelo
Este modelo se basa en una red convolucional feed-forward, que produce una cantidad determinada de
cuadros delimitadores, el cual cada uno tendrá una puntuación para la presencia de la clase a detectar.
De esta manera después de realizar varias convoluciones para la extracción de características, se
obtiene una capa de característica de tamaño m x n con p canales. Es importante mencionar que en esta
capa se aplicará un filtro kernel de 3 x 3.

Para cada ubicación en el mapa de característica, (en la figura 12 (b) y (c) la ubicaciones están
representadas por celdas) se tienen k cajas delimitadoras. Estos k cuadros delimitadores tienen
diferente tamaño y relación de aspecto. En el cual, en cada uno de ellos se calculará los puntajes de clase
C y 4 compensaciones con respecto a la forma predeterminada original del cuadro delimitador. En total
para cada capa de característica se generan (c+4)kxmxn salidas.

Por ejemplo, la capa conv4_3, tiene un tamaño de 38 x 38 x 512 y se aplica un filtro de 3 x 3. Y hay cuatro
cuadros delimitadores y cada cuadro delimitador tendrá salida (c + 4). Supongamos que hay 20 clases
a detectar, la salida es 38 x 38 x 4 (21 + 4)=144.400. De esta manera la cantidad de cuadros
delimitadores es 38 x 38 x 4 =5776. Además se debe mencionar que si se suman todos los cuadros
delimitadores de todas las capas de la red se generarán 8732 cajas en total.

9
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

2.4.2 Arquitectura y predicion de las Bounding Box.

Figura 8. Arquitectura de la SSD

Respecto a la arquitectura del SSD está se basa en la arquitectura del VGG-16, como se ve en la figura 8.
La VGG-16 es una red convolucional que ha sido entrenada con más de un millón de imágenes. Tiene 16
capa de profundidad y es capaz de clasificar imágenes en mil categorías de objetos distintas desde
teclados hasta animales. La arquitectura del SSD se basa en la arquitectura del VGG-16 debido a la gran
precisión que este último posee a la hora de clasificar imágenes. Aunque es un tema que se tratará más
adelante, aquí se puede ver que SSD utiliza mapas de característica de escala múltiple. La arquitectura
de la VGG-16 se observa en la figura 9.

Figura 9. Arquitectura de la VGG-16.

Sin embargo, la arquitectura del SSD no es exactamente la misma que la del VGG-16, ya que sustituye la
capas fully-connected por 6 capas convolucionales 5 de las cuales se encargan de detectar objetos. Esto
permite extraer características en múltiples escalas y disminuir progresivamente el tamaño de la
entrada a cada capa posterior. Tres de esas capas añadidas realizan 6 predicciones en vez de cuatro
dando un total de 8732 predicciones para una imagen de entrada de 300*300.

Para predecir la Bounding Box podríamos partir de una predicción aleatoria e ir modificándola
mediante el entrenamiento. El problema es que es probable que los distintos objetos que queremos
detectar tengan formas distintas, por ejemplo, coches y personas. El modelo durante el entrenamiento
es probable que pelee consigo mismo para ver qué forma, la de una persona o un coche, optimiza para

10
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

cada predicción. Queremos que nuestras predicciones sean diversas como se puede apreciar en la figura
10, no similares como se puede ver en la figura 11.

Figura 10. Predicciones distintas. Figura 11. Predicciones similares.

Selección de escala múltiple y relación de aspecto para cuadros predeterminados

Para seleccionar los anchor boxes SSD y que estos no sean similares, asigna un valor de escala a cada
capa de extracción de características comenzando por la izquierda por la capa Conv4_3. A esta capa,
que se encarga de detectar objetos a la escala más pequeña, se le asigna el valor más pequeño, que suele
ser 0.2, y se va incrementando linealmente este valor de escala hasta alcanzar el valor de 0.9 en la capa
de más a la derecha. Computando la escala con la relación de aspecto, valor que se le asigna a cada capa,
calculamos la altura y la anchura del anchor box. La anchura se calcula como 𝑤=𝑒𝑠𝑐𝑎𝑙𝑎∗√𝑎𝑠𝑝𝑒𝑐𝑡𝑟𝑎𝑡𝑖𝑜
y la altura como ℎ=𝑒𝑠𝑐𝑎𝑙𝑎/√𝑎𝑠𝑝𝑒𝑐𝑡𝑟𝑎𝑡𝑜𝑖. SSD se suele seleccionar de 4 a 6 anchor box por defecto.

Luego, podemos combinar predicciones para todos los cuadros predeterminados con diferentes escalas
y relaciones de aspecto desde todas las ubicaciones de muchos mapas de característica, tenemos un
conjunto diverso de predicciones, que cubren varios tamaños y formas de objetos de entrada.

SSD define como predicciones positivas aquellas Bounding Box predichas que tienen una IoU>0.5
respecto a la Bounding Box real como se mencionó anteriormente, éstas predicciones positivas son las
que se tienen en cuenta a la hora de calcular la función de coste. SSD utiliza mapas de características de
escala multiple y anchor boxes para detectar objetos a diferentes escalas. Para mostrar esto nos vamos
a apoyar en la figura 12. El perro se localiza mediante una Bounding Box en rojo en el mapa de
características de la capa 4*4, sin embargo, ninguna Bounding Box encaja correctamente con la posición
del perro en la 8*8. Con el gato pasa lo mismo, pero al revés, se detecta en la capa de alta resolución de
8*8, mediante las 2 Bounding Box azules, pero no en la capa 4*4.

11
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Figura 12. Mapas de características de escala múltiple.

Las capas de alta resolución son las que se encargan de detectar objetos pequeños, en SSD esta capa
sería la Conv4_3 la cual es de 38*38, una reducción considerable partiendo que la imagen de entrada es
de 300*300. Debido a esto SSD suele dar resultados peores que otros detectores de objetos a la hora de
detectar objetos pequeños.

2.5 MobileNet
MobileNet es muy utilizado en el análisis de videos en tiempo real, ya que posee una alta eficiencia. Su
funcionamiento es muy parecido a una CNN, excepto la etapa de convolución. Se construye
principalmente de convoluciones separables en profundidad y posteriormente reduce el cálculo en las
primeras capas.

2.5.1 Arqutectura de Mobilenet


A continuación, se describirán las capas centrales sobre las que se basa mobileNet, que son filtros
separables en profundidad. Luego se describirá la estructura de la red de mobilenet y concluimos con
descripciones del multiplicador de ancho y el multiplicador de resolución.

En la primera capa se aplica un filtro a todos los canales de la imagen de entrada (para una imagen RGB,
serán 3 canales). Desliza este filtro a través de los 3 canales de entrada de la imagen, para extraer
características y para combinar todos los canales entradas. ¿Pero de qué manera la combina? Si la
imagen tiene 3 canales de entrada, al ejecutar un solo filtro de convolución a través de esta imagen se
obtiene una imagen de salida con solo 1 canal por píxel, como se observa en la figura 13.

Por lo tanto, para cada píxel de entrada, sin importar cuántos canales tenga, la convolución escribe un
nuevo píxel de salida con un solo canal. (En la práctica, se ejecutan muchos filtros de convolución a
través de la imagen de entrada. Cada filtro tiene su propio canal en la salida).

12
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Figura 13. Convolución normal.

Luego de realizar esta convolución en la primera capa, vienen las siguientes convoluciones
denominadas como convolución profunda y convolución puntual, las cuales consisten en:

- Convolución profunda: A diferencia de una convolución normal (de CNN), no combina los
canales de entrada, sino que realiza la convolución en cada canal por separado. Para una imagen con 3
canales, una convolución en profundidad crea una imagen de salida que también tiene 3 canales, como
se ve en la figura 14. Cada canal tiene su propio conjunto de pesos. El propósito de la convolución en
profundidad es filtrar los canales de entrada. Piense en la detección de bordes, el filtrado de colores,
etc.

Figura 14. Convolución profunda.

- Convolución puntual: Viene después de la convolución profunda. Esto realmente es lo mismo


que una convolución normal pero con un filtro de 1 × 1, como se ve en la figura 15. En otras palabras,
esto simplemente suma todos los canales (como una suma ponderada), la cual tiene el propósito de
combinar los canales de salida de la convolución profunda para crear nuevas funciones.

Figura 15. Convolución puntual

13
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Cuando se juntan estas dos etapas, una convolución en profundidad seguida de una convolución
puntual, el resultado se denomina convolución separable en profundidad. Una convolución normal de
CNN realiza tanto el filtrado como la combinación de una sola vez, pero con una convolución separable
en profundidad, estas dos operaciones las realiza como pasos separados. Además, se debe mencionar
que todas las capas convolucionales están seguidas por una función de activación ReLU.

Estas convoluciones separables continúan por un tiempo hasta que la imagen original de 224 × 224 se
reduce a 7 × 7 píxeles pero ahora tiene 1024 canales. Después de esto, hay una capa de agrupamiento
promedio que funciona en toda la imagen, de modo que terminamos con una imagen de 1 × 1 × 1024,
que en realidad es solo un vector de 1024 elementos.

Este proceso que realiza la convolución separable tiene el efecto de reducir drásticamente el cálculo y
el tamaño del módulo.

Si se utiliza MobileNet como un clasificador, por ejemplo, en ImageNet que tiene 1000 categorías
posibles, entonces la capa final es una capa completamente conectada con un Softmax y 1000 salidas.
Si se quisiera usar MobileNet en un conjunto de datos diferente, o como un extractor de características
en lugar de un clasificador, se usaría otra capa final en su lugar.

2.5.2 Convolucion separable en profundidad y su costo computacional.


Esta convolución es capaz de factorizar una convolución estándar en una convolución profunda y en
una convolución de 1x1.

Para MobileNet la convolución profunda aplica un solo filtro para cada canal de entrada. En una
convolución estándar ambos filtros combinan entradas en un nuevo conjunto de salida, en un solo paso.
En cambio la convolución separable en profundidad divide esta en dos capas, una capa separada para
filtrar y una capa separada para combinar. Esta factorización tiene el efecto de reducir drásticamente
el cálculo computacional y el tamaño del modelo.

Una capa convolucional estándar toma como entrada un mapa de característica F de 𝐷𝐹 ∗ 𝐷𝐹 ∗ 𝑀 y


produce un 𝑁 ∗ 𝐷𝐹 ∗ 𝐷𝐹 mapa de característica G. Donde 𝐷𝐹 es el ancho y la altura espacial, M es el
número de canales de entrada. 𝐷𝐺 es el ancho y la altura de un mapa de característica de salida y N es
el número de canales de salidas. En esta convolución estándar se pasa un filtro de 𝐷𝐾 ∗ 𝐷𝐾 ∗ 𝑀 ∗ 𝑁. Por
ende, esta convolución tendrá un costo computacional igual a:

𝐷𝐾 ∗ 𝐷𝐾 ∗ 𝑀 ∗ 𝑁 ∗ 𝐷𝐹 ∗ 𝐷𝐹

Pero para combatir este alto costo computacional MobileNet aborda cada uno de estos términos y sus
interacciones. En primer lugar, utiliza convoluciones separables en profundidad para interrumpir la
interacción entre el número de canales de salida y el tamaño del kernel. Luego usamos la convolución
profunda para aplicar un solo filtro por cada canal de entrada. La convolución puntual, es una
convolución simple de 1x1 que se utiliza para crear una combinación lineal de la salida.

La convolución profunda tiene un costo computacional de :

𝐷𝐾 ∗ 𝐷𝐾 ∗ 𝑀 ∗ 𝐷𝐹 ∗ 𝐷𝐹

14
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Esta es extremadamente eficiente en relación con una convolución estándar. Sin embargo, solo filtra los
canales de entrada, no los combina para crear nuevas funciones. Así que adiciona una capa que calcula
una combinación lineal a la salida de la convolución profunda, como bien se mencionó anteriormente
esta es llamada convolución puntual.

El costo computacional de esta convolución separable en profundidad es:

1 1
𝐷𝐾 ∗ 𝐷𝐾 ∗ 𝑀 ∗ 𝐷𝐹 ∗ 𝐷𝐹 + 𝑀 ∗ 𝑁 ∗ 𝐷𝐹 ∗ 𝐷𝐹 = + 2
𝑁 𝐷𝐾

MobileNet utiliza convoluciones separables en profundidad de 3x3, esto logra un cálculo computacional
de entre 8 y 9 veces menos que las convoluciones estándar, con solo una pequeña reducción en la
precisión. Pero se logra una mayor eficiencia en videos en tiempo real. En la figura 16, se observa
claramente las dimensiones de los canales.

Figura 16. Dimensiones de los canales.

2.5.3 Multiplicador de ancho α


Aunque la arquitectura básica de mobileNet ya está, muchas veces en un caso de uso específico o de
aplicación puede requerir que el modelo sea más pequeño y más rápido. Para construir esto más
pequeño y con menos costo computacional, se introduce un parámetro muy simple α, llamado
multiplicador de ancho. Su función es adelgazar una red uniformemente en cada capa. Para una capa y
un α determinado el número de canales de entrada M se convierte en α ∗ M y el numero de canales de
salida N se convierte en α ∗ N. Ahora el costo computacional es:

𝐷𝐾 ∗ 𝐷𝐾 ∗ α𝑀 ∗ 𝐷𝐹 ∗ 𝐷𝐹 + α𝑀 ∗ α𝑁 ∗ 𝐷𝐹 ∗ 𝐷𝐹 α ∈ {0,1}

15
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

2.5.4 Multiplicador de resolución ρ


Se aplica este parámetro a la imagen de entrada y la representación interna de cada capa se reduce
posteriormente por el mismo multiplicador. En la práctica, se configura implícitamente ρ, cambiando
la resolución de entrada, Ahora el costo computacional es:

𝐷𝐾 ∗ 𝐷𝐾 ∗ α𝑀 ∗ 𝜌𝐷𝐹 ∗ 𝜌𝐷𝐹 + α𝑀 ∗ α𝑁 ∗ 𝜌𝐷𝐹 ∗ 𝜌𝐷𝐹 ρ ∈ {0,1}

2.6 SSD-MobileNet
Al combinar los dos algoritmos, se tiene que SSD coloca cuadros en toda la imagen, con esta detección
de objetos, se quiere saber no solo las características de alto nivel sino también las de nivel inferior.
Dado que la detección de objetos es más complicada que la clasificación, SSD agrega muchas capas
convolucionales adicionales en la parte superior de la red base.

Lo que es importante recordar es que el SSD hace posible, al escanear la imagen, identificar todas las
zonas que presentan un elemento para clasificar. Por eso es importante contar con un clasificador que
sea rápido, y eso es exactamente lo que es MobileNet.

Luego, el trabajo de las capas de MobileNet es convertir los píxeles de la imagen de entrada en
características que describen el contenido de la imagen y pasarlos a las otras capas. Por lo tanto,
MobileNet se utiliza aquí como un clasificador.

Si se tuviera que resumir simplemente, parece que es una red neuronal convolucional (CNN), que ha
dividido su fase de convolución en dos operaciones más simples (y más rápidas).

16
3 Dataset.
Para el desarrollo del sistema de detección, tal como es para prácticamente todos los sistemas que
utilicen el aprendizaje automático como estrategia de análisis, es necesario contar con una base de
datos de grandes dimensiones para el entrenamiento del modelo. Debido a lo difícil que es encontrar
en la web una base de datos con la resolución apropiada que queremos, se procedió a obtener
fotografías con un celular personal de todos los objetos, que queremos detectar. Además, para que el
dataset fuera variado, se incluyó imágenes de distintos dataset, con el fin de que este fuera robusto. El
dataset utilizado para la detección de objetos está compuesto de 1000 imágenes por clase.

Hasta el momento se puede realizar la detección de cuchillos y pistolas. Cada imagen de estos dataset
tienen una resolución de 512 x 512, ya que con este tamaño se logró buenos resultados. A lo largo de
estos meses se usaron varias resoluciones, al utilizar imágenes con su resolución original, esta
detectaba muy bien los objetos, pero era demasiado lento en videos en tiempo real, por lo que no servía.
Luego se utilizó una resolución de 300 x 300. Con ella se lograba gran velocidad en tiempo real, pero en
la detección de objetos pequeños era muy impreciso. Por ende, se llegó a la conclusión de que había que
llegar a un término medio, de esta manera se leyeron distintos paper en donde se indicaban que
imágenes con una resolución de 512 x 512, entregaba buenos resultados en tiempo real, y lograba
detectar objetos pequeños de manera muy eficiente. Se procedió a entrenar la red con imágenes de la
clase pistolas, con una resolución de 512 x 512, la cual se obtuvieron buenos resultados. Pero se debe
aumentar aún más la cantidad de imágenes, para así obtener un dataset robusto, en el que se detectan
las clases que se quieren de manera precisa.

3.1 Estructura del Dataset.


El dataset esta conformados por una carpeta train y una de test como se ve en la figura. Y en ella se
guardan las imágenes y los archivos xml. En la carpeta test se guarda el 15% de las imágenes, por lo
tanto, esta contendrá 150 imágenes por clase. Su estructura se observa en la figura 17.

Figura 17. Estructura del Dataset.

17
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

3.2 Cantidad de imágenes.


Como se muestra a continuación, se ve el porcentaje de imágenes que irá a cada carpeta de test y train.
La idea es que la cantidad de imágenes por clase en la carpeta de test sea equilibrada, es decir, que la
mitad de imágenes en la carpeta test sean pistolas y la otra mitad cuchillo, de tal manera que se genere
una buena validación en el entrenamiento, para así no tener problemas en los resultados finales. En la
figura 18, se observa un gráfico el cual contendrá el porcentaje de las imágenes a utilizar en cada una
de las carpetas.

Dataset

Test
15%

Train
85%

Train Test

Figura 18. Gráfico de cantidad de imágenes

3.3 Algunas imágenes del Dataset.


Al principio se había generado un dataset con solo imágenes de los objetos en tamaño grande, la cual
generaba buenos resultados en la detección, pero al momento que se alegaba el objeto de la cámara,
este se dejaba de detectar. Por esta razón se obtuvieron imágenes con el objeto alejado, de esta manera
mejoro rotundamente la detección, pero se debe aumentar aún más este tipo de imágenes para así
obtener mejores resultados. En la figura 19, se observan algunas imágenes del conjunto de datos

Figura 19. Algunas imágenes del dataset.

18
4 Detección de los objetos.
Además de objetos, la misión de este proyecto es realizar detección de personas, para ello se está
utilizando la API de object detection. Con la cual podemos cargar el modelo
SSD_MOBILENET_V2_COCO_2018_03_09, con esta red se obtienen muy buenos resultados en esta
detección. En estos momentos se está utilizando una precisión de 0.8, de tal manera que la red no se
equivoque en la detección.

4.1 Clase person.


Este modelo trae detección de 90 clases, en el cual nos centramos para realizar distintas modificaciones
y así detectar solo la clase que queremos. Además, se debe mencionar que este modelo trae incluida la
clase cuchillos, pero no es muy preciso, así que la idea es entrenar un detector propio.

El código que se está utilizando tiene la función de cargar el modelo que el usuario desee, con su mapa
de etiquetas correspondiente. Posteriormente genera la ubicación de la caja, su porcentaje de precisión
y la clase que detecto, para así imprimirlo en pantalla. Este es el funcionamiento del código a grandes
rasgos. En la figura 20, se pude ver una detección de esta clase.

Figura 20. Detección de clase Person.

19
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Además, de realizar la detección se generó el código de tal manera de obtener fotografías de las cajas
que realiza el modelo.

4.2 Clase Pistol.


Para esta clase se entrenó un modelo con 1000 imágenes como se mencionó anteriormente. En la cual
se realizó el entrenamiento con Google Colab, por alrededor de 48 horas. Entregando resultados
buenos, pero no excelentes. En la perdida obtenida al transcurrir este tiempo, fue de 0.6, con 200.000
pasos y un batch_size igual a 12.

Al principio se entrenó la red con solo imágenes cercas, la cual no entrego buenos resultados, el objeto
era detectado a menos de un metro de la cámara. Posteriormente se entrenó el modelo con un aumento
en la base de datos, de alrededor de 400 imágenes lejanas, la cual entrego resultados mejorables,
aumentando la detección de la clase al alejarla a 2 metros de la cámara. En la figura 21, se observa la
detección de la clase Pistol.

Figura 21. Detección de clase Pistol.

4.3 Clase Knife.


Para esta clase se entrenó un modelo con 1000 imágenes como se mencionó anteriormente. En la cual
se realizó el entrenamiento con Google Colab, por alrededor de 24 horas. Entregando resultados
buenos, pero no excelentes. En la perdida obtenida al transcurrir este tiempo, fue de 0.9, con 100.000
pasos y un batch_size igual a 12.

Se entrenó el modelo con imágenes lejanas y cercanas, para no cometer el mismo error que en la clase
anterior. Este entrenamiento duro menos tiempo, pero al igual que en el caso anterior, entrego buenos
resultados. En la figura 22, se observa la detección de la clase Knife.

20
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Figura 22. Detección de clase Knife.

21
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

Dicusión y conclusion
Al realizar esta base de datos, se puede concluir que para conformar el dataset a utilizar en el proyecto,
se deben elegir las imágenes de manera cuidadosa, ya que cualquier imagen que no esté clara, puede
confundir al modelo. Además, se deben tener imágenes tanto lejanas como cercanas, para así poder
realizar una buena detección de los objetos.

Mientras más grande la resolución de las imágenes, mejor será la detección de los objetos pequeños,
pero la velocidad en tiempo real disminuye considerablemente. Y el caso contrario, mientras más
pequeña la resolución la detección de objetos pequeños será más imprecisa, pero la velocidad en
tiempo real aumenta. De esta manera se tiene que llegar a un equilibrio.

Para trabajos futuros, se aumentará el dataset, de tal manera de conseguir un conjunto de datos robustos, para así
cumplir con las detecciones de las distintas clases. Ya que el aumento en la base de datos mediante la
implementación de diferentes técnicas para la creación de nuevas imágenes proporcionará información
complementaria a la inicial. Además, se debe tener cuidado que el aumento en el dataset no genere un sobre-
entrenamiento en etapas iniciales de la red.

El problema de la detección de distintas armas es un problema que presenta una complejidad alta debido a los
diferentes entornos en los que se encuentran las cámaras de seguridad, por lo cual para la obtención de resultados
favorables en las detecciones se necesita una base de datos de grandes dimensiones para, por un lado, garantizar
que el sistema haya sido entrenado con elementos que comúnmente aparecen en un asalto a mano armada, y por
otro, evitar el sobre-entrenamiento de la red.

Se recomienda usar imágenes de un tamaño igual a 512x512 pixeles, debido a que el uso de imágenes de menor
tamaño a estos, el objeto que se desea detectar en este caso armas, se reduce en su dimensión tendiendo a perder
sus características.

El uso de la red neuronal convolucional SSD-MobileNet será de gran ayuda en la detección de objetos tanto grandes
como pequeños, debido a su arquitectura de capas convolucionales de escala múltiple, logrando buenos resultados
en la detección de objetos de distinto tamaño.

Para el entrenamiento y funcionamiento del sistema es recomendable el uso de una GPU, debido a que
el número como el tamaño de las imágenes son de grandes dimensiones, por lo cual se necesita un
procesamiento óptimo para reducir los tiempos de entrenamiento del modelo, así como tener un
funcionamiento óptimo en la detección.

22
5 Planificación
5.1 Carta Gantt para el primer semestre.

MES MARZO-ABRIL MAYO-JUNIO-JULIO AGOSTO


ACTIVIDAD / SEMANA 1 2 3 4 1 2 3 4 5 6 1 2 3 4
Selección Proyecto
Introduccion al Deep Learning
Estudio redes neuronales CNN
Estudio redes neuronales R-CNN
Estudio redes neuronales FAST
R-CNN
Estudio redes neuronales
FASTER R-CNN y Mask R-CNN
Estudio redes neuronales VGG-
16
Estudio redes neuronales SSD
Estudio redes neuronales
MobileNet
Preparación Informe/Disertación
MESA 1
Instalacion del ambiente de
trabajo
Realizar el entrenamiento por
una GPU personal
Realizar el entrenamiento por
Google Colab
Obtener resultados de los dos
entrenamientos
Preparación Informe/Disertación
MESA 2
Realización del Dataset, para
posteriormente realizar pruebas
de entrenamiento.
Preparación Informe/Disertación
MESA 3

23
Error! Use the Home tab to apply Título 1 to the text that you want to appear here.

5.2 Carta Gantt para el segundo semestre.


MES Septiembre Octubre Nobiembre Diciembre
ACTIVIDAD / SEMANA 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Aplicar algoritmos de
detección/clasificación en
streaming en tiempo real
obtenidos de cámaras de
seguridad de la EIE (u otros).

Preparación Informe/Disertación
Mesa 4
Revisión final del proyecto,
evaluaciones, medidas, tasa de
acierto, precisión

Preparación Informe/Disertación
Mesa 5
Realización del informe final,
para posteriormente defender
Mesa 6

24
Bibliografía

[1] W. Liu, «SSD: Single Shot MultiBox Detector,» 2016.

[2] A. G. Howard, «MobileNets: Efficient Convolutional Neural Networks for Mobile Vision,» 2017.

[3] A. Rosebrock, «Ubuntu 18.04: Install TensorFlow and Keras for Deep Learning,» 2019.

[4] G. Tanner, «Creating your own object detector,» 2019.

25

También podría gustarte