Descarga la aplicación para disfrutar aún más
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
Compartir