T10373 - Clasificador de Residuos Sólidos Haciendo Uso de Deep Learning

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 122

CLASIFICADOR DE RESIDUOS SÓLIDOS HACIENDO USO DE DEEP

LEARNING.

JHONATAN DAVID GIRALDO QUIÑONES


2166552

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE


FACULTAD DE INGENIERÍA
DEPARTAMENTO DE AUTOMÁTICA Y ELECTRÓNICA
PROGRAMA INGENIERÍA MECATRÓNICA
SANTIAGO DE CALI
2022
CLASIFICADOR DE RESIDUOS SÓLIDOS HACIENDO USO DE DEEP
LEARNING.

JHONATAN DAVID GIRALDO QUIÑONES

Proyecto de grado para optar al título de


Ingeniero Mecatrónico

Director
JESÚS ALFONSO LÓPEZ SOTELO
Ingeniero Electricista
Magíster en automática
Doctor en ingeniería

UNIVERSIDAD AUTÓNOMA DE OCCIDENTE


FACULTAD DE INGENIERÍA
DEPARTAMENTO DE AUTOMÁTICA Y ELECTRÓNICA
PROGRAMA INGENIERÍA MECATRÓNICA
SANTIAGO DE CALI
2022
Nota de aceptación:

Aprobado por el Comité de Grado en


cumplimiento de los requisitos exigidos
por la Universidad Autónoma de
Occidente para optar al título de
Ingeniero Mecatrónico

JOSÉ LUIS PANIAGUA


Jurado

Santiago de Cali, 07 de julio de 2022

3
CONTENIDO

pág.

RESUMEN 13

ABSTRACT 14

INTRODUCCIÓN 15

1. PLANTEAMIENTO DEL PROBLEMA 17

2. OBJETIVOS 20

2.1 OBJETIVO GENERAL 20

2.2 OBJETIVOS ESPECÍFICOS 20

3. JUSTIFICACIÓN 21

4. MARCO DE REFERENCIA 22

4.1 MARCO TEÓRICO 22

4.1.1 Machine learning 22

4.2 TAREA (TASK “T”) 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.2.5 Detección de anomalías 24

4.2.6 Estimación de densidad 25

4
4.2.7 Denoising 25

4.3 MEDIDA DE DESEMPEÑO (PERFORMANCE MEASURE “P”) 25

4.3.1 Matriz de confusión 27

4.3.2 Accuracy 27

4.3.3 Recall o TPR (Tasa positiva real) 28

4.3.4 Precisión 28

4.3.5 Especificidad o TNR (Tasa negativa real) 28

4.3.6 F1-score 29

4.4 LA EXPERIENCIA “E” 29

4.4.1 Aprendizaje no supervisado 30

4.4.2 Aprendizaje supervisado 31

4.4.3 Deep learning 33

4.4.4 Redes neuronales convolucionales (cnn) 35

4.5 PARÁMETROS E HIPERPARÁMETROS 38

4.5.1 Número de épocas 39

4.5.2 Bach size 39

4.5.3 Tamaño y número de filtros (Kernel) 39

4.5.4 Padding 39

4.5.5 Stride 39

4.5.6 Funciones de activación 40

4.5.7 Funciones de perdida de clasificación 41

4.5.8 Optimizadores 42

4.5.9 Transfer learning 42

4.5.10 Desarrollo e implementación de redes neuronales 43

5
4.6 EDGE AI 46

4.7 SISTEMAS EMBEBIDOS 46

4.7.1 Efficientnet 48

4.8 MARCO CONTEXTUAL 53

4.9 PROYECTOS RELACIONADOS 54

5. DESARROLLO DEL PROYECTO 58

5.1 ETAPA DE DOCUMENTACIÓN 58

5.2 ETAPA DE IDEACIÓN 66

5.3 ETAPA DE PROTOTIPADO 68

5.4 ETAPA DE EVALUACIÓN 73

5.5 ETAPA DE DESARROLLO 77

5.6 RECOMENDACIONES EN LA IMPLEMENTACIÓN DEL MODELO EN LOS


SISTEMAS EMBEBIDOS 86

5.7 PRUEBA Y VALIDACIÓN 86

6. CONCLUSIONES 91

7. RECOMENDACIONES 93

REFERENCIAS 94

ANEXOS 100

6
LISTA DE FIGURAS

pág.

Figura 1. Criterios medida de desempeño 27

Figura 2. Tipos de aprendizaje 30

Figura 3. Aprendizaje no supervisado 31

Figura 4. Aprendizaje no supervisado 32

Figura 5. Ilustración de un modelo de Deep Learning 34

Figura 6. Ilustración del proceso de entrenamiento. 35

Figura 7. Ilustración del proceso de convolución. 36

Figura 8. Ilustración del proceso de pooling. 37

Figura 9. Ilustración de una red neuronal convolucional. 38

Figura 10. Escalado del modelo Efficientnet. 49

Figura 11. Estructura del modelo Efficientnet. 50

Figura 12. Sub-bloques del modelo Efficientnet. 50

Figura 13. Módulos del modelo Efficientnet. 51

Figura 14. Arquitectura del modelo EfficientnetB0. 52

Figura 15. Parámetros de las operaciones realizadas en el modelo


EfficientnetB0. 53

Figura 16. separador inteligente de basura. 55

Figura 17. Reciclador inteligente “Urvosev”. 56

Figura 18. Contenedores de reciclaje interactivos con ioT. 57

Figura 19. Etapas de la metodología utilizada. 58

Figura 20. Visita centro de reciclaje de la universidad Autónoma De Occidente.


59

7
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 64

Figura 24. NVIDIA Jetson Nano. 65

Figura 25. Dev Board Coral. 65

Figura 26. Raspberry Pi. 66

Figura 27. Estructura del código de CNN. 69

Figura 28. Código de CNN: Preprocesamiento de la entrada. 70

Figura 29. Código de CNN: Model Building. 72

Figura 30. Código de CNN: Método para variar los parámetros entrenables del
modelo”. 73

Figura 31. Accuracy del modelo. 76

Figura 32. Loss del modelo. 77

Figura 33. Código para convertir el modelo en tflite. 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. 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. 85

Figura 41. Matriz de confusión de entrenamiento. 87

8
Figura 42. Matriz de confusión de test. 87

Figura 43. Matriz de confusión de validación. 88

Figura 44. Imágenes tomadas de la prueba de clasificación en tiempo real. 89

9
LISTA DE TABLAS

pág.

Tabla 1. Categorías seleccionadas para la elaboración del Dataset con su


cantidad de imágenes 67

Tabla 2. Distribución final del Dataset. 74

Tabla 3. Entrenamiento del modelo según su función de perdida. 75

Tabla 4. Entrenamiento del modelo según sus capas entrenables. 75

Tabla 5. Tiempo de inference de los embebidos. 90

10
LISTA DE ANEXOS

pág.

Anexo A. Espacio de pruebas de la red. 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

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

11
Anexo V. Estructura de la red parte 8. 122

12
RESUMEN

El presente trabajo de grado pretende contribuir a la futura automatización de


procesos de separación de residuos con fines de reciclaje, buscando incrementar
estas labores en sitios donde ya se realizan e incentivar a que haya más lugares
dispuestos a hacerlo. El trabajo está encaminado a la clasificación de residuos
aprovechables, buscando generar grupos que faciliten las labores de separación
que realizan las personas actualmente, las cuales separan entre prensa, archivo,
cartón, plegadiza, vidrio, plástico, chatarra, entre otras.

Se desarrolló una red neuronal convolucional1 (CNN) haciendo uso de transfer


learning, la cual es capaz de clasificar entre 12 grupos de residuos como papel,
cartón, plegadiza, lata, plástico, botellas plásticas, revistas, entre otros; los cuales
son comúnmente encontrados en hogares o en sitios de bastante personal como
universidades. Estos grupos se escogieron de acuerdo a los que ya existen y
teniendo en cuenta opiniones recogidas en las entrevistas que se realizaron con
respecto a acondicionamientos del residuo o a dificultades notorias de su
diferenciación.

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.

La red se probó en 3 diferentes sistemas embebidos, los cuales fueron “Nvidia


Jetson Nano”, “Dev Board Coral” y “Rasberry pi”; en los cuales la red funcionó como
se esperaba, logrando clasificar todos los diferentes residuos que se seleccionaron
para que la red aprendiera. En estos embebidos se obtuvieron tiempos de
inferencia2 de entre 0.6 y 1.4 segundos.

Palabras clave: Deep Learning, Residuos Reciclables, Transfer learning,


Convolutional neural network (CNN).

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.

Keywords: Deep Learning, Recyclable Waste, Transfer learning, Convolutional


neural network (CNN).

3 4 It is a kind of deep neural network that is commonly used to analyze images.


4 The process by which the network makes predictions of the inputs presented to it.

14
INTRODUCCIÓN

Desde el principio de la humanidad el hombre ha desarrollado herramientas para la


transformación de objetos, sin embargo, a muchos de estos objetos se les acaba su
ciclo de vida, momento en el cual dejan de ser utilizados y se convierten en
desechos. Esta situación se incrementó exponencialmente en la actualidad, debido
a que se empezó a fabricar en masa productos para ser utilizados y posteriormente
desechados. Cabe recalcar que su reutilización no fue tomada en cuenta, puesto
que no se tenía una idea de la limitada capacidad del planeta para tratar con las
cantidades de residuos que genera la humanidad constantemente.

En la actualidad es muy importante considerar la crisis ambiental que atraviesa el


planeta debido a la gran contaminación producida por el hombre. La contaminación
creció exponencialmente después de la época de la industrialización, llevada a cabo
por la revolución industrial, donde se empieza a producir en masa gracias a la
mejora de los procesos de fabricación de objetos conducida por la llegada de
máquinas más eficientes. Con la finalidad de reducir estos daños y buscar superar
el problema de contaminación actual entran a jugar un papel importante los objetivos
de desarrollo sostenible, los cuales son un conjunto de objetivos globales dispuestos
con el fin de erradicar la pobreza, proteger el planeta y asegurar la prosperidad para
todos.

Dada la naturaleza del problema que es la generación de residuos, el reciclaje es


una estrategia que se apalanca en el objetivo de desarrollo sostenible número 12
(Programa de las Naciones Unidas para el Desarrollo, 2022), el cual en esencia
busca disminuir la huella de carbono de los productos fabricados por la industria, lo
cual se logra reutilizando, reciclando y reduciendo su uso.

Por esta razón el presente proyecto busca abrir un lineamiento encaminado a la


industrialización del reciclaje como respuesta a la cantidad masiva de basuras
generadas que podrían ser recicladas y no lo son. Por causa del desinterés de la
ciudadanía en el reciclaje, el proyecto busca apalancarse en mecanismos de
aprendizaje desarrollados actualmente como lo es la inteligencia artificial, para
convertirlas en herramientas capaces de agilizar procesos donde los sensores
tradicionales no tienen la capacidad de ejercer una labor adecuada, como lo es el
clasificar residuos a partir de imágenes. Este método puede ser implementado en
maquinarias que separan los residuos de forma automática gracias a que ya ha sido
probada en embebidos capaces de interactuar con los sistemas de software y
hardware de estas máquinas.

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.

En el 2017 se registraron 1700 toneladas diarias de residuos sólidos generados en


la ciudad de Cali, de los cuales se aprovecha sólo el 10% para reciclaje, según un
estudio citado por el DAGMA5 (Mina, 2017). Este dato nos muestra que para los
hogares caleños la cultura de reciclar y separar los elementos a la hora de depositar
los desechos no está adaptada en sus mentes todavía, esto genera que darles
tratamiento a los residuos sólidos se dificulte o sea imposible de realizar. Por otro
lado, en el 2018 según un estudio realizado por el Departamento Administrativo de
Planeación Municipal, cada mes se producían 56850 toneladas de residuos sólidos
en Cali, de los cuales se recicló el 19,44%. Cabe recalcar que el reciclaje que se
realiza en la ciudad de Cali, lo hacen diferentes empresas las cuales se sostienen
de esta economía circular, generando como producto final compost (Abono) y
energía renovable.

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.

Además de esto se puede apreciar que el “AI4ALL Programs (Programa de


Inteligencia artificial para todos)” grupo de investigación donde se realizan muchos
proyectos e investigaciones con ayuda de la inteligencia artificial, tiene varios
testimonios que relatan como la implementación de IA ha ayudado a darle un
significado investigativo a cada uno de los diferentes proyectos hechos por

5 Departamento Administrativo De Gestión Medio Ambiente

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.

La separación de residuos que se realiza actualmente es en su mayoría manual y


lo realizan empresas especializadas o con interés en el cuidado del medio ambiente.
El proceso del reciclaje a gran escala es desarrollado en algunos lugares del mundo
a través de grandes maquinarias que se encargan de separar residuos según su
densidad, volumen o composición. Cabe recalcar que el incursionar en la
industrialización del reciclaje para pequeñas empresas que se dedican a la
separación de residuos es complicado, debido a que para ingresar a este campo se
requiere de una fuente económica capaz de suplir las necesidades de la maquinaria
respectiva. Por lo mencionado nace la necesidad de desarrollar medios capaces de
realizar esta tarea a costos que puedan ser suplidos por pequeñas industrias y
hagan más óptimo su ejercicio.

El trabajo con algoritmos de inteligencia artificial ha permitido dar pequeñas


aproximaciones con el fin de optimizar este proceso, sin embargo, se limitan a
trabajar en la fuente. La fuente se refiere a los botes de basura públicos o de los
hogares, los cuales siguen las normativas básicas del reciclaje que encajan los
residuos sólidos como grupos generales fáciles de reconocer. Los grupos utilizados
son orgánicos, reciclables, peligrosos y los no aprovechables. Esto ayuda en el
proceso de separación, puesto que evita que se mezclen grupos de desechos con
el fin de que no se pierda la posibilidad de ser tratados, como en el caso de los
orgánicos y los reciclables.

A pesar del esfuerzo por mejorar la separación en la fuente, esto no influye


realmente en el proceso de optimizar las separaciones, pues igual llegan grupos de
residuos que deben ser separados en su totalidad por una persona encargada, en
el caso de la pequeña industria. Por esta razón se reconoce la necesidad de agilizar
el proceso y reducir costos de mano de obra mediante sistemas que abarquen
grupos más allá de los más conocidos como orgánico y reciclable, permitiendo así
que el personal humano de este sector industrial se especialice en la revisión y
adecuación de los desechos, más que en su separación.

En pro a los objetivos de desarrollo sostenible(ODS) adoptados el 25 de septiembre


del 2015 por algunos países, con la finalidad de tomar acción para favorecer a las
personas, el planeta y la prosperidad de ambos, se busca desarrollar una
inteligencia artificial aplicable a dispositivos buscando mejorar la separación de

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

¿Cómo diseñar sistema clasificador de residuos sólidos haciendo uso de IA


(inteligencia artificial) que contribuya a automatizar los procesos de reciclaje?

19
2. OBJETIVOS

2.1 OBJETIVO GENERAL

Desarrollar un clasificador de residuos sólidos haciendo uso de Deep Learning


implementando un prototipo del mismo en dispositivos embebidos que permitan
ejecutar modelos de IA.

2.2 OBJETIVOS ESPECÍFICOS

 Construir el Dataset de acuerdo al tipo de residuo sólidos que se desea clasificar.

 Seleccionar la arquitectura de red neuronal profunda para el clasificador a


implementar.

 Entrenar la red neuronal profunda para la clasificación de residuos sólidos de


acuerdo al Dataset construido y la arquitectura seleccionada.

 Validar el funcionamiento de la red neuronal implementada en al menos tres


dispositivos embebidos que permita ejecutar modelos de IA.

20
3. JUSTIFICACIÓN

De acuerdo a la información consultada y a la problemática descrita hemos dado a


conocer que la gran cantidad de residuos producidos en el país, sumados a la mala
separación de estos ha generado grandes afectaciones estructurales y
medioambientales principalmente a la construcción de nuevos rellenos, pues para
la construcción de éstos es necesaria la destrucción de amplias zonas con el fin de
adaptarlas. Adicionalmente, como ya se mencionó, estos rellenos se han ido
saturando cada vez más por la cantidad de residuos que le llegan, entre los cuales
muchos que podrían ser reciclados, pero se encuentran allí debido a la mala
deposición ciudadana, así como la inadecuada separación de los residuos. Hechos
causados ya sea por la inexistente separación de los residuos, o su ineficiente
proceso.

El desarrollo de este proyecto permitirá optimizar y automatizar la separación de los


residuos en lugares como el punto de origen, sitios de reciclaje, entre otros, por lo
que es un primer paso a mecanismos inteligentes que asistan esta tarea, haciendo
que no dependa de que se conozca la adecuada forma de separar los desechos en
sus contenedores, sino de que la deposición sea en cantidades controladas,
permitiendo así optimizar la calidad de separación que se hace tanto en los puntos
de recolección comunes, como en los lugares de reciclaje.

Finalmente, como efecto adicional podría encaminar a la población a incrementar


su participación en el proceso del reciclaje, pues con el proyecto realizado en su
totalidad, se podría acoplar su funcionamiento a maquinarias adaptativas a espacios
tales como los contenedores de basuras de los hogares o a maquinarias
industriales, dependiendo únicamente de un mecanismo capaz de asegurar que a
la red no lleguen grandes cantidades de desechos diferentes al tiempo, puesto que
con la salida dada por la red le sería muy simple adaptar la parte mecánica de
separación, abriendo así una brecha para incrementar las empresas que monetizan
a partir de estos procesos de separación, siendo esto materia de impacto positivo a
nivel medioambiental, pues el reciclaje ayuda a reducir la cantidad de residuos
enviados a vertederos e incineradoras, conserva los recursos naturales, reduce la
necesidad de recolectar nuevas materias primas, ahorra energía, reduce las
emisiones de gases de efecto invernadero, entre otros. Esto permite que sea cada
vez más posible el cumplimiento de las metas propuestas en los ODS.

21
4. MARCO DE REFERENCIA

4.1 MARCO TEÓRICO

4.1.1 Machine learning

El machine learning o aprendizaje autónomo es esencialmente una forma de


estadística aplicada con mayor énfasis en el uso de computadoras para estimar
estadísticamente funciones complicadas y un menor énfasis que demuestra los
intervalos de confianza alrededor de estas funciones (Goodfellow et al., 2016). Los
algoritmos de machine learning se pueden dividir entre la categoría de aprendizaje
supervisado y no supervisado; además, los componen un flujo de trabajo o serie de
pasos necesarios para desarrollar un algoritmo de machine learning.

Un algoritmo de machine learning es un algoritmo que tiene la capacidad de


aprender gracias a un cierto grupo de datos que recibe como información. Hablando
de aprendizaje, se refiere a que un programa que aprende a desarrollar una tarea
(Task) a través de la experiencia “E” y una medida de desempeño “P”. El machine
learning nos permite resolver problemas que son muy difíciles de solucionar con
programas fijos escritos, como los utilizados en procesos de automatización que
dan respuestas a medidas sensoriales.

4.2 TAREA (TASK “T”)

La tarea en machine learning es esencialmente el objetivo por el que se desarrolla


mi sistema. Por ejemplo, si queremos que un robot camine, caminar es la tarea que
va a realizar nuestro sistema. Las tareas en machine learning generalmente se
describen en términos de como el sistema de aprendizaje debe procesar las
experiencias. Hay una amplia variedad de tareas comúnmente solventadas por
machine learning, entre estas podemos encontrar clasificación, regresión,
transcripción, traducción, detección de anomalías, estimación de densidad,
Denoising, entre otras.

4.2.1 Clasificación

En este tipo de tarea se espera que el programa determine a que categoría


pertenece una cierta entrada, generando una salida discreta identificada por
codificación numérica, ante una entrada descrita. Hay otras variantes de la tarea de
clasificación, por ejemplo, donde la salida produce una distribución de probabilidad

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

Según Pedamkar (2022) hay 5 tipos de regresión:

Regresión lineal simple: Es una variable objetivo basada en variables


independientes.

Regresión polinómica: Transforma las características originales en


características polinómicas de un grado o variable determinada y luego le
aplica regresión lineal.

Regresión de vectores de apoyo: Identifica un hiperplano con el máximo


margen tal que el máximo número de puntos de datos esté dentro del
margen.

Regresión de árbol de decisión: Es un árbol que se construye partiendo los


datos en subconjuntos que contienen instancias con valores similares. Puede
ser utilizado para regresión y clasificación.

Regresión de bosque aleatorio: Es un enfoque de conjunto en el que se


tienen en cuenta las predicciones de varios árboles de decisión de regresión.

23
4.2.3 Transcripción

En este tipo de tarea, se le pide al sistema que observe una representación


relativamente desestructurada de algún tipo de dato y transcriba la información en
forma textual discreta. Un ejemplo de esto son los sistemas de reconocimiento, que,
a través de la Imagen de un texto, el algoritmo transcribe la información en el formato
esperado, tal y como los hace la aplicación del traductor de Google que toma una
foto del texto a traducir, y según el texto seleccionado de la Imagen, el algoritmo lo
transcribe para posteriormente ser traducido. Otro ejemplo de esto es el Google
StreetView que utiliza el Deep Learning para procesar los números de direcciones
de esta manera. Otro caso es el de reconocimiento de voz, donde el programa de
computadora recibe una forma de onda de audio y emite una secuencia de
caracteres o códigos de identificación de palabras que describen las palabras que
se dijeron en la grabación de audio.

4.2.4 Traducción

En una tarea de traducción automática, la entrada ya consta de una secuencia de


símbolos en algún idioma, y el programa de computadora debe convertir esto en
una secuencia de símbolos en otro idioma. Esto se aplica comúnmente a los
lenguajes naturales, como la traducción del inglés al francés. Actualmente el
desarrollo de este tipo de aplicaciones del lenguaje en algoritmos está en su máximo
esplendor debido a modelos como lo es “GPT3”, con el cual el programa es capaz
de hacer un increíble número de labores que incluso a una persona le costaría, tiene
la posibilidad de generar texto, seguir conversaciones, interpretar una solicitud y
llevarla a lenguaje de alto nivel, traduce, entre otras.

4.2.5 Detección de anomalías

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

En el problema de estimación de densidad, se le pide al algoritmo de aprendizaje


automático que aprenda un modelo de función, donde el modelo puede interpretarse
como una función de densidad de probabilidad o una función de masa de
probabilidad, en el espacio en el que se recogieron los datos. Para realizar una tarea
así el algoritmo necesita aprender la estructura de los datos que ha visto, debe saber
dónde se agrupan los ejemplos y dónde es poco probable que ocurran.

La estimación de densidad nos permite capturar explícitamente la distribución de


probabilidad descrita en las tareas mencionadas, y con los datos de esa distribución
realizar cálculos para resolver otras tareas que se le asocien a la información
recogida.

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.

4.3 MEDIDA DE DESEMPEÑO (PERFORMANCE MEASURE “P”)

Para evaluar la capacidad de desempeño de un algoritmo de aprendizaje, es


necesario diseñar una medida cuantitativa de su desempeño. Por lo general, esta
medida de rendimiento depende de la tarea para la cual está hecha el algoritmo, por
ejemplo, en los casos de clasificación o transcripción es comúnmente medida la
precisión o “accuracy” del modelo. Aunque la precisión es solo una proporción de
ejemplos correctamente desarrollados, también podemos extraer información
equivalente midiendo la tasa de error o “loss”, la cual es la tasa de ejemplos
incorrectamente resueltos por el algoritmo; en cuanto a su resultado se espera un 0
si ha sido correctamente resuelto o un 1 si es incorrecto.

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.

La elección de la medida de desempeño o métrica puede pensarse que es algo


simple; sin embargo, hay muchas variaciones de ésta que deben tenerse en cuenta
a la hora de escogerlo. Por ejemplo, un problema de transcripción que debemos
escoger como lo más importante, la precisión de la transcripción de una línea
completa, o será mejor usar un tipo de medida que evalúe el desempeño
parcialmente para así saber qué tanto de la oración completo lo hizo bien. Así, la
elección de una métrica adecuada se convierte en uno de los factores dominantes
si queremos que nuestro algoritmo llegue a dar resultados deseados.

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.1 Matriz de confusión

Es una tabla que describe el rendimiento de un modelo supervisado de Machine


Learning en los datos de prueba, donde se desconocen los verdaderos valores. Se
llama “matriz de confusión” porque hace que sea fácil detectar dónde el sistema
está confundiendo dos clases. El escenario ideal que se busca es que el modelo de
0 falsos positivos y 0 falsos negativos, en caso de que no se logre lo mejor es
minimizar los falsos negativos

4.3.2 Accuracy

Es el porcentaje total de elementos clasificados correctamente. Su forma de


calcularlo es:

𝑇𝑃 + 𝑇𝑁
𝐴𝐶𝐶 =
𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁

Lo cual es básicamente el total de predicciones correctas sobre el total de


predicciones realizadas. Sin embargo, puede ocasionar problemas si el dataset no

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.

4.3.3 Recall o TPR (Tasa positiva real)

Es el número de elementos identificados correctamente como positivos del total de


positivos verdaderos. Su forma de calcular es:

𝑇𝑃
𝑅𝑒𝑐𝑎𝑙𝑙 =
𝑇𝑃 + 𝐹𝑁

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

Es el número de elementos identificados correctamente como positivo del total de


elementos identificados como positivos. Su forma de calcular es:

𝑇𝑃
𝑃𝑟𝑒𝑠𝑖𝑐𝑖ó𝑛 =
𝑇𝑃 + 𝐹𝑃

Entonces, incluso si logramos capturar solo un caso como verdadero y lo


capturamos correctamente, entonces somos 100% precisos. si queremos
enfocarnos más en minimizar los falsos negativos, deseamos que nuestro recall sea
lo más cercano posible al 100% sin la precisión es muy mala y si queremos
enfocarnos en minimizar los falsos positivos, entonces nuestro enfoque debe
orientarse a hacer que la Precisión sea lo más cercana posible al 100%.

4.3.5 Especificidad o TNR (Tasa negativa real)

Es el número de ítems correctamente identificados como negativos fuera del total


de negativos. Su forma de calcular es:

28
𝑇𝑁
𝑇𝑁𝑅 =
𝑇𝑁 + 𝐹𝑃

La especificidad es exactamente lo opuesto a Recall.

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.

4.4 LA EXPERIENCIA “E”

Los algoritmos de machine learning se pueden clasificar entre supervisados y no


supervisados según el tipo de experiencia que se les permita tener durante el
proceso de aprendizaje o entrenamiento. Esta experiencia se relaciona
directamente con la manera en que se le permite al algoritmo experimentar con el
conjunto de datos de entrada, es decir con los ejemplos de base o el dataset.

29
Figura 2.
Tipos de aprendizaje

Nota. Tomada de “What is Supervised Learning?”, por P. Pedamkar, 2022.


EDUCBA. https://www.educba.com/what-is-supervised-learning/?source=leftnav.
Copyright, 2022.

4.4.1 Aprendizaje no supervisado

Los algoritmos de aprendizaje no supervisados son sometidos a un conjunto de


datos que contiene muchas características para que aprenden propiedades útiles
de la estructura de este conjunto de datos. En el contexto del Deep Learning,
generalmente buscamos aprender distribuciones de probabilidad completa
generados por un conjunto de datos, ya sea explícitamente, como en la estimación
de densidad, o implícitamente, para tareas como síntesis o eliminación de ruido.
Algunos otros algoritmos de aprendizaje no supervisados desempeñan funciones
como la agrupación (clustering), que consiste en dividir el conjunto de datos en
grupos de ejemplos similares basándose en las características que extrajo del
conjunto de datos (Goodfellow et al., 2016).

En términos generales, el aprendizaje no supervisado implica observar varios


ejemplos de un vector x aleatorio e intentar aprender implícita o explícitamente la
distribución de probabilidad, o algunas propiedades interesantes de esa
distribución.

30
Figura 3.
Aprendizaje no supervisado

Nota. Tomada de “Aprendizaje supervisado o no supervisado en 2 minutos”, por


ICHI.PRO. 2020. https://ichi.pro/es/aprendizaje-supervisado-o-no-supervisado-en-
2-minutos-126284139655746. Derechos de autor 2020-2022.

4.4.2 Aprendizaje supervisado

Este tipo de aprendizaje experimenta un conjunto de datos que contienen


características, pero cada dato está asociado con una etiqueta. Por ejemplo, el
IrisDataset está anotado con las especies de cada planta de iris. Un dataset anotado
es un proceso en el machine learning en el que se pueden identificar los datos en
bruto, como imágenes, archivos de texto, vídeos, etc., mediante una o más etiquetas
que sean significativas e informativas para que el modelo de aprendizaje pueda
aprender algo de él. En el aprendizaje automático y en el aprendizaje supervisado
el etiquetado es la parte importante del preprocesamiento de datos, de modo que
para la clasificación puede etiquetar la entrada y la salida proporcionando la base
de aprendizaje para el futuro procesamiento de datos. (Naik, 2021)

Un algoritmo entrenado con el IrisDataset puede aprender a clasificar entre tres


tipos diferentes de iris según sus mediciones. El aprendizaje supervisado implica la
observación de varios ejemplos de un vector aleatorio, para luego aprender a
predecir a partir de una medida de estimación.

Básicamente, el aprendizaje supervisado es una categoría de algoritmos de


aprendizaje automático que se basa en el conjunto de datos etiquetados. En esta
categoría de algoritmos se consigue un análisis predictivo en el que el resultado del

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

Nota. Tomada de “Aprendizaje supervisado o no supervisado en 2 minutos”, por


ICHI.PRO. 2020. https://ichi.pro/es/aprendizaje-supervisado-o-no-supervisado-en-
2-minutos-126284139655746. Derechos de autor 2020-2022.

En el caso del aprendizaje supervisado, el ejemplo contiene una etiqueta o un


objetivo, así como una colección de características. Por ejemplo, si queremos
utilizar un algoritmo de aprendizaje para realizar el reconocimiento de objetos a
partir de fotografías, debemos especificar qué objeto aparece en cada una de las
fotografías.

32
4.4.3 Deep learning

Actualmente, la inteligencia artificial ha sido campo de desarrollo como una amplia


gama de aplicaciones prácticas y temas de investigación; entre estos podemos
encontrar la automatización de trabajos repetitivos, entender y procesar el lenguaje
o imágenes, hacer diagnósticos médicos entre otros.

La inteligencia artificial permite que las computadoras aprendan de la experiencia,


tal y como ya se hizo mención con los aprendizajes supervisados y no supervisados.
Internamente entienden el mundo en términos de jerarquía de conceptos, esto
quiere decir que realizan una transferencia de conocimientos relacionando cada
concepto definido a través de su relación con conceptos más simples. Si se
desarrolla un gráfico de jerarquía de conceptos, este se construiría uno encima del
otro, generando un gráfico con muchas capas. Por esta razón, a esto se le llama
Deep Learning. (Goodfellow et al., 2016)

Los sistemas de inteligencia artificial necesitan ser capaces de adquirir su propio


conocimiento, extrayendo patrones de características de los datos sin procesar que
le son entregados para que aprenda, esta capacidad se le atribuye al Machine
learning. El rendimiento de estos algoritmos simples de aprendizaje automático,
depende en gran medida de la representación de los datos que se les proporciona.

Una de las mayores dificultades en la mayoría de aplicaciones de inteligencia


artificial en la vida real es la cantidad de factores que varían a la hora de trabajarlos
en un ambiente no controlado, lo que influye en cada dato que se puede observar.
Por ejemplo, los pixeles individuales en una Imagen de un automóvil rojo podrían
variar a negro en la noche, así mismo, la forma del mismo automóvil varía
dependiendo del ángulo desde el que se le vea. Las características mencionadas
pueden ser muy difíciles de extraerles datos, sin embargo, el Deep Learning
proporciona soluciones a este tipo de problemas, introduciendo representaciones
simplificadas que dan lugar a unas más complejas.

El Deep Learning permite a la computadora construir conceptos complejos a partir


de conceptos más simples. La figura 3 muestra como un sistema de Deep Learning
puede extraer características a partir de una Imagen de entrada, logrando
separarlas, identificarlas, para al finar llegar a una combinación de estas y así dar
una salida de la categoría a la que pertenece la Imagen de entrada.

33
Figura 5.
Ilustración de un modelo de Deep Learning

Nota. Tomada de “¿Qué es el Deep Learning?”, por SmartPanel, 2019.


https://www.smartpanel.com/que-es-deep-learning/. Derechos de autor.

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.

4.4.4 Redes neuronales convolucionales (cnn)

Las redes convolucionales o CNN, son un tipo especializado de red neuronal


diseñado para procesar datos que tiene una topología en forma de cuadrícula que
pueden ser de diferentes dimensiones como 1D O 2D. Las redes convolucionales
han tenido un enorme éxito en aplicaciones prácticas. Las redes convolucionales
son simplemente redes neuronales que utilizan la convolución en lugar de la
multiplicación matricial general en al menos una de sus capas.

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.

Una red neuronal convolucional (Convolutional Neural Networks) es un análogo de


la inteligencia artificial tradicional porque están formadas por neuronas que se auto
optimizan a través del aprendizaje. Las redes neuronales convolucionales tienen
dos componentes básicos que las definen y son grupos de neuronas especializados
en convolución y pooling.

Las capas convolucionales aprenden patrones locales en pequeñas ventanas de


dos dimensiones. El propósito principal de una capa convolucional es detectar
características o rasgos visuales en las imágenes como aristas, líneas, gotas de
color, etc. Otra característica importante es que las capas convolucionales pueden
aprender jerarquías espaciales de patrones preservando relaciones espaciales. Por
ejemplo, una primera capa convolucional puede aprender elementos básicos como
aristas, una segunda capa convolucional puede aprender patrones compuestos de
elementos básicos aprendidos en la capa anterior, así sucesivamente hasta ir
aprendiendo patrones muy complejos; lo que permite que las redes neuronales
convolucionales aprendan eficientemente conceptos visuales cada vez más
complejos y abstractos.

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.

Las redes neuronales convolucionales acompañan a la capa de convolución con


unas capas de pooling, que suelen ser aplicadas inmediatamente después de las
capas convolucionales. Las capas de pooling hacen una simplificación de la
información recogida por la capa convolucional y crean una versión condensada de
la información contenida en éstas. Para ver esto, vamos a presentar una ventana
de 2x2 de la capa convolucional y vamos a sintetizar la información en un punto en
la capa de pooling tal como se ve en la siguiente Imagen.

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.

Con la transformación de pooling mantenemos la relación espacial. Notándolo


visualmente apreciamos en la Imagen anterior como a partir de una matriz 12x12
donde está representado un “7”, al aplicar una operación de max-pooling con una
ventada de 2×2 obtenemos una matriz de 6×6 donde se mantiene una
representación equivalente del 7, lo que nos demuestra ilustrativamente el trabajo
del pooling al simplificar la información, manteniendo la relevancia de la entrada.

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.

4.5 PARÁMETROS E HIPERPARÁMETROS

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.

4.5.2 Bach size

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.3 Tamaño y número de filtros (Kernel)

El tamaño de la ventana (window_height × window_width) que mantiene información


de píxeles cercanos espacialmente es usualmente de 3×3 o 5×5. El número de
filtros que nos indica el número de características que queremos manejar
(output_depth) acostumbran a ser de 32 o 64.

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

indica el número de pasos en que se mueve la ventana de los filtros. Valores de


stride grandes hacen decrecer el tamaño de la información que se pasará la

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.

4.5.6 Funciones de activación

la función de activación es una "puerta" matemática entre la entrada que alimenta a


la neurona actual y su salida que va a la siguiente capa. Las funciones de activación
son el núcleo mismo del aprendizaje profundo. Determinan la salida de un modelo,
su precisión y eficiencia computacional. En algunos casos, las funciones de
activación tienen un efecto importante en la capacidad del modelo para converger y
la velocidad de convergencia (Chen, 2021). Las funciones de activación
comúnmente utilizadas son:

Sigmoid: La función es como se muestra en la ecuación 1.

1
𝑓(𝑥) = (1)
1 + 𝑒 −𝑥

La salida se encuentra en un rango entre 0 y 1. No está centrada en cero. La función


es derivable, esto significa que podemos encontrar la pendiente de la curva
sigmoidea en dos puntos cualquiera. La función sufre un problema de fuga de
gradiente, pues cuando las entradas se vuelven pequeñas o grandes la función se
satura en 0 o en 1. Cuando ocurre el back-propagation, las pequeñas derivadas se
multiplican juntas, a medida que nos propagamos a las capas iniciales, el gradiente
disminuye exponencialmente. (Pedamkar, 2021a)

Tangente Hiperbólica (Tanh): La función es como se muestra en la ecuación 2.

𝑒 𝑥 − 𝑒 −𝑥
tanh(𝑥) = (2)
𝑒 𝑥 + 𝑒 −𝑥

Es una curva en forma de “s” centrada en 0. Su rango está entre -1 y 1. Tiende a


hacer que la salida de cada capa esté más o menos centrada alrededor de 0, esto
a suele ayuda a acelerar la convergencia. También sufre de un problema de fuga
de gradiente, pues cuando las entradas se vuelven pequeñas o grandes la función
se satura en -1 o en 1.

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.

Softmax: Es una función matemática que convierte un vector de números en un


vector de probabilidades, donde las probabilidades de cada valor son
proporcionales a la escala relativa de cada valor en el vector. El uso más común de
la función softmax en el aprendizaje automático aplicado es su uso como función de
activación en un modelo de red neuronal. Específicamente, la red está configurada
para generar N valores, uno para cada clase en la tarea de clasificación, y la función
softmax se usa para normalizar las salidas, convirtiéndolas de valores de suma
ponderada en probabilidades que suman uno. (Brownlee, 2020)

4.5.7 Funciones de perdida de clasificación

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:

 Binary Cross-Entropy: Es una función de pérdida predeterminada para


problemas de clasificación binaria. La pérdida de entropía cruzada calcula el
rendimiento de un modelo de clasificación, que da como resultado un valor de
probabilidad entre 0 y 1. La pérdida de entropía cruzada aumenta a medida que el
valor de probabilidad pronosticado se desvía de la etiqueta real.

 Hinge Loss: Se puede usar como una alternativa a Cross-Entropy, que se


desarrolló inicialmente para usar con un algoritmo de máquina de vectores de
soporte. La función de perdida Hinge funciona mejor con el problema de
clasificación porque los valores objetivo están en el conjunto de {-1,1}. Permite
asignar más error cuando hay una diferencia de signo entre los valores reales y
predichos. Por lo tanto, resulta en un mejor rendimiento que la Cross-Entropy.

 Squared Hinge Loss: Una extensión de la función de perdida Hinge, que


simplemente calcula el cuadrado de la puntuación de pérdida de Hinge. Reduce la
función de error y hace que sea numéricamente más fácil trabajar con ella.
Encuentra el límite de clasificación que especifica el margen máximo entre los

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.

4.5.9 Transfer learning

Partiendo de lo ya mencionado en Deep Learning y yendo a un modelo de capas


convolucionales que haya sido creado con cierto propósito como lo es la
clasificación de animales entre 2 o más especies, la arquitectura que ya ha sido
entrenada a aprendido un patrón de características entre estos grupos de animales
y por ende ya ha recibido una inversión de tiempo y capacidad computacional para
llegar a este resultado; y si se necesita hacer algo parecido ya sea más complicado
o no, si se parte desde cero se requerirá reinvertir el tiempo y capacidad
computacional en una tarea que ya tenía un punto de partida. Iniciando desde este
punto de vista entra a jugar un papel importante en la evolución de la inteligencia
artificial el transfer learning. El transfer learning busca tomar un modelo pre
entrenado para entrenar otro, tomando el modelo pre entrenado como base, el cual
ya tiene unas capas entrenadas, dentro de las cuales las primeras son capaces de
reconocer formas simples como bordes, sombras, y las que le siguen que llegan a
reconocer aspectos como ojos u orejas. Entonces podemos usar ese aprendizaje
que ya tienen para clasificar otro tipo de imágenes parecidas donde nos pueda servir
también que sepa reconocer esos mismos patrones. Un ejemplo simple de esto
sería utilizar un modelo que clasificaba perros y caballos para que ahora clasifique
lobos y burros. Las características del nuevo propósito son parecidas a las del
modelo previamente entrenado, por lo que es posible partir de este último modelo y
así optimizar el desarrollo de la red para un nuevo designio.

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.

4.5.10 Desarrollo e implementación de redes neuronales

A la hora de desarrollar redes neuronales e implementarlas es necesario conocer


aspectos que van más allá de la teoría presentada anteriormente. Entre los aspectos
más importantes que hay que tener en cuenta a la hora de desarrollar una red
neuronal encontramos el entorno de trabajo y las librerías usadas.

El entorno de trabajo es el espacio en el que voy a desarrollar y entrenar mi red


neuronal. Los entornos interpretan el lenguaje con el que se está programando.
Dependen esencialmente de si se va a trabajar de manera local o no. Entre los más
comunes encontramos Jupyter, Google Colab, Docker, entre otros.

Jupyter: es un entorno de desarrollo extendido que saca partido de lenguajes de


programación como Python. Admite más de 40 lenguajes de programación. Se
destacan dos herramientas de su entorno, las cuales son jupyter lab y jupyter
notebook. Jupyter Notebook es la aplicación web original para crear y compartir
documentos computacionales. Jupyter lab es un entorno de desarrollo interactivo
basado en la web para cuadernos, código y datos. Su interfaz flexible permite a los
usuarios configurar y organizar flujos de trabajo en ciencia de datos, computación
científica, periodismo computacional y aprendizaje automático. Un diseño modular
invita a las extensiones para ampliar y enriquecer la funcionalidad. (Jupyter, 2022)

Google Colab: También conocido como "Colaboratory", es un entorno que te


permite programar y ejecutar Python en tu navegador. Entre sus principales ventajas
encontramos que no requiere configuración, es decir que ya tiene instalado librerías;
permite entrenar de forma gratuita en CPU, GPU o TPU, según se seleccione; el
contenido desarrollado se puede compartir fácilmente. (Google, 2021)

Docker: Es un proyecto de código abierto que automatiza el despliegue de


aplicaciones dentro de contenedores de software, proporcionando una capa
adicional de abstracción y automatización de virtualización de aplicaciones en
múltiples sistemas operativos. Docker utiliza características de aislamiento de
recursos del kernel Linux, tales como cgroups y espacios de nombres (namespaces)

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)

En el mundo de la inteligencia artificial y en la actualidad el lenguaje de


programación que se suele utilizar más es Python. Python es un lenguaje de
programación de alto nivel. Se trata de un lenguaje de programación
multiparadigma, ya que soporta parcialmente la orientación a objetos, programación
imperativa y, en menor medida, programación funcional (Wikipedia, 2022d). Las
librerías son una herramienta fundamental para consolidar la formación de todo
programador. Según Flores (2021), el profesor del curso de analítica predictiva y
modelos de regresión en Python David Zarruk dice que una librería de programación
es un conjunto de funciones que alguien escribió en alguna parte del mundo y lo ha
puesto a disponibilidad para que cualquiera pueda utilizarlo de forma gratuita.

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:

Matplotlib: Se especializa en el procesamiento y generación de gráficos de amplia


calidad. Además, te da la facilidad de publicar estos datos tanto de manera física,
bajo impresión, como también digitalmente. Utiliza trazados 2D y muchos tipos de
gráficos que se crean con pocas líneas de código. Algunos ejemplos son los
histogramas, diagramas de barras, espectros de potencia, series temporales,
diagramas de errores, etc.

Seaborn: Es una librería gráfica de Python especializada en la visualización de


datos estadísticos. Dentro de sus principales características, podemos destacar su
interfaz de alto nivel, la cual es atractiva y muy interactiva. Este aspecto resulta
fundamental cuando llega el momento de esclarecer los datos luego de un análisis,
pues hace que la visualización de los mismos sea más sencilla. Asimismo, es
compatible con otras librerías de Python como Pandas y Matplotlib.

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.

Pandas: Es una biblioteca de software escrita como extensión de Numpy para


manipulación y análisis de datos. En particular, ofrece estructuras de datos y
operaciones para manipular tablas numéricas y series temporales. (Wikipedia,
2022b)

Scikit-Learn: Esta librería de Python cuenta con algoritmos de Machine Learning y


análisis de datos. Es una herramienta muy fácil de usar gracias a sus múltiples
técnicas de aprendizaje automático. Puede utilizarse para resolver problemas de
clasificación y de regresión, tales como máquinas de vectores de soporte, árboles
de decisión, regresión lineal y polinómica, clustering, reducción de dimensionalidad,
etc.

OpenCV: Es una biblioteca de software de aprendizaje automático y visión artificial


de código abierto. Se inclina principalmente hacia aplicaciones de visión en tiempo
real. Se creó para proporcionar una infraestructura común para las aplicaciones de
visión por computadora y para acelerar el uso de la percepción de la máquina en
los productos comerciales.

Tensorflow: Es una plataforma de código abierto de extremo a extremo para el


aprendizaje automático. Facilita la creación de modelos de aprendizaje automático.
Las API de alto nivel de Tensorflow están basadas en el estándar de la API de Keras
para definir y entrenar redes neuronales. Keras permite crear prototipos
rápidamente, llevar a cabo investigaciones innovadoras y producir con API fáciles
de usar (Tensorflow, 2022). Con tensorflow, en el ámbito de aprendizaje automático,
se puede crear, ya sea manual o por transfer learning, un modelo de red neuronal
para que sea entrenado y probado. Adicionalmente permite implementar los
modelos que crean gracias a las APIs que guardan el modelo en archivos
comprimidos con formatos como “H5” o “TfLite”, siendo compatible con sistemas
embebidos.

Tensorflow Lite es un marco de aprendizaje profundo multiplataforma, listo para el


producto y de código abierto que convierte un modelo previamente entrenado en
Tensorflow en un formato especial que se puede optimizar para la velocidad o el
almacenamiento. El modelo de formato especial se puede implementar en
dispositivos perimetrales como móviles que usan Android o iOS o dispositivos

45
integrados basados en Linux como Raspberry Pi o microcontroladores para hacer
la inferencia en el perímetro. (Khandelwal, 2021)

4.6 EDGE AI

Es la implementación de aplicaciones de IA en dispositivos en todo el mundo físico.


Se llama "IA de borde" porque el cálculo de IA se realiza cerca del usuario en el
borde de la red, cerca de donde se encuentran los datos, en lugar de centralmente
en una instalación de computación en la nube o un centro de datos privado. Los
avances en la IA perimetral han abierto oportunidades para que las máquinas y los
dispositivos, donde quiera que estén, operen con la "inteligencia" de la cognición
humana. Las aplicaciones inteligentes habilitadas para IA aprenden a realizar tareas
similares en diferentes circunstancias, como en la vida real.

Según Yeung (2022) la eficiencia de implementar Edge AI surge gracias a 3


innovaciones recientes:

Maduración de las redes neuronales: Las redes neuronales y la infraestructura


de IA relacionada finalmente se han desarrollado hasta el punto de permitir el
aprendizaje automático generalizado. Las organizaciones están aprendiendo cómo
entrenar con éxito modelos de IA e implementarlos en producción en el perímetro.

Avances en la infraestructura informática: Se requiere una fuerte potencia


informática distribuida para ejecutar Edge AI. Los avances recientes en GPU
altamente paralelas se han adaptado para ejecutar redes neuronales.

Adopción de dispositivos IoT: La adopción generalizada del internet de las cosas


ha impulsado la explosión del big data. Con la repentina capacidad de recopilar
datos en todos los aspectos de una empresa, desde sensores industriales, cámaras
inteligentes, robots y más, ahora tenemos los datos y los dispositivos necesarios
para implementar modelos de Edge AI. Además, 5G está proporcionando un
impulso a IoT con una conectividad más rápida, estable y segura.

4.7 SISTEMAS EMBEBIDOS

Es un sistema de computación diseñado para realizar funciones específicas, y cuyos


componentes se encuentran integrados en una placa base “motherboard”. El
procesamiento central del sistema se lleva a cabo gracias a un microcontrolador, es

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)

Son diseñados generalmente para su utilización en tareas que impliquen una


computación en tiempo real, pero también destacan otros casos como son Arduino
y Raspberry Pi, cuyo fin está más orientado al diseño y desarrollo de aplicaciones y
prototipos con sistemas embebidos desde entornos gráficos. Su efectividad es tal
que podemos decir que hoy día cualquier decisión que esté basada en lo que
observa una persona es reproducible y en muchos casos mejorable por un sistema
embebido. (Ruiz, 2020)

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)

Todas estas necesidades han hecho que el aprendizaje automático en el dispositivo


sea atractivo tanto desde el punto de vista científico como comercial. Su iPhone
ahora ejecuta el reconocimiento facial y el reconocimiento de voz en el dispositivo.
Su teléfono Android puede ejecutar la traducción en el dispositivo. Su Apple Watch
utiliza el aprendizaje automático para detectar movimientos y patrones de ECG.
TinyML lleva la inteligencia artificial avanzada un paso más allá, lo que hace posible
ejecutar modelos de aprendizaje profundo en microcontroladores (MCU), que tienen
muchos más recursos limitados que las pequeñas computadoras que llevamos en
nuestros bolsillos y en nuestras muñecas.

Para llevar una red neuronal ya creada y entrenada a sistema embebido es


necesario que el embebido se le haya instalado su respectivo sistema operativo, el
cual suele estar a disposición en las páginas de los creadores del dispositivo,
quienes van actualizándolo conforme pasa el tiempo. Teniendo el sistema operativo
es necesario instalar las librerías utilizadas por el programa desarrollado para
ejecutar la red neuronal. Finalmente, es necesario tener en el dispositivo, en la
dirección descrita en el programa, los documentos utilizados para ejecutar la red,

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

Efficientnet es una arquitectura de red neuronal convolucional y un método de


escalado que escala uniformemente todas las dimensiones de profundidad, ancho
y resolución utilizando un coeficiente compuesto.

48
Figura 10.
Escalado del modelo Efficientnet.

Nota. Tomada de “EfficientNet: Rethinking Model Scaling for Convolutional Neural


Networks”, por Tan, M., y Le, Q. V. (2019). arXiv:1905.11946. [1905.11946v5]
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
(arxiv.org). Copyright 2020.

A diferencia de las prácticas convencionales que escalan arbitrariamente esos


factores, el método utilizado por este modelo escala uniformemente los factores de
profundidad, ancho y resolución con un conjunto de coeficientes de escala fijos. El
método de escalado compuesto se justifica por la intuición de que, si la Imagen de
entrada es más grande, entonces la red necesita más capas para aumentar el
campo receptivo y más canales para capturar patrones más finos en la Imagen más
grande. La red básica Efficientnet-B0 se basa en los bloques residuales de cuello
de botella invertidos de MobileNetV2, además de los bloques de compresión y
excitación.

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.

Nota. Tomada de “Complete Architectural Details of all EfficientNet Models”, por


Agarwal, V., 2021. https://towardsdatascience.com/complete-architectural-details-
of-all-efficientnet-models-5fd5b736142. Derechos de autor.

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.

Nota. Tomada de “Complete Architectural Details of all EfficientNet Models”, por


Agarwal, V., 2021. https://towardsdatascience.com/complete-architectural-details-
of-all-efficientnet-models-5fd5b736142. Derechos de autor.

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.

Nota. Tomada de “Complete Architectural Details of all EfficientNet Models”, por


Agarwal, V., 2021. https://towardsdatascience.com/complete-architectural-details-
of-all-efficientnet-models-5fd5b736142. Derechos de autor.

Cada módulo cumple una tarea dentro de la estructura de sub-bloques, esta tarea
se describe a continuación

 Módulo 1: se utiliza como punto de partida para los sub-bloques.

 Módulo 2: se utiliza como punto de partida para el primer sub-bloque de los 7


bloques principales, excepto el primero.

 Módulo 3: está conectado como una conexión de salto a todos los sub-bloques.

 Módulo 4: se utiliza para combinar la conexión de salto en los primeros sub-


bloques.

 Módulo 5: cada sub-bloque está conectado a su sub-bloque anterior en una


conexión de salto y se combinan usando este módulo.

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.

Nota. Tomada de “Complete Architectural Details of all EfficientNet Models”, por


Agarwal, V., 2021. https://towardsdatascience.com/complete-architectural-details-
of-all-efficientnet-models-5fd5b736142. Derechos de autor.

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.

Nota. Tomada de “Complete Architectural Details of all EfficientNet Models”, por


Agarwal, V., 2021. https://towardsdatascience.com/complete-architectural-details-
of-all-efficientnet-models-5fd5b736142. Derechos de autor.

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.

4.8 MARCO CONTEXTUAL

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.

Con este nuevo código de colores se espera incrementar el índice de separación en


la fuente y que esto se refleje en el cumplimiento de las metas ambientales del país,
no solo en materia de gestión integral de residuos sólidos sino además en metas
como la reducción del 51 % de las emisiones de carbono al 2030 (COLOMBIA,
MINISTERIO DE AMBIENTE Y DESARROLLO SOSTENIBLE, 2020). El proyecto
se basa en el campo de los residuos aprovechables, los cuales se dividen en más
categorías, las cuales dependen del comprador que trata cada tipo de producto.

4.9 PROYECTOS RELACIONADOS

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.

Nota. Tomada de “Estudiantes crearon separador inteligente de basura”, por


UNIVERSO. Sistema de noticias de la UV, 2018.
https://www.uv.mx/prensa/general/estudiantes-crearon-separador-inteligente-de-
basura/. Copyright 2022.

Los estudiantes de la Escuela de Educación Secundaria Técnica (EEST) N°4 en El


Palomar, en la localidad argentina de Morón Francisco Seita, Tomás Volpe,
Sebastián Venturino, Iván Ursul y Juan Pablo Velasco, desarrollaron un separador
se residuos inteligentes al que llamaron Urvosev (Unidad de Reconocimiento por
Verificación Óptica y Separador de Entidades Versátil), el cual identifica la basura
mediante la toma de una fotografía que posteriormente es analizada por una
computadora que cuenta con un programa de inteligencia artificial. El proyecto fue
realizado en gran medida con materiales reciclados, y los estuantes esperan que en
un futuro puedan mejorarlo e implementarlo en aeropuertos y otros establecimientos
públicos.

55
Figura 17.
Reciclador inteligente “Urvosev”.

Nota. Tomada de “Estudiantes argentinos, destacados por crear un separador de


residuos inteligente”, por Jaimovich, D., 2018. Infobae.
https://www.infobae.com/tecno/2018/06/11/estudiantes-argentinos-destacados-
por-crear-un-separador-de-residuos-inteligente/. Copyright 2021.

Los estudiantes de la Universidad Autónoma de occidente Daniel Delgado


Rodríguez y Juan Fernando Guerrero Figueroa desarrollaron unos contenedores
interactivos con “ioT”, los cuales, a través de una caja seleccionadora en la que se
dispone el desecho, se selecciona a que categoría pertenece lo que habilita el
contenedor respectivo, lo que evita las deposiciones de residuos en la fuente
producidas por personas que desconocen o no dan la importancia que merece la
separación de desechos.

56
Figura 18.
Contenedores de reciclaje interactivos con ioT.

Nota. Tomada de “Contenedores de reciclaje interactivo con IoT”, por Delgado


Rodríguez, D., & Guerrero Figueroa, J. F., 2020.
https://red.uao.edu.co/bitstream/handle/10614/12344/T09205.pdf?sequence=5&is
Allowed=y.%20Red%20UAO. Derechos de autor 2020.

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.

En el proyecto, la primera etapa de documentación se hacen consultas, entrevistas,


visitas y recolección de evidencia fotográfica para el Dataset, con el fin de
determinar las bases del proyecto a desarrollar. Seguido a este en la etapa de
ideación, se propuso diferentes categorías para el Dataset, partiendo principalmente
de la información recolectada en las visitas y entrevistas, también se propuso
arquitecturas de red neuronal y los embebidos a usar. En la etapa de evaluación se
reestructuraron factores principalmente del Dataset. Finalmente, en la etapa de
desarrollo se realiza la construcción del modelo, su evaluación y validación en los
respectivos embebidos.

5.1 ETAPA DE DOCUMENTACIÓN

Para el acercamiento a las necesidades del ambiente de reciclaje en el que se


enfoca el proyecto se realizaron 2 visitas a centros de reciclaje. Uno de los lugares
es especializado en polietileno de baja densidad y el otro, que fue el de mayor

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.

Las categorías principales que se separaban en la universidad Autónoma de


Occidente son:

 La plegadiza (plega)

 El cartón

 La basura (lo que no es aprovechable)

 La prensa

 El archivo

59
 Los residuos de cables de internet y similares

 El papel Kraft

 El polyboard

 Los CDs

 Las bolsas plásticas

 Las tapas plásticas

 Las botellas de vidrio

 La chatarra.

La plegadiza o plega son un amplio grupo de materiales reciclables, consta


principalmente de cajas plegables, sin embargo, también pueden ser recortes con
o sin impresión, donde el material con que fueron fabricadas tenga por lo menos
una cara blanca. También pueden ser pedazos con o sin impresión, producto de
desperdicio industrial en material Kraft plegable y chip, conos para hilos, tubos de
material gris, micro corrugado y plegadiza de recolección callejera y sin
recubrimiento plástico. En la plegadiza también se encuentran los pedazos de alto
calibre, producto de desperdicio industrial a base de pasta mecánica con alma beige
y recubrimiento plastificado. Finalmente, en la plega también encontramos los
retales de medicamentos, perfumes con una cara plastificada, afiches, etc. (Comité
de Reciclaje / Cámara de la Industria de Pulpa, Papel y Cartón ANDI, 2020)

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.

Adicionalmente, gracias a la visita al centro especializado se pudo conocer que el


esfuerzo extra de tratar previamente los residuos antes de su entrega al comprador
es debido al proceso que llevan estos residuos para que puedan ser reutilizados.
En el caso del polietileno de baja densidad, debe ser limpiado de impurezas antes
de ser pasado por la maquinaria que lo vuelve a dejar en su forma final de venta al
mercado, esto debido a que el hecho de que se mezcle con algún otro tipo de
polímero dañaría el producto final, adicionando a esto las pérdidas generadas como
empresa debido al bajo costo al que se venden productos diferentes. En el caso del
sitio especializado en polietileno de baja densidad, el cual está ubicado en las
cercanías de Comfandi el prado de la ciudad de Cali, también se suelen procesar
otros plásticos y se venden a las personas que fabrican ladrillos plásticos o estivas
plásticas, sin embargo, según expreso el dueño del lugar, su precio de venta es muy
bajo por lo que sumado al gasto energético no deja ganancias.

61
Figura 21.
Maquinaria utilizada en el procesamiento el polietileno de baja densidad para su
reutilización.

Siguiendo con las pautas previamente seleccionadas en la metodología se dispuso


a realizar la recolección de evidencia del Dataset, para la cual se desarrolló
inicialmente un banco de imágenes de alrededor de 2000 fotografías tomadas
personalmente de residuos comúnmente encontrados en los hogares, algunas de
las cuales se presentan en la figura 22, adicionalmente se descargaron imagines de
internet basándose en las categorías de mayor relevancia de entre las que se
conocieron en el centro de reciclaje de la Universidad Autónoma de Occidente,
logrando finalmente un banco de imágenes de aproximadamente 4000 fotografías.

62
Figura 22.
Imágenes tomadas para la elaboración del Dataset

Siguiendo con los lineamientos de la metodología, para entrar a conocer los


diferentes modelos de arquitectura de red neuronal convolucional que podrían ser
utilizados, se identificaron las arquitecturas que habían alcanzado los mejores
resultados en el concurso de clasificación de Imagenet, el cual es una base de datos
de imágenes organizada según la jerarquía de WordNet (actualmente solo los
sustantivos), en la que cada nodo de la jerarquía está representado por cientos y
miles de imágenes. De esta gran base de datos, con más de 100 categorías, es con
la que se han medido los mejores resultados de las arquitecturas de red, y han sido
representadas a través de los años en la siguiente gráfica.

63
Figura 23.
Top 1 de clasificación de imágenes con Imagenet

Nota. Tomada de “Image Classification on ImageNet”, por Paperswithcode, 2021.


https://paperswithcode.com/sota/Image-classification-on-Imagenet. Derechos de
autor.

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:

NVIDIA Jetson Nano: es un pequeño ordenador, de gran alcance que le permite


ejecutar múltiples redes neuronales en paralelo para aplicaciones como la
clasificación de imágenes, detección de objetos, segmentación y procesamiento del
habla. Todo en una plataforma fácil de usar que funciona con tan solo 5 vatios.
(NVIDIA Developer, 2021)

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.

Nota. Tomada de “Dev Board”, por Coral, 2020. https://coral.ai/products/dev-board/.


Copyright 2020.

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.

Nota. Tomada de “Raspberry Pi”, por Wikipedia, 2021.


https://es.wikipedia.org/wiki/Raspberry_Pi. Dominio público.

5.2 ETAPA DE IDEACIÓN

Para la selección de las categorías que va a contener el proyecto se partió de las


13 categorías con las que contaba el centro de reciclaje de la universidad Autónoma
de Occidente, de las cuales se seleccionaron las más comunes y se tuvo en cuenta
las categorías que debían ser tratadas antes de su deposición final, de lo cual se
dio a lugar una lista de 14 categorías. Las categorías seleccionadas para que la red
aprenda son:

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

Como añadido encontramos las pilas las cuales se separaban en el centro de


reciclaje de la universidad, aunque no era de sus categorías principales. También
encontramos el Tetrapak como un grupo característico y repetitivo de la basura que,
aunque no es muy reciclado en Colombia en otros países sí. Las revistas albergan
una mezcla entre plegadiza, archivo y prensa, esto debido a la similitud y a que
estos grupos la gran mayoría de las ocasiones vienen mezclados entre sí. Las
botellas plásticas se encuentran como grupo separado del plástico debido a que
deben ser tratadas previo a la deposición final. Finalmente, los sobres; debido a que
algunos de estos vienen con mezclas de plástico que deben ser quitadas antes de
agregarlos al archivo.

Para la selección de la arquitectura de red se basó principalmente en los resultados


obtenidos por cada modelo según la tabla de resultados de Imagenet, además de
esto se evaluó la fácil accesibilidad al código, así como la comprensión de lo que
hace el código y la arquitectura de la red. Por este conglomerado de criterios se
optó por emplear el modelo de Efficientnet, particularmente el EfficientnetB0, debido
a que la aplicabilidad del proyecto no requería mucha resolución, por lo que con el
fin de reducir la carga computacional se implementó este modelo. El modelo
desarrollado se presenta del anexo 15 en adelante, en este se puede evidenciar la

67
estructura que toman los modelos EfficientNet con relación a lo descrito en el marco
teórico.

5.3 ETAPA DE PROTOTIPADO

Para la adaptación del Dataset a la arquitectura se escogió una distribución para el


aprendizaje de 50/30/20, de la cual el 50% de los datos serán para entrenamiento,
el 30% serán utilizados para validación, y el 20% serán utilizados para testeo. Cabe
recalcar que hay una gran variabilidad de los datos entre cada categoría, tal y como
se pudo evidenciar en la tabla mostrada previamente donde algunas categorías
tienen alrededor de 450 imágenes mientras que en otras hay alrededor de 150
imágenes. Es una amplia brecha que hace mayor presencia a la hora de realizar
una distribución aleatoria, pues no se logra una distribución uniforme, generando
problemas en el entrenamiento. Por esta razón la distribución se realizó
manualmente, de tal manera que fuera exacta la separación 50/30/20 para cada
categoría que tiene la red, pues al hacerlo mediante codificación algunas categorías
no hacían suficiente presencia en la distribución de entrenamiento por lo que la red
no las aprendía a clasificar.

Para la creación del código se basó en el ejemplo de Efficientnet desarrollado por


Yixing Fu (2020) y disponible en Keras como Image classification via fine-tuning with
Efficientnet, dentro del cual nos presentaban la forma de importarlo al script de
trabajo y la forma de configurar el modelo según lo que se deseaba. Teniendo en
cuenta esto se procedió a desarrollar el código, por el cual el modelo fue generado
y entrenado en la herramienta de Google denominada Google Colab.

68
Figura 27.
Estructura del código de CNN.

En primer lugar, siguiendo con la estructura mostrada previamente, se cargó el


Dataset a partir de las rutas de las carpetas que contienen las imágenes, para que
el programa pudiera acceder a estas y utilizarlas en los procesos que se deberán
realizar posteriormente. Seguido a la carga del Dataset, se implementó un data
generator, el cual se encargó de aleatorizar las imágenes de cada carpeta de
categoría separándolas por lotes, buscando así agilizar el proceso de
entrenamiento. El data generator también se encargó de cambiar el tamaño de las
imágenes para que fueran compatibles con las medidas empleadas en la estructura
EfficientnetB0 las cuales son imágenes de 224x224. Como el data generator
implementado entrega una salida única numérica mostrando un número del 0 al
número de clases totales que hay, se presenta una incompatibilidad con la salida
del modelo que es una capa softmax. Para darle solución a esta incompatibilidad se
implementó un one hot encoding, el cual permite transformar el número que venía
previamente dado en un arreglo de ceros con un 1 en la posición correspondiente
al número dado inicialmente, lo que coincide con la clase a que pertenece la Imagen
clasificada.

Luego se procedió a definir un método con el cual a la hora de construir el modelo


se le aplicaría fully-connected layer. El fully-connected layer es una técnica que se
utiliza para aumentar la cantidad de datos agregando copias ligeramente

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.

Habiendo termino de agregar las capas al modelo se define la capa de salida


agregando una capa densa que se conecta con el dropout y tiene un numero de
neuronas acorde al número de clases, que para este caso serian 12, y una función
de activación softmax, la cual hace que los elementos de la capa estén en un rango
de 0 a 1 para que el resultado sea interpretado como una distribución de
probabilidad. Finalmente se compila el modelo uniendo la entrada con las capas del
modelo y la salida; determinando un optimizador tipo Adam, el cual es un método
de descenso del gradiente estocástico que se basa en la estimación adaptativa de
momentos de primer y segundo orden, se utiliza porque es computacionalmente
eficiente, tiene pocos requisitos de memoria, invariante al reajuste diagonal de
gradientes y es muy adecuado para problemas que son grandes en términos de
datos/parámetros.

Se utilizo la función de perdida “binary_crossentropy” debido a que es la más


eficiente en problemas en que haya mucha variabilidad en los datos de entrada,
como es el caso del proyecto, debido a que la cantidad de datos por cada clase
oscila entre las 150 y 600 imágenes. Se implemento la métrica de “accuracy” porque
es la mejor métrica en cuanto a problemas de clasificación se refiere,
adicionalmente, la lectura constante del loss nos permite saber que tan bien está
aprendiendo la red, de la misma forma en que nos alerta de la presencia de
overfitting. Al llamar al método “build_model” dando como entrada el número de
clases se construye el modelo deseado.

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

5.4 ETAPA DE EVALUACIÓN

Debido a problemas presentados con la red neuronal a la hora de pasarle nuevas


imagines, se tomó la decisión de eliminar la categoría de sobres del Dataset porque
su similitud con las categorías de papel y revistas estaba haciendo que la red no lo
diferenciara y sobre aprendiera los datos de entrenamiento. Igualmente se vio la
necesidad de readecuar el banco de imágenes, pues algunas diferían en los rasgos
que debería buscar similitud para entrenar modelos con cierto grado de complejidad
como lo es este proyecto. No se entrenó el modelo para que aprendiera en
específico que es cada residuo y luego según eso se clasificaba, sino que se
entrenó por clases con un aplico número de residuos que eran diferentes entre sí,
pero que pertenecen a la misma clase, así como la presencia de residuos similares
que pertenecen a clases diferentes, razón por la cual el hecho de obtener resultados
superiores al 85% en imágenes nunca antes vistas es un resultado muy
satisfactorio.

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.

CLASS TRAIN TEST VAL TOTAL


Botella
136 77 50 263
Plástica
Cartón 158 98 64 320
Latas 196 118 78 392
Orgánico 146 88 58 292
Papel 107 64 41 212
Pilas 115 66 42 223
Plástico 140 88 61 289
Plega 256 150 102 508
Revistas 263 158 106 527
Tapitas 76 46 29 151
Tetrapak 98 60 40 198
Vidrio 216 130 87 433
TOTAL 1907 1143 758 3808
Distribución
50% 30% 20% 100%
%

Con los cambios realizados al Dataset, se concluyó el proyecto con un banco de


3808 imágenes, con las cuales se espera que la red aprenda de mejor manera las
características de cada clase, deseando que haya precisión por parte de la red con
residuos que nunca antes haya visto, permitiendo así que el aprendizaje de
características sea más óptimo.

Habiendo concluido la adecuación del Dataset , se hayó un conjunto de funciones


de perdida, las cuales son el método utilizado para evaluar que tan bien la red está
aprendiendo, arrojando valores altos ante predicciones muy desviadas del resultado
real. Según la documentación encontrada en tensorflow y trabajos a fines, se
tomaron las funciones que más se sulen utilizar para aplicaciones de clasificación y
se evaluaron bajo los mismos parametros con el fin de evaluar cual de estas le
aporta un mejor resultado al trabajo.

74
Tabla 3.
Entrenamiento del modelo según su función de perdida.

Entrenamiento de la red a 25 épocas


loss Funtion Train ACC Train Loss Test ACC Test Loss
categorical_crossentropy 95.55% 0.1528 85.12% 0.7076
categorical_hinge 92.77% 0.1556 85.12% 0.3137
binary_crossentropy 94.43% 0.0368 86.33% 0.0744

De los resultados encontrados de la evaluación se concluyó experimentalmente que


la función de perdida que aportaba el mejor crecimiento y menor desviación de los
datos es la binary_crossentropy, la cual por gran diferencia dio con los menores
datos de perdida, valor que se refleja principalmente en las imágenes que la red
nunca ha visto, siendo esto un demostrativo visual de que la red ha podido aprender
características importantes que le permite llegar a un veredicto entre los objetos
aprendidos. Adicionalmente, se evaluó la variabilidad en los resultados ante
variaciones entre las capas que se entrenan del modelo que ya ha sido creado,
habiendo sido notorio, en el primer enteramiento realizado con pocas capaz
entrenables, que era necesario entrenar un buen número de capaz, pues los pesos
de base con los que se entrenó el modelo reconocen una amplia cantidad de clases
que no se parecen en si al trabajo destinado en este proyecto; sin embargo, contaba
con una gran capacidad de extracción de características dada por el número de
clases que originalmente separan los pesos de “Imagenet”.

Tabla 4.
Entrenamiento del modelo según sus capas entrenables.

Entrenamiento de la red a 30 épocas

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

El modelo se entrenó un total de 30 épocas, y se percibió que gracias a tener más


más parámetros entrenables la red aprendía mejor y más rápido a clasificar las
nuevas categorías para las que estaba siendo empleado iniciando con valores de
accuracy del 23% en entrenamiento y del 46% en validación; llegando a tener un

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.

De la función de pérdida del modelo se obtuvieron resultados muy satisfactorios,


pues la función “Loss” se utiliza para evaluar qué tan bien un algoritmo específico
modela los datos dados. Si las predicciones se desvían demasiado de los resultados
reales, la función de pérdida arrojaría un número muy grande, y por el contrario se
alcanzaron valores de pérdida de 0.02 para los datos de entrenamiento, y de 0.07
para los datos de validación. Adicionalmente cabe resaltar que 30 épocas fueron
suficientes, pues al incrementar demasiado el valor de las épocas entrenadas, no
solo se aumentaba la carga computacional del a la hora de entrenar la red, sino que
también se producía overfitting.

5.5 ETAPA DE DESARROLLO

La etapa de desarrollo consiste principalmente en llevar la red entrenada y evaluada


a un prototipo realizado. Siguiendo con los objetivos planteados el paso a seguir es
probar la red en los 3 embebidos planteados. Para este proyecto se seleccionaron
“Rasberry pi”, “Jetson Nano” y “Dev Board Coral”.

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.

Para ejecutar el modelo en los embebidos seleccionados se creó el código que se


muestra a continuación, el cual básicamente importa las librerías de tensorflow,
numpy, opencv y time; define el tamaño de las imágenes que lee la red, el número
de clases y las clases; se carga el modelo usando “tf.lite.interpreter” como lo indica
tensorflow y se llama “allocate_tensor” lo que hace que el modelo lite quede listo
para realizar inference, cabe recalcar que se debe hacer después de haber hecho
cambios en los tensores de entrada o salida, los cuales se cambian principalmente
cuando se va a realizar inference de varias imágenes al tiempo, en el caso del
proyecto es Imagen a Imagen por lo que no se cambia nada.

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

Como pautas a recalcar o recomendaciones a mencioner basados en el trabajo


realizado, en la jetson es mejor importar primero la librería de opencv porque al
hacerlo despues generaba problemas al ejecutar el código. Adicionalmente
recomiendo instalar las librerias gerarquicamente, en este caso se instaló primero
tensorflow, al ser tan amplia, en el mismo proceso se instalan otras librerías
necesarias. Para instalar el sistema operativo de la Jetson Nano se nos presenta
una guia por parte de Nvidia disponible en su página
https://developer.Nvidia.com/embedded/learn/get-started-jetson-nano-2gb-
devkit#prepare.

En el caso de la Dev Board es necesario tener un computador que cumpla la función


de host, en el cual se necesitará instalar un software llamado mendel, el cual es el
que te permite interactuar entre la Dev Board y el computador para la transferencia
de archivos e instalaciones en las que vas a descargar archivos en tu computador
host y los vas a descomprimir en la Dev Board, asi como el comando para acceder
a la Dev Board y ejecutar código en ella; este proceso esta muy bien descrito en la
página de Coral https://Coral.ai/docs/dev-board/get-started/#other-windows-
requirements donde se explica como instalar el sistema operativo, y como instalar
mendel; adicionalmente, la página remite a más links con ejemplos de
reentrenamiento, conección con la cámara y demás necesidades.

5.7 PRUEBA Y VALIDACIÓN

La prueba y validación del proyecto se realizaron en dos etapas, la primera consiste


en validar el modelo en el mismo ambiente de entramiento, por lo que se realizaron
matrices de confusión para las imágenes de train, test y validación; la segunda
consiste en probar la red en tiempo real con imágenes que no había visto en un
espacio desarrollado para tomar pruebas de clasificación de residuos, el cual se
muestra en el anexo 1.

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.

De la matriz de confusión de las imágenes de train podemos evidenciar que la red


pudo aprender casi en su totalidad las imágenes con las que fue entrenada, siendo
papel la única clase con un porcentaje de precisión menor al 97%, el cual fue del
89%. De las imágenes de test y validación podemos encontrar las tendencias a error
que tiene la red, pues son un grupo de imágenes que la red nunca vio mientras se
entrenada, por lo que son las que de verdad nos sirven para llegar a un estimado
de cuan buena es la “IA” para una aplicación real. De estas matrices de confusión
encontramos que, en promedio, el accuracy de los datos de test es del 98%, y el de
los datos de evaluación es del 82%, por lo que inmediatamente podemos llegar a la
conclusión de que la red cumple con lo esperado, pues alcanza un accuracy
superior al 80% para los casos de imágenes con las que no se entrenó;
adicionalmente se concluye que puede haber una similitud entre las imágenes de
train y de test, por el porcentaje alcanzado en ambos casos.

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.

De la validación de la red en el trabajo en tiempo real se logró llegar a las


conclusiones finales del trabajo realizado. En primer lugar, se logró hacer una
clasificación asertiva de todas las clases trabajadas en el proyecto tal y como se
puede evidenciar en la figura 31, lo cual nos permite dar por concluido el trabajo
cumpliendo con lo planteado en el objetivo general. Del trabajo realizado en esta
validación también se da pie para recomendaciones a futuro y demás conclusiones
presentadas, pues se evidenciaron errores de clasificación que se debieron a unas
fallas en la creación del Dataset al momento de iniciar el proyecto, por lo que eran

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.

Finalmente, en el trabajo de validación hecho en los embebidos se empelo la librería


time para comparar el tiempo que se demora cada embebido en realizar inference
y llegar a una conclusión de cual es mejor para este tipo de trabajo.

Tabla 5.
Tiempo de inference de los embebidos.

Inference de los embebidos


Embebido Inference time

Jetson Nano 0.7 s


Rasberry pi 1.4 s
Dev Board Coral 0.6 s

Como se puede evidenciar en la tabla, el tiempo de inferencia de la Jetson Nano y


de la Dev Board es muy similar, sin embargo, para personas que estén
acostumbradas o familiarizadas con el ambiente de trabajo tipo Linux les será más
intuitivo trabajar con la Jerson nano, mientras que la Dev Board, aunque ya tiene
las librerías instalas, algunas librerías son propias por lo que obliga al usuario a
reaprender a codificar, y el modo de usarla es diferente al de las demás, pues usa
el computador de host.

90
6. CONCLUSIONES

 Se logró construir un Dataset de alrededor de 3800 imágenes con el cual se pudo


entrenar, testear y validar la “IA” haciendo uso de imágenes tomadas manualmente
y otras tomadas de internet. El haber tomado imágenes de internet afecto los
resultados en las pruebas realizadas en tiempo real, debido a la presencia de
imágenes ambiguas y una gran diferencia con respecto a las imágenes tomadas por
la cámara.

 Se logró clasificar apropiadamente residuos dentro de los grupos seleccionados,


obteniendo valores de accuracy superiores a un 80% en imágenes desconocidas
para la red y de un 98% en imágenes conocidas como las de train.

 Al agregar a la categoría revistas imágenes de objetos que son mixtos, es decir


que se componen de más de una clase, se generó que la red tendiera a equivocarse
en algunos casos con las otras clases como plegadiza; además al usar portadas de
revistas en los datos de entrenamiento de revista se generó que al realizar pruebas
prácticas la iluminación y los colores tendieran a confundir objetos con portadas de
revistas por lo que la red clasificaba erróneamente.

 El no haber creado el Dataset en el mismo ambiente en el que se iba a llevar a


cabo las pruebas funcionales de la red hizo que la precisión alcanzada en las
pruebas en tiempo real, en algunas clases, no fuera tan elevado debido a que las
imágenes agregadas al Dataset tenían un ángulo o proximidad diferente a el entorno
de pruebas.

 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

 Se recomienda crear el Dataset en el mismo ambiente donde se va a trabajar con


la “IA”.

 Si se va a trabajar con la Dev Board Coral se recomiendo codificar directamente


con las librerías, haciendo pruebas de validación constantemente en el embebido.
Cabe recalcar que la Dev Board Coral tiene la capacidad de realizar
entrenamiento y validación, lo que permite trabajar completamente en el embebido,
sin embargo, esto es limitado a el tamaño de la red y del Dataset, debido a la
capacidad computacional de la Dev Board.

 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

Acodal. (2017). Alerta ambiental por el manejo de basuras en el relleno sanitario de


Yotoco. http://www.acodal.org.co/alerta-ambiental-por-el-manejo-de-
basuras-en-el-relleno-sanitario-de-yotoco/

Agarwal, V. (2021). Complete Architectural Details of all EfficientNet Models.


https://towardsdatascience.com/complete-architectural-details-of-all-
efficientnet-models-5fd5b736142

AI4ALL. (2020). Results. https://ai-4-all.org/about/results/

Bagnato, J. I. (2020). Clasificación de Imágenes en Python. Aprende Machine


learning. https://www.aprendemachinelearning.com/clasificacion-de-
Imagenes-en-python/

Bhatt, B. (2020). bhattbhavesh91/tflite-tutorials. GitHub.


https://github.com/bhattbhavesh91/tflite-tutorials/blob/master/tflite-part-
1.ipynb

Bhattiprolu, S. (2021). bnsreenu/python_for_microscopists. GitHub.


https://github.com/bnsreenu/python_for_microscopists/tree/master/237_tflite
_using_malaria_binary_classification

Brownlee, J. (2020). Softmax Activation Function with Python. Machine Learning


Mastery. https://machinelearningmastery.com/softmax-activation-function-
with-python/

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

COLOMBIA, MINISTERIO DE AMBIENTE Y DESARROLLO SOSTENIBLE. (2020).


Colombia iniciará el 2021 con nuevo código de colores para la separación de
residuos. Ministerio de Ambiente y Desarrollo Sostenible.
https://www.minambiente.gov.co/index.php/noticias/4920-colombia-iniciara-
el-2021-con-nuevo-codigo-de-colores-para-la-separacion-de-residuos

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

Delgado Rodríguez, D., y Guerrero Figueroa, J. F. (2020). Contenedores de reciclaje


interactivo con IoT. [Tesis de pregrado, Universidad Autónoma de
Occidente]. Repositorio Educativo Digital UAO.
https://red.uao.edu.co/bitstream/handle/10614/12344/T09205.pdf?sequence
=5&isAllowed=y

Dickson, B. (2022). TinyML is bringing deep learning models to microcontrollers.


TNW | Neural. https://thenextweb.com/news/tinyml-deep-learning-
microcontrollers-syndication

Flores, A. (2021). +15 librerías de Python que te ayudarán a transformar el mundo


digital sin complicarte. Crehana. https://www.crehana.com/blog/desarrollo-
web/librerias-python/

Goodfellow, L. Bengio, Y. Courville, A. (2016). Deep Learning. Cambridge,


Massachusetts: The MIT Press. Disponible en:
https://www.deeplearningbook.org/

Google LLC. (2020). Get started with the Dev Board. Coral.
https://Coral.ai/docs/dev-board/get-started/

Google. (2021). Te damos la bienvenida a Colaboratory. Google Colaboratory.


https://colab.research.google.com/?hl=es#scrollTo=5fCEDCU_qrC0

ICHI.PRO. (2020). Aprendizaje supervisado o no supervisado en 2 minutos.


https://ichi.pro/es/aprendizaje-supervisado-o-no-supervisado-en-2-minutos-
126284139655746

Jaimovich, D. (2018). Estudiantes argentinos, destacados por crear un separador


de residuos inteligente. infobae.
https://www.infobae.com/tecno/2018/06/11/estudiantes-argentinos-
destacados-por-crear-un-separador-de-residuos-inteligente/

95
Jupyter. (2022). Project Jupyter. https://jupyter.org/

Khandelwal, R. (2021). A Basic Introduction to TensorFlow Lite - Towards Data


Science. https://towardsdatascience.com/a-basic-introduction-to-tensorflow-
lite-59e480c57292

Luchetti, S. (2021). Sistema embebido y sus características | Conceptos


fundamentales. Tribalyte Technologies. https://tech.tribalyte.eu/blog-
sistema-embebido-caracteristicas

Mina, J. (2017). En Cali se generan 1700 toneladas diarias de residuos sólidos y


solo se recicla el 10%. Elpais. https://www.elpais.com.co/cali/en-se-generan-
1700-toneladas-diarias-de-residuos-solidos-y-solo-se-recicla-el-
10.html#:%7E:text=Jamir%20Mina-
,En%20Cali%20se%20generan%201700%20toneladas%20diarias%20de%
20residuos,solo%20se%20recicla%20el%2010%20%25&text=Actualmente
%2C%20la%20Alcald%C3%ADa%20de%20Cali,hogares%20para%20fome
ntar%20el%20reciclaje

Naik, S. (2021). Dataset Labelling. EDUCBA. https://www.educba.com/dataset-


labelling/?source=leftnav

NVIDIA Developer. (2020). Getting Started with Jetson Nano 2GB Developer Kit.
https://developer.Nvidia.com/embedded/learn/get-started-jetson-nano-2gb-
devkit#prepare

Papers with Code. (2021). Image Classification on ImageNet.


https://paperswithcode.com/sota/Image-classification-on-Imagenet

Pedamkar, P. (2021a). Deep Learning Model. EDUCBA.


https://www.educba.com/deep-learning-model/

Pedamkar, P. (2021b). Loss Functions in Machine Learning. EDUCBA.


https://www.educba.com/loss-functions-in-machine-learning/?source=leftnav

Pedamkar, P. (2022, mayo 5). What is Supervised Learning? EDUCBA.


https://www.educba.com/what-is-supervised-learning/?source=leftnav

96
Pocho Costa. (2020). Transfer learning ¿qué es y para que sirve?
https://pochocosta.com/podcast/transfer-learning-que-es-y-para-que-sirve/

Programa de las Naciones Unidas para el Desarrollo. (2022). Objetivos de


Desarrollo Sostenible | Programa De Las Naciones Unidas Para El
Desarrollo. UNDP. https://www.undp.org/es/sustainable-development-
goals#produccion-consumo-responsables

Quintero, N. M. (2020). Las 2500 toneladas de basuras que se generan en Cali


tienen desbordados a operadores de aseo. Elpais.
https://www.elpais.com.co/cali/las-2500-toneladas-de-basuras-que-se-
generan-en-tienen-desbordados-a-operadores-de-aseo.html

RECECO - Reciclaje Ecológico. (2019). Consecuencias de no reciclar.


https://gestorderesiduosmadrid.es/consecuencias-de-no-reciclar/

Rolnick, D., y Donti, P. L. (2019). Tackling Climate Change with Machine Learning.
Arxiv:1906.05433. https://arxiv.org/pdf/1906.05433.pdf

RS Components. (2020). Offline page | RS Components.


https://offline.rsdelivers.com/

Rueda, J. P. (2019). Crecimiento de basuras de Cali, bajo la lupa de entes de


control. El Tiempo. https://www.eltiempo.com/colombia/otras-
ciudades/crecimiento-de-basuras-de-cali-esta-bajo-la-lupa-de-los-entes-de-
control-336892

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/

Salcedo, P. (2021). Aprueban Ley General de Fomento al Reciclaje. La Tribuna.


https://www.latribuna.cl/cronica/2015/06/11/aprueban-ley-general-de-
fomento-al-reciclaje.html

97
scikit-learn developers. (s. f.). Confusion matrix. https://scikit-
learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html

sitio big data. (2019). Machine Learning: Seleccion Metricas de clasificacion.


https://sitiobigdata.com/2019/01/19/machine-learning-metrica-clasificacion-
parte-3/#

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

Tensorflow. (s.f.). Module:tf.keras.losses.


https://www.tensorflow.org/api_docs/python/tf/keras/losses

Torres, J. (2018). Deep Learning – Introducción práctica con Keras. Jordi


TORRES.AI. https://torres.ai/deep-learning-inteligencia-artificial-keras/

Wikipedia. (2022a). Raspberry Pi. https://es.wikipedia.org/wiki/Raspberry_Pi

Wikipedia. (2022b). Pandas (software).


https://es.wikipedia.org/wiki/Pandas_(software)

Wikipedia. (2022c). Docker (software).


https://es.wikipedia.org/wiki/Docker_(software)

Wikipedia. (2022d). Python. https://es.wikipedia.org/wiki/Python

Wikipedia. (2022e). Fully-connected layer.


https://en.wikipedia.org/wiki/Data_augmentation

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

Anexo A. Espacio de pruebas de la red.

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

También podría gustarte