Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Politécnica
Superior
Reconocimiento de
enfermedades a largo
plazo
Grado en Ingeniería Informática
Julio 2022
Reconocimiento de enfermedades a largo
plazo
Autor
Érika Moreno Puig
Tutor/es
Miguel Cazorla Quevedo
Ciencia de la Computación e Inteligencia Artificial
Francisco Gómez Donoso
Ciencia de la Computación e Inteligencia Artificial
Escuela
Politécnica
Superior
En primer lugar me gustaría agradecer a mi familia, pareja y amigas por todo el apoyo y
confianza brindada, puesto que en momentos donde pensaba que no iba a ser posible acabar,
conseguían que cogiera fuerzas. En especial, agradecer a mi hermana, médico de familia, por
hacer que mi interés en su ámbito sea tan grande.
En segundo lugar me gustaría agradecer a mi jefe y compañeros de la residencia de ancianos
en la cual trabajo, por hacerme partícipe en el aumento de calidad de vida de los residentes.
También me gustaría agradecer a mis compañeros de la universidad, que sin ellos no habría
podido llegar hasta aquí, puesto que siempre me han animado a seguir y saber que cada uno
tiene su ritmo pero que siempre se puede.
Por último me gustaría agradecer a mis tutores, por dejarme ser partícipe de este proyecto.
Además de la Universidad de Alicante por proporcionarme los conocimientos necesarios para
poderlo realizar.
A mis padres, hermanos, abuelos, pareja y amigos,
sin vosotros no habría podido llegar hasta aquí.
ix
Aquellos que han aprendido a caminar en el umbral de los mundos desconocidos,
por medio de lo que comúnmente se denomina por excelencia las ciencias exactas,
pueden entonces con las hermosas alas blancas de la imaginación,
esperar elevarse aún más en el mundo inexplorado.
Ada Lovelace.
xi
Índice general
1 Introducción 1
2 Marco Teórico 3
2.1 Reconocimiento de actividades vía conjunto de Fotogramas . . . . . . . . . . 3
2.1.1 Efficient Two-Stream Network for Violence Detection Using Separable
Convolutional LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 VPN: Learning Video-Pose Embedding for Activities of Daily Living . 4
2.2 Reconocimiento de actividades vía fotograma . . . . . . . . . . . . . . . . . . 4
2.2.1 Beyond Short Snippets: Deep Networks for Video Classification . . . . 5
2.2.2 YOLO based Human Action Recognition and Localization . . . . . . . 5
3 Objetivos 7
3.1 Objetivos principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Objetivos futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Metodología y recursos 9
4.1 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.1 Tensorflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.2 Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.3 VGG-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.1.4 ResNet50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1.5 InceptionNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.6 LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.1.7 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.8 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1.9 NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5 Desarrollo 13
5.1 Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.2 TimeDistributed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2.1 ¿Por qué TimeDistributed? . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2.2 ¿Cómo funciona TimeDistributed? . . . . . . . . . . . . . . . . . . . . 16
5.3 Arquitecturas TimeDistributed . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.3.1 VGG16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.3.2 Resnet50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.3.3 Inception-V3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.4 Métrica para la extracción del rendimiento del paciente . . . . . . . . . . . . 18
xiii
xiv Índice general
6 Resultados 19
6.1 Experimentos con VGG-16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1.1 A nivel de fotograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.1.2 A nivel de lotes de fotogramas . . . . . . . . . . . . . . . . . . . . . . 21
6.2 Experimentos con ResNet50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2.1 A nivel de fotograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.2.2 A nivel de lote de fotogramas . . . . . . . . . . . . . . . . . . . . . . . 23
6.3 Experimentos con Inception-V3 . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.3.1 A nivel de fotograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
6.3.2 A nivel de lotes de fotogramas . . . . . . . . . . . . . . . . . . . . . . 25
6.4 Resultados finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.4.1 Resultados finales a nivel de fotograma . . . . . . . . . . . . . . . . . . 26
6.4.2 Resultados finales a nivel de lotes de fotograma . . . . . . . . . . . . . 26
7 Conclusiones 27
Bibliografía 29
xv
Índice de cuadros
4.1 Computadora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
xvii
1 Introducción
A lo largo de los años hemos observado como la disciplina del Deep Learning ha ido ganando
terreno en el campo de la medicina, como por ejemplo la detección de cáncer de pulmón o
neumonía (ver Figura 1.1). También está presente en la prevención de enfermedades ya sea
de forma indirecta, como con la detección de uso de mascarillas, o la predicción del número
de casos de Coronavirus Disease 2019 (COVID19).
Nuestro trabajo entra a ser efectivo en la primera y segunda fase, cuando podemos com-
parar los tiempos de realización de una tarea, ya que se empiezan a desarrollar los síntomas
y signos de dicha enfermedad. Cuando el tiempo de realización de alguna actividad aumenta
de forma significativa, podría ser un indicio de una posible patología, en este caso sería el
Alzheimer, puesto que lo hemos elegido como ejemplo.
Lo que proponemos es un estudio de las actividades diarias, es decir, estudiar los vídeos cap-
1
2 Introducción
tados por las cámaras situadas en puntos estratégicos de la vivienda del individuo a estudiar.
Una vez obtenidos los vídeos ya clasificados en diferentes actividades cotidianas, extraemos
las imágenes para poder entrenar nuestra red, una vez entrenada podremos aplicarla para
que sea capaz de detectar la actividad que esté realizando el sujeto. Cuando la red sea capaz
de detectar la actividad realizada, empezaremos a calcular el tiempo que tarda el individuo
en realizarla.
Durante este proyecto veremos el marco teórico que engloba la detección de actividades
mediante vídeos, ya sea a nivel de lotes de fotogramas como fotograma a fotograma. Enu-
meraremos los objetivos del proyecto y hablaremos en detalle de la metodología y recursos
empleados para el desarrollo del proyecto, obteniendo así unos resultados que comentaremos
al final junto a las conclusiones.
2 Marco Teórico
En este capitulo, pasaremos a ver en detalle las arquitecturas que son capaces de trabajar
con vídeo, ya sea en forma de un único fotograma o en forma de lotes de fotogramas. Cabe
resaltar que esta parte del trabajo fue importante, debido a que nos introdujo en los métodos
de procesamiento de nuestros vídeos.
La arquitectura SepConvLSTM Islam y cols. (2021) (ver Figura 2.1), recibe como entrada
una secuencia de N fotogramas, la cual es preprocesada mediante la supresión de fondo. La
supresión de fondo se basa en eliminar aquellos píxeles que no han padecido cambios de un
fotograma a otro, consiguiendo así una nueva imagen donde solo se representan los píxeles
con cambios.
3
4 Marco Teórico
Una vez obtenida estas imágenes, son codificadas en vectores de latencia por la red preen-
trenada MovilNet Howard y cols. (2017). Dichos vectores, se le aplica la capa de Separable
Convolutional Long Short-Term Memory (LSTM), que no es más que aplicarle a los dife-
rentes vectores de latencia, una capa convolucional y una capa LSTM. Realizado esto, solo
quedaría concatenar los vectores resultantes y pasarlos por una red neuronal para su posterior
clasificación.
Una vez obtenido dicho mapa de características espacio-temporales, entra en juego la capa
VPN. La función de la capa VPN es obtener un embebido de los datos de forma modular,
para su posterior clasificación.
La capa VPN está formada por dos capas atención, que reciben por un lado el mapa que
hemos descrito anteriormente y por otro lado las poses 3D. La salida de propia, es un embebido
de características que es suficiente para poder discriminar entre las otras actividades.
Esta técnica se basa en usar las redes neuronales entrenadas previamente, es decir, que la
red ya contiene un conocimiento previo sobre diferentes datasets, aprovechando así la capa-
cidad de generalización de esta.
Este tipo de redes, son las que se usan para el artículo de la clasificación de vídeos. A pesar
de que estas arquitecturas están hechas para trabajar con imágenes, los participantes del estu-
dio, demuestran que también es posible clasificar los vídeos después de un preprocesamiento
de ellos (extraer fotograma a fotograma), tratándolos como una secuencia de imágenes (ver
Figura 2.3).
7
4 Metodología y recursos
En esta parte del trabajo explicaremos las técnicas utilizadas, el software usado para el
desarrollo del trabajo y finalmente el hardware que hemos empleado para llevar acabo los
experimentos.
4.1 Software
4.1.1 Tensorflow
Tensorflow (s.f.), es una plataforma, de extremo a extremo, de código abierto, utilizada
para el aprendizaje automático. Se ofrecen diversos niveles de abstracción con diferentes
recursos, herramientas y bibliotecas, permitiéndonos investigar y crear contenido dentro del
campo del aprendizaje automático. Dicho entorno fue desarrollado por Google, con la intención
de proporcionarnos una herramienta capaz de recopilar las diferentes técnicas de deep learnig.
4.1.2 Keras
Keras es una librería integrada en Tensorflow, Microsoft Cognitive Toolkit o Theano, que
sirve como una abstracción de alto nivel de la propia librería, ofreciendo así una manera más
liviana a la hora de crear modelos de Deep Learning Piperlab (2021). Un ejemplo de ello
es que Keras ofrece la posibilidad de construir una arquitectura por bloques, donde dentro
de dichos bloques tenemos la posibilidad de utilizar una amplia variedad de capas (Capas
recurrentes, capas convolucionales...).
Cabe resaltar que la propia librería ofrece una serie de modelos preentrenados de las arqui-
tecturas con los mejores resultados hasta la actualidad. Posteriormente, en el capítulo 5,
hablaremos de ellos de manera resumida y veremos en detalle su implementación con la capa
TimeDistributed.
4.1.3 VGG-16
VGG-16 es una red neuronal convolucional profunda desarrollada por el Grupo de Geo-
metría Visual de la Universidad de Oxford e investigadores de Google DeepMind. La entrada
de esta red es una imagen RGB con un tamaño 224x224, durante el preprocesamiento calcu-
lamos el promedio de los tres canales. Ese valor es el que se le resta a cada píxel, procesando
la imagen a través de una serie de capas convolucionales. Todas las capas ocultas utilizan
Rectified Linear Unit (ReLU) como función de activación, además esta red no utiliza la nor-
malización de respuesta local (Learning Resource Network (LRN)) puesto que no mejora el
conjunto de de datos ImageNet Large Scale Visual Recognition Challenge (ILSVRC) (ver
Figura 4.1).
9
10 Metodología y recursos
4.1.4 ResNet50
ResNet50 (ver Figura 4.2) es una red neuronal residual con 50 capas, su estructura es
simple y efectiva, es beneficiosa por su amplia aplicación. La red contiene un bloque de
estructura residual, donde solo unos pocos dentro del mapeo de identidad, necesitan hacer
una coincidencia de cotas y usar una capa convolucional de 1x1 para agregar cotar. Con
ResNet50 conseguimos resolver el problema de desvanecimiento del gradiente, debido a que
la red es demasiado profunda, además con esta red los gradientes pueden pasar directamente
a través de las conexiones de salto hacia atrás desde las capas posteriores hasta los filtros
iniciales.
4.1.5 InceptionNet
Inception-V3 (ver Figura 4.3) es una arquitectura basada en Inception-V1, comúnmente
conocida como GoogLeNet, y Inception-V2( Poudel (2019)). Inception-V1 recibe una imagen,
con ella se hacen diferentes pruebas respecto al tamaño y agrupación, para así poder obtener
todas sus características. Está formada por 27 capas, de las cuales cinco son capas de agru-
pación, obteniendo así una salida correlacional elevada.
En lo que respecta a Inception-V2, las mejoras que aporta a la red anterior es que en los
aprendizajes profundos, reduce el cuello de botella para evitar la perdida de información que
podemos obtener de la anterior red. Además, transforma las convoluciones 5x5 en dos de 3x3,
consiguiendo un aumento en la velocidad de cálculo.
Finalmente, en Inception-V3 se utilizan tres convoluciones 3x3, además de usar un único
clasificador en la última capa de 17x17 e implementa Label Smoothing As Regularization,
evitando así que el logit aumente en su tamaño.
Figura 4.3: Arquitectura InceptionNet-V3 Papers with code - inception-V3 explained (s.f.)
4.1.6 LSTM
LSTM (ver Figura 4.4) es una red recurrente. Al ser recurrente, la información que obte-
nemos la podemos recuperar cuando se precise para determinar el paso siguiente que se debe
dar. Debido a esta característica y a que no se trata de cualquier otra red recurrente, obten-
dremos en nuestro proyecto un mejor manejo de series cronológicas además de un aprendizaje
de dependencias largas.
4.1.7 Python
Es un lenguaje de programación de alto nivel multiplataforma y de código abierto, pudién-
dose utilizar para lo que queramos implementar.Python se trata de un lenguaje interpretado,
es decir, que no es necesario compilarlo para ejecutar las aplicaciones escritas en dicho lengua-
je, sino que se ejecutan directamente por el ordenador utilizando un programa denominado
interpretador. Python se basa en lenguajes C y C++ y tiene sus raíces en el sistema operativo
UNIX (Platziteam (2021)).
4.1.8 OpenCV
Es una biblioteca de código abierto que contiene implementaciones que engloban más de
2500 algoritmos, entre ellos de machine learning y de visión artificial, por esa infraestructura
se utiliza para aplicaciones de visión artificial. OpenCV contiene una licencia BSD, lo cual
nos permite utilizar y modificar el código descargado (Gracia (2013)).
4.1.9 NumPy
Es una librería de Python especializada en el cálculo y el análisis de datos, especialmente
para un gran volumen de datos. Incorpora una nueva clase de objetos llamados arrays que nos
permite la representación de colecciones de datos de un mismo tipo en varias dimensiones, y
funciones muy eficientes para su manipulación. Además obtenemos soporte para la creación
de vectores y matrices de grandes dimensiones, junto con operaciones matemáticas de alto
nivel (Alberca (2022)).
4.2 Hardware
Para el diseño de los experimentos y ejecución de los mismos, hemos tenido acceso al
siguiente hardware (ver Figura 4.1), con el cual hemos podido realizar un entrenamiento de
forma paralelizable, gracias al framework de Tensorflow y CUDA.
En este capítulo veremos en detalle el dataset usado, así como los problemas y soluciones
que presentaba el dataset a la hora del equilibrado y el preprocesamiento.
También trataremos en detalle la capa TimeDistributed, así como sus ventajas sobre las
arquitecturas que trabajan fotograma a fotograma. Además, propondremos una serie de ar-
quitecturas para trabajar con lotes o conjuntos de fotogramas y finalmente, explicaremos en
qué consistirá la métrica para extraer los tiempos de realización de las actividades. Como
podemos observar en la figura 5.1, muestra los pasos que vamos a seguir para la explicación
de nuestro proyecto.
En una primera fase, detectaremos qué actividad se está realizando gracias a las arquitectu-
ras TimeDistributed que veremos posteriormente. Mientras que en la segunda fase, trataremos
de extraer el tiempo en el que se ha realizado la actividad.
13
14 Desarrollo
5.1 Dataset
En este apartado lo que pretendemos es preparar nuestra base de datos de forma óptima
para el entrenamiento de nuestras diferentes arquitecturas.
El dataset que utilizamos al inicio, fue CIFAR-10 (Brownlee (2020)), el cual ya estaba
preparado para poder utilizarlo en nuestra primera toma de contacto con las Convolutio-
nal Neural Networks (CNN). Para poder seguir avanzando en nuestro estudio cambiamos
a Sports type classifier (Jurjsorinliviu (s.f.)), puesto que se adapta mejor a la arquitectura
que utilizamos y al igual que pasaba con el anterior, éste también estaba preparado para ser
utilizado sin necesidad de preprocesarlo.
Finalmente, el dataset que hemos utilizado para nuestro estudio definitivo es el proporcio-
nado por la investigación de Toyota Smarthome (Toyota Smarthome: Real-world activities of
Daily Living (s.f.)). Esta base de datos es la que hemos empleado para el desarrollo princi-
pal de este proyecto, por lo que hemos tenido que adaptar los vídeos proporcionados por la
investigación para poder utilizarlo.
Los vídeos que nos proporcionaron estaban divididos por tipo de actividades de las cuales
nos encontramos cook, cutbread, drink, eat, getup, laydown, leave, makecoffe, maketea, pour,
readbook, sitdown, takepills, uselaptop, usetablet, usetelephone, walk, watchtv, dentro de estos
subapartados tenemos vídeos con una duración mínima de cinco segundos y una máxima de
veinte segundos. El primer preprocesamiento de los vídeos que hicimos, fue obtener un frame
cada dos segundos de vídeo, pero observamos que al hacerlo así obteníamos más imágenes de
los vídeos con mayor duración, por lo que las clases con mayor cantidad de vídeos, teníamos
también mayor cantidad de imágenes. Por lo que cuando fuimos a entrenar nuestra red, ob-
tuvimos resultados de precisión muy bajos debido al desequilibrio de los datos, esto quedó
reflejado en la propia matriz de confusión que obtuvimos.
Al darnos cuenta de este desequilibrio, decidimos obtener de forma diferente los frames
de los vídeos, teniendo en cuenta que unos vídeos duran más que otros, decidimos obte-
ner cinco frames por segundo de cada vídeo, independientemente de su duración. Con este
método solucionamos el problema de la obtención equitativa de imágenes, pero aún así nos
encontramos con el problema de que en algunas clases habían muchos más vídeos que en otros.
Por ello, decidimos que una vez obtenidas todas las imágenes, reducir el contenido de las
carpetas a 2.200 imágenes por actividad. Para ello, obtenemos 440 paquetes de 5 frames por
segundo, de vídeos aleatorios de una misma clase, teniendo así un total de 2.200 imágenes
por actividad. A pesar de reducir considerablemente el tamaño del dataset eliminamos las
actividades que no son relevantes (Por ejemplo, usar el ordenador o la tablet) para este es-
tudio.
Teniendo así un total de diez clases (cook, drink, eat, getup, laydown, leave,pour, sitdown,
takepills, walk) y un total de 22.000 imágenes RGB con una resolución de 224x224, preparadas
en nuestro dataset para ser utilizado en diferentes arquitecturas.
5.2. TimeDistributed 15
Figura 5.2: Gráficas de los datos obtenidos cuando no hemos equilibrado los datos correctamente y
cuando si lo hemos realizado de forma correcta.
5.2 TimeDistributed
5.2.1 ¿Por qué TimeDistributed?
Las arquitecturas probadas hasta el momento se basan en clasificar una única imagen,
pero para poder obtener la métrica temporal, necesitamos procesar una secuencia de imáge-
nes, evitando así lo comúnmente conocido como flickering (ver Figura 5.3). El problema del
flickering consiste en que una red de un fotograma a otro fotograma, puede predecir diferen-
tes etiquetas, afectando así a la noción del tiempo de la actividad que se lleva a acabo. Por
ejemplo, experimentamos con una arquitectura de reconocimiento de deportes en la que se
reconocía un deporte en un fotograma y al siguiente otro totalmente diferente.
Figura 5.3: Diferencia de reconocimiento de actividad en fotogramas contiguos. Sujan y cols. (2021a)
16 Desarrollo
Al pasar una secuencia de imágenes, hemos adecuado el dataset para poder empaquetar
las imágenes en bloques y transferírselo a la red como entrada, para ello, hemos de tener
en cuenta que no se fusionen las imágenes, evitando así pasar todos los píxeles a la primera
capa. Tenemos que transmitir un paquete de cinco imágenes con las dimensiones 224x224 con
3 canales RGB (5, 224, 224, 3), pero nos encontramos con que Conv2D no puede utilizar
dicha estructura puesto que es tridimensional y Conv3D, que si usa 3 dimensiones, no reco-
noce como entrada una secuencia, así mismo, necesitamos que se le aplique a cada imagen
el mismo filtrado para poder seguir con el resto de capas, por ello utilizamos TimeDistributed.
TimeDistributed es una capa que nos aporta el framework de Keras, cuya principal ca-
racterística, es el poder computar diferentes entradas de forma concurrente. Es decir, con
esta capa, podemos recibir un lote N de entradas y aplicar sobre ellas, de manera separada,
operaciones típicas como una convolución o un pooling.
Una vez computadas las N entradas y obtenidos los diferentes mapas de características,
faltaría concatenarlos y tratarlos como un solo mapa, para su posterior clasificación.
5.3. Arquitecturas TimeDistributed 17
5.3.1 VGG16
Nuestra primera capa se compone de la red preentrenada VGG16. Esta capa será la encar-
gada de extraer las características principales de cada una de las entradas. Cabe destacar que
los pesos de la red VGG16 están congelados (no aprenden), salvo las dos últimas capas. El
motivo por el cual las dos últimas capas no están congeladas es para dotar a la arquitectura
con mayor precisión, tal y como hemos visto en el capítulo 2.
Esta arquitectura se aplica en la figura 5.5.
5.3.2 Resnet50
Para esta arquitectura hemos empleado la red preentrenada ResNet50, cuyo rendimiento
hace que sea de las más utilizadas a la hora de trabajar con imágenes. Como ya hemos
mencionado anteriormente, el hecho de utilizar capas residuales, favorece el formar un mapa
de características capaz de ser fácilmente discriminable por un clasificador (una red neuronal).
Nuevamente congelaremos todos los pesos de la red a excepción de las dos últimas capas.
Aumentando el número de LSTM, debido a que el mapa de características es mucho mayor
si lo comparamos con VGG16.
Esta arquitectura se aplica en la figura 5.5.
5.3.3 Inception-V3
Para la última arquitectura empleada, Inception-V3, hemos seguido la misma metodología
que hemos visto en las arquitecturas anteriores. Cabe resaltar que dicha arquitectura contiene
más parámetros entrenables que el resto, debido a que es un modelo más denso.
Esta arquitectura se aplica en la figura 5.5.
Figura 5.5: Arquitectura TimeDistributed con cada una de las arquitecturas nombradas.
18 Desarrollo
El problema del que hemos estado hablando a lo largo de proyecto, es el flickering, el cual
es fácilmente resuelto por las arquitecturas que trabajan con un conjunto de fotogramas, ase-
gurándose así que la actividad se está llevando acabo durante la duración de los N fotogramas.
La métrica que proponemos (ver Figura 5.1), consiste en que la arquitectura de TimeDis-
tributed reciba fragmentos de vídeos (Por ejemplo, lotes de fotogramas que representen 2
segundos del vídeo), mientras el contador está activo. El fin de la actividad que estamos rea-
lizando, será cuando la red prediga una actividad diferente en dos lotes contiguos. Restándole
así el tiempo de los últimos lotes que han obtenido una predicción distinta.
Donde segundos por lote es el tiempo que se tarda en obtener el lote y las veces predicha, es
la cantidad de veces que nuestra red ha acertado.
Siguiendo esta metodología, también podríamos entrenar redes que trabajan fotograma a
fotograma y resolver el problema del flickering, promediando los resultados obtenidos en N
fotogramas. Es decir, lo que proponemos es empaquetar N fotogramas que representen a S
segundos del vídeo y en función del promedio de la predicción de los N fotogramas, poder
asegurar que se ha realizado la acción durante S segundos.
∑N
i=0 predicción de actividad
Tiempo de la actividad = ∗ tiempo total del vídeo (5.2)
N
A pesar de que con la ecuación podría aproximar el tiempo real de realización de la acti-
vidad, no sería tan realista como lo es TimeDistributed.
En este capítulo veremos los resultados obtenidos por los diferentes experimentos realiza-
dos a lo largo del proyecto.
Respecto a los resultados que hemos obtenido, los hemos dividido en dos subapartados. En
el primer apartado nos encontramos con que cada arquitectura nombrada recibe por entrada
un fotograma y en el segundo apartando, tenemos los resultados de esas mismas arquitecturas
pero pasándole un lote de fotogramas, congelando los pesos de la red como se ha explicado
en el capítulo 5.
Dentro de los dos subapartados ya nombrados, nos vamos a encontrar con una gráfica y
una matriz de difusión. La matriz de confusión nos sirve para saber la cantidad de acierto
sobre una clase en concreto, el resultado será satisfactorio si obtenemos la diagonal con los
valores más elevados.
Respecto al gráfico, observamos cuatro valores, dos de entrenamiento y dos de test, los cuales
nos indican el porcentaje de acierto y pérdida por época.
A nivel de lote de fotograma hemos utilizado 100 épocas de entrenamiento para cada
arquitectura, debido a que nos dimos cuenta de que con 50 épocas aún se mostraba en las
gráficas un posible aumento en el porcentaje de acierto en las tres arquitecturas. Por lo que
decidimos hacer diversas pruebas, llegando a la conclusión de que la mejor opción eran las
100 épocas.
Respecto a nivel de fotograma a fotograma, hemos utilizado diferentes épocas para ver cual
se adecuaba mejor, pero al no haber una mejora significativa en ninguna de las arquitecturas,
decidimos utilizar 50 épocas.
Dentro de la experimentación con VGG-16, nos vamos a encontrar con que en ambos apar-
tados hemos obtenido el mejor porcentaje de acierto. Obteniendo así un 1% más del valor
obtenido por lotes de fotogramas que con un fotograma.
19
20 Resultados
la matriz de difusión, consta que el acierto de las clases es casi perfecta (ver Figura 6.2).
Tras varias pruebas, el valor máximo que hemos podido conseguir es de 98% en el test (ver
Figura 6.3), con un entreno de 100 épocas.
Como podemos ver en la matriz (ver Figura 6.2), el acierto de las clases es muy elevado,
por lo que posteriormente este será el modelo que utilizaremos para la métrica.
En la matriz 6.6 podemos observar que hemos obtenido mayor cantidad de errores en la
detección de clases en comparación con VGG-16.
Con esta arquitectura hemos obtenido el peor porcentaje de acierto. A pesar de realizar
diferentes cambios, no hemos conseguido mejorar lo suficiente la red para poder alcanzar las
otras dos arquitecturas. Creemos que la propia red necesita un mayor número de datos y de
épocas de entrenamiento para poder conseguir un resultado más óptimo, pero para que los
resultados se pudiesen comparar, hemos utilizado los mismos valores (ver Figuras 6.9, 6.10).
Arquitectura Accuracy
VGG-16 97%
ResNet50 75%
Inception-V3 64%
Arquitectura Accuracy
VGG-16 98%
ResNet50 83%
Inception-V3 96%
A parte de los resultados obtenidos por las arquitecturas, aquí adjuntamos un enlace para
poder disponer de los resultados finales de la métrica.
https://drive.google.com/drive/folders/1YZ7mXg3zZdRi-Sk26X6o7DOyeS22ZkPr?usp=
sharing
7 Conclusiones
En este apartado procederemos a comentar los resultado obtenidos de las diferentes arqui-
tecturas empleadas.
En primera instancia, estudiamos tres datasets diferentes, pero el que más se adecuaba era
el proporcionado por la empresa Toyota, ya que trata de actividades diarias de las cuales se
puede obtener un pronóstico. Para el preprocesamiento del dataset, tuvimos que obtener los
frames y equilibrar los datos para poder conseguir unos resultados más óptimos.
Dentro de las arquitecturas nombradas en el capítulo 2 y 5, la que más se adecua para nues-
tro proyecto es la TimeDistributed con VGG-16, puesto que hemos sido capaces de conseguir
un acierto del 98%. Este resultado difiere un poco de lo que hemos estudiado en el estado
del arte, donde hemos visto arquitecturas que, no obtienen un acierto mayor a 75%, por lo
que nuestro proyecto ha conseguido un mayor porcentaje de acierto comparado con muchos
de los estudios comentados y leídos. Debido a estos resultados, hemos podido obtener una
métrica del cálculo temporal de realización de tareas, que evitando el flickering, se consigue
un resultado muy cercano a la realidad.
27
Bibliografía
Alberca, A. S. (2022, May). La librería numpy. Descargado de https://aprendeconalf.es/
docencia/python/manual/numpy/
Brownlee, J. (2020, Aug). How to develop a cnn from scratch for cifar-10 photo classifi-
cation. Descargado de https://machinelearningmastery.com/how-to-develop-a-cnn
-from-scratch-for-cifar-10-photo-classification/
Darapaneni, N., Maram, S., Singh, H., Subhani, S., Kour, M., Nagam, S., y Paduri, A. R.
(2022, Apr). Prediction of covid-19 using chest x-ray images. Descargado de https://
arxiv.org/abs/2204.03849v1
Ferlet, P. (2019, Nov). How to work with time distributed data in a neural network. Smile
Innovation. Descargado de https://medium.com/smileinnovation/how-to-work-with
-time-distributed-data-in-a-neural-network-b8b39aa4ce00
He, K., Zhang, X., Ren, S., y Sun, J. (2015). Deep residual learning for image recognition.
arXiv. Descargado de https://arxiv.org/abs/1512.03385 doi: 10.48550/ARXIV.1512
.03385
Howard, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., … Adam, H.
(2017). Mobilenets: Efficient convolutional neural networks for mobile vision applications.
arXiv. Descargado de https://arxiv.org/abs/1704.04861 doi: 10.48550/ARXIV.1704
.04861
Islam, Z., Rukonuzzaman, M., Ahmed, R., Kabir, M. H., y Farazi, M. (2021, jul). Efficient
two-stream network for violence detection using separable convolutional LSTM. En 2021
international joint conference on neural networks (IJCNN). IEEE. Descargado de https://
doi.org/10.1109%2Fijcnn52387.2021.9534280 doi: 10.1109/ijcnn52387.2021.9534280
Ng, J. Y.-H., Hausknecht, M., Vijayanarasimhan, S., Vinyals, O., Monga, R., y Toderici, G.
(2015). Beyond short snippets: Deep networks for video classification. arXiv. Descargado
de https://arxiv.org/abs/1503.08909 doi: 10.48550/ARXIV.1503.08909
29
30 Bibliografía
Platziteam. (2021, Mar). Qué es python y por qué empezar a programar con este
lenguaje. Platzi. Descargado de https://platzi.com/blog/python/?utm_source=
google&utm_medium=paid&utm_campaign=17446514363&utm_adgroup=
&utm_content=&gclid=CjwKCAjw5NqVBhAjEiwAeCa97Zecdp922EqcGp_p_KyC
-PDDCrrW3bFsy4BhBlkyOWPdgQhdtobfQhoCVncQAvD_BwE&gclsrc=aw.ds
Redmon, J., Divvala, S., Girshick, R., y Farhadi, A. (2015). You only look once: Unified,
real-time object detection. arXiv. Descargado de https://arxiv.org/abs/1506.02640
doi: 10.48550/ARXIV.1506.02640
Shinde, S., Kothari, A., y Gupta, V. (2018). Yolo based human action recognition and
localization. Procedia Computer Science, 133, 831-838. Descargado de https://www
.sciencedirect.com/science/article/pii/S1877050918310652 (International Confe-
rence on Robotics and Smart Manufacturing (RoSMa2018)) doi: https://doi.org/10.1016/
j.procs.2018.07.112
Simonyan, K., y Zisserman, A. (s.f.). Very deep convolutional networks for large-scale image
recognition. Descargado de https://arxiv.org/abs/1409.1556 doi: 10.48550/ARXIV
.1409.1556
Sujan, N., Rosebrock, A., Kumar, A., Bonn, D., Soni, A., Ashish, … et al. (2021a, Apr). Video
classification with keras and deep learning. Descargado de https://pyimagesearch.com/
2019/07/15/video-classification-with-keras-and-deep-learning/
Sujan, N., Rosebrock, A., Kumar, A., Bonn, D., Soni, A., Ashish, … et al. (2021b, Apr). Video
classification with keras and deep learning. Descargado de https://pyimagesearch.com/
2019/07/15/video-classification-with-keras-and-deep-learning/
31