Logo Studenta

Detecção de Defeitos em Latas de Refrescos

¡Este material tiene más páginas!

Vista previa del material en texto

Trabajo de Fin de Grado 
 
Grado en Ingeniería en Tecnologías Industriales (GETI) 
 
 
 
 
 
Detección de defectos en latas de refrescos mediante 
redes neuronales y visión artificial 
 
 
 
 
MEMORIA 
 
 
 
 
 
 
 
 Autor: Pedro Poblet García 
 Director: Cecilio Angulo Bahon 
 Convocatoria: 06/2022 
 
 
 
 
 
Escuela Técnica Superior 
de Ingeniería Industrial de Barcelona 
Pág. 2 Memoria 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 3 
 
Resumen 
Una red neuronal artificial sí que es capaz de detectar anomalías con una precisión elevada 
sin ser supervisada por humanos. Además, a una velocidad bastante más elevada. En este 
trabajo se ha podido comprobar para el caso de defectos en latas de refrescos. Con tan sólo 
2 horas de entrenamiento, un ordenador es suficientemente potente como para detectar 
errores con un 97% de precisión, errando en tan sólo 150 imágenes de las 5000 que 
conforman la base de datos. 
El objetivo de este trabajo era idear y crear el conjunto de un sistema capaz de detectar 
defectos en latas de refrescos. Por ello, las principales partes del trabajo han sido la 
programación de la red y la obtención de la base de datos. Además, en el trabajo también se 
ha podido ver con perspectiva lo potente que puede llegar a ser la inteligencia artificial en 
distintas áreas de aplicación. 
Los pasos que se han seguido han sido: 
1. Obtención base de datos de imágenes. 
2. Programación de la red. 
3. Experimentación con la red. 
4. Análisis de resultados obtenidos. 
5. Posibles opciones de mejora de rendimiento. 
Aunque el orden fuera el indicado, a lo largo del trabajo se ha tenido que retroceder al punto 
anterior en varias ocasiones para poder realizar todos con éxito. Ha sido el caso para la 
obtención de la base de las imágenes que se ha repetido continuamente para la mejora de 
rendimiento. 
 
 
 
 
 
 
 
 
Pág. 4 Memoria 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 5 
 
Glosario 
A continuación, un glosario con las siglas o palabras que pueden llevar a confusión a lo largo 
del trabajo: 
· accuracy: precisión 
· loss: pérdida 
· Deep learning: aprendizaje profundo 
· Epoch size: número de veces que se recorren las imágenes 
· Batch size: partes en las que se divide el pack de imágenes 
· Backpropagation: acción de actualizar los pesos 
· Learning rate: ratio de aprendizaje 
· Grad-cam: descenso de gradiente 
· Saliency: saliencia 
· IA: inteligencia artificial 
· I+D: investigación y desarrollo 
 
 
 
 
 
 
 
Pág. 6 Memoria 
 
ÍNDICE
1. INTRODUCCIÓN ___________________________________________ 8 
1.1. Contexto del proyecto ........................................................................................ 8 
1.2. Objetivos del proyecto ....................................................................................... 8 
1.3. Origen del proyecto ........................................................................................... 9 
2. REDES NEURONALES ARTIFICIALES________________________ 10 
2.1. Introducción al Deep learning ......................................................................... 10 
2.2. Capas ............................................................................................................... 11 
2.3. Neurona artificial .............................................................................................. 12 
2.4. Función de activación ...................................................................................... 13 
2.5. Redes neuronales convolucionales ................................................................ 15 
3. HARDWARE Y SOFTWARE _________________________________ 17 
3.1. Hardware .......................................................................................................... 17 
3.2. Software ........................................................................................................... 17 
3.2.1. Procesamiento de imágenes .............................................................................. 17 
3.2.2. Entorno de desarrollo .......................................................................................... 17 
4. BASE DE DATOS DE IMÁGENES ____________________________ 19 
4.1. Características de los defectos ....................................................................... 19 
4.2. Resolución de las imágenes ........................................................................... 22 
4.3. Obtención de la base de datos ....................................................................... 22 
4.4. Filtros o segmentación considerada ............................................................... 23 
4.5. Data augmentation .......................................................................................... 24 
4.6. Definición de modelo ....................................................................................... 24 
4.7. Entrenamiento de la red .................................................................................. 27 
4.7.1. Tamaño de Epoch y de Batch ............................................................................ 27 
4.7.2. Precisión y pérdida .............................................................................................. 28 
4.7.3. Set de validación ................................................................................................. 28 
4.7.4. Overfitting y underfitting ...................................................................................... 29 
5. ANÁLISIS DE RENDIMIENTO Y MEJORA _____________________ 31 
5.1. Backpropagation, Epoch y batch .................................................................... 31 
5.2. Learning Rate .................................................................................................. 32 
5.3. Ratio OK/NOK y matriz de confusión ............................................................. 34 
5.4. Aumento de imágenes del tipo falsos negativos y positivos ......................... 35 
6. RESULTADO PRUEBAS ___________________________________ 36 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 7 
 
6.1. Resultado pruebas .......................................................................................... 44 
7. PRESUPUESTO __________________________________________ 46 
8. IMPACTO AMBIENTAL ____________________________________ 47 
CONCLUSIONES _____________________________________________ 49 
AGRADECIMIENTOS __________________________________________ 51 
ANEXO DE CÓDIGO ___________________________________________ 52 
BIBLIOGRAFIA _______________________________________________ 53 
 
Pág. 8 Memoria 
 
1. Introducción 
1.1. Contexto del proyecto 
Cuando se habla de temas relacionados con Machine Learning, Deep Learning o redes 
neuronales a la inmensa mayoría de las personas les resultarán temas altamente complejos 
por su cliché “futurista”. Sin embargo, actualmente no existe empresa puntera tecnológica en 
la que no se haya hecho alguna aplicación de un campo de estos. 
Con el constante progreso de las últimas tecnologías cada vez se incorporan más 
aplicaciones de IA en la industria. Estas técnicas se desarrollan paralelamente con I+D. Uno 
de los numerosos avances ha sido reducir la mano de obra a través de la automatización. De 
hecho, hasta hace muy poco la detección de defectos en una red de producción la hacía un 
operario inspeccionando pieza por pieza. El caso de la detección de defectos es una tarea 
repetitiva la cual puede llevar a confusión y no clasificar los defectos de forma objetiva por 
parte del operario. Gracias al avance de las últimas décadas ya es posible automatizar esta 
función para su posterior incorporación en la línea de producción. 
A partir de la introducción de esta mejora se conseguiríamejorar la eficiencia y disminuir los 
gastos que pueden suponer las piezas defectuosas para la empresa. 
1.2. Objetivos del proyecto 
El principal objetivo del proyecto es crear un modelo capaz de determinar y clasificar aquellas 
piezas que están defectuosas respecto las que no lo están. Además, más adelante se verá la 
posibilidad de determinar también el tipo de defecto dado en la pieza. En el caso de conseguir 
una buena precisión se planteará también la posibilidad de aplicar este programa a líneas ya 
existentes y comparar resultados obtenidos con los actuales. 
El proyecto se podría separar en objetivos más concretos: 
- Obtención de gran base de datos de imágenes de la parte superior de latas de 
refrescos para poder utilizarla en el entrenamiento de la red. 
- Programar una red neuronal para detectar diferentes tipos de defectos, entrenar los 
modelos de clasificación y hacer una primera valoración del modelo. Así como valorar 
la viabilidad de aplicar la red para el caso concreto de defectos en latas. 
- Con los resultados obtenidos analizarlos para poder añadir posibles mejoras o 
funcionalidades en función de la parte dónde esté fallando la red. 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 9 
 
- Estudiar otras aplicaciones de la misma red y horizontes futuros donde se podría 
contemplar la incorporación del sistema. 
1.3. Origen del proyecto 
El proyecto nade de unas prácticas realizadas en una empresa tecnológica en el ámbito de la 
IA. Tras comprobar el gran potencial de esta herramienta no se pudo evitar pensar en su 
posible aplicación en algún objeto del día a día. La mayor duda salió a la hora de decidir el 
objeto ya que tenía que cumplir: 
- Ser de fácil adquisición. 
- Posibilidad de generar anomalías o defectos. 
- Facilidad para ser fotografiado en un ambiente favorable. 
- Ser lo más homogéneo posible con viabilidad para obtener múltiples de ellos. 
- Tener un mínimo de sentido aplicar IA a dicho producto. 
Estos requisitos ya serían suficientes y permitirían cumplir exitosamente los objetivos de 
trabajo. Se ha tenido en cuenta que no tiene mucho sentido que un defecto de la lata sea que 
esté girado o que no haya lata pero es una de las formas que se ha encontrado de generar 
anomalías de la forma más estándar posible. 
 
 
Pág. 10 Memoria 
 
2. Redes neuronales artificiales 
2.1. Introducción al Deep learning 
El Deep Learning o aprendizaje profundo es un campo dentro de Machine Learning que 
trabaja con algoritmos inspirados en la estructura y funcionamiento del cerebro a través de las 
llamadas redes neuronales artificiales [1]. Esta nueva forma de aprendizaje surge tras conocer 
la limitación de los algoritmos comunes donde, a pesar de aumentar la cantidad de datos 
aportados, el rendimiento de la red se mantenía estable. A diferencia de estos, en los 
algoritmos de Deep Learning el rendimiento sigue aumentando de forma significativa cuando 
se incrementa el número de datos (figura 2.1). Todos esto es debido a que los ordenadores 
aprenden tareas para las cuáles no han sido programados. Andrew Ng, creador de Google 
Brain proyectó la siguiente gráfica para aclararlo. 
 
Figura 2.1 Machine Learning vs Deep Learning. (Fuente: [2]) 
Además de esta escalabilidad, otra de las principales ventajas de Deep Learning es la 
capacidad que tiene de extraer automáticamente y caracterizar los datos a partir de 
conjuntos aleatorios de datos también conocido como Feature Learning (aprendizaje de 
características) [3]. 
Actualmente algunas de las aplicaciones más comunes dónde se utiliza el Deep Learning 
son el reconocimiento facial y de voz, la asistencia sanitaria, la conducción autónoma, el 
método antifraude y para técnicas de previsión [4]. 
Las redes neuronales artificiales es la forma en la que se implementa el Deep Learning. Éstas 
se componen de diferentes capas que a su vez forman un conjunto de neuronas conectadas 
entre sí. La información se introduce en la red por una entrada, recorre la red sufriendo las 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 11 
 
transformaciones necesarias para finalmente transmitir la información a la salida. La finalidad 
de la red neuronal es buscar las máximas relaciones posibles entre el conjunto de datos. Por 
lo tanto, los componentes más importantes de la red neuronal son las capas y las neuronas. 
 
 
Figura 2.2 Sistema neuronal. (Fuente: [5]) 
2.2. Capas 
Las capas son las unidades estructurales en las que se organizan las neuronas o unidades 
de procesamiento [6]. Así pues, la red neuronal está formada por diferentes capas, cada cual 
a su vez está también repleta de neuronas. En función de si se trata de una capa sensorial 
que sólo capta información o de una capa de procesamiento que opera con la información 
diferenciamos entre: 
 
o Capa de entrada 
Capa principal dónde se inserta toda la información necesaria para 
confeccionar la red. A partir de aquí se transmite directamente la información 
de las entradas a las posteriores capas. 
 
o Capa oculta 
Suele haber varias capas ocultas entre la de entrada y la de salida. Se trata 
de las capas encargadas de hacer todas las operaciones y dar el peso 
correspondiente a cada neurona. No escogen un número determinado de 
neuronas sino aquel que consideran suficiente para diferenciar las entradas. 
Normalmente, a mayor complejidad del problema a resolver significa mayor 
número de capas ocultas. 
 
Pág. 12 Memoria 
 
o Capa de salida 
Son las últimas neuronas encargadas de transmitir la información a las salidas. 
Habrá tantas salidas como cantidad de resultados deseados. En muchas 
ocasiones, la salida no es un Booleano de un sí y todo lo demás no sino la 
probabilidad que hay de que sea cada una de las opciones. 
 
 
Figura 2.3 Capas que conforman red neuronal. (Fuente: [7]) 
Podemos ver que las redes neuronales son una manera muy práctica hoy en día y con mucho 
margen de mejora por delante. Una de las actuales desventajas de las redes neuronales es 
el hecho de poseer parámetros incontrolables. Dicho de otra manera, es posible analizar las 
salidas en función de las entradas pero no se puede controlar cada uno de los parámetros 
que se encuentran en las capas ocultas. Debido a esto, muchas veces se convierte 
impredecible el resultado que nos puede arrojar la red ante un caso desconocido para ella. 
2.3. Neurona artificial 
La neurona es el componente que se encarga de recibir y transmitir los diferentes datos, por 
eso también se la conoce como unidad de procesamiento. La neurona consta de unas señales 
de entrada (xi) que a través de unos determinados parámetros conocidos como pesos (wi) y 
un valor constante llamado sesgo (θ) llegan a la unión sumadora [8]. En este proceso, el 
aprendizaje automático comienza ya aquí su función asignando los diferentes valores a los 
pesos que crea conveniente. A continuación, de la unión sumadora pasan a la función de 
activación. 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 13 
 
 
Figura 2.4 Neurona de McCulloch-Pitts (Fuente: [9]) 
2.4. Función de activación 
El objetivo principal de la función activación es calificar si un nodo está activo o no, es decir, 
su respuesta para un caso muy simplificado sería binaria. Debido a la cantidad de veces que 
se tiene que evaluar esta función se buscan funciones con derivadas lo más simples posibles. 
La característica más importante de esta función es que debe ser no lineal [10]. La función 
tiene que ser no lineal porque de no ser así la salida se podría reproducir como una 
combinación lineal de las entradas y no serviría para predecir. 
En base a las características que queramos imponer a nuestra red utilizaremos una u otra 
función de activación. Las funciones de activación más usadas actualmente en aprendizaje 
profundo son: 
 
- Función Sigmoidal 
 
𝐹(𝑥) =
11 + 𝑒𝑥
 
 
Pág. 14 Memoria 
 
 
Figura 2.5 Función Sigmoidal. (Matlab) 
 
Esta función toma cualquier valor de entrada para devolver valores entre los rangos 
0 y 1. Devuelve 0 para valores muy negativos y 1 para valores muy positivos. 
 
- Función Tangente hiperbólica 
 
F(x) = tanh⁡(𝑥) 
 
 
Figura 2.6 Función Tangente hiperbólica. (Matlab) 
 
Esta función es muy similar a la función sigmoide con la particularidad de que los 
valores devueltos están en el intervalo de -1 y 1 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 15 
 
- Función ReLU (Rectified Linear Unit) 
 
𝐹(𝑥) = max⁡(0, 𝑎) 
 
 
 
Figura 2.7 Función ReLU. (Matlab) 
 
La función ReLU es aún más simple y genera una salida de 0 cuando la entrada es 
negativa y una salida igual a la entrada cuando esta es positiva. 
 
Debido a que para valores muy elevados las funciones sigmoide y tangente 
hiperbólica no generan diferencias obtenemos saturación para valores muy elevados 
o muy negativos. Por ello, ambas funciones presentan dificultades de disyuntiva en 
valores elevados. Al no presentar este defecto, la función de activación más utilizada 
actualmente es la función ReLU siendo su única desventaja ser una función no 
simétrica [11]. 
2.5. Redes neuronales convolucionales 
Las redes neuronales convolucionales son una clasificación dentro de las redes neuronales 
artificiales muy utilizadas dentro de la visión artificial. Estas redes son muy útiles para la 
clasificación y segmentación de imágenes en función del color o las características. Su 
funcionamiento es muy sencillo. Si se tiene una imagen de 50x50 píxeles se tendrá un total 
de 2500 píxeles, cada uno de los cuáles corresponderá a una neurona. Dichas neuronas 
serán acotadas asignándoles un número comprendido entre 0 y 1 en función de su intensidad. 
A partir de la operación de convolución, la red irá detectando diferentes líneas, bordes y 
Pág. 16 Memoria 
 
contornos en la imagen. Cada una de estas operaciones se aplica en forma de filtro o kernel 
[12]. Por lo que el filtro utilizado para detectar líneas verticales será diferente al utilizado para 
detectar líneas horizontales. 
 
Figura 2.8 Kernel de convolución. (Fuente: [13]) 
Analizando con detenimiento el filtro se puede observar que si los valores de ambos lados 
son iguales el resultado será 0, eso significará que no hay ninguna línea vertical. En cambio, 
basta que un lado tenga unas tonalidades (valores de píxel) diferentes para obtener un 
resultado positivo o negativo, marcando así los lugares dónde se encuentran las líneas 
verticales. 
Otro filtro muy conocido es también el Max pooling el cuál reduce el tamaño del input 
cogiendo el máximo valor. Esto provoca que la calidad de imagen sea menor por la 
reducción de píxeles pero marca los puntos más significativos [14]. 
 
Figura 2.9 Filtro Max pooling (Fuente: [14]) 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 17 
 
3. Hardware y software 
3.1. Hardware 
Para el hardware el equipo utilizado ha sido un portátil HP con procesador AMD Ryzen 5 
3500U con gráficos Radeon Vega Mobile Gfx. Aunque para el entrenamiento de la red se ha 
hecho uso de una GPU virtual como se comentará en la parte de Software. 
En cuanto a la obtención de las imágenes se ha realizado con una cámara SONY DSC-HX60 
la cuál al tener una gran calidad de imagen influye favorablemente en el entrenamiento. 
3.2. Software 
3.2.1. Procesamiento de imágenes 
Una vez obtenidas las imágenes se han recortado con la herramienta ImageSplitter de 
Postcron la cuál permite recortar varias imágenes en 6 partes iguales. Con ello se ha podido 
obtener 6 imágenes habiendo realizado únicamente una fotografía a un pack de 6 latas. 
Seguidamente, se ha procedido a aplicar un mismo filtro a todas las imágenes con el editor 
de imágenes GIMP. Dentro de este programa existe un complemento llamado BIMP que 
permite aplicar modificaciones a grupos de imágenes. 
Con el fin de aumentar la base de datos de imágenes se ha utilizado la librería Augmentor de 
Python. 
3.2.2. Entorno de desarrollo 
Una de las librerías más extensas de Machine Learning es Tensorflow, escrita 
mayoritariamente en Python se ha optado por utilizar este lenguaje de programación. Además, 
ha influido que ya se poseían conocimientos de este lenguaje y eso facilitaría la fase de 
desarrollo del algoritmo. 
El código se ha desarrollado en Google Colaboratory, una herramienta de Google Research 
que es óptimo para el desarrollo de aprendiazje automático. Una de las grandes ventajas que 
ofrece es la opción de utilizar una tarjeta gráfica GPU Tesla K80. Gracias a esto, a pesar de 
tener un equipo sin tarjeta gráfica se ha podido convertir las 10 horas que tardaría el ordenador 
personal en un entrenamiento de menos de 1 hora. Facilitando esto también la realización de 
un gran número de pruebas y mayor velocidad a la hora de realizar cambios sobre la red y 
sus funcionalidades. 
Pág. 18 Memoria 
 
Dentro de Google Colab se encuentra también la gran mayoría de las librerías de Python sin 
la necesidad de tener que ir instalarlas a medida que se utilicen. Además de la librería de 
Tensorflow, a medida que se ha ido desarrollando el proyecto se han utilizado las siguientes 
librerías de Python: 
- Itertools: para realizar diferentes operaciones con iteradores. 
- Matplotlib: utilizada en las gráficas, representación de imágenes a partir de datos de 
arrays y listas. 
- Numpy: amplia librería para el cálculo numérico y el análisis de datos. 
- Pillow: utilizada para la manipulación de imágenes. 
- Os: librería muy práctica para acceder a los diferentes directorios del sistema 
operativo. 
- Glob: utilizado para algunas funciones de rutas y ficheros no halladas en Os. 
- Grad_cam: función creada con partes extraídas de un fichero de GitHub para obtener 
los mapas de saliencia y el descenso del gradiente para la posible mejora de la red 
[15]. 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 19 
 
4. Base de datos de imágenes 
Con la finalidad de entrenar la red necesitaremos una gran base de datos de imágenes. Será 
tan importante la cantidad de imágenes como la variedad de defectos que pueda haber en 
ellas. Debido a ello, nos interesará tener multitud de imágenes tanto defectuosas como 
correctas. 
Uno de los factores que también será importante tener en cuenta para el entrenamiento de la 
red será la proporción de imágenes OK/NOK. Por norma general, estos valores se encuentran 
en 70/30 y 85/15 [16]. Este aspecto de no ser tenido en cuenta podría llevar a la siguiente 
confusión. Teniendo una proporción de imágenes OK/NOK de 95/5, después de entrenar la 
red se obtiene un rendimiento del 95%. A simple vista puede parecer que es un resultado muy 
decente pero no es así. Es común que la red al ver que obtiene un rendimiento muy bueno 
marque todas las imágenes como OK sin detenerse a analizarlas siquiera. 
4.1. Características de los defectos 
Antes de abarcar la zona puramente técnica se hará un estudio de las características que 
deberá tener la red. Dichas características serán cruciales a la hora de aplicar la red a una 
variedad de productos o defectos. Dependiendo qué nivel de detalle se necesite para detectar 
los defectos se utilizará una red con unas características u otras. 
Otro factor a tener en cuenta es conocer que las redes neuronales no poseen capacidad de 
lógica y algo que para los humanos puede parecer obvio puede significarles todo un desafío. 
Por ello no se puede dejar ningún caso fuera de lo común sin habérselo presentado con 
anterioridad en el entrenamiento. Por ejemplo, puede haber casos en los que haya imágenes 
borrosas o moldes vacíos. Si estos casos no se muestran a la red se desconocerá cómo 
calificará estos casos en el modelo real. 
A continuación, se indica una tabla con los diferentesdefectos y anomalías que se han 
considerado, así como el porcentaje sobre el total de las imágenes defectuosas que serían 
de ese tipo. Se han considerado los defectos: 
 
 
 
 
Pág. 20 Memoria 
 
 
Tabla 4.1 Tipos de defectos 
DEFECTO DESCRIPCIÓN EJEMPLO 
Chapa superior 
no alineada con 
la dirección de 
apertura de la 
lata 
Aunque este error 
no es uno que 
pueda estar muy 
presente, se 
demostró que sería 
uno de los casos 
que pondría más a 
prueba la eficiencia 
de la red al poseer 
una anomalía difícil 
de diferenciar. 
Debido a que ha 
sido el más 
complicado de 
diferenciar, un 57% 
de los defectos 
eran de este tipo. 
 
Figura 4.1 Defecto de chapa no alineada 
Lata colocada 
boca abajo 
Un defecto que 
podría aparecer 
también con 
bastante 
frecuencia es la 
lata colocada boca 
abajo. A la red ha 
sido un caso que le 
ha costado 
bastante detectar y 
por ello se han 
añadido tantas 
imágenes de este 
caso. Un 32% de 
los defectos eran 
de este tipo. 
 
Figura 4.2 Defecto de lata boca abajo 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 21 
 
Lata colocada 
de forma 
transversal 
Como este error 
era diferenciado 
muy bien por la red 
únicamente se 
añadió un 3% de 
defectos de este 
tipo de las 
imágenes 
defectuosas. 
 
Figura 4.3 Defecto de lata transversal 
Imagen borrosa 
o imprecisa 
Otro error muy fácil 
de diferenciar y por 
ello sólo se añadió 
un 3% de este tipo 
de defecto. 
 
Figura 4.4 Defecto de lata borrosa 
Pág. 22 Memoria 
 
Lata no 
presente 
Un error que 
aunque pueda 
parecer 
innecesario, como 
se ha dicho 
anteriormente, no 
se puede pasar por 
alto por no saber 
cómo actuará la red 
ante un caso 
desconocido. Se 
han añadido un 5% 
de defectos de este 
tipo. 
Figura 4.5 Defecto de falta de lata 
 
4.2. Resolución de las imágenes 
Una de las principales características de este entrenamiento también tendrá que ser la 
velocidad; no sólo para su posterior aplicación sino también para que sea viable ejecutarlo 
desde un ordenador normal. Para esto, sabiendo que hay que analizar cada uno de los píxeles 
de la imagen habrá que encontrar el equilibrio perfecto entre una buena velocidad y un buen 
rendimiento. Por un lado, cuánta mejor resolución tengan las imágenes mejor rendimiento 
pero, por otro lado, más tiempo estará el PC analizando las imágenes. 
Las imágenes originales eran de 1467x1467. Para poder trabajar con estas imágenes se 
tendrá que reducir su tamaño o calidad, de otra forma, por el tamaño y la cantidad de 
imágenes se alcanzaría un exceso de memoria y la red no sería capaz de entrenar. Una vez 
comprobado, la máxima resolución que la red es capaz de asimilar fue de 300x300 con una 
velocidad decente. 
4.3. Obtención de la base de datos 
La base de datos se realizó por cuenta propia. La forma de proceder fue comprar un pack de 
6 latas y realizando pequeñas variaciones tomar fotos de la parte superior. El motivo de 
escoger un pack de 6 latas es que es el pack más común del mercado y al recortar la imagen 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 23 
 
en 6 se sigue obteniendo una buena calidad. Con tal de reducir al máximo el contorno exterior 
se han recortado las imágenes para poder obtener los mejores resultados. 
Inicialmente, se pensó que aplicando el flash se obtenía una mayor nitidez de imagen y 
delimitación de los contornos. Pero a la hora de entrenar y realizar los mapas de calor, se vio 
que la red se centraba mayoritariamente en los reflejos para decidir si la imagen era 
defectuosa. Tras confirmar esto se le dio importancia a reducir al máximo el reflejo. Tras 
intentar varias cosas, se decidió que lo más fácil sería repetir la base de datos. A continuación, 
un ejemplo de la diferencia al tomar la foto con flash o sin flash: 
 
 
 
 
 
 
 
 
 
Aunque la sombra también daba algún problema no ha sido tan significativo como lo era el 
reflejo del flash 
Una vez obtenidas las imágenes se ha procedido a recortar el contorno exterior dejando el 
mismo tamaño en todas las fotografías y, por tanto, la misma calidad. Para analizar cada lata 
de forma independiente se ha recortado en 6 partes multiplicando así la base de datos con tal 
de obtener una mayor precisión. 
4.4. Filtros o segmentación considerada 
Debido a que el color no tiene ninguna importancia a la hora de detectar el defecto se ha 
utilizado un filtro de escala de grises. Además, se comprobó que el resultado incluso mejora 
al utilizar las imágenes con una escala de grises. 
Otra de las cosas que se consideró tener en cuenta fue hacer una segmentación para fijarse 
Figura 4.6 Lata sin flash Figura 4.7 Lata con flash 
Pág. 24 Memoria 
 
únicamente en la parte de dentro de la circunferencia formada por la parte superior de la 
lata. Sería esta la parte donde con más probabilidad se encontraría el defecto de la lata. 
Pero no se procedió debido a que en algunas imágenes no aparecía la circunferencia 
completa y era muy aleatorio el resultado para defectos de latas vacías o en posición 
transversal. 
4.5. Data augmentation 
Tras realizar algunas pruebas iniciales, se comprobó que el número de imágenes era 
demasiado pequeño para tener el comportamiento deseado de la red. Por ello, se decidió 
aplicar el concepto de data augmentation con tal de ampliar la base de datos. El proceso 
consiste en, a través de las imágenes obtenidas, realizar pequeños cambios con tal de poder 
aumentar la fuente de imágenes [17]. De esta manera se pasó de tener 300 imágenes iniciales 
a 6.000 finales. Debido a que la lata de refresco tenía que estar contenida dentro de la imagen 
no se aplicó ningún tipo de zoom ni distorsión de imagen para mantener el contorno circular 
de la lata. 
La librería de Augmentor para Python permite hacer cambios con mayor o menor probabilidad 
en las fotos y diferentes modificaciones. Sobre cada una de las imágenes se han aplicado las 
siguientes operaciones: 
- Rotación de imagen con un ángulo aleatorio −10° < 𝛼 < 10° 
- Rotación de imagen de 90° aleatoria. 
- Volteo aleatorio hacia arriba, abajo, izquierda o derecha. 
Tras analizar el output obtenido se puede ver cómo dos imágenes iguales parecen 
completamente diferentes. Visto que para el tipo de error aquí considerado la variabilidad es 
máxima se ha realizado el entrenamiento con las 6.000 imágenes. De dichas imágenes 5.000 
eran OK (80%) y 1.000 eran NOK (20%). Se ha tenido en cuenta que aunque es una técnica 
muy útil también tiene sus limitaciones y desventajas las cuales se comentarán más adelante 
en el capítulo de conclusiones. 
4.6. Definición de modelo 
Para la creación de la red se ha optado por experimentar con dos de las redes más utilizadas 
actualmente: ResNet50 y VGG16. Ambas redes son muy potentes y trabajan a una velocidad 
asumible. 
Inicialmente, se empezó utilizando la red VGG16 ya que al tener una cantidad de capas 
mucho menor se consideró que sería mucho más rápida. Tras haber obtenido un buen 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 25 
 
rendimiento se decidió probar con la red ResNet50. A pesar de creer que el tiempo de 
entrenamiento aumentaría sustancialmente, para sorpresa no sólo se igualó sino incluso 
disminuyó. Posiblemente, se deba por una menor cantidad de parámetros a pesar de poseer 
más capas. Una forma de verlo es que la red VGG16 opta por centrarse mayoritariamente en 
los parámetros mientras que la ResNet50 aplica más filtros a la imagen con tal de facilitar el 
trabajo de los pesos y parámetros. 
El caso de latas de refrescos se trata de una tarea muy concreta y eso nos hace escoger la 
red sin estar entrenada previamente. Realmente, es aquí donde radica la dificultad y la visión 
de avanzar por un camino donde apenas se consta de pistas que te indiquen hacia dónde ir. 
Es por ello, quese convierte en un trabajo de investigación donde se tendrá que ir decidiendo 
la dirección a lo largo del proyecto. 
A continuación, un pequeño dibujo y el sumario del modelo VGG16. Como se ha comentado 
en otros capítulos se han aplicado algunas modificaciones como el tamaño de entrada de 
imagen de 300x300 en vez de 224x224. 
 
Figura 4.8 Modelo de red VGG16 (Fuente: [18]) 
 
El sumario del modelo realizado dónde aparecen todas las capas que se le aplican a la 
imagen es el siguiente: 
 
Pág. 26 Memoria 
 
 
 
 
 
Figura 4.9 Sumario de las capas de la red VGG16 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 27 
 
En la última capa de salida como el output consiste en un vector de 4.096 columnas. Esto se 
debe a los pesos ya asignados y las 4.096 posibles clasificaciones de objetos. En el caso de 
esta aplicación únicamente se indica si la pieza es válida o defectuosa. El cambio se ha 
efectuado estableciendo classes = 2 como variable dentro de la función VGG16() a la hora 
de definir la red. 
4.7. Entrenamiento de la red 
El proceso de entrenamiento es el que ha requerido más tiempo y análisis posterior para su 
mejora. 
4.7.1. Tamaño de Epoch y de Batch 
A la hora del entrenamiento el factor más importante es el tamaño de Epoch y de Batch. 
- Epoch size: es el número de veces que la red neuronal recorre todas las imágenes. 
Esto se debe a que es necesario que cada vez extraiga unas características diferentes 
de las imágenes y así poder ir aumentando el rendimiento [19]. Además, cuanto menor 
sea la base de datos más epochs serán necesarios para poder sacarle el máximo 
partido a cada imagen. Por el contrario, si aumentamos demasiado este valor el 
entrenamiento tardará demasiado y aparecerán errores definidos más adelante. 
- Batch _size: a su vez cada epoch lo separamos en pequeños batches que contienen 
información más fácil de procesar. Teniendo en cuenta que a cada iteración se 
actualizan los pesos, con menor batch se conseguirá una mayor precisión pero mayor 
tiempo de ejecución [19]. 
 
Figura 4.10 Epoch and Batch size. (Fuente: [20]) 
Pág. 28 Memoria 
 
 
4.7.2. Precisión y pérdida 
Dos conceptos que, aunque pueden resultar claros, se pueden llegar a confundir entre ellos. 
La precisión (accuracy) es un concepto que se utiliza para evaluar el algoritmo mientras que 
la pérdida (loss) se utiliza para optimizar su rendimiento [21]. A la hora de entrenar, la función 
de pérdida nos servirá más para ver si realmente el algoritmo sigue mejorando a medida que 
aumentan los epochs o se estanca. 
Cuando la precisión se mantiene pero la pérdida disminuye significa que la red está 
aumentando la robustez del algoritmo. A partir de aquí nace también la necesidad de paralizar 
el entrenamiento de algoritmo haciendo que coincidan la máxima precisión y mínima pérdida. 
Por ello, no siempre cuanto mayor epoch y menor batch size el algoritmo tendrá una mejor 
actuación. 
 
Figura 4.11 Training set vs validation set (Fuente: [28][28]) 
4.7.3. Set de validación 
Otro de los conceptos importantes es el llamado set de validación. En el código aparece como 
validation_split y es la cantidad de imágenes que la red utiliza para validar que el 
entrenamiento se está realizando con éxito. Por ello, cuando se está realizando el 
entrenamiento aparece no sólo loss y accuracy de entrenamiento sino también de validación 
como val_loss y val_accuracy 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 29 
 
 
Figura 4.12 Loss, accuracy, validation loss, validation accuracy 
 Esta función reservará un 30% (1.800 imágenes) de la carpeta a la validación del modelo 
para ver cómo reacciona la red a imágenes completamente nuevas. Este es otro de los 
motivos por los que es importante tener una fuente de imágenes lo más amplia posible y poder 
validar con el mayor número de imágenes. 
4.7.4. Overfitting y underfitting 
Aumentar demasiado el tamaño de epoch puede llegar a provocar overfitting o underfitting. 
Como el valor de epoch óptimo depende de la desviación de los defectos habrá que encontrar 
un espacio entre estos dos errores. 
 
Figura 4.13 Overfitting y underfitting. (Fuente: [23]) 
Ambos errores son o por una cantidad errónea de datos o, como se ha comentado, por un 
tamaño de epoch y batch no adecuados. Mientras que si hay un exceso de datos se 
produce el overfitting cuando hay datos innecesarios se produce el underfitting. 
Underfitting: cuando al entrenar a la red sólo le introducimos una imagen con un tipo de 
defecto podría pasar que al aparecer un defecto de características diferentes no lo detectara 
como tal o no le diera importancia [24]. 
Overfitting: cuando le introducimos demasiadas veces muestras de diferentes defectos pero 
Pág. 30 Memoria 
 
muy parecidos entre ellos, la red tendrá muy bueno rendimiento en el entrenamiento pero no 
servirá para casos que no sean exactamente iguales para los que ha sido entrenada [24]. 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 31 
 
5. Análisis de rendimiento y mejora 
Con el objetivo de mejorar el rendimiento de la red una se han probado diferentes opciones. 
5.1. Backpropagation, Epoch y batch 
Este método de cálculo es una de las partes más importantes para mejorar los resultados de 
la red. Se consigue a través de ir ajustando los valores de los pesos en función de si están 
dando buenos resultados o no. El procedimiento consiste en comparar el valor real y el valor 
predicho y recorrer la red en sentido inverso para transmitir a cada neurona la parte del error 
que puede haber originado. Con tal de aumentar la precisión y disminuir la pérdida se aplicó 
este concepto para poder sacar el máximo partido a las imágenes de las que se disponía 
[25]. 
En cuanto al tamaño de epoch y batch no existe una fórmula para saber cuáles serán los 
valores óptimos sino que se consigue fruto de la experimentación. Para ello, se ha ido 
probando con diferentes valores de epoch y batch. Cuanto menor era el batch, menor epoch 
se utilizaba debido a un tema de tiempo de programación ya que de otra manera era 
insostenible con un número tan elevado de imágenes como 6.000. 
 
Figura 5.1 Diferentes batch size para 200 epochs (Fuente: [26]) 
Pág. 32 Memoria 
 
En el trabajo se han realizado las siguientes pruebas: 
 
Tabla 5.1 Accuracy y Loss para diferentes valores de Epoch y Batch 
Epoch Batch Loss Accuracy Loss 
validation 
Accuracy 
validation 
2 10 0,1133 0,9548 0,1361 0,9472 
5 30 0,0235 0,9936 0,0745 0,9772 
10 40 0,0101 0,9969 0,0874 0,9756 
15 70 0,0004 1 0,0495 0,9861 
40 80 0,0109 0,9986 0,0875 0,9694 
 
5.2. Learning Rate 
El learning rate determina el tamaño de paso de cada iteración mientras la pérdida se mueve 
hacía un mínimo. De forma más técnica, es un parámetro que controla el ajuste de los pesos 
de nuestra red respecto el gradiente de pérdida. De esta manera, se puede entender como la 
velocidad de aprendizaje de la red. Podría parecer que la ventaja de un Learning Rate muy 
bajo es la clave del éxito pero no es así. La función de Loss es como si fuera el fondo del mar 
con diferentes zonas de mayor y menor profundidad. Puede haber varias zonas con máximos 
de profundidad pero sólo habrá un lugar con la mayor profundidad (el mínimo absoluto de la 
función) [27]. 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 33 
 
 
Figura 5.2 Mínimo local vs mínimo global (Fuente: [28]) 
Como se puede observar, si se aplicara un learning rate demasiado bajo, la función podría 
quedarse “estancada” en uno de estos mínimos locales llamados puntos de silla sin llegar 
nunca al absoluto. Por el contrario, si el learning rate fuera demasiado alto podría no llegar 
nunca a tener un valor parecido al mínimo absoluto. 
 
Figura 5.3 Comparación diferentes Learning Rate (Fuente: [29]) 
Una de las técnicas más acertadasque se han encontrado ha sido utilizar un learning rate 
variable. Esta opción permite utilizar un learning rate general alto que se reduce en el 
momento en el que se acerca a un mínimo local con el objetivo de llegar a su punto más bajo 
y compararlo con los demás mínimos locales para encontrar el absoluto. 
 
Pág. 34 Memoria 
 
5.3. Ratio OK/NOK y matriz de confusión 
Un factor de importante mejora y que se ha visto a medida que se avanzaba en la fase de 
prueba es la diferencia entre el número de muestras válidas y las defectuosas. Esto se debe 
a que normalmente las imágenes que obtenemos no suelen ser defectuosas. En este caso, 
inicialmente se poseían 5.000 imágenes ‘OK’ y 1.000 imágenes ‘NOK’, es decir, sólo un 20% 
de las imágenes son defectuosas. Como ya se ha comentado, obtener un 20% de precisión 
no significaría nada en este caso. Además de tener en cuenta la pérdida para esclarecer esto 
también podemos hacer uso de la matriz de confusión. 
La matriz de confusión permitirá comprobar cuántas piezas ‘OK’ determina como ‘NOK’ y 
cuantas piezas ‘NOK’ da como ‘OK’, este último caso el peor posible conocido como falso 
positivo. En el ámbito industrial y más cuando se trata de una multinacional, prima la calidad 
antes que la eficiencia. Por tal motivo, a la hora de realizar estudiar los resultados de la matriz 
de confusión nos fijaremos principalmente en los falsos positivos. Además, también hay que 
tener en cuenta que cuando trabajas con clientes, en el caso de se envíen 10.000 piezas 
basta que una esté defectuosa para que se devuelva el pack completo de vuelta alegando 
que es un pack defectuoso. Gracias a esto, podemos ver la importancia de sobre todo detectar 
los casos mencionados. 
 
Figura 5.4 Matriz de confusión (Fuente: [30]) 
La matriz de confusión ha servido para poder dar por válidos los resultados arrojados por las 
funciones de rendimiento y de pérdida. Ha sido por lo tanto más utilizada a modo de validación 
que de mejora de los resultados. 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 35 
 
5.4. Aumento de imágenes del tipo falsos negativos y positivos 
Durante los primeros entrenamientos se puede observar como la red tiene un número mucho 
mayor de falsos positivos que de falsos negativos. En la mayoría de los casos, los falsos 
negativos son imágenes que aparecen un poco borrosas o dónde la fotografía se ha desviado 
más de lo normal. Por lo tanto, sobre éstas imágenes no se tiene tanto margen de actuación. 
Por otro lado, los falsos positivos han sido mayoritariamente casos en los que lo único que 
estaba girado era la chapa. Estos casos serán complicados de diferenciar debido a su gran 
parecido con una imagen correcta. 
Con el fin de aumentar la precisión disminuyendo el número de falsos positivos se han tomado 
mayor proporción de imágenes de este tipo. Además, aunque esto pueda parecer que 
empeora los resultados de la red consigue que ésta tenga un comportamiento más robusto 
frente a las variaciones que pueda haber. 
 
 
Pág. 36 Memoria 
 
6. Resultado pruebas 
- Batch = 2 y Epoch = 10 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
epoch loss accuracy val_loss 
 
val_accuracy 
1 0,3833 0,8443 0,3093 0,8617 
2 0,2776 0,8962 0,232 0,9144 
3 0,2412 0,9086 0,2114 0,9183 
4 0,2182 0,9138 0,2229 0,9217 
5 0,1964 0,9207 0,1811 0,9233 
6 0,1763 0,9302 0,2072 0,925 
7 0,1575 0,9379 0,167 0,9372 
8 0,142 0,9471 0,1607 0,9372 
9 0,1296 0,9467 0,136 0,9489 
10 0,1133 0,9548 0,1361 0,9472 
0.8
0.85
0.9
0.95
1
1 2 3 4 5 6 7 8 9 10
Acc, Val_acc para 10 
epochs
 accuracy val_accuracy
0
0.1
0.2
0.3
0.4
0.5
1 2 3 4 5 6 7 8 9 10
Loss, Val_loss para 
10 epochs
 loss val_loss
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 37 
 
- Batch = 5 y Epoch = 30 
 
epoch loss accuracy val_loss 
 
val_accuracy 
1 0,4094 0,8329 0,3511 0,8411 
2 0,3108 0,8769 0,2505 0,9189 
3 0,2569 0,9045 0,2288 0,9172 
4 0,2331 0,9079 0,2459 0,9094 
5 0,2185 0,9131 0,2001 0,92 
6 0,2006 0,9214 0,2234 0,9211 
7 0,187 0,9276 0,1914 0,9339 
8 0,1725 0,9338 0,1768 0,9339 
9 0,1614 0,9357 0,1592 0,9406 
10 0,1466 0,9407 0,1537 0,9417 
11 0,1336 0,9464 0,1359 0,9511 
12 0,1218 0,9545 0,137 0,9417 
13 0,1128 0,9552 0,119 0,9572 
14 0,1062 0,9576 0,127 0,9483 
15 0,0971 0,9619 0,1499 0,9383 
16 0,089 0,9645 0,1112 0,9539 
17 0,0797 0,9717 0,1145 0,9506 
18 0,0751 0,9717 0,1017 0,9572 
19 0,0671 0,975 0,0926 0,965 
20 0,0622 0,9771 0,0944 0,9644 
21 0,0569 0,9802 0,084 0,9728 
22 0,0507 0,9814 0,0821 0,9722 
23 0,046 0,9836 0,0915 0,9628 
24 0,0436 0,9843 0,0738 0,9728 
25 0,0388 0,9874 0,1074 0,9622 
26 0,0351 0,9893 0,1073 0,9606 
27 0,0305 0,9905 0,0857 0,9706 
28 0,0308 0,9902 0,0855 0,9694 
29 0,0257 0,9919 0,1316 0,9556 
30 0,0235 0,9936 0,0745 0,9772 
Pág. 38 Memoria 
 
 
 
 
 
- Batch = 10 y Epoch = 40 
 
epoch loss accuracy val_loss 
 
val_accuracy 
1 0,4143 0,8348 0,3754 0,8383 
2 0,3422 0,8517 0,289 0,8833 
3 0,2834 0,8812 0,2492 0,9111 
4 0,2454 0,9024 0,2775 0,8794 
5 0,2264 0,9129 0,2033 0,9261 
6 0,2059 0,919 0,2576 0,8922 
7 0,1884 0,9276 0,1941 0,9306 
8 0,1774 0,9329 0,2417 0,9061 
9 0,1628 0,9367 0,16 0,9411 
10 0,1525 0,94 0,2146 0,9128 
11 0,1411 0,9467 0,1416 0,9511 
12 0,1303 0,9495 0,1423 0,945 
13 0,1227 0,9521 0,1494 0,9433 
14 0,1123 0,9574 0,197 0,9233 
15 0,105 0,9619 0,175 0,9322 
16 0,0956 0,9645 0,1268 0,9506 
17 0,0875 0,9688 0,1089 0,9578 
18 0,0795 0,9712 0,1051 0,96 
19 0,0679 0,9776 0,1392 0,9411 
20 0,064 0,9769 0,1077 0,9594 
0
0.1
0.2
0.3
0.4
0.5
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Loss, Val_Loss para 
30 epochs
 loss val_loss
0.8
0.85
0.9
0.95
1
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29
Acc, Val_acc para 30 
epochs
 accuracy val_accuracy
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 39 
 
21 0,0581 0,9795 0,0892 0,9694 
22 0,051 0,9833 0,0895 0,9689 
23 0,0461 0,9838 0,0874 0,9678 
24 0,0433 0,9857 0,081 0,9761 
25 0,037 0,9893 0,1463 0,9522 
26 0,0329 0,9907 0,1157 0,9583 
27 0,0282 0,9917 0,0928 0,9683 
28 0,03 0,9905 0,0788 0,9744 
29 0,0237 0,994 0,0886 0,9694 
30 0,022 0,994 0,0847 0,9767 
31 0,0207 0,994 0,0894 0,97 
32 0,0186 0,9936 0,0824 0,9733 
33 0,0142 0,9969 0,0714 0,98 
34 0,0129 0,9971 0,0999 0,9706 
35 0,0103 0,9974 0,0854 0,9744 
36 0,0096 0,9981 0,072 0,9811 
37 0,0079 0,9988 0,1004 0,9711 
38 0,0074 0,9988 0,0828 0,9794 
39 0,0075 0,9983 0,1031 0,9656 
40 0,0101 0,9969 0,0874 0,9756 
 
 
 
 
 
0
0.1
0.2
0.3
0.4
0.5
1 4 7 10 13 16 19 22 25 28 31 34 37 40
Loss, Val_Loss para 40 
epochs
loss val_loss
0.8
0.85
0.9
0.95
1
1 3 5 7 9 111315171921232527293133353739
Acc, Val_accpara 40 
epochs
 accuracy val_accuracy
Pág. 40 Memoria 
 
- Batch = 15 y Epoch = 70 
 
epoch loss accuracy val_loss 
 
val_accuracy 
1 0,4208 0,8312 0,3792 0,8383 
2 0,3499 0,8502 0,292 0,8639 
3 0,2867 0,8793 0,2655 0,905 
4 0,2532 0,9 0,2543 0,8839 
5 0,2333 0,9083 0,2041 0,9283 
6 0,2203 0,9119 0,259 0,8889 
7 0,2083 0,9195 0,1833 0,9361 
8 0,198 0,92 0,1755 0,9372 
9 0,184 0,9252 0,1789 0,9317 
10 0,1776 0,931 0,2125 0,8956 
11 0,167 0,9333 0,1518 0,9489 
12 0,1571 0,9424 0,1526 0,9422 
13 0,1482 0,9393 0,1387 0,9483 
14 0,1394 0,9479 0,1394 0,9444 
15 0,1367 0,9474 0,1262 0,9522 
16 0,1278 0,9519 0,1285 0,9461 
17 0,1196 0,954 0,1313 0,9456 
18 0,1133 0,96 0,1218 0,9472 
19 0,1074 0,9583 0,1068 0,9561 
20 0,0973 0,9657 0,1153 0,9572 
21 0,0921 0,9655 0,1049 0,9583 
22 0,0885 0,9674 0,0964 0,96 
23 0,0821 0,9683 0,0898 0,9611 
24 0,078 0,9726 0,0963 0,9589 
25 0,07 0,9757 0,0928 0,96 
26 0,0679 0,9762 0,1122 0,95 
27 0,0633 0,9764 0,0739 0,9711 
28 0,0581 0,9793 0,0862 0,9611 
29 0,0532 0,9805 0,0729 0,9744 
30 0,0519 0,9824 0,0672 0,9733 
31 0,0484 0,9833 0,0644 0,9772 
32 0,0427 0,9879 0,1279 0,9439 
33 0,0407 0,9852 0,0552 0,98 
340,0349 0,9888 0,063 0,9739 
35 0,0327 0,99 0,0533 0,9817 
36 0,0316 0,991 0,0579 0,9767 
37 0,0321 0,9914 0,0497 0,9822 
38 0,0256 0,9929 0,0759 0,9672 
39 0,0235 0,9938 0,0766 0,97 
40 0,0222 0,9943 0,0446 0,9822 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 41 
 
41 0,0183 0,9962 0,051 0,9811 
42 0,0177 0,9952 0,0421 0,9828 
43 0,0161 0,9969 0,0804 0,9667 
44 0,0155 0,9964 0,0626 0,9772 
45 0,014 0,9967 0,0513 0,9817 
46 0,0128 0,9971 0,0414 0,9839 
47 0,0126 0,9969 0,0513 0,9817 
48 0,0102 0,9981 0,0466 0,9817 
49 0,0114 0,9974 0,0366 0,9889 
50 0,0078 0,999 0,0342 0,9889 
51 0,0065 0,9995 0,0441 0,9839 
52 0,0059 0,9993 0,0544 0,9817 
53 0,0047 0,9995 0,05 0,9817 
54 0,0057 0,999 0,0444 0,9844 
55 0,0048 0,9988 0,0323 0,9889 
56 0,0047 0,999 0,0377 0,9878 
57 0,0043 0,999 0,0392 0,9872 
58 0,0032 0,9993 0,0363 0,9878 
59 0,0023 0,9995 0,0422 0,9861 
60 0,0022 1 0,0679 0,98 
61 0,0022 0,9998 0,034 0,9889 
62 0,002 0,9998 0,0392 0,9867 
63 0,0016 0,9998 0,0347 0,9894 
64 0,0012 1 0,0422 0,9883 
65 0,00090571 1 0,0518 0,9844 
66 0,0013 0,9998 0,0499 0,985 
67 0,00091413 1 0,042 0,9889 
68 0,00076639 1 0,0336 0,9894 
69 0,0017 0,9993 0,0361 0,9906 
70 0,00043784 1 0,0495 0,9861 
 
0
0.1
0.2
0.3
0.4
0.5
1 6 11 16 21 26 31 36 41 46 51 56 61 66
Loss, Val_Loss para 
70 epochs
 loss val_loss
0.8
0.85
0.9
0.95
1
1 6 11 16 21 26 31 36 41 46 51 56 61 66
Acc, Val_accpara 70 
epochs
 accuracy val_accuracy
Pág. 42 Memoria 
 
- Batch = 40 y Epoch = 80 
 
epoch loss accuracy val_loss val_accuracy 
1 0,4537 0,8312 0,4165 0,8383 
2 0,4209 0,8312 0,3978 0,8383 
3 0,4002 0,8312 0,375 0,8383 
4 0,3751 0,8371 0,3613 0,84 
5 0,3402 0,8529 0,3063 0,8678 
6 0,3111 0,8676 0,3306 0,8572 
7 0,2955 0,8757 0,2761 0,9078 
8 0,2724 0,8893 0,2574 0,8822 
9 0,2578 0,8936 0,2787 0,8956 
10 0,2468 0,9014 0,2211 0,9267 
11 0,2328 0,9071 0,2314 0,91 
12 0,2261 0,9112 0,2041 0,9328 
13 0,2137 0,9212 0,2001 0,9294 
14 0,21 0,9169 0,1986 0,9267 
15 0,2051 0,9214 0,1879 0,9372 
16 0,2025 0,9164 0,2057 0,9172 
17 0,1922 0,9267 0,1831 0,9339 
18 0,1905 0,9233 0,1757 0,9383 
19 0,1824 0,9283 0,1746 0,9444 
20 0,1785 0,9343 0,1706 0,9433 
21 0,1759 0,9324 0,1617 0,9461 
22 0,1662 0,9352 0,1637 0,9456 
23 0,1614 0,9379 0,2486 0,88 
24 0,1652 0,934 0,1736 0,9317 
25 0,1556 0,9398 0,1654 0,9367 
26 0,1517 0,944 0,1762 0,9289 
27 0,1424 0,9457 0,1366 0,9506 
28 0,1399 0,945 0,1365 0,9489 
29 0,1358 0,9507 0,1305 0,9544 
30 0,1349 0,9481 0,1312 0,9517 
31 0,1278 0,9524 0,1661 0,9333 
32 0,1196 0,956 0,1346 0,955 
33 0,1144 0,9619 0,1185 0,9533 
34 0,1154 0,9588 0,1154 0,9533 
35 0,1074 0,961 0,1197 0,9606 
36 0,11 0,96 0,1133 0,9617 
37 0,1027 0,9619 0,1048 0,9644 
38 0,1009 0,9648 0,1147 0,9533 
39 0,093 0,9657 0,1047 0,9628 
40 0,0916 0,9681 0,0955 0,9644 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 43 
 
41 0,0938 0,9655 0,0966 0,9617 
42 0,0827 0,9719 0,0899 0,9672 
43 0,0764 0,9738 0,0971 0,9661 
44 0,0823 0,969 0,0892 0,9711 
45 0,0746 0,9724 0,0826 0,9672 
46 0,0714 0,9752 0,0885 0,9656 
47 0,0708 0,976 0,1076 0,9628 
48 0,0616 0,9788 0,0855 0,97 
49 0,0621 0,9776 0,0755 0,9694 
50 0,0667 0,9769 0,0749 0,9689 
51 0,0584 0,981 0,0792 0,9644 
52 0,0572 0,981 0,0805 0,9656 
53 0,052 0,9836 0,0859 0,9633 
54 0,0495 0,9836 0,0802 0,9667 
55 0,0506 0,9838 0,067 0,9717 
56 0,0458 0,9855 0,0691 0,98 
57 0,0479 0,9843 0,0608 0,9789 
58 0,0406 0,9869 0,0612 0,9756 
59 0,0391 0,9876 0,0574 0,9789 
60 0,0411 0,9888 0,0607 0,98 
61 0,0361 0,9895 0,0555 0,9817 
62 0,0335 0,9905 0,0573 0,9783 
63 0,0337 0,9898 0,0526 0,9817 
64 0,032 0,9914 0,0546 0,9794 
65 0,0281 0,9936 0,0796 0,9706 
66 0,028 0,9919 0,0542 0,9789 
67 0,0286 0,9938 0,0575 0,9778 
68 0,0255 0,994 0,058 0,9806 
69 0,0231 0,994 0,0466 0,9811 
70 0,0212 0,995 0,0572 0,9772 
71 0,0202 0,9952 0,0458 0,9844 
72 0,0192 0,995 0,0554 0,9794 
73 0,0228 0,9948 0,0527 0,9789 
74 0,015 0,9971 0,061 0,9767 
75 0,0265 0,9926 0,0497 0,9811 
76 0,0104 0,9998 0,055 0,9806 
77 0,0156 0,9974 0,0429 0,9839 
78 0,0155 0,9962 0,0467 0,9828 
79 0,0104 0,999 0,0501 0,9806 
80 0,0109 0,9986 0,0875 0,9694 
 
 
Pág. 44 Memoria 
 
 
6.1. Resultado pruebas 
Como se ha podido observar, aunque la prueba con batch = 40 y epoch = 80 no ha obtenido 
el mejor resultado en cuanto a precisión y pérdida, sí ha obtenido el mejor resultado en la 
matriz de confusión obteniendo la siguiente: 
 
Tabla 6.1 Matriz de confusión batch 40 y epoch 80 
MATRIZ CONFUSIÓN Valores reales 
Positivo Negativo 
Valores 
predicción 
Positivo 4999 109 
Negativo 1 891 
 
Se puede observar como el mayor problema son los 109 Falsos Positivos que son los que 
empeoran el rendimiento de la red. Después de haber obtenido los mapas de desciente de 
gradiente y de saliencia se puede observar que, como ya se sospechó, se debe a los casos 
dónde únicamente la chapa está girada respecto la apertura. 
0
0.1
0.2
0.3
0.4
0.5
1 5 9 1317212529333741454953576165697377
Loss, Val_Loss para 80 
epochs
 loss val_loss
0.8
0.85
0.9
0.95
1
1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77
Acc, Val_accpara 80 
epochs
 accuracy val_accuracy
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 45 
 
 
Figura 6.1 Mapa de saliencia y descenso de gradiente para caso de apertura de la lata mal orientada 
Como ya se comentó uno de los principales inconvenientes que presentaba la red era el 
hecho de fijarse en los brillos y sombras de la lata. Esto se conseguiría aumentando la base 
de datos en gran medida para que se fijara en lo realmente importante. Aunque, sin 
contradecir a la red, si ha encontrado una relación entre los defectos y éstos brillos será 
porque existe parte de verdad en ello. 
Como observación final, se puede observar cómo cuando en el entrenamiento de batch 15 y 
epoch 70, tanto la función de precisión como de pérdida llegan a un valle a partir del cual no 
aumentan ni disminuyen respectivamente. Por el contrario, en la ejecución con batch 40 y 
epoch 80 se puede ver como dicho valle todavía no ha sido alcanzado y eso significa un 
margen de mejora que como se comenta más adelante en gran parte ha sido debido a la 
falta de potencia de programación. Independientemente de la mejora que pueda haber se 
considera un resultado muy exitoso para haberse obtenido la base de datos de manera 
casera. 
Pág. 46 Memoria 
 
7. Presupuesto 
A continuación, se detalla una tabla sobre los gastos de equipo y personales que han supuesto 
el proyecto. Aunque Google Colab ha sido utilizado de forma gratuita ha sido necesario 
esperar entre diferentes pruebas por alcanzar la máxima memoria del pack gratuito. Por ello, 
se ha echado en falta poseer la herramienta Google Colab Pro que habría supuesto un gasto 
de 10€/mes. 
 
Tabla 7.1 Coste del equipo 
EQUIPO PRECIO (€ / año) 
total: 4 años 
TIEMPO UTILIZADO 
(meses) 
AMORTIZADO (€) 
Ordenador 150 6 75 
Cámara 113 6 56,5 
Latas 20 - 20 
TOTAL AMORTIZADO (€) 151,5 
 
Tabla 7.2 Coste del personal 
TAREAS COSTE (€/HORA) TIEMPO TOTAL (H) TOTAL (€) 
Programación 15 500 7500 
Memoria 10 100 1000 
COSTE TOTAL (€) 8500 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 47 
 
8. Impacto ambiental 
En este capítulo se hará referencia al posible impacto que podría tener la realización de este 
trabajo. 
Aunque el proyecto en sí no genera ningún impacto sí lo hace la utilización de equipos 
informáticos utilizados para su realización, en especial, de las baterías de los ordenadores 
teniendo en cuenta que las tarjetas gráficas tienen una vida mucho mayor. 
Por otro lado, las latas utilizadas para la experimentación al ser recicladas correctamente no 
causan directamente un impacto ambiental. Aún así, sí existe una contaminación indirecta 
causa por la deforestación de las zonascercanas de las minas dónde se extrae el aluminio 
[31]. 
Como reflexión final, hay que destacar que en el ámbito de la investigación una herramienta 
como el aprendizaje profundo tiene un impacto favorable en otros sentidos. Es gracias a 
herramientas como esta que se ha descubierto y se combate problemas actuales como el 
calentamiento global. Véase el caso del investigador de la Universidad de Oxford, Philip Stier, 
o catedrático de física atmosférica, Duncan Watson-Parris, investigador posdoctoral, que 
combinando el machine learning y las ciencias climáticas combaten problemas tan 
importantes [32]. Es por ello que aunque es importante fijarse en el impacto ambiental de 
proyectos como este se pueda utilizar igualmente para intentar solucionarlos. 
 
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 49 
 
Conclusiones 
El resultado de este trabajo es muy satisfactorio. Tanto la obtención completa de la base de 
datos como los buenos resultados de obtenidos han sido mejores de lo esperado. Se 
considera que a pesar de dar muy buenos resultados todavía sería una herramienta para ser 
utilizada bajo la supervisión de un técnico. Como se ha visto con anterioridad un fallo pasado 
por alto podría significar grandes pérdidas dentro de la empresa. 
Como se ha podido comprobar el aprendizaje profundo es una herramienta con un potencial 
desconocido todavía. Simplemente observando los últimos años se puede apreciar cómo ha 
pasado tanto de estar a la cabeza de la investigación en sí misma como también sirviendo de 
herramienta auxiliar en otros campos. Es el caso de asistentes digitales como Siri o Alexa, el 
reconocimiento de voz, la detección de rostros, la robótica. Por ello, al influir en tantos campos 
de forma directa lo hace en muchos otros de forma indirecta. 
Uno de los ámbitos dónde tiene un enorme potencial es el de la Medicina para detectar 
determinadas anomalías e incluso operar a un paciente. Los datos de un caso tan complejo 
como el Covid-19 también podría servir para entrenar una red y intentar predecirlo para 
minimizar su impacto en un futuro. 
Existe por lo tanto una gran responsabilidad por parte de las personas con autoridad dentro 
de este sector de hacer un uso ético del aprendizaje profundo. Un uso que, intentando limitar 
al máximo su impacto, pueda influir de forma favorable en la mejora de calidad vida de las 
personas. Con este trabajo además se ha demostrado que con un equipo muy básico se 
pueden conseguir resultados satisfactorios. 
Algunos de las investigaciones que han parecido más interesantes del último año son el caso 
de la empresa Insilico Medicine, Inc. que utiliza estos recursos para la investigación contra el 
cáncer y en enfermedades relacionadas con la edad [33][34]. 
Otro buen ejemplo es Leo Meyerovich, CEO of Graphistry Inc. que defiende cómo las GPUs 
y el Machine Learning están ayudando a las grandes organizaciones a combatir contra los 
ciberataques avisando con mayor rapidez entre ellas [35]. 
Por otro lado, uno de los claros ejemplos de lo imprescindible que es hacer buen uso del Deep 
Learning es el caso de las armas autónomas. Se empezó como área de investigación y se 
siguió aplicando a cada uno de los sectores. El hecho de que se aplique a la industria del 
armamento hace pensar hasta qué punto puede llegar a perjudicar esta área [36]. 
Finalmente, como visión de futuro sobre este caso determinado se ha echado en falta mayor 
potencia de programación. Mayoritariamente, a la hora de obtener una buena precisión y 
Pág. 50 Memoria 
 
mínima pérdida se ha un límite de epoch debido a significar demasiado tiempo de ejecución. 
De no haber tenido esta limitación se podría haber obtenido un resultado aún mejor y lo que 
es más importante, una red aún más robusta. Además, debido a haber aplicado el concepto 
de data augmentation la red podría haber estandarizado defectos demasiado y no funcionar 
con otros casos. Debido a esto, otro de las cosas a mejorar habría sido conseguir una base 
de datos amplia sin haber tenido que acudir a esta herramienta y entonces podría 
considerarse aún más fiable.
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 51 
 
Agradecimientos 
En primer lugar, estoy muy agradecido a la empresa Robert Bosch por su introducción al 
ámbito del Deep Learning y la Visión Artificial y sus aplicaciones, en especial, a Rubén Ugarte 
por su continua paciencia y ayuda a lo largo de las prácticas. 
Me gustaría también agradecer a mi tutor Cecilio Angulo Bahon por el seguimiento realizado 
y su implicación a lo largo del trabajo. 
Finalmente, me gustaría agradecer a la universidad y a mis compañeros el acompañamiento 
realizado a lo largo de la carrera y su motivación a sacar de ella el máximo partido. 
 
 
 
 
 
 
 
 
 
 
 
 
 
Pág. 52 Memoria 
 
Anexo de código 
 
Se ha decidido adjuntar el código por si algún lector lo encontrara de ayuda o quisiera incluso 
utilizarlo para aplicarlo sobre otro objeto. Por motivos prácticos se ha creado un directorio 
público en github [37].
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 53 
 
Bibliografia 
[1] Deep Learning, qué es el aprendizaje profundo, cómo funciona y cuáles son los casos 
de aplicación. En: [en línea]. Disponible en: https://www.innovaciondigital360.com/i-
a/deep-learning-que-es-el-aprendizaje-profundo-como-funciona-y-cuales-son-los-
casos-de-aplicacion/. 
[2] Deep Learning curso de coursera de Andrew Ng. En: [en línea]. Disponible en: 
https://es.coursera.org/specializations/deep-learning. 
[3] Kanishka Nithin.Da, Bagavathi Sivakumar Pb. Generic Feature Learning in Computer 
Vision. En: [en línea]. Disponible en: 
https://www.sciencedirect.com/science/article/pii/S1877050915021651. 
[4] Aplicaciones del deep learning en la actualidad. En: [en línea]. Disponible en: 
https://www.tokioschool.com/noticias/aplicaciones-del-deep-learning/. 
[5] Pedro Larrañaga, Iñaki Inza, Abdelmalik Moujahid. UNIVERSIDAD DEL PAÍS VASCO. 
DEPARTAMENTOD DE CIENCIAS DE LA COMPUTACIÓN DE INTELIGENCIA 
ARTIFICIAL. Tema 8: Redes Neuronales. En: [en línea]. Disponible en: 
http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t8neuronales.pdf. 
[6] El modelo de redes neuronales. En: [en línea]. Disponible en: 
https://www.ibm.com/docs/es/spss-modeler/SaaS?topic=networks-neural-model. 
[7] Carlos Alberto Ruiz, Marta Susana Basualdo. Redes Neuronales: Conceptos Básicos y 
Aplicaciones. En: [en línea]. Disponible en: 
https://www.frro.utn.edu.ar/repositorio/catedras/quimica/5_anio/orientadora1/monograia
s/matich-redesneuronales.pdf. 
[8] Conceptos básicos sobre Redes Neuronales. En: [en línea]. Disponible en: 
http://grupo.us.es/gtocoma/pid/pid10/RedesNeuronales.htm. 
[9] R. Rojas. Neural Networks: A Systematic Introduction, Springer, 1996 .ISBN 3-540-
60505-3. 
[10] Redes neuronales. En: [en línea]. Disponible en: https://bootcampai.medium.com/redes-
neuronales-13349dd1a5bb. 
[11] Miguel Sotaquirá. La función de Activación. En: [en línea]. Disponible en: 
https://www.codificandobits.com/blog/funcion-de-activacion/. 
https://www.innovaciondigital360.com/i-a/deep-learning-que-es-el-aprendizaje-profundo-como-funciona-y-cuales-son-los-casos-de-aplicacion/
https://www.innovaciondigital360.com/i-a/deep-learning-que-es-el-aprendizaje-profundo-como-funciona-y-cuales-son-los-casos-de-aplicacion/
https://www.innovaciondigital360.com/i-a/deep-learning-que-es-el-aprendizaje-profundo-como-funciona-y-cuales-son-los-casos-de-aplicacion/
https://www.tokioschool.com/noticias/aplicaciones-del-deep-learning/
http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t8neuronales.pdf
https://www.ibm.com/docs/es/spss-modeler/SaaS?topic=networks-neural-model
https://www.frro.utn.edu.ar/repositorio/catedras/quimica/5_anio/orientadora1/monograias/matich-redesneuronales.pdf
https://www.frro.utn.edu.ar/repositorio/catedras/quimica/5_anio/orientadora1/monograias/matich-redesneuronales.pdfhttp://grupo.us.es/gtocoma/pid/pid10/RedesNeuronales.htm
https://bootcampai.medium.com/redes-neuronales-13349dd1a5bb
https://bootcampai.medium.com/redes-neuronales-13349dd1a5bb
https://www.codificandobits.com/blog/funcion-de-activacion/
Pàg. 54 Memòria 
 
[12] Matriz de convolución. En: [en línea]. Disponible en: https://docs.gimp.org/2.6/es/plug-in-
convmatrix.html. 
[13] Haykin, Simon (1998). Neural Networks: A Comprehensive Foundation. Prentice Hall. 
ISBN 0132733501. 
[14] ¿Cómo funcionan las Convolutional Neural Network? Visión por Ordenador. En: [en 
línea]. Disponible en: https://www.aprendemachinelearning.com/como-funcionan-las-
convolutional-neural-networks-vision-por-ordenador/. 
[15] Keras-team. En: [en línea]. Disponible en: https://github.com/keras-team/keras-
io/blob/master/examples/vision/grad_cam.py. 
[16] What is the rule of thumb for ratio of positive to negative samples in a training dataset for 
best image classification? .En: [en línea]. Disponible en: https://www.quora.com/What-
is-the-rule-of-thumb-for-ratio-of-positive-to-negative-samples-in-a-training-dataset-for-
best-image-classification. 
[17] How to use Deep Learning when you have Limited Data. En: [en línea]. Disponible en: 
https://nanonets.com/blog/data-augmentation-how-to-use-deep-learning-when-you-
have-limited-data-part-2/. 
[18] Podareanu, Damian & Codreanu, Valeriu & Aigner, Sandra & Leeuwen, Caspar & 
Weinberg, Volker. (2019). Best Practice Guide - Deep Learning. 
10.13140/RG.2.2.31564.05769. En: [en línea]. Disponible en: 
https://www.researchgate.net/publication/332190148_Best_Practice_Guide_-
_Deep_Learning. 
[19] Jason Brownlee. Difference Between a Batch and an Epoch in a Neural Network. En: [en 
línea]. Disponible en: https://machinelearningmastery.com/difference-between-a-batch-
and-an-epoch/. 
[20] Yoshua Bengio, Yann LeCun: 3rd International Conference on Learning 
Representations, ICLR 2015, San Diego, CA, USA, May 7-9, 2015, Conference Track 
Proceedings. 2015. En: [en línea]. Disponible en: 
https://dblp.org/db/conf/iclr/iclr2015.html. 
[21] Loss vs Accuracy. En: [en línea]. Disponible en: 
https://kharshit.github.io/blog/2018/12/07/loss-vs-accuracy. 
[22] When to stop Training your Neural Network? En: [en línea]. Disponible en: 
https://medium.com/@pranoyradhakrishnan/when-to-stop-training-your-neural-network-
https://docs.gimp.org/2.6/es/plug-in-convmatrix.html
https://docs.gimp.org/2.6/es/plug-in-convmatrix.html
https://www.aprendemachinelearning.com/como-funcionan-las-convolutional-neural-networks-vision-por-ordenador/
https://www.aprendemachinelearning.com/como-funcionan-las-convolutional-neural-networks-vision-por-ordenador/
https://www.aprendemachinelearning.com/como-funcionan-las-convolutional-neural-networks-vision-por-ordenador/
https://github.com/keras-team/keras-io/blob/master/examples/vision/grad_cam.py
https://github.com/keras-team/keras-io/blob/master/examples/vision/grad_cam.py
https://www.quora.com/What-is-the-rule-of-thumb-for-ratio-of-positive-to-negative-samples-in-a-training-dataset-for-best-image-classification
https://www.quora.com/What-is-the-rule-of-thumb-for-ratio-of-positive-to-negative-samples-in-a-training-dataset-for-best-image-classification
https://www.quora.com/What-is-the-rule-of-thumb-for-ratio-of-positive-to-negative-samples-in-a-training-dataset-for-best-image-classification
https://nanonets.com/blog/data-augmentation-how-to-use-deep-learning-when-you-have-limited-data-part-2/
https://nanonets.com/blog/data-augmentation-how-to-use-deep-learning-when-you-have-limited-data-part-2/
https://www.researchgate.net/publication/332190148_Best_Practice_Guide_-_Deep_Learning
https://www.researchgate.net/publication/332190148_Best_Practice_Guide_-_Deep_Learning
https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/
https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/
https://dblp.org/db/conf/iclr/iclr2015.html
https://kharshit.github.io/blog/2018/12/07/loss-vs-accuracy
https://medium.com/@pranoyradhakrishnan/when-to-stop-training-your-neural-network-174ff0a6dea5
Detección de defectos en latas de refrescos mediante Deep Learning Pág. 55 
 
174ff0a6dea5. 
[23] Epoch vs Batch Size vs Iterations. En: [en línea]. Disponible en: 
https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9. 
[24] Qué es overfitting y underfitting y cómo solucionarlo. En: [en línea]. Disponible en: 
https://www.aprendemachinelearning.com/que-es-overfitting-y-underfitting-y-como-
solucionarlo/. 
[25] Daniel Cornejo Ruiz, Giancarlo Quispe Gavino. Aplicación del algoritmo 
Backpropagation de redes neuronales para determinar los niveles de morosidad en los 
alumnos de la Universidad Peruana Unión. En: [en línea]. Disponible en: 
https://revistas.upeu.edu.pe/index.php/ri_bi/article/download/908/876. 
[26] Jason Brownlee. How to Control the Stability of Training Neural Networks With the Batch 
Size. En: [en línea]. Disponible en: https://machinelearningmastery.com/how-to-control-
the-speed-and-stability-of-training-neural-networks-with-gradient-descent-batch-size/. 
[27] Hafidz Zulkifli. Understanding Learning Rates and How It Improves Performance in Deep 
Learning. En: [en línea]. Disponible en: https://towardsdatascience.com/understanding-
learning-rates-and-how-it-improves-performance-in-deep-learning-d0d4059c1c10. 
[28] Cachia, Arnaud & Mangin, Jean-François & Rivière, D & Kherif, Ferath & Boddaert, 
Nathalie & Andrade, Alexandre & Papadopoulos Orfanos, Dimitri & Poline, Jean-Baptiste 
& Bloch, Isabelle & Zilbovicius, Monica & Sonigo, P & Brunelle, Francis & Régis, Jean. 
(2003). A primal sketch of the cortex mean curvature: A morphogenesis based approach 
to study the variability of the folding patterns. IEEE transactions on medical imaging. 22. 
754-65. 10.1109/TMI.2003.814781. En: [en línea]. Disponible en: 
https://www.researchgate.net/publication/10651758_A_primal_sketch_of_the_cortex_m
ean_curvature_A_morphogenesis_based_approach_to_study_the_variability_of_the_f
olding_patterns. 
[29] What learning rate should I use? En: [en línea]. Disponible en: 
http://www.bdhammel.com/learning-rates/. 
[30] Juan Ignacio Barrios Arce. La matriz de confusión y sus métricas. Health Big Data. Link: 
https://www.juanbarrios.com/la-matriz-de-confusion-y-sus-metricas/. 
[31] Aluminio y bauxite: impacto socioambiental y alternativas de consume. En: [en línea]. 
Disponible en: https://www.ecofestes.com/aluminio-bauxita-impacto-socioambiental-
alternativas-de-consumo-n-47-es. 
https://medium.com/@pranoyradhakrishnan/when-to-stop-training-your-neural-network-174ff0a6dea5
https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9
https://www.aprendemachinelearning.com/que-es-overfitting-y-underfitting-y-como-solucionarlo/
https://www.aprendemachinelearning.com/que-es-overfitting-y-underfitting-y-como-solucionarlo/
https://revistas.upeu.edu.pe/index.php/ri_bi/article/download/908/876
https://machinelearningmastery.com/how-to-control-the-speed-and-stability-of-training-neural-networks-with-gradient-descent-batch-size/
https://machinelearningmastery.com/how-to-control-the-speed-and-stability-of-training-neural-networks-with-gradient-descent-batch-size/
https://towardsdatascience.com/understanding-learning-rates-and-how-it-improves-performance-in-deep-learning-d0d4059c1c10
https://towardsdatascience.com/understanding-learning-rates-and-how-it-improves-performance-in-deep-learning-d0d4059c1c10
https://www.researchgate.net/publication/10651758_A_primal_sketch_of_the_cortex_mean_curvature_A_morphogenesis_based_approach_to_study_the_variability_of_the_folding_patterns
https://www.researchgate.net/publication/10651758_A_primal_sketch_of_the_cortex_mean_curvature_A_morphogenesis_based_approach_to_study_the_variability_of_the_folding_patterns
https://www.researchgate.net/publication/10651758_A_primal_sketch_of_the_cortex_mean_curvature_A_morphogenesis_based_approach_to_study_the_variability_of_the_folding_patternshttp://www.bdhammel.com/learning-rates/
https://www.juanbarrios.com/la-matriz-de-confusion-y-sus-metricas/
https://www.ecofestes.com/aluminio-bauxita-impacto-socioambiental-alternativas-de-consumo-n-47-es
https://www.ecofestes.com/aluminio-bauxita-impacto-socioambiental-alternativas-de-consumo-n-47-es
Pàg. 56 Memòria 
 
[32] Werner Vogels. Cómo entender el cambio climático con el Machine Learning. En: [en 
línea]. Disponible en: https://revistabyte.es/tendencias-tic/cambio-climatico-machine-
learning/. 
[33] Miguel Sotaquirá. La evolución del Deep Learning y casos de éxito. En: [en línea]. 
Disponible en: https://www.codificandobits.com/curso/fundamentos-deep-learning-
python/introduccion-deep-learning-4-evolucion-deep-learning/. 
[34] Insilico Medicine, Inc. to Utilize Deep Learning for Drug Repurposing and Discovery in 
Cancer and Age-Related Diseases. En: [en línea]. Disponible en: 
http://www.prweb.com/releases/2015/06/prweb12797010.htm. 
 
[35] Brad Nemire. Share Your Science: Machine Learning Helps Fortune 500 Companies 
Hunt Cyber Attacks and Outages. En: [en línea]. Disponible en: 
https://developer.nvidia.com/blog/share-your-science-machine-learning-helps-fortune-
500-companies-hunt-cyber-attacks-and-outages/. 
 
[36] Lethal Autonomous Weapons Pledge. En: [en línea]. Disponible en: 
https://futureoflife.org/2018/06/05/lethal-autonomous-weapons-pledge/. 
 
[37] Código en GitHub. Disponible en: https://github.com/pedriip/red-neuronal-defectos-
latas/blob/main/red%20neuronal%20defectos%20refrescos.ipynb. 
 
 
 
 
 
 
 
 
https://revistabyte.es/tendencias-tic/cambio-climatico-machine-learning/
https://revistabyte.es/tendencias-tic/cambio-climatico-machine-learning/
https://www.codificandobits.com/curso/fundamentos-deep-learning-python/introduccion-deep-learning-4-evolucion-deep-learning/
https://www.codificandobits.com/curso/fundamentos-deep-learning-python/introduccion-deep-learning-4-evolucion-deep-learning/
http://www.prweb.com/releases/2015/06/prweb12797010.htm
https://developer.nvidia.com/blog/share-your-science-machine-learning-helps-fortune-500-companies-hunt-cyber-attacks-and-outages/
https://developer.nvidia.com/blog/share-your-science-machine-learning-helps-fortune-500-companies-hunt-cyber-attacks-and-outages/
https://futureoflife.org/2018/06/05/lethal-autonomous-weapons-pledge/
https://github.com/pedriip/red-neuronal-defectos-latas/blob/main/red%20neuronal%20defectos%20refrescos.ipynb
https://github.com/pedriip/red-neuronal-defectos-latas/blob/main/red%20neuronal%20defectos%20refrescos.ipynb
	1. Introducción
	1.1. Contexto del proyecto
	1.2. Objetivos del proyecto
	1.3. Origen del proyecto
	2. Redes neuronales artificiales
	2.1. Introducción al Deep learning
	2.2. Capas
	2.3. Neurona artificial
	2.4. Función de activación
	2.5. Redes neuronales convolucionales
	3. Hardware y software
	3.1. Hardware
	3.2. Software
	3.2.1. Procesamiento de imágenes
	3.2.2. Entorno de desarrollo
	4. Base de datos de imágenes
	4.1. Características de los defectos
	4.2. Resolución de las imágenes
	4.3. Obtención de la base de datos
	4.4. Filtros o segmentación considerada
	4.5. Data augmentation
	4.6. Definición de modelo
	4.7. Entrenamiento de la red
	4.7.1. Tamaño de Epoch y de Batch
	4.7.2. Precisión y pérdida
	4.7.3. Set de validación
	4.7.4. Overfitting y underfitting
	5. Análisis de rendimiento y mejora
	5.1. Backpropagation, Epoch y batch
	5.2. Learning Rate
	5.3. Ratio OK/NOK y matriz de confusión
	5.4. Aumento de imágenes del tipo falsos negativos y positivos
	6. Resultado pruebas
	6.1. Resultado pruebas
	7. Presupuesto
	8. Impacto ambiental
	Conclusiones
	Agradecimientos
	Anexo de código
	Bibliografia

Continuar navegando