Está en la página 1de 49

Escuela

Politécnica
Superior

Reconocimiento de
enfermedades a largo
plazo
Grado en Ingeniería Informática

Trabajo Fin de Grado


Autor:
Érika Moreno Puig
Tutor/es:
Miguel Cazorla Quevedo
Francisco Gómez Donoso

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

Grado en Ingeniería Informática

Escuela
Politécnica
Superior

ALICANTE, Julio 2022


Preámbulo
Después de realizar las prácticas externas correspondientes al grado, en una re-
sidencia de ancianos, encontré un punto de cohesión entre el ámbito de la salud
y la informática. La finalidad de este proyecto es trasladar los conocimientos en
el campo de la informática, obteniendo una métrica temporal a través de ví-
deos donde se realizan actividades cotidianas, tras obtener dicha métrica se podrá
aplicar en el ámbito de la salud, concretamente en el pronóstico prematuro de las
enfermedades en residencias.
Agradecimientos

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

Lista de Acrónimos y Abreviaturas 31


Índice de figuras
1.1 Detección COVID-19 Darapaneni y cols. (2022) . . . . . . . . . . . . . . . . . 1

2.1 Funcionamiento de SepConvLSTM . . . . . . . . . . . . . . . . . . . . . . . . 3


2.2 Arquitectura Video Propagation Network (VPN) . . . . . . . . . . . . . . . . 4
2.3 Arquitectura para la clasificación de imágenes de un vídeo Ng y cols. (2015) 5
2.4 YOLO reconociendo actividades . . . . . . . . . . . . . . . . . . . . . . . . . 6

4.1 Arquitectura VGGNet Simonyan y Zisserman (s.f.) . . . . . . . . . . . . . . . 10


4.2 Arquitectura ResNet50 He y cols. (2015) . . . . . . . . . . . . . . . . . . . . . 10
4.3 Arquitectura InceptionNet-V3 Papers with code - inception-V3 explained (s.f.) 11
4.4 Arquitectura LSTM Understanding LSTM networks (s.f.) . . . . . . . . . . . 11

5.1 Diagrama del funcionamiento de nuestro proyecto . . . . . . . . . . . . . . . . 13


5.2 Gráficas de los datos obtenidos cuando no hemos equilibrado los datos correc-
tamente y cuando si lo hemos realizado de forma correcta. . . . . . . . . . . . 15
5.3 Diferencia de reconocimiento de actividad en fotogramas contiguos. Sujan y
cols. (2021a) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.4 Capa TimeDistributed. Ferlet (2019) . . . . . . . . . . . . . . . . . . . . . . . 16
5.5 Arquitectura TimeDistributed con cada una de las arquitecturas nombradas. 17

6.1 Gráfica VGG-16 fotograma a fotograma. . . . . . . . . . . . . . . . . . . . . . 20


6.2 Matriz de confusión de VGG-16 fotograma a fotograma. . . . . . . . . . . . . 20
6.3 Gráfica VGG-16 con lote de fotogramas. . . . . . . . . . . . . . . . . . . . . . 21
6.4 Matriz de confusión de VGG-16 con lote de fotogramas. . . . . . . . . . . . . 21
6.5 Gráfica ResNet50. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.6 Matriz de confusión ResNet50 fotograma a fotograma. . . . . . . . . . . . . . 22
6.7 Gráfica ResNet50 con lote de fotogramas. . . . . . . . . . . . . . . . . . . . . 23
6.8 Matriz de confusión de ResNet50 con lote de fotogramas. . . . . . . . . . . . 23
6.9 Gráfica Inception-V3 fotograma a fotograma. . . . . . . . . . . . . . . . . . . 24
6.10 Matriz de confusión Inception-V3 fotograma a fotograma. . . . . . . . . . . . 24
6.11 Gráfica Inception-V3 con lote de fotogramas. . . . . . . . . . . . . . . . . . . 25
6.12 Matriz de confusión Inception-V3 con lote de fotogramas. . . . . . . . . . . . 25

xv
Índice de cuadros
4.1 Computadora. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

6.1 Tabla porcentaje de acierto fotograma a fotograma. . . . . . . . . . . . . . . . 26


6.2 Tabla porcentaje de acierto con lote de fotogramas. . . . . . . . . . . . . . . . 26

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

Figura 1.1: Detección COVID-19 Darapaneni y cols. (2022)

Múltiples enfermedades podrían tener un pronóstico optimista o la posibilidad de ralentizar


los síntomas de dicha enfermedad si se detectaran con antelación. Para poder detectar este
tipo de enfermedades con antelación se necesita un seguimiento, aquí entra en acción este
proyecto. Pondremos como ejemplo principal el Alzheimer (Enfermedad de Alzheimer (s.f.)).
Se trata de una enfermedad neurodegenerativa que afecta a más de 1.200.000 españoles. Se
caracteriza por la lenta evolución de los síntomas a lo largo de los años. En la fase inicial
el individuo manifiesta una pérdida de memoria y una desorientación espacial. Durante la
segunda fase, se deteriora la fluidez del lenguaje, además de la incapacidad de realización de
tareas cotidianas sin ayuda. En la tercera fase, la incapacidad es mayor, por lo que ya no
puede valerse por si mismo.

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.

Para calcular el tiempo utilizamos la arquitectura TimeDistributed, la cual necesita una


distribución exacta de nuestro dataset, por lo que aprovechamos esta distribución, además de
los frames o fotogramas de las imágenes capturadas de los vídeos, para obtener el tiempo total.

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.

2.1 Reconocimiento de actividades vía conjunto de Fotogramas


En los siguientes subapartados, veremos aquellas arquitecturas relacionadas con la detec-
ción de actividades, que para realizar la tarea de clasificación, emplean lotes de conjunto. Es
decir, reciben como entrada un conjunto de imágenes que son procesadas simultáneamente.

2.1.1 Efficient Two-Stream Network for Violence Detection Using Separable


Convolutional LSTM
El primero de los trabajos que estudiamos, fue una red capaz de discriminar la violencia
en el individuo en imágenes de vídeo.

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.

Figura 2.1: Funcionamiento de SepConvLSTM

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.

2.1.2 VPN: Learning Video-Pose Embedding for Activities of Daily Living


VPN, es una arquitectura que es capaz de realizar detección de actividades a partir de unas
imágenes Reed, Green and Blue (RGB) y unas poses tridimensionales asociadas. En primer
lugar, la red preprocesa las imagenes RGB, aplicándole lo que llaman un visual backbone,
una función que devuelve un mapa de características espacio-temporales, preservando así la
importancia temporal de los fotogramas (ver Figura 2.2).

Figura 2.2: Arquitectura VPN

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.

2.2 Reconocimiento de actividades vía fotograma


Por otro lado, también estudiamos las arquitecturas que trabajan a nivel de fotograma, es
decir que, analizan la acción imagen a imagen.
2.2. Reconocimiento de actividades vía fotograma 5

2.2.1 Beyond Short Snippets: Deep Networks for Video Classification


Este artículo nos introdujo a visualizar cómo una red neuronal trataba los vídeos a nivel de
fotograma a fotograma. Concretamente en este estudio, se trató el tema del Transfer Learning
o transferencia de conocimiento.

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

Figura 2.3: Arquitectura para la clasificación de imágenes de un vídeo Ng y cols. (2015)

2.2.2 YOLO based Human Action Recognition and Localization


Yolo Redmon y cols. (2015) es una red capaz de detectar objetos en imágenes en tiempo
real, esto se consigue dividiendo la imagen en regiones y analizándolas una a una, sacando
las probabilidades que hay de que un objeto esté en alguna de las regiones.Es por ello que
en el articulo Shinde y cols. (2018) usan YOLO, para que en vez de discriminar objetos, que
discrimine acciones llevadas acabo por las personas en tiempo real (ver Figura 2.4).
Detectamos que este tipo de redes, que trabajan fotograma a fotograma, tienen serios proble-
mas a la hora de realizar actividades, debido a que la predicción cambiaba continuamente de
un fotograma a otro (flickering), haciendo que sea difícil obtener cuánto tiempo ha tardado
un usuario en realizar una acción.
6 Marco Teórico

Figura 2.4: YOLO reconociendo actividades


3 Objetivos
El objetivo principal del proyecto es poder determinar si hay indicios de alguna enferme-
dad, obteniendo el tiempo que tarda el individuo en realizar las tareas cotidianas. Para ello
trataremos de aportar una arquitectura que sea capaz de identificar qué actividad se realiza
en el vídeo, además de aportar una herramienta o una métrica capaz de expresarnos el tiempo
que ha tardado la persona en realizar la tarea.

3.1 Objetivos principales


• Preprocesamiento de los vídeos en frames o fotogramas.

• Experimentación con diversas arquitecturas existentes en la realidad para la clasificación


de vídeos.

• Preprocesamiento de los vídeos en lotes de fotogramas.

• Estudio de la capa TimeDistributed.

• Experimentos con la arquitectura que contiene capas de TimeDistributed.

• Extracción de la métrica temporal.

• Aplicación del estudio en el sector de la salud.

3.2 Objetivos futuros


• Estudio de las arquitecturas que trabajan a nivel de conjuntos, para poder adaptarlas
a vídeos.

• Aplicación del reconocimiento de actividades y métrica temporal en residencias geriá-


tricas.

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

Figura 4.1: Arquitectura VGGNet Simonyan y Zisserman (s.f.)

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.

Figura 4.2: Arquitectura ResNet50 He y cols. (2015)


4.1. Software 11

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.

Figura 4.4: Arquitectura LSTM Understanding LSTM networks (s.f.)


12 Metodología y recursos

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.

Cuadro 4.1: Computadora.


Componentes Detalles
GPU NVIDIA GeForce RTX 3060 12GB RAM
RAM 16 GB
CPU AMD Ryzen 5 3000 @ 3.60 GHz
OS Ubuntu 20.04.4 LTS
5 Desarrollo

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.

Figura 5.1: Diagrama del funcionamiento 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

(a) Dataset no equilibrado (b) Dataset si equilibrado

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.

(a) Actividad reconocida: Tenis (b) Actividad reconocida: fútbol

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.

Con TimeDistributed podemos procesar la secuencia para obtener mayor información, es


decir, al utilizar esta arquitectura nos proporciona, no solo la información de la actividad que
se realiza, sino también la información sobre el contexto.

5.2.2 ¿Cómo funciona 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.

Figura 5.4: Capa TimeDistributed. Ferlet (2019)

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 Arquitecturas TimeDistributed


En este subapartado veremos las diferentes arquitecturas que hemos usado para la clasifi-
cación de actividades.

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

5.4 Métrica para la extracción del rendimiento del paciente


El propósito inicial de este proyecto, es el estudio de las diferentes arquitecturas que traba-
jan a nivel de vídeo. Para que en un futuro, cuando dispongamos de un dataset, que contenga
los tiempos de las actividades de personas con Alzheimer y personas que no lo tengan, po-
dremos analizar el tiempo que tardan en realizar determinadas actividades y poder hacer un
pronóstico en función de él.

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.

Tiempo de la actividad = segundos de cada lote ∗ veces predicha la actividad (5.1)

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.

Finalmente, con la métrica propuestas junto con la arquitectura TimeDistributed, propor-


cionaríamos una herramienta en el campo de la salud para la prevención de enfermedades.
6 Resultados

En este capítulo veremos los resultados obtenidos por los diferentes experimentos realiza-
dos a lo largo del proyecto.

Hemos utilizado el dataset que nos ha proporcionado la empresa Toyota, modificándolo


para que se adecuara a nuestros experimentos. De esta forma, hemos ejecutado los experi-
mentos tanto a nivel de fotograma a fotograma, como con lotes de fotogramas.

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.

6.1 Experimentos con VGG-16

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

6.1.1 A nivel de fotograma


En este apartado nos encontramos con que la arquitectura VGG-16 obtiene un porcentaje
de acierto de un 97% (ver Figura 6.1). A pesar de utilizar un aumentado de datos, el
rendimiento de la red no se ve afectado. Una de las principales hipótesis que barajamos, es
que el modelo necesitaría muchos más datos de entrenamiento. Como podemos observar en

Figura 6.1: Gráfica VGG-16 fotograma a fotograma.

la matriz de difusión, consta que el acierto de las clases es casi perfecta (ver Figura 6.2).

Figura 6.2: Matriz de confusión de VGG-16 fotograma a fotograma.


6.1. Experimentos con VGG-16 21

6.1.2 A nivel de lotes de fotogramas


Nos encontramos con que al pasarle un lote de fotogramas, los resultados que obtenemos
son mayores en comparación a fotograma por fotograma. Con esta arquitectura, tenemos la
ventaja de que la red tiene en cuenta el contexto y no solo una acción.

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.

Figura 6.3: Gráfica VGG-16 con lote de fotogramas.

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.

Figura 6.4: Matriz de confusión de VGG-16 con lote de fotogramas.


22 Resultados

6.2 Experimentos con ResNet50


Dentro de la experimentación con ResNet50, nos vamos a encontrar con que en ambos
apartados hemos obtenido un buen resultado, pero no el mejor. Obteniendo así un 5% más
del valor obtenido por lotes de fotogramas que con un fotograma.

6.2.1 A nivel de fotograma


Esta arquitectura ha obtenido un rendimiento del 75% en el test (ver Figura 6.5), siendo
este más bajo que el de la arquitectura anterior.

Figura 6.5: Gráfica ResNet50.

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.

Figura 6.6: Matriz de confusión ResNet50 fotograma a fotograma.


6.2. Experimentos con ResNet50 23

6.2.2 A nivel de lote de fotogramas


Dentro de este apartado, también nos encontramos con que esta arquitectura es la que
peor resultados hemos obtenido, con un 83% en test(ver Figuras 6.7 , 6.8). En las primeras
pruebas realizadas, con ResNet50 siempre obteníamos el mayor porcentaje de acierto, pero
nos dimos cuenta de que el datase no estaba del todo correcto. No era correcto puesto que
la mayoría de las imágenes se repetían. Una vez solucionado el problema, esta arquitectura
pasó a estar en tercer lugar, dentro del cálculo de acierto mediante lotes de fotogramas.

Figura 6.7: Gráfica ResNet50 con lote de fotogramas.

Figura 6.8: Matriz de confusión de ResNet50 con lote de fotogramas.


24 Resultados

6.3 Experimentos con Inception-V3

6.3.1 A nivel de fotograma

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

Figura 6.9: Gráfica Inception-V3 fotograma a fotograma.

Figura 6.10: Matriz de confusión Inception-V3 fotograma a fotograma.


6.3. Experimentos con Inception-V3 25

6.3.2 A nivel de lotes de fotogramas


Esta arquitectura es la segunda con mejores resultados. Comparando los resultados obte-
nidos con el apartado anterior, podemos decir que al pasarle un lote de fotogramas recibe
un mayor número de parámetros. Por lo que, a pesar de no obtener un resultado uniforme y
con diversos picos, hemos conseguido obtener un porcentaje de 96% (ver Figura 6.11). Ade-
más, podemos observar que en la matriz los valores más altos se disponen en una diagonal,
demostrando así la cantidad de aciertos en esas clases (ver Figura 6.12).

Figura 6.11: Gráfica Inception-V3 con lote de fotogramas.

Figura 6.12: Matriz de confusión Inception-V3 con lote de fotogramas.


26 Resultados

6.4 Resultados finales


Finalmente, hemos recopilado los datos finales dos tablas según la categoría. Reflejando
así las arquitecturas que hemos probado con sus correspondientes resultados (ver figuras: 6.1,
6.2).

6.4.1 Resultados finales a nivel de fotograma


Podemos observar que la arquitectura con mayor porcentaje es VGG-16, que la sigue Res-
Net50 y finalmente Inception-V3. En este apartado es donde mayores experimentos hemos
realizado, puesto que al intentar utilizar la misma cantidad de capas que las arquitecturas de
lotes, conseguíamos un porcentaje de acierto del 100%. Debido a estos resultados, tuvimos
que reducir capas y entradas, para obtener un resultado más óptimo.

Arquitectura Accuracy
VGG-16 97%
ResNet50 75%
Inception-V3 64%

Cuadro 6.1: Tabla porcentaje de acierto fotograma a fotograma.

6.4.2 Resultados finales a nivel de lotes de fotograma


En este apartado, no sigue el mismo orden que el apartado anterior, sino que Inception-V3,
debido a lo que hemos comentado en su propio apartado, consigue uno de los porcentajes
más altos, aún así ninguna arquitectura consigue mejorar el resultado de VGG-16.

Arquitectura Accuracy
VGG-16 98%
ResNet50 83%
Inception-V3 96%

Cuadro 6.2: Tabla porcentaje de acierto con lote de fotogramas.

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.

Gracias a esta métrica, nuestro proyecto se podría aplicar en residencias geriátricas o en


otros centros similares donde se tenga a los pacientes constantemente visualizados mediante
cámaras, para que cuando el programa detecte que algún paciente empieza a aumentar su
tiempo en la realización de tareas, notifique al médico de que algo no está yendo bien y así
pueda actuar de una forma más rápida y eficiente en caso de ser necesario.

En caso de no ser aplicado en el tipo de centros ya nombrados y se quisiera seguir con la


investigación, sería necesario un dataset con un conjunto de vídeos de personas realizando las
tareas estando sanas y otro conjunto de vídeos de las mismas personas estando ya enfermas,
para así ser capaces de poder comparar. Con este dataset no solo seríamos capaces de mejo-
rar nuestro entrenamiento y así el valor obtenido por la métrica, sino que podríamos obtener
otro tipo de métricas teniendo en cuenta el comportamiento de las personas (Por ejemplo,
el movimiento de las piernas, para saber si se tiene un problema de rodillas, tobillos, etcétera.).

En trabajos futuros, contemplamos la posibilidad de emplear otras arquitecturas que traba-


jen a nivel de lotes de secuencias, además de buscar la manera de crear arquitecturas híbridas
entre la pose 3D de una persona y los fotogramas.

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

Enfermedad de alzheimer. (s.f.). Descargado de https://www.ceafa.es/es/el-alzheimer

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

Gracia, L. (2013, Oct). ¿qué es opencv? Descargado de https://unpocodejava.com/2013/


10/09/que-es-opencv/

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

Jurjsorinliviu. (s.f.). Jurjsorinliviu/sports-type-classifier: Classify the type of sports from ima-


ges. Descargado de https://github.com/jurjsorinliviu/Sports-Type-Classifier

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

Papers with code - inception-v3 explained. (s.f.). Descargado de https://paperswithcode


.com/method/inception-v3

29
30 Bibliografía

Piperlab, S. e. A. (2021, Jul). Keras. Descargado de https://piperlab.es/glosario-de


-big-data/keras/

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

Poudel, U. (2019, Dec). ”inceptionnet”. Medium. Descargado de https://medium.com/


@ujjawalpoudel/inceptionnet-c6b5aa40eccf

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/

Tensorflow. (s.f.). Descargado de https://www.tensorflow.org/about?hl=es-419

Toyota smarthome: Real-world activities of daily living. (s.f.). Descargado de https://


project.inria.fr/toyotasmarthome/

Understanding lstm networks. (s.f.). Descargado de http://colah.github.io/posts/2015


-08-Understanding-LSTMs/
Lista de Acrónimos y Abreviaturas
CNN Convolutional Neural Networks.
COVID19 Coronavirus Disease 2019.
ILSVRC ImageNet Large Scale Visual Recognition Challenge.
LRN Learning Resource Network.
LSTM Long Short-Term Memory.
ReLU Rectified Linear Unit.
RGB Reed, Green and Blue.
VPN Video Propagation Network.

31

También podría gustarte