T10373 - Clasificador de Residuos Sólidos Haciendo Uso de Deep Learning
T10373 - Clasificador de Residuos Sólidos Haciendo Uso de Deep Learning
T10373 - Clasificador de Residuos Sólidos Haciendo Uso de Deep Learning
LEARNING.
Director
JESÚS ALFONSO LÓPEZ SOTELO
Ingeniero Electricista
Magíster en automática
Doctor en ingeniería
3
CONTENIDO
pág.
RESUMEN 13
ABSTRACT 14
INTRODUCCIÓN 15
2. OBJETIVOS 20
3. JUSTIFICACIÓN 21
4. MARCO DE REFERENCIA 22
4.2.1 Clasificación 22
4.2.2 Regresión 23
4.2.3 Transcripción 24
4.2.4 Traducción 24
4
4.2.7 Denoising 25
4.3.2 Accuracy 27
4.3.4 Precisión 28
4.3.6 F1-score 29
4.5.4 Padding 39
4.5.5 Stride 39
4.5.8 Optimizadores 42
5
4.6 EDGE AI 46
4.7.1 Efficientnet 48
6. CONCLUSIONES 91
7. RECOMENDACIONES 93
REFERENCIAS 94
ANEXOS 100
6
LISTA DE FIGURAS
pág.
7
Figura 21. Maquinaria utilizada en el procesamiento el polietileno de baja
densidad para su reutilización. 62
Figura 30. Código de CNN: Método para variar los parámetros entrenables del
modelo”. 73
Figura 34. Código para correr el modelo en Jetson Nano y en Rasberry parte
1. 79
Figura 35. Código para correr el modelo en Jetson Nano y en Rasberry parte
2. 80
Figura 36. Código para correr el modelo en Jetson Nano y en Rasberry parte
3. 81
Figura 37. Código para correr el modelo en Dev Board Coral parte 1. 82
Figura 38. Código para correr el modelo en Dev Board Coral parte 2. 83
Figura 39. Código para correr el modelo en Dev Board Coral parte 3. 84
8
Figura 42. Matriz de confusión de test. 87
9
LISTA DE TABLAS
pág.
10
LISTA DE ANEXOS
pág.
11
Anexo V. Estructura de la red parte 8. 122
12
RESUMEN
Se utilizó una red neuronal efficientnet la cual fue entrenada con un dataset creado
a partir de un banco de imágenes propias y extraídas de internet. El sistema se
entrenó haciendo uso de la herramienta de Google “Colab”, dentro de la cual el
modelo alcanzó una precisión de entre el 80% y el 98% con las imágenes vistas y
nunca antes vistas.
1 Es una clase de red neuronal profunda que se utiliza comúnmente para analizar imágenes.
2 Proceso mediante el cual la red realiza predicciones de las entradas que se le presentan.
13
ABSTRACT
This degree work aims to contribute to the future automation of waste separation
processes for recycling purposes, seeking to increase these tasks in places where
they are already performed and encourage more places willing to do so. The work
is aimed at the classification of recyclable waste, seeking to generate groups that
facilitate the separation tasks that people currently perform, which separate between
press, file, cardboard, folding, glass, plastic, scrap, among others.
A convolutional neural network3 (CNN) was developed using transfer learning, which
is capable of classifying among 12 groups of waste such as paper, cardboard, folding
paper, cans, plastic, plastic bottles, magazines, among others; which are commonly
found at home or in highly staffed places like universities. These groups were chosen
according to those that already exist and taking into account opinions gathered in
the interviews that were conducted with respect to waste conditioning or notorious
difficulties in terms of their differentiation.
An efficientnet neural network was used, which was trained with a dataset created
from a bank of its own images and extracted from the Internet. The system was
trained using the Google tool "Colab", within which the model reached an accuracy
of between 80% and 98% with the images seen and never seen before.
The network was tested in 3 different embedded systems, which were “Nvidia Jetson
Nano”, “Dev Board Coral” and “Rasberry pi”; in which the network worked as
expected, managing to classify all the different residues that were selected for the
network to learn. In these embedded devices, inference4 times between 0.6 and 1.4
seconds were obtained.
14
INTRODUCCIÓN
15
Como solución a esta problemática se desarrolló una red neuronal artificial basada
en el modelo efficientnetB0. La red se entrenó a partir de un banco de imágenes
propio el cual abarca 12 categorías, botellas plásticas, cartón, lata, orgánico, papel,
pilas, plástico, plegadiza, revistas, tapas, Tetrapak y vidrio. Esta solución se ejecutó
en 3 sistemas embebidos como medio de evaluación para saber si el modelo tiene
la capacidad de ser implementado y ejecutado fácilmente en dispositivos con
capacidades computacionales limitadas, con el fin de poder ser utilizado en
aplicaciones industriales y personales. En el ambiente de entrenamiento se
alcanzaron valores de precisión entre los 80% y 98%, resultados que fueron
verificados mediante matrices de confusión. En el ambiente de prueba se logró
clasificar apropiadamente los residuos que se seleccionaron.
16
1. PLANTEAMIENTO DEL PROBLEMA
Según un artículo del periódico “El País”, el cual informa que la cantidad de residuos
sólidos generadas en Cali están fuera de control, debido a que se producen 2500
toneladas diarias de basura, las cuales van a parar directamente al basurero de
Yotoco; por otro lado “ACODAL( Asociación Colombiana de Ingeniería Ambiental y
Sanitaria)” relata que el basurero recibe todas las basuras del departamento del
valle y algo preocupante es que Cali está ocupando el 77% del volumen total de
basuras depositado hasta el momento, este basurero desde el 2015 tiene problemas
de manejo que pueden ocasionar el derrumbe de las montañas de basura (tal como
pasó en el botadero de Navarro que género contaminación en aguas subterráneas)
y la contaminación de una quebrada por lixiviados.
Bien se sabe que la inteligencia artificial (IA) permite abordar muchos desafíos
sociales, con el fin de mejorar la calidad de vida de todos los seres vivos, según un
artículo publicado por “McKinsey & Company”, las capacidades de la IA son más
aplicables para los diferentes problemas sociales que se quieren tratar a nivel
mundial, pues, 160 casos analizados por la compañía en el cual se hace uso de IA
tienen un gran impacto social. Cabe recalcar que los casos estudiados están
relacionados con 17 Objetivos de desarrollo sostenible y podrían ayudar a millones
de personas.
17
integrantes de la organización, por otro lado diferentes universidades como
Stanford, Harvard, entre otras y organizaciones como Google AI, DeepMind y
Microsoft Research, demuestran mediante un estudio cómo se facilita el estudio del
cambio climático con el aprendizaje automático que puede realizarse mediante la
IA, la cual estudia diferentes casos que lo generan y puede ser una herramienta
poderosa al mismo tiempo para contrarrestarlos.
18
residuos sólidos, teniendo en cuenta la gran utilidad de esta para facilitar los
procesos y evitar una interacción directa con los residuos, por otro lado, buscando
cumplir con algunos ODS, como Salud y Bienestar(3-ODS), Vida Submarina(14-
ODS) y Vida de ecosistemas terrestres(15-ODS) (Programa de las Naciones Unidas
para el Desarrollo, 2022). Con todo esto cabe preguntarnos
19
2. OBJETIVOS
20
3. JUSTIFICACIÓN
21
4. MARCO DE REFERENCIA
4.2.1 Clasificación
22
sobre clases. Un ejemplo de una tarea de clasificación es el reconocimiento de
objetos, donde la entrada es una Imagen (generalmente descrita como un conjunto
de valores de brillo de píxeles), y la salida es un valor numérico; código que identifica
el objeto en la Imagen. También se pueden afrontar casos de clasificación con
entradas faltantes, buscando una distribución de probabilidad a través de todas las
variables asociadas al problema.
4.2.2 Regresión
En este tipo de algoritmo se le pide que prediga un valor numérico según una
entrada dada. Los modelos de regresión se utilizan principalmente para encontrar
una relación entre las variables y la previsión, por esto difieren según el tipo de
relación que halla entre las variables dependientes e independientes. El modelo de
regresión se utiliza para crear una ecuación matemática que define “y” como una
operación de la variable “x”, operación que puede ser utilizada para predecir el
resultado final de “y” de acuerdo a los últimos valores de la variable predictora “x”.
Este tipo de formato es similar a la clasificación a diferencia de que la salida de este
es distinta. Puede ser utilizada para la predicción de valores futuros, como en el
caso del comercio algorítmico (trading).
23
4.2.3 Transcripción
4.2.4 Traducción
Este tipo de algoritmo detecta eventos y puede marcar alguno de ellos como
inusuales, pues aprende generando una distribución del comportamiento del
conjunto de datos de que haya aprendido y si hay un dato que este por fuera de
esta distribución el sistema puede detectar la anomalía. Un ejemplo de esto es como
los bancos, a través de un programa que ha aprendido tu forma de utilizar la tarjeta,
pueden detectar operaciones extrañas para prevenir robos.
24
4.2.6 Estimación de densidad
4.2.7 Denoising
Para este tipo de algoritmo, se le presentan dos entradas, una corrupta y la otra no;
el sistema debe predecir la versión corrupta o más generalmente predecir la
distribución de probabilidad condicional.
Para tareas como “density estimation” no tendría sentido acudir a ese tipo de
medidas, pues necesitamos métricas que den un valor continuo a la tasa de
desempeño del modelo, debido a su tipo de aplicación. Para estos tipos de tareas
es comúnmente empleado un enfoque de reportar la probabilidad logarítmica
promedio o “average log-probability” que el modelo asigna a sus resultados. Por lo
general, nos interesa saber qué tan bien se desempeña el algoritmo en datos que
nunca ha visto, ya que esto determina qué tan bien funcionará cuando se
25
implemente en el mundo real. Por lo tanto, evaluamos estas medidas de rendimiento
utilizando un conjunto de datos de prueba que es independiente de los datos
utilizados para entrenar el sistema de aprendizaje automático.
Las medidas de desempeño usan unos criterios de los cuales parte la forma de
entregar un resultado de cada métrica. Los criterios son 4 y se clasifican en TP (True
positive), es cuando la clase real del punto de datos era verdadero y la predicha
también; TN (True negative), es cuando la clase real del punto de datos fue falso y
el pronosticado también; FP (False positive) es cuando la clase real del punto de
datos era false y el pronosticado es verdadero; y FN (False negative), es cuando la
clase real del punto de datos era Verdadero y el valor predicho es Falso. En una
matriz de confusión con varias clases, el verdadero positivo es el valor
correspondiente a la intercepción de clase con clase, es decir la posición cm(x,x); el
falso negativo es la suma de las filas la clase “x” sin contar el verdadero positivo,
cm(x,:)-cm(x,x); y el falso positivo es la suma de las columnas de la clase “x” sin
contar el verdadero positivo, cm(:,x)-cm(x,x).
26
Figura 1.
Criterios medida de desempeño
Según sitio big data (2019) las principales métricas de clasificación utilizados en
machine learning son:
4.3.2 Accuracy
𝑇𝑃 + 𝑇𝑁
𝐴𝐶𝐶 =
𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁
27
está balanceado. Ejemplo de esto es tener 90 datos clase “A” y 10 clase “B”, si
predice todo como clase “A” su precisión será del 90% pero esto no significa que la
red este trabajando como debe. Es una buena métrica siempre y cuando haya una
buena distribución de los datos de entrenamiento, de lo contrario sería difícil
interpretar el resultado.
𝑇𝑃
𝑅𝑒𝑐𝑎𝑙𝑙 =
𝑇𝑃 + 𝐹𝑁
no se trata tanto de capturar casos correctamente sino más de capturar todos los
casos que son positivos con la respuesta positiva. Entonces, si siempre decimos
cada caso como positivo, tenemos un recall del 100%.
4.3.4 Precisión
𝑇𝑃
𝑃𝑟𝑒𝑠𝑖𝑐𝑖ó𝑛 =
𝑇𝑃 + 𝐹𝑃
28
𝑇𝑁
𝑇𝑁𝑅 =
𝑇𝑁 + 𝐹𝑃
4.3.6 F1-score
Es una medida armónica, lo que quiere decir que es una especie de promedio que
tiende a inclinarse hacia el valor más pequeño y compara precisión con recall. Su
forma de calcular es:
2 ∗ 𝑝𝑟𝑒𝑠𝑖𝑐𝑖ó𝑛 ∗ 𝑟𝑒𝑐𝑎𝑙𝑙
𝐹1 =
𝑝𝑟𝑒𝑠𝑖𝑐𝑖ó𝑛 + 𝑟𝑒𝑐𝑎𝑙𝑙
Cuando ambos valores son máximos, es decir 100%, la salida del modelo acierta el
100% de las veces, y si ambos tienden a 50 la salida será una aproximación
apropiada de acuerdo a los datos; y si alguna es 0% la solución de esta ecuación
es 0. Estos resultados comparativos ayudan a comprobar realmente como está
trabajando el modelo y ayuda a saber si el modelo está tendiendo a inclinarse por
una clase en específico, pues el resultado de esta ecuación será cercano a 0.
29
Figura 2.
Tipos de aprendizaje
30
Figura 3.
Aprendizaje no supervisado
31
algoritmo, conocido como variable dependiente, depende del valor de las variables
de datos independientes. Se basa en el conjunto de datos de entrenamiento y
mejora mediante iteraciones. Existen principalmente dos categorías de aprendizaje
supervisado, como la regresión y la clasificación. (Pedamkar, 2022)
Figura 4.
Aprendizaje no supervisado
32
4.4.3 Deep learning
33
Figura 5.
Ilustración de un modelo de Deep Learning
El Deep Learning resuelve la dificultad de tareas simples para los humanos que
para las maquinas llegan a ser muy complicados, dividiendo el mapeo complicado
en una serie de mapeos simples anidados, cada uno descrito por una capa diferente
del modelo. El modelo posee una capa de entrada que contiene las variables que
se pueden observar y unas capas ocultas donde el modelo debe extraer
características y determinar cuáles son útiles para explicar las relaciones en los
datos observados.
Una red neuronal está formada de neuronas conectadas entre ellas; a su vez, cada
conexión de nuestra red neuronal está asociada a un peso que dictamina la
importancia que tendrá esa relación en la neurona al multiplicarse por el valor de
entrada. Cada neurona tiene una función de activación que define la salida de la
neurona. La función de activación se usa para introducir la no linealidad en las
capacidades de modelado de la red, para lo cual disponemos de varias funciones
de activación posible.
Entrenar nuestra red neuronal es la parte más genuina de Deep Learning y podemos
ver este proceso de aprendizaje en una red neuronal como un proceso iterativo de
“ir y venir” por las capas de neuronas. El “ir” propagando hacia delante lo llamaremos
34
forwardpropagation y se da cuando se expone la red a los datos de entrenamiento
y estos cruzan toda la red neuronal para ser calculadas sus predicciones (labels).
Cuando se llegue a la capa final con un resultado de predicción para aquellos
ejemplos de entrada, usaremos una función de loss para estimar el error y para
comparar y medir cuán bueno o malo fue nuestro resultado de la predicción en
relación con el resultado correcto. El “venir” retropropagando información en la red
lo llamamos backpropagation (Torres, 2018), el cual, partiendo de la información del
loss, propaga hacia las otras neuronas una fracción de la señal basándose
aproximadamente en la contribución relativa que haya aportado cada neurona a la
salida original, repitiendo este proceso capa por capa hasta que todas las neuronas
de la red hayan recibido una señal de loss.
Figura 6.
Ilustración del proceso de entrenamiento.
Nota. Tomada de “DEEP LEARNING Introducción práctica con Keras” por J. Torres,
2018. https://torres.ai/deep-learning-inteligencia-artificial-keras/. Copyright 1997-
2022.
35
Las redes neuronales convolucionales son muy similares a las redes neuronales,
están formadas por neuronas que tienen parámetros en forma de pesos y sesgos
que se pueden aprender, están formadas por neuronas que se auto optimizan a
través del aprendizaje. El rasgo diferencial de las CNN es que hacen la suposición
explícita de que las entradas son imágenes, cosa que nos permite codificar ciertas
propiedades en la arquitectura para reconocer elementos concretos en las
imágenes.
Figura 7.
Ilustración del proceso de convolución.
Nota. Tomada de “DEEP LEARNING Introducción práctica con Keras” por J. Torres,
2018. https://torres.ai/deep-learning-inteligencia-artificial-keras/. Copyright 1997-
2022.
36
En general las capas convoluciones operan sobre tensores de 3D, llamados feature
maps, con dos ejes espaciales de altura y anchura (height y width), además de un
eje de canal (channels) también llamado profundidad (depth). Para la figura anterior,
tenemos una entrada de 28×28 píxeles y una ventana de 5×5, esto nos define un
espacio de 24×24 neuronas en la primera capa oculta; debido a que solo podemos
mover la ventana 23 neuronas hacia la derecha y 23 hacia abajo antes de chocar
con el lado derecho (o inferior) de la Imagen de entrada. En este ejemplo, la primera
capa convolucional recibe un tensor de entrada de tamaño (28, 28, 1) y genera una
salida de tamaño (24, 24, 32), un tensor 3D que contiene las 32 salidas de 24×24
píxel resultado de computar los 32 filtros sobre la entrada.
Figura 8.
Ilustración del proceso de pooling.
Nota. Tomada de “DEEP LEARNING Introducción práctica con Keras” por J. Torres,
2018. https://torres.ai/deep-learning-inteligencia-artificial-keras/. Copyright 1997-
2022.
37
Continuando con lo descrito hasta el momento, una red convolucional consta de tres
etapas: en la primera etapa, la capa realiza varias convoluciones en paralelo para
producir un conjunto de activaciones lineales. En la segunda etapa, cada activación
lineal se ejecuta a través de una función de activación no lineal, como la función de
activación lineal rectificada (Relu). En la tercera etapa, se utiliza la función de
Pooling para modificar aún más la salida de la capa. En la última capa se agrega
una función softmax para dar la salida de la red.
Figura 9.
Ilustración de una red neuronal convolucional.
Nota. Tomada de “DEEP LEARNING Introducción práctica con Keras” por J. Torres,
2018. https://torres.ai/deep-learning-inteligencia-artificial-keras/. Copyright 1997-
2022.
A la hora de realizar una red neuronal convolucional hay que tener en cuenta un
conjunto de parámetros e hiperparámetros que nos ayudan a optimizar el
aprendizaje de la red según sea lo que deseamos para que esta entrene mejor o
más rápido. Los parámetros en el modelo son una variable de configuración que es
interna al modelo y cuyo valor puede ser estimado a partir de los datos. Por otro
lado, los hiperparámetros son variables de configuración que son externas al
modelo en sí mismo y cuyo valor en general no puede ser estimado a partir de los
datos, y son especificados por el programador para ajustar los algoritmos de
aprendizaje (Torres, 2018). Algunos hiperparámetros que se tienen en cuanta a la
hora de trabajar con una red neuronal convolucional son:
38
4.5.1 Número de épocas
El número de épocas nos indica el número de veces en las que todos los datos de
entrenamiento han pasado por la red neuronal en el proceso de entrenamiento. Es
un valor que suele irse aumentando para que aumente la métrica utilizada, como
por ejemplo accurasy. El incrementar demasiado este parámetro produce
overfitting, lo cual se refiere a que el programa aprende muy bien los valores de
entrenamiento, pero al presentarle datos nuevos no cumple adecuadamente su
tarea.
Este término hace referencia a que se puede particionar los datos de entrenamiento
en mini lotes para pasarlos por la red. El batch_size es el argumento que indica el
tamaño que se usará de estos lotes. El tamaño óptimo depende de muchos factores,
entre ellos está la capacidad de memoria del computador que se esté usando para
entrenar.
4.5.4 Padding
Indica el valor de columnas o filas a añadir para deslizar la ventana sobre la Imagen
de entrada, y así obtener una ventana con un tamaño más pequeño o igual. El
padding en la capa Conv2D se configura con el argumento padding, que puede
tener dos valores: “same”, que indica que se añadan tantas filas y columnas de
ceros como sea necesario para que la salida tenga la misma dimensión que la
entrada; y “valid”, que indica no hacer padding
4.5.5 Stride
39
siguiente capa. En las convoluciones el valor del stride suele ser 1, pues si la
intención es reducir el tamaño del dato se utiliza una capa de Pooling.
1
𝑓(𝑥) = (1)
1 + 𝑒 −𝑥
𝑒 𝑥 − 𝑒 −𝑥
tanh(𝑥) = (2)
𝑒 𝑥 + 𝑒 −𝑥
40
Relu (Rectified Linear Unit): Es la función de activación más utilizada en el
aprendizaje profundo. La función devuelve 0 si la entrada es negativa, pero para
cualquier entrada positiva, devuelve ese valor. No es lineal alrededor de 0, pero la
pendiente siempre es 0 (para entradas negativas) o 1 (para entradas positivas). Es
continua, pero no es diferenciable porque su derivada es 0 para cualquier entrada
negativa. No tiene un valor máximo por lo que no se satura, esto ayuda al gradiente
descendiente.
Estas funciones están hechas para medir el desempeño del modelo de clasificación.
Según Pedamkar (2021b) las funciones de perdida más utilizados en problemas de
clasificación son:
41
puntos de datos de varias clases. El Squared Hinge Loss se adapta perfectamente
a los problemas de decisión del tipo SÍ O NO, donde la desviación de probabilidad
no es la preocupación.
4.5.8 Optimizadores
Los optimizadores son algoritmos o métodos que se utilizan para cambiar los
atributos de su red neuronal, como los pesos y la tasa de aprendizaje, para reducir
el Loss. Entre los optimizadores encontramos el gradiente desendiente (GD),
gradiente descendiente estocástico (SGD), gradiente descendiente estocástico en
mini lotes (MB-SGD), gradiente descendiente estocástico con impulso, gradiente
acelerado de Nesterov (NAG), el gradiente adaptativo (Adagrad), AdaDelta, y
finalmente el Adam. El Adam es el que suele converger más rápido de entre los
mencionados.
Para lograr el cometido de clasificar una nueva categoría, sean personas, animales,
objetos, entre otros, partiendo de una red que ya clasifica otra categoría que recopila
características similares, es necesario desarrollar el nuevo conjunto de datos con
42
sus respectivas etiquetas. Teniendo el conjunto de datos, ahora es necesario tener
en un archivo la arquitectura del modelo pre entrenado y en otro archivo los pesos
pre entrenados; esto para que sea este el punto de partida de la nueva red, la cual
gracias a los pesos pre entrenados ya tiene experiencia en el reconocimiento de
características, por lo que le tomaría menos tiempo el lograr apropiadamente la
nueva tarea.
43
para permitir que "contenedores" independientes se ejecuten dentro de una sola
instancia de Linux, evitando la sobrecarga de iniciar y mantener máquinas virtuales.
(Wikipedia, 2022c)
las librerías de Python cuentan con una colección de componentes como programas
individuales, módulos, paquetes, frameworks, aplicaciones, entre otros, que se
especializan en tareas como visualización, cálculo numérico, machine learning,
Deep learning, procesamiento del lenguaje natural, entre otros. Según Flores (2021)
entre las librerías más utilizadas encontramos:
Bokeh: Es una de las librerías de Python que permite visualizar los datos desde
una perspectiva más interactiva dentro de un navegador web. Adicionalmente, se
puede crear gráficos elegantes y versátiles con datos que llegan en tiempo real.
44
Numpy: Es una librería que permite crear una estructura universal de datos para
facilitar su análisis e intercambio de varios algoritmos. Al igual que varias librerías
de Python, esta implementa vectores multidimensionales y matrices que almacenan
una gran cantidad. A su vez, posee funciones matemáticas de alto nivel y utiliza
diversas estructuras de datos.
45
integrados basados en Linux como Raspberry Pi o microcontroladores para hacer
la inferencia en el perímetro. (Khandelwal, 2021)
4.6 EDGE AI
46
decir, un microprocesador que incluye además interfaces de entrada/salida, así
como una memoria de tamaño reducido en el mismo chip. (Luchetti, 2021)
Los modelos de aprendizaje profundo deben su éxito inicial a los grandes servidores
con grandes cantidades de memoria y grupos de GPU. Las promesas del
aprendizaje profundo dieron lugar a toda una industria de servicios de computación
en la nube para redes neuronales profundas. En consecuencia, las redes
neuronales muy grandes que se ejecutan en recursos de nube virtualmente
ilimitados se volvieron muy populares, especialmente entre las empresas
tecnológicas ricas que pueden pagar la factura. Pero al mismo tiempo, los últimos
años también han visto una tendencia inversa, un esfuerzo concertado para crear
modelos de aprendizaje automático para dispositivos de borde. Estos modelos,
llamados tiny machine learning, o TinyML, son adecuados para aplicaciones que
requieren inferencia en el dispositivo, dispositivos que tienen memoria y potencia de
procesamiento limitadas, y en los que la conectividad a Internet no está presente o
es limitada. (Dickson, 2022)
47
los cuales pueden ser el modelo comprimido, el cual en el caso del proyecto está
en formato tflite; los pesos del modelo, si es que no vienen ya en el modelo
comprimido o se piensa utilizar otros; Los “labels”, si es que no están incluidos en
el programa desarrollado; los periféricos que se vayan a utilizar, los cuales pueden
ser cámara, micrófono, algún sensor, entre otros. Todo lo necesario para ejecutar
el modelo dependerá de cómo se codifico su ejecución.
4.7.1 Efficientnet
48
Figura 10.
Escalado del modelo Efficientnet.
De acuerdo con el trabajo realizado por Vardan Agarval en towards data science
por Agarwal (2021) encontramos que todos los modelos efficientnet tienen en
común la forma en que están estructurados. Todos los modelos efficientnet inician
con un bloque denominado stem y terminan con las mismas capas finales, las
cuales se describen en la siguiente imagen.
49
Figura 11.
Estructura del modelo Efficientnet.
Seguido del bloque denominado stem, los modelos effecientnet están construidos
por 7 bloques, de los cuales se desprende un número variable de sub-bloques que
depende de cual estructura efficientnet se esté usando. En la estructura de estos
modelos existen 3 diferentes sub-bloques que a su vez están construidos por una
conexión entre 3 módulos diferentes. Dichos sub-bloques se muestra en la siguiente
imagen.
Figura 12.
Sub-bloques del modelo Efficientnet.
50
Cada uno de los módulos utilizados están formados por una sucesión de
operaciones que incluyen convoluciones 2D, normalización, rescaling, polling, entre
otros. Las operaciones que se realizan en cada uno de los módulos se describen en
la siguiente imagen.
Figura 13.
Módulos del modelo Efficientnet.
Cada módulo cumple una tarea dentro de la estructura de sub-bloques, esta tarea
se describe a continuación
Módulo 3: está conectado como una conexión de salto a todos los sub-bloques.
51
El modelo utilizado en este trabajo es el efficientnetB0. Gracias a lo presentado
hasta el momento es posible comprender completamente la estructura del modelo,
la cual se mostrará en la siguiente imagen. Cabe recalcar que lo descrito en esta
imagen como módulo se refiere a los sub-bloques presentados anteriormente.
Figura 14.
Arquitectura del modelo EfficientnetB0.
La tabla que se muestra a continuación indica el tamaño del núcleo para las
operaciones de convolución junto con la resolución, los canales y las capas en
EfficientNet-B0.
52
Figura 15.
Parámetros de las operaciones realizadas en el modelo EfficientnetB0.
Cabe recalcar que stage representa en bloque sobre el que se están realizando las
operaciones, siendo 1 equivalente a stem, y 9 equivalente a “Final layers”. En la
tabla se presentan los tamaños del Kernel de las operaciones con respecto al bloque
en el que se trabaja, la resolución que van tomando los datos de entrada conforme
avanza el proceso, y los canales resultantes de cada operación.
En el desarrollo del proyecto se debe tener en cuenta los grupos en los que se
separan los residuos, sin embargo, estos grupos no son los generales que se
indican en los hogares y espacios públicos, los cuales son residuos orgánicos,
reciclables, no reciclables y peligrosos. Se separa en grupos escogidos gracias a
las entrevistas realizadas, en los cuales se seccionan las categorías según el cómo
se procesan los desechos, esto si deben ser preprocesados antes de ser
entregados a los respectivos entes, o en su grupo real con el que cada organización
especializada los recoge. Dando un breve acercamiento al trabajo realizado, dadas
las organizaciones presentes en la región que recogen las tapas de las bebidas
plásticas como donativos para su funcionar, el trabajo realizado también las puede
53
reconocer como individuales, categorizándolas directamente para ese grupo
específico.
En Colombia, a partir del 1 de enero del 2021 se empezó a utilizar un nuevo código
de colores para los residuos que se desechan en la fuente, esto con el fin de unificar
los colores utilizados en todo el territorio nacional y que así sin importar el lugar
donde estés, sepas como clasificarlo. Los colores utilizados serán el blanco para los
residuos aprovechables secos como el plástico, vidrio, metales, papel y cartón; el
negro para residuos no aprovechables como el papel higiénico, servilletas, papeles
y cartones contaminados con comida, así como los nuevos residuos generados en
masa por la pandemia como lo son tapabocas, guantes entre otros; el color verde
para los residuos orgánicos aprovechables como los restos de comida, residuos de
corte de césped y poda de jardín, entre otras.
Los estudiantes José Luis Camacho Torres, Emmanuel de Jesús Cervantes Morales
y Ángel Guadalupe Martínez Domínguez crearon un separador inteligente de
basura, el cual fue presentada el 18 y 19 de octubre del 2018 en el Centro de
Investigación en Inteligencia Artificial (CIIA) de la Universidad Veracruzana (UV).
Los creadores del separador inteligente de basura comentaron que éste funciona
mediante sensores para reconocer y clasificar los desechos en orgánicos e
inorgánicos, pero la expectativa es que trace rutas, sea autónomo en cuanto a
movimiento para poder esquivar obstáculos y a las personas.
54
Figura 16.
separador inteligente de basura.
55
Figura 17.
Reciclador inteligente “Urvosev”.
56
Figura 18.
Contenedores de reciclaje interactivos con ioT.
57
5. DESARROLLO DEL PROYECTO
Para el desarrollo de este proyecto se trabajó con una metodología por etapas,
gracias a la cual, partiendo desde la recolección de información, se fue
estructurando etapa a etapa los requerimientos que iba a tener el proyecto,
generando unos entregables al finalizar cada etapa, los cuales fijaban el lineamiento
para dar continuidad con la siguiente etapa hasta concluir el trabajo.
Figura 19.
Etapas de la metodología utilizada.
58
relevancia, es el centro de reciclaje de la universidad Autónoma de Occidente. En
este lugar se separa una amplia cantidad de categorías de reciclaje, las cuales son
principalmente 12, además de que también se separan las tapas de bebidas
plásticas para donarlas a una fundación.
Figura 20.
Visita centro de reciclaje de la universidad Autónoma De Occidente.
La plegadiza (plega)
El cartón
La prensa
El archivo
59
Los residuos de cables de internet y similares
El papel Kraft
El polyboard
Los CDs
La chatarra.
Otro dato de gran relevancia que se pudo recopilar de las visitas es sobre los
residuos que deben ser tratados o adecuados antes de su deposición para venta o
procesamiento de reutilización. Los que destacaron fueron principalmente las
botellas plásticas y las revistas.
Las botellas plásticas porque pueden contener residuos extras en su interior debido
a que algunas personas insertan el residuo de la comida que acompañaba la bebida,
ejemplo de esto es la servilleta. El proceso que casi siempre es necesario realizar
a las botellas es terminar de extraer todo el líquido que contenía, debido a que no
60
debe quedar ni la más mínima cantidad a la hora de procesar este plástico. En el
caso de las revistas es debido a la variabilidad de tipos de papel que usan en ellas,
en algunos casos, la caratula se categoriza como plegadiza, mientras que el
contenido puede ser archivo, por lo que la persona encargada de la separación debe
realizar estas adecuaciones antes de entregarlo al comprador.
61
Figura 21.
Maquinaria utilizada en el procesamiento el polietileno de baja densidad para su
reutilización.
62
Figura 22.
Imágenes tomadas para la elaboración del Dataset
63
Figura 23.
Top 1 de clasificación de imágenes con Imagenet
De las arquitecturas que han sido base de los mejores resultados encontramos
algunas tales como las redes neuronales basadas en la atención, como Vision
Transformer (ViT); los modelos Efficientnet, los cuales amplían modelos
tradicionales como MobileNet y ResNet; el modelo tradicional comúnmente utilizado
de VGGNet.
Para entrar a conocer los posibles embebidos se encontró que son un sistema de
computación diseñado para realizar una o algunas pocas funciones dedicadas
frecuentemente en un sistema de computación en tiempo real. Los sistemas
embebidos encontrados y seleccionados son:
64
Figura 24.
NVIDIA Jetson Nano.
Nota. Tomada de “Jetson Nano Developer Kit”, por NVIDIA Developer, 2021.
https://developer.nvidia.com/embedded/jetson-nano-developer-kit. Copyright 2022.
Dev Board Coral: Es una placa de desarrollo para crear rápidamente prototipos de
productos de aprendizaje automático en el dispositivo. Escalable desde el prototipo
hasta la producción con un sistema en módulo (SoM) extraíble. (Google LLC, 2020)
Figura 25.
Dev Board Coral.
65
Raspberry Pi 4B: Es la computadora de placa única con mejor rendimiento hasta
la fecha de la Fundación Raspberry Pi que ha experimentado una gran actualización
en comparación con todos los modelos anteriores. Por primera vez, el Pi 4 B está
disponible en diferentes versiones de memoria de hasta 8 GB con verdadero Gigabit
Ethernet, alimentación USB-C, USB 3.0, salida de pantalla dual 4k y una CPU de
cuatro núcleos para competir con el rendimiento de un nivel de entrada.
computadora de escritorio. Es una computadora verdaderamente poderosa y capaz
en un paquete pequeño y asequible. (RS Components, 2020)
Figura 26.
Raspberry Pi.
66
Tabla 1.
Categorías seleccionadas para la elaboración del Dataset con su cantidad de
imágenes
CATEGORIA IMAGENES
Botella
283
Plástica
Cartón 303
Desechable 224
Lata 386
Orgánico 292
Papel 114
Pilas 228
Plástico 211
Plegadiza 494
Revista 537
Sobres 107
Tapas 152
Tetrapak 191
Vidrio 433
Total 3955
67
estructura que toman los modelos EfficientNet con relación a lo descrito en el marco
teórico.
68
Figura 27.
Estructura del código de CNN.
69
modificadas de datos ya existentes o datos sintéticos recién creados a partir de
datos existentes. Actúa como un regularizador y ayuda a reducir el overfitting al
entrenar un modelo de aprendizaje automático. Para implementarlo se importaron
las librerías de preprocessing, que ayudan a pasar los datos sin procesar a un objeto
de tipo Dataset que se puede usar para entrenar un modelo, como ya se había
implementado en el data generator, en este caso permite realizar operaciones de
rotación, traslación, volteo y contraste a la Imagen que se le pasa.
Figura 28.
Código de CNN: Preprocesamiento de la entrada.
Ahora se procede a realizar la construcción del modelo, para la cual fue necesario
importar de tensorflow el modelo de EfficientnetB0. Inicialmente se crea el método
“build_model” dentro del cual se define inicialmente el tamaño de la entrada, el cual
es de 224x224x3 ya que las imágenes de entrada son a color. Seguido a esto se
envían las imagines al método de fully-connected layer. Luego se crea el modelo, el
cual viene siendo importado de las librerías de tensorflow, al determinarse el
“include_top” como falso entonces el modelo importado no trae las fully-connected
layer, la entrada del modelo serán las imágenes procesadas con fully-connected
layer y los pesos serán los preentrenados con Imagenet. Inicialmente se determina
que no sean entrenables los parámetros del modelo que se importan. Al modelo se
le agrega una capa de GlobalAveragePooling2D, la cual Aplica la agrupación
promedio en las dimensiones espaciales hasta que cada dimensión espacial es una
y deja las demás dimensiones sin cambios. En este punto también se podría
cambiar de función y aplicar un flatten, el cual toma un tensor de cualquier forma y
70
lo transforma en un tensor unidimensional (más la dimensión de las muestras) pero
manteniendo todos los valores en el tensor. Luego se le agrega al modelo una capa
de normalización, la cual normaliza por lotes aplicando una transformación que
mantiene la salida media cercana a 0 y la desviación estándar de salida cercana a
1. Por último, se le agrega una capa de dropout, la cual establece aleatoriamente
las unidades de entrada en 0 con una frecuencia determinada por el “dropout_rate”
en cada paso durante el tiempo de entrenamiento, lo que ayuda a evitar el
sobreajuste.
71
Figura 29.
Código de CNN: Model Building.
Previo a la fase de model training se definió un método que descongela todas menos
las ultimas capas del modelo según el valor que se le indique, lo que quiere decir
que les permite a esas capas cambiar sus valores de acuerdo al resultado obtenido
al final de cada entrenamiento. Esto nos permite hacer que el modelo en sus
primeras capaz de extracción de características pueda reconocer formas que le
permitan diferenciar entras las nuevas clases para las que se está usando el
sistema, pues son diferentes a las clases contenidas en el Dataset de Imagenet.
Este descongelamiento al ser fácilmente variable se presta para hacer pruebas
empíricas de cómo reacciona mejor la red, pues el variar la cantidad de parámetros
entrenables afecta directamente en el comportamiento de la red.
72
Figura 30.
Código de CNN: Método para variar los parámetros entrenables del modelo”.
Las imagines también requirieron de una nueva separación manual más rigurosa,
pues en la primera separación realizada hubo una mal distribución en cuanto a los
diferentes residuos de cada categoría, por lo que un mismo tipo de residuo quedo
en el grupo para entrenar mientras que en el grupo de testeo y validación había
tipos de imágenes que la red nunca había visto, por lo que su resultado con dificultad
era el deseado.
73
Tabla 2.
Distribución final del Dataset.
74
Tabla 3.
Entrenamiento del modelo según su función de perdida.
Tabla 4.
Entrenamiento del modelo según sus capas entrenables.
parámetros no parámetros
Unfreeze layers Train ACC Train Loss Test ACC Test Loss
entrenables entrenables
0 4,052,131 17,932 63.00% 0.206 68.00% 0.5903
20 2,930,547 1,139,516 94.55% 0.0396 85.75% 0.0727
80 922,247 3,147,816 96.33% 0.0241 85.88% 0.0783
200 101,017 3,969,046 97.22% 0.0194 85.75% 0.0771
75
accuracy del 96% en entrenamiento y del 86% en validación. Cabe recalcar que
estos resultados son muy óptimos según lo deseado, permitiéndole al modelo
cumplir con los ideales puestos en el proyecto. Sin embargo, se descubrió que al
sólo entrenar las ultimas capas, las cuales son las encargadas de dar los valores de
clasificación, se empezaba a afectar los resultados de la red; esto se evidencia en
los “ACC” y “Loss” de la tabla correspondiente a 0 capas descongeladas, la cual
cuenta con tan solo 17,932 parámetros entrenables de los 4,070,063 que tiene el
modelo, los cuales fueron 0.63 de precisión en el entrenamiento y 0.68 en el test.
Figura 31.
Accuracy del modelo.
Del accuracy del modelo podemos percibir como rápidamente el modelo empieza a
aprender los nuevos datos presentamos, incrementado su precisión en datos de
entrenamiento constantemente, pero estabilizándose por encima del 80% de
precisión en cuanto a la validación y aumenta muy lentamente.
76
Figura 32.
Loss del modelo.
Tflite y h5 son tipos de archivos que comprimen el modelo para realizar sus
aplicaciones prácticas; tflite (tensorflow lite), en particular es un formato optimizado
que ayuda a ejecutar modelos en dispositivos incorporados, móviles o de IoT.
77
Para llevar a cabo esta etapa fue necesario pasar el formato del proyecto de h5 a
tflite, debido a que al tratar de correr el modelo h5 en los embebidos, ninguno fue
capaz de ejecutarlo. Se guardé el modelo como tflite haciendo uso de las siguientes
líneas de código que se muestran en la figura.
Figura 33.
Código para convertir el modelo en tflite.
Usando opencv se activa la cámara y se empieza a leer las imágenes que toma, se
guarda el frame que lee la cámara como una Imagen “.png” que posteriormente se
carga y se le hace reshape; se configura el tensor de entrada como la Imagen
cargada para que al usar el “invoke” el modelo clasifique esa Imagen, se toma el
tiempo que se demora en hacer inference el modelo con time, se pasa la predicación
a texto y se escribe la predicción en la Imagen que posteriormente es mostrada en
frame.
78
Figura 34.
Código para correr el modelo en Jetson Nano y en Rasberry parte 1.
79
Figura 35.
Código para correr el modelo en Jetson Nano y en Rasberry parte 2.
80
Figura 36.
Código para correr el modelo en Jetson Nano y en Rasberry parte 3.
En el caso de la Dev Board Coral no contaba con la librería de tensorflow sino que
tiene su propio grupo de librerías que se utilizan para hacer entrenamiento,
validación e inferencia con tflite. Lo que obligo a realizar cambios en el código que
se tenía para acoplarlo a la necesidad de la board. El código se muestra a
continuación, y es basicamente el mismo concepto y funcionamiento que el
mostrado en la figura 26, su principal diferencia es que no se cuenta con la librería
de tensorflow, sino que con un grupo de librerias de pyCoral que reemplazan los
comandos empleados para correr el formato tflite. Los principales cambios en la
codificación fueron que el modelo se carga usando el comando
“edgetpu.make_interpreter” en lugar de “tf.lite.interpreter”, con el comando
“common” se setean los tensores de entrada y salida y la inferencia se hace con el
comando “run_inference”.
81
Figura 37.
Código para correr el modelo en Dev Board Coral parte 1.
82
Figura 38.
Código para correr el modelo en Dev Board Coral parte 2.
83
Figura 39.
Código para correr el modelo en Dev Board Coral parte 3.
84
Figura 40.
Pasos para llevar la “IA” a un embebido.
Tal y como lo describe la figura 28, ese fue el paso a paso que se siguió para llevar
la red neuronal del entorno de desarrollo, que en este caso fue Google Colab, a los
diferentes embebidos utilizados, incluyendo el computador donde se trabajo, el cual
cuenta con un procesador inter core i7 de septima generación, una tarjeta gráfica
Nvidia1050 y 12 Gb de ram. En esencia el paso a paso es el mismo, solo cambia la
forma de trabajar en el entorno que se este usando y por ende las librerías que se
requieran, como en el caso de la Dev Board que no contaba con tensorflow en sus
librerías sino una librería propia de Coral que la reemplazaba pero que cambiaba la
codificación, así como una interface diferente a la acostumbrada, en el caso de las
personas que manejan linux.
85
5.6 RECOMENDACIONES EN LA IMPLEMENTACIÓN DEL MODELO EN LOS
SISTEMAS EMBEBIDOS
86
Figura 41.
Matriz de confusión de entrenamiento.
Figura 42.
Matriz de confusión de test.
87
Figura 43.
Matriz de confusión de validación.
Las matrices de confusión también nos permiten observar que hay una tendencia a
confusión por parte del clasificador con respecto a las imágenes de papel, plega,
Tetrapak y plástico, pues vemos que son las que alcanzan un menor porcentaje.
También podemos notar que, por tendencia, la mayor cantidad de imágenes
pertenecientes a botellas plástica que clasificó mal la red las confundió con vidrio;
el Tetrapak con revista, el plástico con botella plástica, y la plega con revista. De
estas tendencias podemos rescatar que aún en estos errores de exactitud hay
aproximación a la realidad, pues revistas es un grupo que contiene plega que es
denominada como revista debido a que puede tratarse de la portada de un libro o
documento que es plega, pero su interior es de hojas de papel, por lo que debe ser
separado manualmente como papel y plega; las botellas plásticas son de hecho
88
plástico seleccionado en un grupo diferente debido a que, como ya se mencionó
previamente en el documento, deben ser pasadas por un proceso manual de
separación de los líquidos que contiene, por lo que el hecho de que se equivoque
entre grupos de la misma necesidad lo convierte en un error aceptable para el
trabajo esperado.
Figura 44.
Imágenes tomadas de la prueba de clasificación en tiempo real.
89
aspectos que no se conocían, en primer lugar, el hecho de haber usado imágenes
de revistas que en realidad eran solo portadas tomadas de internet generó en las
pruebas que cuando en los objetos había variedad de colores y buena iluminación
se confundiera y clasificara como revista; también se presentó en el caso de las
pilas que si la toma era muy alejada las confundía con plástico o latas, esto debido
a que las imágenes tomadas para pilas fueron muy ideales y no tomando en cuenta
que a la hora de llevar la “IA” a la práctica todo se trabajaría desde un mismo ángulo
y distancia para todos los residuos; finalmente en el caso de las latas la red tiende
a confundirlas con revistas debido a lo ya descrito, también los confundía con
plástico debido a su forma cilíndrica o con Tetrapak debido a que algunas imágenes
de entrenamiento de Tetrapak eran revista con uno de estos recipientes como
portada; el principal problema en la clasificación errónea de esta clase es debido a
que hubo mucha similitud en los ángulos de las tomas de evidencia de latas para el
entrenamiento, tal y como se evidencia en el anexo 4, por lo que si no se empleaba
ángulos similares la red no las clasifica bien, tal y como se videncia en la figura 32,
que el ángulo y distancia en la que está la cámara es diferente al de las demás
clasificaciones, igual que en el caso de pilas que aunque el ángulo no es diferente,
la distancia si lo es, pues está más cerca de las pilas.
Tabla 5.
Tiempo de inference de los embebidos.
90
6. CONCLUSIONES
Se logró ejecutar la “IA” en tres embebidos diferentes, lo que nos permite concluir
que tiene la capacidad de ser utilizadas en prototipos más complejos como
maquinarias dispuestas para la separación de residuos de forma autónoma, esto a
la hora de llevar el trabajo realizado a un sistema funcional.
El mejor embebido para realizar trabajos de este tipo encontrado en este trabajo
es la Jetson Nano, pues sus tiempos de inference son muy bajos, así como su costo
en el mercado a comparación de la Dev Borad Coral; además, su ambiente es
similar a Linux, por lo que los mismos códigos ejecutados en un computador pueden
ser corridos en este embebido sin necesidad de cambios en su codificación, siempre
y cuando se tenga la capacidad computacional y las librerías.
91
Se evidencia la aplicación de las redes convolucionales para extraer
características y aprender a clasificar según las necesidades presentadas. Del
mismo modo, el hecho de haber utilizado transfer learning permitió optimizar el
tiempo de entrenamiento, así como el accuracy alcanzado.
92
7. RECOMENDACIONES
La creación del Dataset es lo más extenso del trabajo, por lo que es recomendable
desarrollar un método que permita crearlo de forma automático, o un proceso
manual de recolección que se desarrolle en un mismo ambiento, pues esto agiliza
la recolección de evidencia.
Para una aplicación futura se recomienda hacer transfer learning, usando como
arquitectura base la red desarrollada en este trabajo, debido al accuracy alcanzado
en ésta; y entrenar la red con un Dataset creado en el ambiente donde va a funcionar
la “IA”, con el fin de disminuir los errores en el trabajo en tiempo real, tal y como
ocurrió con esta red.
93
REFERENCIAS
Chen, B. (2021). 7 popular activation functions you should know in Deep Learning
and how to use them with Keras and TensorFlow 2.
https://towardsdatascience.com/7-popular-activation-functions-you-should-
know-in-deep-learning-and-how-to-use-them-with-keras-and-27b4d838dfe6
94
Comité de Reciclaje / Cámara de la Industria de Pulpa, Papel y Cartón ANDI. (2020).
Calidades de materiales para reciclaje.
http://www.andi.com.co/Uploads/CARTILLA%20DE%20CALIDADES%20DE
%20MATERIALES%20PARA%20RECICLAJE.pdf
Google LLC. (2020). Get started with the Dev Board. Coral.
https://Coral.ai/docs/dev-board/get-started/
95
Jupyter. (2022). Project Jupyter. https://jupyter.org/
NVIDIA Developer. (2020). Getting Started with Jetson Nano 2GB Developer Kit.
https://developer.Nvidia.com/embedded/learn/get-started-jetson-nano-2gb-
devkit#prepare
96
Pocho Costa. (2020). Transfer learning ¿qué es y para que sirve?
https://pochocosta.com/podcast/transfer-learning-que-es-y-para-que-sirve/
Rolnick, D., y Donti, P. L. (2019). Tackling Climate Change with Machine Learning.
Arxiv:1906.05433. https://arxiv.org/pdf/1906.05433.pdf
Ruiz, A. (2020). Caminar con éxito hacia la Industria 4.0: Capítulo 14 – Dispositivos
(I) Internet de las cosas (IoT). Tecnología para los negocios.
https://ticnegocios.camaravalencia.com/servicios/tendencias/caminar-con-
exito-hacia-la-industria-4-0-capitulo-14-dispositivos-i-internet-de-las-cosas-
iot/
97
scikit-learn developers. (s. f.). Confusion matrix. https://scikit-
learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html
Tan, M., y Le, Q. V. (2019). EfficientNet: Rethinking Model Scaling for Convolutional
Neural Networks. arXiv:1905.11946. [1905.11946v5] EfficientNet:
Rethinking Model Scaling for Convolutional Neural Networks (arxiv.org)
Tensorflow. (2022). TensorFlow Core | Machine Learning for Beginners and Experts.
https://www.tensorflow.org/overview
Yeung, T. (2022). What Is Edge AI and How Does It Work? NVIDIA Blog.
https://blogs.nvidia.com/blog/2022/02/17/what-is-edge-ai/
98
Yixing, F. (2020). Keras documentation: Image classification via fine-tuning with
Efficientnet. Keras.
https://keras.io/examples/vision/Image_classification_efficientnet_fine_tunin
g/
99
ANEXOS
100
Anexo B. Imágenes de entrenamiento para la clase cartón.
101
Anexo C. Imágenes de entrenamiento para la clase botellas plásticas.
102
Anexo D. Imágenes de entrenamiento para la clase latas.
103
Anexo E. Imágenes de entrenamiento para la clase orgánico.
104
Anexo F. Imágenes de entrenamiento para la clase papel.
105
Anexo G. imágenes de entrenamiento para la clase pilas.
106
Anexo H. Imágenes de entrenamiento para la clase plástico.
107
Anexo I. Imágenes de entrenamiento para la clase plega.
108
Anexo J. Imágenes de entrenamiento para la clase revistas.
109
Anexo K. Imágenes de entrenamiento para la clase tapitas.
110
Anexo L. Imágenes de entrenamiento para la clase Tetrapak.
111
112
Anexo M. Imágenes de entrenamiento para la clase vidrio.
113
Anexo N. Imágenes tomadas de la prueba de clasificación en tiempo real mal
clasificadas.
114
Anexo O. Estructura de la red parte 1.
115
Anexo P. Estructura de la red parte 2.
116
Anexo Q. Estructura de la red parte 3.
117
Anexo R. Estructura de la red parte 4.
118
Anexo S. Estructura de la red parte 5.
119
Anexo T. Estructura de la red parte 6.
120
Anexo U. Estructura de la red parte 7.
121
Anexo V. Estructura de la red parte 8.
122