Full text
Treball de Fi de Màster Màster Universitari en Enginyeria Industrial Intel·ligència Artificial a l'Edge: Menjador d’ocells intel·ligent MEMÒRIA Autor/a: Nil Núñez i Garcia Director/a: Vicenç Parisi Baradad Convocatòria: 09/2024 Escola Tècnica Superior d’Enginyeria Industrial de Barcelona
Pàg. 2 Memòria
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 3 Resum Aquest treball de fi de màster es centra en el desenvolupament d'un sistema autònom de reconeixement d'espècies d'aus, emprant tecnologies avançades com la visió per computador i l’Edge Computing. L'objectiu principal és dissenyar un dispositiu capaç d'identificar aus en una menjadora i dispensar aliment de manera selectiva, operant sense necessitat de connexió a internet. Per assolir aquests objectius, es fa una revisió exhaustiva de la literatura sobre tècniques d'aprenentatge automàtic i visió per computador, amb un enfocament particular en mètodes eficaços i portables a terme amb coneixements bàsics de programació i xarxes neuronals per a la classificació d’imatges. Es recopila una base de dades pròpia d'imatges d'aus, que s’utilitza per reentrenar un model de xarxa neuronal convolucional preentrenat des de Python, utilitzant la llibreria TensorFlow i la seva API Keras. A més, s’avaluen diversos models de classificació mitjançant tècniques estadístiques, seleccionant el més adequat en termes de precisió i eficiència. El model final es desplega en un dispositiu d'Edge Computing, específicament un Jetson Nano, optimitzant el sistema per permetre la identificació en temps real amb una càmera i tot un disseny hardware específic per a l’aplicació. Les proves realitzades en diverses condicions d'il·luminació i clima confirmen la robustesa i l'eficàcia del sistema. Els resultats obtinguts no només compleixen els objectius inicials sinó que també obren la porta a futures millores, com l'ampliació del sistema per incloure més espècies i la integració d'algorismes de processament més avançats.
Pàg. 4 Memòria Resumen Este trabajo de fin de máster se centra en el desarrollo de un sistema autónomo de reconocimiento de especies de aves, utilizando tecnologías avanzadas como visión por computador y Edge Computing. El objetivo principal es diseñar un dispositivo capaz de identificar aves en un comedero y dispensar alimento de forma selectiva, operando sin necesidad de conexión a internet. Para alcanzar estos objetivos, se realiza una revisión exhaustiva de la literatura sobre técnicas de aprendizaje automático y visión por computador, con un enfoque particular en métodos eficaces y llevables a cabo con conocimientos básicos de programación y redes neuronales para la clasificación de imágenes. Se recopila una base de datos propia de imágenes de aves, que se utiliza para reentrenar un modelo de red neuronal convolucional preentrenado desde Python, utilizando la librería TensorFlow y su API Keras. Además, se evalúan varios modelos de clasificación mediante técnicas estadísticas, seleccionando el más adecuado en términos de precisión y eficiencia. El modelo final se despliega en un dispositivo de Edge Computing, específicamente un Jetson Nano, optimizando el sistema para permitir la identificación en tiempo real con una cámara y todo un diseño hardware específico para la aplicació. Las pruebas realizadas en diversas condiciones de iluminación y clima confirman la robustez y eficacia del sistema. Los resultados obtenidos no sólo cumplen los objetivos iniciales, sino que también abren la puerta a futuras mejoras, como la ampliación del sistema para incluir más especies y la integración de algoritmos de procesamiento más avanzados.
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 5 Abstract This master's thesis focuses on the development of an autonomous system for the recognition of bird species, using advanced technologies such as computer vision and Edge Computing. The main objective is to design a device capable of identifying birds in a feeder and dispensing food selectively, operating without the need for an internet connection. To achieve these goals, a comprehensive review of the literature on machine learning and computer vision techniques is performed, with a particular focus on effective and portable methods with basic knowledge of programming and neural networks for image classification. A proprietary database of bird images is collected, which is used to retrain a pre-trained convolutional neural network model from Python, using the TensorFlow library and its Keras API. In addition, several classification models are evaluated using statistical techniques, selecting the most appropriate in terms of accuracy and efficiency. The final model is deployed on an Edge Computing device, specifically a Jetson Nano, optimizing the system to allow real-time identification with a camera and an entire hardware design focused on the application. Tests carried out in various lighting and weather conditions confirm the robustness and effectiveness of the system. The results obtained not only meet the initial goals but also open the door to future improvements, such as expanding the system to include more species and integrating more advanced processing algorithms.
Pàg. 6 Memòria Contingut RESUM ____________________________________________________ 3 RESUMEN _________________________________________________ 4 ABSTRACT _________________________________________________ 5 CONTINGUT ________________________________________________ 6 GLOSSARI I NOMENCLATURA ________________________________ 9 1. INTRODUCCIÓ _________________________________________ 11 1.1. Origen del projecte ................................................................................... 11 1.2. Motivació .................................................................................................. 11 1.3. Requisits previs ........................................................................................ 11 1.4. Abast del treball ....................................................................................... 12 1.5. Objectius del treball .................................................................................. 12 2. FONAMENTS TEÒRICS __________________________________ 13 2.1. IA, Machine Learning i Deep Learning ..................................................... 13 2.2. Introducció al Deep Learning ................................................................... 14 2.3. Tipus d’Input............................................................................................. 15 2.4. Xarxes Neuronals .................................................................................... 16 2.5. Visió per computador ............................................................................... 18 2.5.1. Principals aplicacions .................................................................................. 19 2.5.2. Xarxes neuronals convolucionals ................................................................ 20 2.6. Entrenament de Models d’Aprenentatge Profund .................................... 21 2.7. Avaluació de l’entrenament i el model ..................................................... 23 2.7.1. Divisió del conjunt de dades ........................................................................ 23 2.7.2. Mètriques d’avaluació ................................................................................. 24 2.7.3. Indicadors per entendre el rendiment del model ......................................... 26 2.8. Millorar el rendiment del model ................................................................ 27 2.8.1. Regularització ............................................................................................. 27 2.8.2. Augmentació de Dades ............................................................................... 28 2.8.3. Optimització d'hiperparàmetres ................................................................... 28 2.8.4. Early Stopping i Learning Rate .................................................................... 29 2.8.5. Tècniques d'optimització ............................................................................. 30 2.9. Transfer Learning ..................................................................................... 30 2.10. Edge AI .................................................................................................... 31 3. PLANTEJAMENT I FUNCIONAMENT DEL SISTEMA __________ 33 3.1. Plantejament del sistema ......................................................................... 33
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 7 3.2. Funcionament pràctic del sistema ........................................................... 33 4. EQUIPAMENT _________________________________________ 35 4.1. Hardware del sistema .............................................................................. 35 4.1.1. NVIDIA Jetson Nano Developer kit ............................................................. 35 4.1.2. Càmera ....................................................................................................... 36 4.1.3. Servo Driver ................................................................................................ 37 4.1.4. Servomotor ................................................................................................. 37 4.1.5. Altres components ...................................................................................... 38 4.2. Prototipat del sistema............................................................................... 39 4.3. Entorn de treball per al desenvolupament del Software .......................... 41 4.3.1. Elecció de l’entorn de treball per a l’entrenament del model ....................... 42 4.3.2. Llibreries per a l’entrenament del model ..................................................... 43 4.3.3. Entorn de treball per a la recol·lecció d’imatges i la inferència .................... 45 4.3.4. Llibreries per a la recol·lecció d’imatges i la inferència ................................ 45 5. DESENVOLUPAMENT I IMPLEMENTACIÓ DEL SISTEMA DE CLASSIFICACIÓ _______________________________________ 47 5.1. Obtenció de la base de dades ................................................................. 47 5.1.1. Rellevància de la base de dades ................................................................ 47 5.1.2. Obtenció de la base de dades pròpia .......................................................... 48 5.1.3. Valoració de la base de dades pròpia i selecció d’espècies ........................ 49 5.1.4. Obtenció de la base de dades de fonts externes ........................................ 50 5.2. Entrenament del model ............................................................................ 51 5.2.1. Criteris de millora i selecció del model ........................................................ 51 5.2.2. Entrenament d’un model des de zero ......................................................... 52 5.2.3. Selecció del model preentrenat ................................................................... 52 5.2.4. Reentrenament del model preentrenat ........................................................ 53 5.2.4.1. Codi base ................................................................................... 54 5.2.4.2. Reducció d’imatges per a la millora de la qualitat ....................... 61 5.2.4.3. Ús de l’augmentació de dades ................................................... 64 5.2.4.4. Finetuning del model base ......................................................... 66 5.2.4.5. Ús de l’Early Stopiping i reducció del Learning Rate .................. 66 5.2.4.6. Regularització amb Dropout i L2 ................................................ 68 5.2.4.7. Preprocessament amb detecció d’objectes ................................ 69 5.2.4.8. Selecció manual estratègica de les imatges ............................... 71 5.2.5. Avaluació del model definitiu ....................................................................... 72 5.3. Desenvolupament de la inferència i control del sistema .......................... 74 5.3.1. Justificació del format ‘.h5’ per a la inferència ............................................. 74
Pàg. 8 Memòria 5.3.2. Funcions, requisits i flux del sistema ........................................................... 75 5.3.3. Codi d'inferència i control del servomotor .................................................... 76 6. RESULTAT FINAL ______________________________________ 80 6.1. Implementació del sistema en entorn real ............................................... 80 6.2. Línies de millora ....................................................................................... 81 7. ESTUDI ECONÒMIC ____________________________________ 82 8. PLANIFICACIÓ _________________________________________ 84 9. ESTUDI AMBIENTAL ____________________________________ 85 10. ESTUDI SOCIAL I D’IGUALTAT DE GÈNERE ________________ 87 11. CONCLUSIONS ________________________________________ 89 12. BIBLIOGRAFIA ________________________________________ 90 Referències bibliogràfiques ............................................................................... 90
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 9 Glossari i Nomenclatura AI (Artificial Intelligence): Intel·ligència artificial, tecnologia que permet als sistemes realitzar tasques que normalment requereixen intel·ligència humana. ML (Machine Learning): Aprenentatge automàtic, un subcamp de la IA que se centra en l'ús de dades i algorismes per imitar la forma que aprenen els humans. CNN (Convolutional Neural Network): Xarxa Neuronal Convolucional, un tipus de xarxa neuronal profunda que és especialment eficaç per a l'anàlisi d'imatges. Edge Computing: Informàtica a la vora, processant dades buscant on es generen, en comptes de fer-ho en una ubicació centralitzada. Dispositiu Edge: Maquinari que realitza el processament de dades localment, cerca la font de dades, en comptes de la connexió amb un núvol o un servidor central. Jetson Nano: Dispositiu informàtic NVIDIA dissenyat per a aplicacions d'IA. CPU (Central Processing Unit): Unitat central de processament, component principal d'un ordinador encarregat d'executar instruccions i realitzar càlculs bàsics d'operacions. TPU (Tensor Processing Unit): Unitat de Processament de Tensors, maquinari especialitzat per accelerar càlculs d’aprenentatge automàtic. GPU (Graphics Processing Unit): Unitat de processament gràfic, que s'utilitza per accelerar el processament d'imatges i fomentar l'aprenentatge profund. TensorFlow: Plataforma de programari de codi obert per a l'aprenentatge automàtic implementada per Google. API (Application Programming Interface): Interfície de programació d'aplicacions, definició i protocols per a la construcció i integració de programari. Keras: Biblioteca de codi obert per construir i entrenar models de xarxes neuronals, compatible amb TensorFlow. Dataset: Conjunt de dades, recollida organitzada de dades utilitzades per entrenar i avaluar models d'aprenentatge automàtic. Threshold: Llindar, valor utilitzat per determinar el punt de decisió en els models de classificació. Inferència: Procés que utilitza un model d'aprenentatge automàtic format per extreure'n conclusions a partir de dades totalment noves
Pàg. 16 Memòria fa ideals per a tasques de classificació, detecció d'objectes, segmentació semàntica i més en visió per ordinador. [1] 2.4. Xarxes Neuronals Les xarxes neuronals són una eina computacional que pretén simular l'arquitectura i les operacions internes del cervell humà i el seu sistema nerviós en la seva capacitat d'aprenentatge, de generalització i de processar ràpidament gran quantitat d'informació en paral·lel. S’utilitzen per a determinar un resultat a partir d’unes dades d'entrada. Una xarxa neuronal consta d'uns elements bàsics de procés, que representen les neurones, i que estan connectats entre elles, formant una xarxa. [8] Els elements fonamentals d’un model de xarxa neuronal són [8]: • Tipus de neurona. • Nombre de neurones a la capa d’input. • Nombre de capes ocultes i nombre de neurones en aquestes. • Nombre de neurones a la capa d’output. • Connexions entre neurones i capes. • Mètode d’aprenentatge. Cada neurona té la tasca de rebre l’input de les neurones veïnes o de fonts externes i les utilitza per calcular la seva sortida. Es poden distingir tres tipus principals d'unitats en una xarxa neuronal: les unitats d’input reben dades de l'exterior de la xarxa, les unitats d’output són les que envien les dades a l'exterior, i les unitats ocultes reben i emeten els senyals dins de la xarxa, pertanyents a les capes ocultes. [8] A cadascuna de les connexions entrants, un node assignarà un número conegut com a "pes". Quan la xarxa està activa, el node rep un element de dades diferent de cadascuna de les seves connexions i el multiplica per un pes associat. A continuació, suma els productes resultants junts, donant un sol nombre. Si aquest nombre està per sota d'un valor llindar, el node no passa dades a la capa següent. Si el nombre supera el valor llindar, el Fig. 2.3. Arquitectura de xarxa profunda amb múltiples capes [9]
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 17 node envia un número que és la suma de les entrades ponderades, a totes les seves connexions de sortida. El resultat final s’obté a partir dels valors ponderats que rep la capa output. [6] Quan s'està entrenant una xarxa neuronal, tots els seus pesos i llindars són inicialment valors aleatoris. Les dades d'entrenament s'alimenten a la capa d'entrada, i passen per les capes successives, multiplicant-se i sumant-se de maneres complexes, fins que finalment arriba, transformada, a la capa de sortida. Durant l'entrenament, els pesos i els llindars s'ajusten contínuament fins que les dades d'entrenament amb les mateixes etiquetes donen resultats similars. [6] Cada part d'una xarxa neuronal representa un procés de prova i error per a establir el sistema més adequat. És necessari provar diferents xarxes i analitzar-les fins cal escollir la més apropiada per a cada projecte en particular. Abans, és essencial seleccionar el nombre de paràmetres d'entrada i de sortida, els quals van determinats pels requeriments del disseny. [8] Pel que fa al disseny intern, una sola capa oculta pot ser suficient però, per segons quins problemes, pot ser més convenient fer servir múltiples. A l’hora de dissenyar la xarxa, s’escull entre diferents tipus de capes ocultes per adaptar-se millor a les característiques del problema que s'està abordant. El nombre de neurones en aquesta capa oculta també és rellevant. Si n'hi ha poques, la xarxa no serà capaç d'aprendre correctament, i no respondrà bé davant de noves dades. En canvi, si el nombre de neurones és excessiu, la xarxa comença a modelitzar els errors intrínsecs de les dades d'entrenament, o a desenvolupar una funció excessivament complexa per a ajustar-se a les dades, fent que la xarxa no respongui correctament davant de dades noves, donant una resposta poc satisfactòria, conegut com a “over-fitting”. [8] S’han intentat relacionar el nombre de neurones necessàries amb el nombre de variables d'entrada i de sortida, però aquestes normes no poden ser generalitzades. El més adequat és fer un estudi paramètric, variant el nombre de neurones de la capa oculta per a comprovar l’estabilitat de la xarxa. [8] Pel que fa a la connectivitat, una neurona pot estar connectada tant a unes poques veïnes, com a totes les neurones de la capa prèvia o inclús a totes les neurones de la xarxa. Normalment es dissenyen xarxes on una neurona està totalment interconnectada amb les neurones de les capes consecutives però no ho està amb les altres neurones de la seva mateixa capa. Una xarxa on el flux d'informació és d'una neurona cap a una altra que pertany a la capa posterior és una xarxa “feed-forward”. També existeixen sistemes recurrents, que contenen connexions cap endarrere. En aquest tipus de xarxes poden existir també connexions de neurones amb elles mateixes. [8] Com s’ha dit prèviament, no totes les xarxes neuronals són iguals. Hi ha diferents tipus de
Pàg. 18 Memòria xarxes, cadascuna dissenyada per a tasques específiques i amb les seves pròpies característiques. A continuació, es mostren els tipus més comuns de xarxes neuronals i com s’apliquen de manera efectiva a diferents escenaris. • Xarxa neuronal Monocapa (Perceptró simple): És la forma més bàsica de xarxa neuronal, amb una sola capa de neurones que transmeten les entrades a una capa de sortida on es realitzen els càlculs pertinents. [10] És utilitzada per a tasques de classificació o predicció simples, com ara la detecció de patrons bàsics en dades estructurades. [11] • Xarxa neuronal Multicapa (Perceptró multicapa): Aquesta és una generalització de la xarxa neuronal monocapa, amb caps intermèdies (caps ocults) entre la capa d'entrada i la de sortida. [10] És utilitzada en una àmplia gamma d'aplicacions, com ara el reconeixement d'imatges, la traducció automàtica, el processament del llenguatge natural i la predicció de dades complexes. [11] • Xarxa neuronal Convolucional (CNN): Utilitzen caps de convolució per trobar patrons locals a les imatges, reduint la necessitat de preprocessament manual. [10] Les xarxes neuronals convolucionals són especialment adequades per a tasques relacionades amb la visió per ordinador, com la classificació d'imatges, la detecció d'objectes i la segmentació d'imatges. [11] • Xarxa neuronal Recurrent (RNN): Aquest tipus de xarxa és especialment útil per a tasques que impliquin dades seqüencials o temporals, com ara el reconeixement de veu, la traducció de seqüències de text, la generació de text i la predicció de seqüències. [11] 2.5. Visió per computador Per entendre la visió per computador, es necessari entendre un concepte que es dona molt per assentat com és la visió. Aquesta es redueix a dos components. El primer, un dispositiu de detecció captura tants detalls d'una imatge com sigui possible. L'ull capta la llum que passa per l'iris i projecta a la retina, on les cèl·lules especialitzades transmetran informació al cervell a través de les neurones. Una càmera captura imatges de manera similar i transmet píxels a l'ordinador. En aquest component, les càmeres són millors que els humans, ja que poden veure infrarojos, més lluny o amb més precisió. El segon, el dispositiu d'interpretació ha de processar la informació i extreure'n el significat. El cervell humà resol això en múltiples passos en diferents regions del cervell. [12] És per això que la visió per computador es pot definir com un camp científic que extreu informació d'imatges digitals. El tipus d'informació obtinguda a partir d'una imatge pot variar des d'identificació, mesures espacials a aplicacions de realitat augmentada. [12] La visió per ordinador és crear algorismes que puguin entendre el contingut de les imatges i utilitzar-lo per a altres aplicacions. A continuació s’entra en detall sobre les seves principals
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 19 aplicacions. [12] 2.5.1. Principals aplicacions Detecció d’objectes: La detecció d’objectes implica identificar i localitzar objectes específics dins d’una imatge (o en el cas d’un vídeo, en cada frame). Els algorismes de detecció d'objectes generen quadres delimitadors al voltant dels objectes detectats i els classifiquen en diferents categories. [13] Classificació d'imatges: La classificació d'imatges consisteix a assignar una classe a una imatge completa basada en el contingut. Aquesta tècnica és fonamental per a moltes aplicacions de visió per computador que poden aprendre característiques discriminatives de les imatges. Aplicacions comunes inclouen la detecció de malalties en imatges mèdiques i el reconeixement d'objectes en diferents entorns. [13] Segmentació semàntica: La segmentació semàntica és el procés de classificar cada píxel d’una imatge en una classe específica. A diferència de la detecció d'objectes, que localitza i classifica objectes individuals, aquesta proporciona una comprensió més detallada de la imatge en etiquetar cada regió de la imatge segons el contingut. És crucial per a aplicacions com ara la conducció autònoma, on és important entendre el context complet de l'escena. [13] Reconeixement facial: El reconeixement facial és una tècnica biomètrica que utilitza característiques facials per identificar o verificar la identitat d’una persona. Les aplicacions inclouen seguretat i vigilància, control d'accés. [13] Processament d'imatges: El processament d'imatges inclou una varietat de tècniques per millorar, restaurar i analitzar imatges digitals de forma intel·ligent. Això inclou operacions com filtratge, transformació d'imatges, millora de contrast, eliminació de soroll, i anàlisi morfològica. [13] Fig. 2.4. Representació de formes diferents de visió per computador [14]
Pàg. 20 Memòria Generació d'imatges: La generació d'imatges fa referència a la creació de noves imatges a partir de models entrenats. Aquestes tècniques són capaces de crear imatges realistes que semblen haver estat capturades per una càmera. Les aplicacions inclouen la creació d’art, la generació de dades sintètiques per entrenar models d’aprenentatge automàtic, i la millora d’imatges de baixa resolució. [13] Processament de vídeo: El processament de vídeo inclou tècniques per analitzar, interpretar i manipular seqüències de vídeo. Això inclou tasques com la detecció de moviment, l'estabilització de vídeo, la millora de qualitat i la compressió de vídeo. El processament de vídeo és crucial en aplicacions de vigilància, transmissió de vídeo en línia o anàlisi. [13] 2.5.2. Xarxes neuronals convolucionals Les xarxes neuronals convolucionals (CNN) són una classe especialitzada de xarxes neuronals profundes, dissenyades específicament per processar dades que tenen una estructura de quadrícula, com a imatges. S'inspiren en l'organització i el funcionament del sistema visual biològic, on les neurones individuals responen a regions específiques del camp visual. [1] El que distingeix les CNN d'altres arquitectures de xarxes neuronals és la seva capacitat per reconèixer patrons espacials a les dades d'entrada mitjançant l'ús de filtres convolucionals. Aquests filtres són petites matrius que llisquen sobre la imatge d'entrada, efectuant operacions de convolució per extreure característiques rellevants, com ara vores, textures o formes. [1] Quant a l’arquitectura bàsica, les CNN poden tenir desenes o centenars de capes, i cadascuna aprèn a detectar diferents característiques d'una imatge. S'apliquen filtres a les imatges d'entrenament amb diferents resolucions, i la sortida resultant s'empra com a entrada per a la capa següent. Els filtres poden començar com a característiques molt simples, com brillantor i vores, i continuar amb més complexes fins a arribar en característiques que defineixen l’objecte de forma singular. Una CNN consta d’una capa d’entrada, on l’entrada és cada píxel de la imatge a processar, una capa de sortida, on la sortida depèn del resultat que es vulgui obtenir de la imatge, i diverses capes ocultes. Les 3 tipologies de capa oculta més comunes són: convolució, activació i agrupació. La capa convolucional aplica un conjunt de filtres convolucionals a les imatges d’entrada. Cada filtre detecta característiques específiques a la imatge, com vores, textures o formes. Aquestes característiques es destaquen i es converteixen en mapes de característiques que s'utilitzen a les capes de la xarxa següents. [15] Després de la convolució, s'aplica la funció d'activació, o també anomenada ReLU, a cada
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 21 valor als mapes de característiques resultants. Aquesta funció manté els valors positius sense canvis i estableix els valors negatius a zero. Això introdueix no linealitat a la xarxa i ajuda a que aquesta pugui aprendre relacions més complexes entre les característiques de la imatge. [15] La capa d'agrupació (pooling) es fa servir per reduir la dimensió dels mapes de característiques, disminuint la mida de les imatges resultants. Això s'aconsegueix mitjançant operacions com la màxima o mitjana d'un conjunt de valors a regions específiques dels mapes de característiques. La reducció de dimensió ajuda a simplificar el procés d'entrenament i redueix el risc de sobreajustament a l’hora que manté la informació més important de les característiques. [15] Aquestes operacions es repeteixen en desenes o centenars de capes i cada capa aprèn a identificar diferents característiques. A diferència d'una xarxa neuronal tradicional, una CNN té pesos i llindars compartits, que són els mateixos per a totes les neurones ocultes d'una determinada capa. Això significa que totes les neurones ocultes detecten les mateixes característiques, com ara vores o formes, a diferents regions de la imatge. Això fa que la xarxa sigui tolerant a la distinció d’objectes d’una imatge. Per exemple, una xarxa entrenada per reconèixer automòbils podrà fer-ho independentment d'on aparegui l'automòbil a la imatge. [15] 2.6. Entrenament de Models d’Aprenentatge Profund L'entrenament d'un model de deep learning implica alimentar el model amb un gran conjunt de dades etiquetades i permetre que aprengui a reconèixer patrons mitjançant un procés iteratiu. Durant aquest procés, el model ajusta els seus paràmetres interns (pesos i biaixos) utilitzant algoritmes d'optimització, com ara el descens de gradient, per minimitzar l'error entre les prediccions i les etiquetes reals de les dades d'entrenament. L'objectiu final és que el model generalitzi bé dades noves i no vistes. [8] Fig. 2.5. Representació del funcionament d’una CNN [15]
Pàg. 22 Memòria Les xarxes neuronals només poden processar dades quan se'ls presenten en un format específic. Cal preprocessar les dades abans de presentar-les al sistema. Per a una millor generalització, també pot ser necessari eliminar dades que difereixin significativament de la resta, si aquests són extrems i no són representatius del problema. [8] És crucial igualar l'escala de dades. Normalment, s'utilitza una funció sigmoidal a la xarxa, els límits de la qual generalment són 0 i 1. Escalar els inputs a un rang de [-1, 1] pot millorar significativament la velocitat d'aprenentatge, ja que en aquest rang la funció sigmoidal és més sensible a les variacions dels valors d’entrada. Per obtenir millors resultats, és important que els valors d’entrada a la xarxa es mantinguin lluny dels extrems 0 i 1 de la funció sigmoidal. [8] S’ha de remarcar la importància de la selecció d'un nombre adequat de dades d'entrenament, així com assegurar que les dades escollides siguin representatives del domini d'entrenament. Actualment, les xarxes neuronals no permeten extrapolar informació per dades fora del domini d'entrenament. No hi ha normes generalitzades per determinar la mida i la composició de les dades d'entrenament, però aquestes han de cobrir els extrems i tenir un nombre suficient de mostres representatives dins de tot el domini. A més, cal reservar algunes dades noves per comprovar la xarxa una vegada entrenada, assegurant-se que aquestes no es facin servir a l'entrenament. [8] Un enfocament per evitar tenir massa poques mostres per aprendre és l'augment de dades. Aquest, genera més dades d'entrenament a partir de mostres d'entrenament existents, augmentant les mostres mitjançant una sèrie de transformacions aleatòries que donen imatges d'aspecte creïble. [16] El procés de presentar la totalitat de dades d'entrenament al sistema s'anomena època, en anglès, “epoch”. El nombre d’èpoques afecta l'efectivitat de la xarxa i depèn de diversos factors, incloent-hi el nombre de dades d'entrenament, el nombre de capes ocultes, les neurones en aquestes capes i els paràmetres de sortida. Si la xarxa s'entrena durant massa temps, és possible que comenci a modelar el "soroll" de les dades d'entrenament, desenvolupant una funció excessivament complexa que no generalitza bé dades noves. Per l’altra banda, si no s'entrena prou, la xarxa no podrà aprendre totes les característiques necessàries del problema i no resoldrà el problema satisfactòriament. [8] No hi ha una regla general per definir quantes èpoques són necessàries per entrenar una xarxa, per això cal fer un estudi paramètric. Un cop seleccionat el tipus de xarxa i les dades d'entrada, els resultats de l'entrenament es desen en intervals determinats. Després, es pot verificar el rendiment de la xarxa amb les dades reservades per fer-ho i aturar l'entrenament quan l'error obtingut sigui inferior al cercat, l'error mitjà no disminueixi o s'hagi estancat. [8] Les xarxes neuronals poden ser entrenades de diverses maneres, depenent del tipus de
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 23 dades i dels objectius del sistema. A continuació, es descriuen les diferents formes d'entrenament existents: [17] • Amb l’aprenentatge predictiu o supervisat s'entrena la xarxa amb dades etiquetades per predir resultats. • Amb l’aprenentatge descriptiu o no supervisat, la xarxa intenta trobar patrons en dades sense etiquetar. • Amb aprenentatge per reforçament, la xarxa aprèn mitjançant un sistema de recompenses i càstigs basat en el rendiment. • A més, hi ha variacions d'aquests tipus bàsics, com l'aprenentatge semisupervisat, on l'aprenentatge tradicional es combina amb dades no etiquetades i dades etiquetades. 2.7. Avaluació de l’entrenament i el model En aquest apartat es descriu el procés d'avaluació del model d'entrenament. Primerament, es parla sobre la divisió del conjunt de dades, un pas fonamental per garantir la validesa de l'entrenament i la prova del model. A continuació, es detallen les mètriques d'avaluació, que permeten mesurar el rendiment i s'exploraran els indicadors clau que ajuden a interpretar l'eficàcia del model i identificar àrees de millora. 2.7.1. Divisió del conjunt de dades Per entrenar un model cal una base de dades. El problema és que no es pot avaluar el rendiment de l’algoritme amb les mateixes dades que utilitzem per a l’entrenament ja que es pot donar que el model estigui especialitzat només en els exemples concrets de l’entrenament. Si això passés, hi hauria un rendiment teòric molt alt però a l’aplicació final es veurien mals resultats. Per evitar que passi, es divideix la base de dades en 3 subgrups: entrenament, validació i test. El conjunt de dades d'entrenament és la mostra de dades utilitzada per ajustar el model. És el conjunt de dades real que es fa servir per entrenar el model (pesos i biaixos) i de les quals veu i aprèn. [18] El conjunt de dades de validació és la mostra de dades utilitzada per proporcionar una avaluació imparcial de l'ajust d'un model al conjunt de dades d'entrenament mentre s'ajusten els hiperparàmetres del model. A més a més, també serveix per assegurar que no hi ha una sobre especialització del model sobre les dades d’entrenament. S'utilitza per avaluar un model determinat sovint, per tant, el model de tant en tant veu aquestes dades, però mai no "aprèn" d'això. En conseqüència, el conjunt de validació afecta un model, però només indirectament. [18]
Pàg. 24 Memòria El conjunt de dades de test és la mostra de dades utilitzada per proporcionar una avaluació imparcial d'un model final que s'ajusta al conjunt de dades d'entrenament. Només s'utilitza una vegada que un model està completament entrenat. El conjunt de test és generalment el que s'utilitza per avaluar i comparar models. [18] Coneixent les divisions del conjunt de dades, també és crucial saber com dividir-lo. Això depèn principalment del nombre total de dades i el model real que s’està entrenant. Una manera de dividir és de 60% per l’entrenament, 20% per la validació i 20% pel test. Aquesta distribució és correcta si no tenim una gran quantitat de dades i per això ha estat una pràctica comuna des de l’inici del machine learning. De totes maneres, la proporció de divisió entre proves i validació també és bastant específica per a cada cas d’ús. [20] Per exemple, alguns models necessiten dades substancials per entrenar, de manera que, en aquest cas, es mira de fer el conjunt d'entrenament més gran. O també, els models amb molt pocs hiperparàmetres són fàcils de validar i ajustar, de manera que se’ls hi pot reduir la mida del conjunt de validació. Entre altres formes de procedir. [20] 2.7.2. Mètriques d’avaluació L'avaluació del rendiment dels models de classificació d'imatges en aprenentatge profund és crucial per garantir que aquests models funcionin de manera efectiva i generalitzin bé en dades no vistes. Aquestes eines permeten mesurar la precisió, la capacitat de distingir entre classes i proporcionar una visió detallada dels errors del model, cosa que és essencial per a la seva millora contínua. Exactitud (Accuracy): És la proporció de prediccions correctes realitzades pel model sobre el total de prediccions. És especialment útil quan les classes estan equilibrades, és a dir, quan hi ha un nombre similar d'exemples per a cada classe. [19] Fig. 2.6. Diagrama de flux de cada conjunt de dades per l’entrenament i validació d’un model [19]
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 25 𝐸𝑥𝑎𝑐𝑡𝑖𝑡𝑢𝑑 = 𝑁𝑜𝑚𝑏𝑟𝑒 𝑑𝑒 𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖𝑜𝑛𝑠 𝑐𝑜𝑟𝑟𝑒𝑐𝑡𝑒𝑠 𝑇𝑜𝑡𝑎𝑙 𝑑𝑒 𝑝𝑟𝑒𝑑𝑖𝑐𝑐𝑖𝑜𝑛𝑠 Pèrdua (Loss): És una mètrica que indica quant de malament està funcionant un model de classificació. S’utilitzen diferents funcions per mesurar la discrepància entre les prediccions del model i els valors reals. És important tenir en compte que, una diferència de les mètriques com la precisió, la pèrdua no té un límit superior fix. El valor específic de la pèrdua pot variar depenent del conjunt de dades i la funció de pèrdua utilitzada. [19] Precisió (Precision): És la proporció de veritables positius (prediccions correctes de la classe positiva) sobre el total de positius predits. Indica com és de fiable el model quan prediu la classe positiva, essencial útil en contextos sobre el cost dels falsos positius és alt. [19] 𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó = 𝑉𝑒𝑟𝑖𝑡𝑎𝑏𝑙𝑒𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑢𝑠 𝑉𝑒𝑟𝑖𝑡𝑎𝑏𝑙𝑒𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑢𝑠 + 𝐹𝑎𝑙𝑠𝑜𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑢𝑠 Recall (Sensibilitat): És la proporció de veritables positius sobre el total de positius reals. Indica com de bé el model pot identificar els casos positius, essent crucial quan el cost dels falsos negatius és alt. [19] 𝑆𝑒𝑛𝑠𝑖𝑏𝑖𝑙𝑖𝑡𝑎𝑡 = 𝑉𝑒𝑟𝑖𝑡𝑎𝑏𝑙𝑒𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑢𝑠 𝑉𝑒𝑟𝑖𝑡𝑎𝑏𝑙𝑒𝑠 𝑃𝑜𝑠𝑖𝑡𝑖𝑢𝑠 + 𝐹𝑎𝑙𝑠𝑜𝑠 𝑁𝑒𝑔𝑎𝑡𝑖𝑢𝑠 F1-Score: És la mitjana harmònica de la precisió i el recall, proporcionant un balanç entre tots dos. És útil en casos de classes desbalancejades. [19] 𝐹1 = 2 × 𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó × 𝑆𝑒𝑛𝑠𝑖𝑏𝑖𝑙𝑖𝑡𝑎𝑡 𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó + 𝑆𝑒𝑛𝑠𝑖𝑏𝑖𝑙𝑖𝑡𝑎𝑡 Matriu de confusió: És una matriu que proporciona una representació detallada dels resultats d'un model de classificació, mostrant el nombre de veritables positius i negatius i falsos positius i negatius. [19] Veritables Positius Veritables Negatius Falsos Positius Falsos Negatius La matriu de confusió permet analitzar específicament on es produeixen errors, facilitant la identificació de patrons problemàtics i l'ajust del model en conseqüència. Corba ROC (Receiver Operating Characteristic): Mostra la relació entre el true positive rate (TPR) i el false positive rate (FPR) a diferents llindars de decisió. El TPR és el mateix que la sensibilitat, i el FPR es calcula com la divisió de falsos positius entre la totalitat d’errors. [19]
Pàg. 32 Memòria Tots els sistemes incrustats que contenen microprocessadors que executen programari , com que estan a la vora de la xarxa, també els podem anomenar dispositius perifèrics. La realització de càlculs en dispositius perifèrics es coneix com edge computing. [31] Una vegada entès, la IA Edge és la combinació de dispositius de punta i intel·ligència artificial. La intel·ligència artificial a l'Edge, o Edge AI, representa una evolució significativa en la manera com es processen i analitzen les dades. Tradicionalment, els models d'intel·ligència artificial han depès del núvol per executar tasques complexes de processament de dades i presa de decisions. Tot i això, amb l'avenç de la tecnologia, s'ha tornat possible portar la capacitat de processament directament als dispositius locals. [31] Els dispositius edge són els sistemes integrats que proporcionen l'enllaç entre el món digital i físic. Normalment compten amb sensors que els proporcionen informació sobre l'entorn on es troben a prop. Les dades obtingudes dels sensors solen tenir un volum molt elevat però un contingut informatiu relativament baix. A causa d'aquest problema, la gran majoria de les dades recollides pels sensors IoT es descarten. Edge AI és la solució a aquest problema. Ara, en lloc de confiar en un servidor central, es poden prendre decisions localment, sense necessitat de connectivitat. [31] Els sistemes incrustats sovint tenen memòria limitada. Això planteja un repte per executar molts tipus de models d'aprenentatge automàtic, que sovint tenen requisits elevats tant per a la memòria de només lectura (ROM) (per emmagatzemar el model) com per a la RAM (per gestionar els resultats intermedis generats durant la inferència). Sovint també estan limitats en termes de potència de càlcul. [31] Durant els últims anys hi ha hagut molts avenços en l'optimització que han permès executar models d'aprenentatge automàtic bastant grans i sofisticats en alguns sistemes encastats molt petits i de baix consum. [31] Un dels avenços més significatius que han facilitat la implementació de la intel·ligència artificial en dispositius Edge és l'ús de les unitats de processament gràfic (GPUs). Les GPUs són especialment adequades per a les tasques d'aprenentatge automàtic i d'intel·ligència artificial, ja que poden processar grans quantitats de dades en paral·lel de manera eficient. Això és crucial per a l'execució de models complexos d'IA, que requereixen una capacitat de càlcul considerable. [32] Amb l'avenç de les GPUs integrades i altres acceleradors de hardware especialitzats, s'ha fet possible portar la capacitat de processament necessària per a la inferència de models d'IA directament als dispositius Edge. Això permet no només reduir la latència i augmentar la velocitat de resposta, sinó també reduir el consum de banda ampla i millorar la privacitat de les dades, ja que es redueix la necessitat de transmetre informació sensible a través de xarxes externes. [32]
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 33 3. Plantejament i funcionament del sistema En aquest capítol es presenta una descripció detallada del sistema que es desenvoluparà en el projecte. En primer lloc, s’aborda el procés de definició i concepció del sistema de menjador d'ocells intel·ligent. Un cop plantejat, es descriu detalladament com funcionarà. A través d'aquests apartats, es busca proporcionar una comprensió completa del disseny i de les operacions del sistema, establint les bases per al desenvolupament i la implementació efectiva d'un sistema que compleixi els objectius tecnològics del projecte. 3.1. Plantejament del sistema Un cop enteses les possibilitats que ofereix la visió per computador i la inferència que pot arribar a realitzar un dispositiu especialitzat en Edge Ai, es procedeix a plantejar i definir el problema a desenvolupar en el projecte. Degut a la possibilitat d’adquirir una base de dades de forma autònoma s’ha decidit realitzar un sistema capaç d’identificar diferents espècies d’aus. Per tant, es decideix que el sistema a desenvolupar sigui un menjador d’ocells intel·ligent. Aquest sistema ha de ser capaç de subministrar menjar de forma selectiva tenint en compte l’au que hi hagi davant el menjador. Després de consultar a experts del Zoo de Barcelona s’ha vist que podria tenir les següents utilitats: • Subministrar el menjar adient per a cada espècie segons el seu contingut nutricional. • Negar l’ús del menjador a espècies concretes que posen en perill l’alimentació d’altres. • Subministrar menjar no contaminat al detectar espècies no invasores i subministrar menjar amb anticonceptius a espècies invasores. Cal remarcar que pel fet que la finalitat d’aquest treball és purament tecnològica, en cap moment es pren la decisió de quina serà la seva utilitat final ni es proveirà menjar de diferent naturalesa a les espècies que hi participin. Per aquesta raó s’ha decidit que el sistema tindrà una aplicació genèrica en la qual hi haurà dos dipòsits de menjar diferents i dipositarà el contingut d’un o de l’altre en funció del que detecti. 3.2. Funcionament pràctic del sistema Havent plantejat el sistema, es procedeix a fer una descripció definitiva de quin és el seu
Pàg. 34 Memòria funcionament pràctic. Aquest divideix en diverses fases endreçades segons el flux de funcionament: • Captura d'Imatges: Una càmera instal·lada al menjador d'ocells captura imatges contínuament. Ha de ser capaç no només de capturar les imatges per la inferència, sinò també de la recol·lecció d’imatges per la creació de la base de dades. • Processament i Identificació: El dispositiu Jetson Nano, equipat amb un model de xarxa neuronal convolucional entrenat, processa les imatges en temps real. El model identifica l'espècie d'au present al menjador o a una distància prou propera a ell per a poder-lo visualitzar amb la càmera. • Decisió de Subministrament: Un cop identificada l'espècie, el sistema decideix quin tipus de menjar subministrar segons la configuració predefinida. El sistema està equipat amb dos dipòsits de menjar diferents. Segons l'espècie identificada, es diposita el contingut d'un dipòsit o de l'altre. • Subministrament de Menjar: El sistema activa el mecanisme de dispensació adequat amb un servomotor per al tipus de menjar seleccionat. El menjar es dispensa al menjador, accessible per a l'au identificada. Aquest enfocament assegura que el sistema funcioni de manera autònoma i eficient, permetent la identificació precisa i el subministrament adequat de menjar segons l'espècie detectada, complint així amb els objectius tecnològics del projecte. Un factor que aquest sistema no contempla per tal de simplificar el prototip és que l’au a la qual se li ha subministrat menjar, no se l’acabi i per una altra tingui a disposició menjar no convenient.
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 35 4. Equipament 4.1. Hardware del sistema Per començar aquest capítol, cal destacar la definició de "hardware", que és la següent: "conjunt d'elements físics o materials que constitueixen una computadora o sistema informàtic". En el cas concret d’aquest projecte, en aquest capítol s'especificarà el conjunt d’elements físic que constituirà el sistema a desenvolupar. Un cop decidides les funcions que es vol que abasti el sistema descrit al capítol 4, es fa una selecció dels components de hardware necessaris i amb els quals posteriorment es farà el muntatge. Els elements seran: un Jetson Nano, una càmera, un servodriver, un servomotor, un ventilador y LEDs. 4.1.1. NVIDIA Jetson Nano Developer kit El Jetson Nano és un mòdul de hardware compacte i potent desenvolupat per NVIDIA, dissenyat específicament per a aplicacions d'intel·ligència artificial i deep learning. Aquest mòdul compacte i potent inclou un processador quad-core ARM Cortex-A57 i una GPU de 128 nuclis NVIDIA Maxwell, que proporciona un rendiment significatiu per a tasques de computació d'alt rendiment. [34] La memòria del Jetson Nano consta de 4GB de RAM LPDDR4, cosa que permet manejar models d'IA complexos i processar dades en temps real. Per a l'emmagatzematge, compta amb una ranura per a targetes microSD, utilitzada per instal·lar el sistema operatiu i emmagatzemar dades i aplicacions. [34] Pel que fa a connectivitat, el Jetson Nano ofereix un port Ethernet per a una connexió de Fig. 4.1. Esquema de les parts d’un NVIDIA Jetson Nano Developer kit [33]
Pàg. 36 Memòria xarxa ràpida i fiable, quatre ports USB 3.0 i un port USB 2.0 Micro-B, permetent la connexió d'una varietat de perifèrics com càmeres, teclats, ratolins i unitats d’emmagatzematge externes. A més, té sortides HDMI 2.0 i DisplayPort 1.2 per a la connexió a monitors i televisors, proporcionant la possibilitat de visualització. [34] El mòdul també inclou 40 pins GPIO compatibles amb l'estàndard de Raspberry Pi, que facilita la connexió de sensors, actuadors i altres dispositius electrònics. A més, compta amb una ranura M.2 Key E per a mòduls d'expansió com a targetes de xarxa sense fil, i una interfície CSI per connectar càmeres compatibles amb MIPI CSI-2. [34] El Jetson Nano s'alimenta a través d'una entrada de 5V mitjançant un port Micro-USB o un connector de barril, amb un consum energètic ajustable entre 5W i 10W, cosa que el fa adequat per a projectes encastats que requereixen eficiència energètica. [34] El mòdul hardware és compatible amb el sistema operatiu NVIDIA JetPack, que inclou eines i biblioteques per al desenvolupament d'IA. 4.1.2. Càmera La càmera utilitzada tant per la recol·lecció d’imatges per la nova base de dades com per la inferència és la Raspberry Pi Camera Module V2. És una càmera compacta i potent dissenyada específicament per treballar amb les plaques Raspberry Pi. Amb una resolució de 8 megapíxels, aquesta càmera és ideal per a una varietat de projectes que requereixen captura d'imatges i vídeo d'alta qualitat. [35] Característiques tècniques: [35] • Sensor: Sony IMX219, 8 megapíxels. • Resolució d'Imatges Fixes: Fins a 3280 x 2464 píxels. • Vídeo: Capacitat per gravar vídeo en 1080p a 30 fps, 720p a 60 fps, i 640x480 a 90 fps. • Connectivitat: Connexió mitjançant un cable de cinta que es connecta per port CSI. Fig. 4.2. Imatge Raspberry Pi Camera Module V2 [35]
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 37 • Mida: 25 mm x 23 mm x 9 mm. 4.1.3. Servo Driver Per tal de controlar el servomotor encarregat de dispensar el menjar s’ha requerit un Servo Driver, l’escollit ha sigut el PCA9685. Aquest és un controlador PWM de 16 canals i 12 bits dissenyat per NXP, utilitzat per manejar múltiples servomotors i LEDs. Aquest controlador és ideal per a projectes que requereixen un control precís i simultani de dispositius de sortida PWM. És compatible amb Jetson Nano i altres plataformes de microcontroladors gràcies a la seva interfície I2C. En aquest projecte, tot i només requerir-se d’un servomotor, amb la seva presència dona possibilitats de construir sistemes més elaborats de dispensació amb més d’un servomotor. [36] Característiques tècniques: [36] • Canals: 16 canals PWM. • Resolució: 12 bits, oferint 4096 pasos per a cada sortida PWM. • Protocol de Comunicació: I2C. • Rang de freqüència PWM: Ajustable de 24 Hz a 1526 Hz. • Alimentació: Voltatge d’operació de 2,3V a 5,5V. • Corrent de sortida: Fins a 25 mA per canal. 4.1.4. Servomotor El servomotor utilitzat és el SG90 Micro Servo Motor 9G. Aquest és un petit i econòmic servomotor àmpliament utilitzat en projectes d'electrònica. La mida compacta i la facilitat d'ús el fan ideal per a aplicacions que requereixen control precís del moviment en espais reduïts. Fig. 4.3. Imatge mòdul PCA9685 [36]
Pàg. 38 Memòria Característiques tècniques: [37] • Pes: 9 grams. • Dimensions: 22,2 mm x 11,8 mm x 31 mm. • Parell de torsió: Fins a 1,8 kg/cm (4,8V). • Angle de gir: 180 graus • Alimentació: 4,8V a 6,0V. 4.1.5. Altres components Un ventilador de refrigeració és un component crucial per mantenir el Jetson Nano en temperatures operatives segures, especialment durant tasques intensives que generen molta calor, com ara el processament d'algorismes d'intel·ligència artificial i aprenentatge profund. Un altre element necessari en aquest projecte electrònic és l’existència de senyals lluminosos, amb fins informatius. Principalment funcionant com a senyals lumínics per advertir el correcte funcionament o no del sistema. En aquest projecte s'utilitzen díodes LEDs de 2 colors (vermell i verd), i diàmetre 5mm. Fig. 4.4. Imatge SG90 Micro Servo Motor 9G [37] Fig. 4.51. Imatge ventilador per Jetson Nano [38]
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 39 4.2. Prototipat del sistema Pel que fa al prototipat del projecte, s’especificarà el muntatge físic del dispositiu consistint en la connexió de les parts components físics entre ells i la construcció de l’entorn físic tant per la recol·lecció d’imatges com per la inferència. En la següent figura es mostra l’esquema que han de seguir les connexions del Jetson Nano. Tal com es mostra a l’esquema, es connecta la càmera, el ventilador, els LEDs amb resistències de 220Ω, el servo driver i el servomotor connectat a aquest. El ventilador i la càmera són connectats en els pins que el Jetson Nano té reservats per aquesta funció. De la mateixa forma, el servo driver s’ha hagut de connectar als pins específics per a fer comunicació I2C, de la forma en què es mostra a la taula 4.1. Finalment, els LEDs van connectats en pins no específics també mostrats a la taula 4.1. Fig. 4.62. Imatge LEDs de 5 mm de diàmetre Fig. 4.63. Esquema de connexions dels components electrònics al Jetson Nano
Pàg. 40 Memòria Taula 4.1. Connexions de dispositius electrònics a pins GPIO del Jetson Nano Dispositiu Pin del dispositiu Pin GPIO del Jetson Nano Servo driver PCA9685 GND GND SCL 5 SDA 3 VCC 3V3 LED verd Ànode 16 (amb resistència 220Ω) Càtode GND LED vermell Ànode 12 (amb resistència 220Ω) Càtode GND A part de l’electrònica és necessari fer el muntatge de l’estructura del menjador. Aquest no només ha de tenir l’espai a alimentar les aus sinó també pel sistema de subministrament. El sistema s’ha dissenyat de forma que hi ha dos recipients per emmagatzemar els diferents menjars, un selector de forma circular foradat, el servomotor i un embut connectat a un dispensador. El gir controlat del selector permet controlar si no cau aliment, si cau d’un recipient o de l’altre. El menjar que caigués seria recol·lectat per l’embut, que el deixaria anar per a la disposició dels ocells. A continuació es mostra un esquema conceptual del sistema de dispensació. Fig. 4.4. Esquema conceptual del sistema de dispensació
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 41 Finalment, tot és muntat sobre una estructura de fusta feta manualment que dona la possibilitat tant de ser penjada com de disposar-se a terra. En aquesta hi ha estructures per a recolzar el sistema de dispensació, la càmera en un angle òptim per captar el front del menjador, els LEDs, el Jetson Nano i el servo driver. El resultat físic del muntatge es mostra a les imatges de la figura 4.5. 4.3. Entorn de treball per al desenvolupament del Software Per iniciar aquest capítol, cal destacar la definició de "software", que és la següent: "conjunt de programes o aplicacions, instruccions i regles informàtiques que fan possible el funcionament d'una computadora o sistema informàtic". En aquest projecte, per a la fase de programació s’ha fet servir el llenguatge d’alt nivell anomenat Python. Python és utilitzat en aquest projecte de deep learning per diverses raons. La seva simplicitat i llegibilitat fan que sigui una llengua ideal per al desenvolupament de models complexos. A més, la seva àmplia gamma de biblioteques especialitzades en ML i deep learning permet una implementació eficient de models d'intel·ligència artificial. Python també ofereix una comunitat activa i recursos extensius que són inavaluables per a qualsevol desenvolupador. Pel que fa a l’entorn de treball, s’ha decidit dividir entre el que s’utilitza per a l’entrenament del model i el que s’utilitza per a la inferència. Com es veurà a continuació, aquest enfocament combina els avantatges de l'entrenament al núvol amb la potència i flexibilitat de la inferència en un dispositiu Edge com el Jetson Nano, assegurant així un Fig. 4.5. Imatges del resultat del muntatge físic del sistema
Pàg. 48 Memòria • Transfer learning: Utilitzant tècniques de transferència d'aprenentatge, en què s’inicia amb un model preentrenat en un conjunt de dades gran, es poden necessitar menys imatges per a una tasca específica. Per poder complir amb la quantitat, qualitat i rellevància d’imatges requerides, s’obtenen imatges tant de bases de dades d’Internet com amb el mateix menjador. Amb aquesta combinació, s’aconsegueix tenir la combinació d’imatges variades per tal de fer una bona generalització, com imatges en el mateix entorn en el qual es farà la inferència, en termes de fons, angle, lluminositat i espècies. Com el sistema té l’objectiu de ser comprovat en un entorn real, es decideix que el model s’entrenarà de forma que pugui identificar solament espècies de les quals s’hagi pogut obtenir imatges suficients amb el mateix menjador. És per això que es decidirà el treball d’inferència que farà el sistema en base als resultats obtinguts en l’obtenció de la base de dades. D’aquesta forma es defineix la recol·lecció de la base de dades en 3 etapes: 1. Obtenció de la base de dades pròpia. 2. Valoració de la base de dades pròpia i decisió d’espècies. 3. Obtenció de la base de dades de fonts externes. 5.1.2. Obtenció de la base de dades pròpia La base de dades pròpia s’obté utilitzant com a entorn el mateix menjador d’ocells amb el mateix hardware que s’usarà en la inferència però amb el software específic per fer gravacions i anar-les emmagatzemant en un disc dur extern. Com que en aquesta fase es vol obtenir la màxima quantitat d’aus i espècies possible, es disposa des d’un inici i de forma indiscriminada tota mena de menjar per ocells. Les localitzacions escollides per ferho és en un jardí particular de Cabrera de Mar i en una zona restringida del Zoo de Barcelona. Una vegada el menjador està llest, es grava de forma continuada. A partir de les gravacions es poden obtenir els frames més interessants per afegir a la base de dades. Aquest plantejament presenta diversos avantatges favorables a la creació de la base de dades. Gràcies a la possibilitat d’obtenir imatges a qualsevol hora del dia s’aconsegueixen fotografies amb diferents il·luminacions. Gràcies al canvi de localització diari del menjador, s’aconsegueixen diferents fons i angles. Finalment, degut a la naturalesa inquieta de les aus, la seva presència en un curt període de temps permet fotografiar una gran quantitat de posicions. Una vegada finalitzat el període de captació de dades, a la taula 5.1 es mostra la localització d’on s’ha obtingut, els temps de vídeo efectiu i els fotogrames que s’han pogut extreure. Cal remarcar que es considera vídeo efectiu, la suma dels retalls de gravació on hi ha present una au especifica. També es necessari deixar clar que per aconseguir els
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 49 fotogrames, amb la finalitat d’automatitzar el procés, s’ha decidit extreure un frame per cada 3 segons de vídeo efectiu. Taula 5.1. Quantitat de material visual obtingut per espècie Espècie Localització Minuts de vídeo efectiu Imatges obtingudes Tórtora Cabrera de Mar 118 2360 Garsa Cabrera de Mar 18 360 Tudó Cabrera de Mar <1 12 Pardal Cabrera de Mar <1 4 Merla Zoo de Barcelona 2 40 Colom Zoo de Barcelona <1 7 Cotorra argentina Zoo de Barcelona <1 6 5.1.3. Valoració de la base de dades pròpia i selecció d’espècies Per a la selecció de les espècies a utilitzar en l'entrenament del model, considerem aquelles que tenen un nombre suficient d’imatges per garantir una bona representació i variabilitat. D'acord amb aquesta valoració, les espècies seleccionades són: Tórtora: Amb 2360 imatges, aquesta espècie té un nombre suficient de dades per entrenar el model de manera efectiva. Fig. 5.1. Imatges de tórtora de base de dades pròpia
Pàg. 50 Memòria Garsa: Amb 360 imatges, aquesta espècie també proporciona una base de dades adequada per a l'entrenament. Les altres espècies, com el Tudó, Pardal, Merla, Colom i Cotorra argentina, no tenen un nombre suficient d’imatges en la nostra base de dades pròpia per permetre un entrenament robust del model. Aquestes espècies podrien considerar-se per a futures fases del projecte si s'aconsegueixen més dades, ja sigui mitjançant l'ampliació de la base de dades pròpia o la integració de dades de fonts externes. Però com que es tracta d’un sistema que haurà de ser comprovat en situació real, es considera que encara que es pogués obtenir més imatges amb fonts externes, no es podria assegurar la seva presència a l’hora de fer la inferència. 5.1.4. Obtenció de la base de dades de fonts externes Les dades externes poden complementar les col·leccions pròpies, proporcionant una major diversitat d'imatges en termes d'angles, il·luminació, fons i variabilitat general per millorar la capacitat del model per generalitzar situacions reals. En aquest cas, s’han obtingut imatges addicionals d'Internet per a les espècies seleccionades. A continuació es detallen les quantitats d'imatges obtingudes per a les espècies seleccionades: Tórtora: S'han obtingut un total de 31 fotografies addicionals de diverses fonts d'Internet. Fig. 5.26. Imatges de garsa de base de dades pròpia Fig. 5.3. Imatges de tórtora de base de dades externa
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 51 Garsa: S'han obtingut un total de 35 fotografies addicionals de diverses fonts d'Internet. Aquestes imatges de fonts externes han estat seleccionades meticulosament per assegurar que siguin representatives i de bona qualitat, garantint que aportin valor al conjunt de dades. 5.2. Entrenament del model Aquest punt està dedicat a l’entrenament del model a partir de la base de dades obtinguda prèviament. Com que s’ha considerat que les úniques espècies vàlides són les garses i les tórtores, es decideix que la funcionalitat del model sigui detectar si hi ha una espècie, l’altre o cap. És per això que s’ha escollit crear un model convolucional amb la funcionalitat de classificar imatges. L’elecció es deu al fet que aquest comporta una menor preparació de les dades d’entrenament. A més l'objectiu és determinar de manera precisa si una imatge conté una garsa, una tórtora, o cap de les dues. No es pretén identificar objectes addicionals ni aplicar altres formes d’aprenentatge profund més enllà d’aquesta tasca específica de classificació binària. Per assolir aquest objectiu, s'exploren i es comparen diferents enfocaments de modelatge, en el que a partir d’un model base s’apliquen les diferents formes de millorar el seu rendiment, explicades a l’apartat 2.8. 5.2.1. Criteris de millora i selecció del model Es desenvolupen i avaluen diversos models utilitzant mètriques de rendiment estàndard explicades en els apartats 2.7.2 i 2.7.3. Pel desenvolupament del model d’aquest projecte, es té en compte tant l’exactitud (accuracy) com la pèrdua (loss) del conjunt d’entrenament, validació i test. També s’utilitza la matriu de confusió entre espècies, per tal d’ajudar a entendre millor quin tipus d’errors està cometent el model. Per fer una avaluació final, s’empren també les mètriques de sensibilitat, especificitat i corbes ROC per a escollir el threshold òptim. Cal remarcar que per cada avaluació que es mostra, s’ha mirat d’optimitzar els hiperparàmetres amb un procés iteratiu no exhaustiu fins a arribar a l’avaluació mostrada. Fig. 5.4. Imatges de garsa de base de dades externa
Pàg. 52 Memòria Els hiperparametres a optimitzar han sigut la taxa d’aprenentatge, la mida del lot i el nombre d’èpoques. 5.2.2. Entrenament d’un model des de zero Tot i haver-se plantejat la creació d'un model des de zero, no s’ha acabat fent a causa de diverses raons fonamentals. La principal raó és la insuficiència d'imatges disponibles, tant en quantitat com en diversitat. Per a entrenar un model de xarxa neuronal profunda des de zero, es requereix un volum considerable d'imatges etiquetades per assegurar una bona generalització i rendiment del model. S'estima que per a un model robust i fiable serien necessàries aproximadament 100.000 imatges ben etiquetades i variades. A més, entrenar un model des de zero requereix una quantitat significativa de temps i recursos computacionals. El procés de trobar l'arquitectura òptima, ajustar els hiperparàmetres i evitar problemes comuns com el sobreentrenament (overfitting) o el subentrenament (underfitting) és complex i evitable per aquest projecte. Els models preentrenats, en canvi, ja han estat entrenats en grans conjunts de dades, que conté milions d'imatges i milers de classes. Això permet que aquests models tinguin una comprensió prèvia de les característiques visuals generals, que poden ser refinades i adaptades a noves tasques amb un nombre significativament menor d'imatges específiques. És per aquestes raons que es decideix desenvolupar un model de classificació partint d’un model preentrenat. 5.2.3. Selecció del model preentrenat La primera tasca per a reentrenar un model preentrenat, és la selecció d’aquest. Per ferho s’han seleccionat tres models diferents de classificació d’imatges. Entre aquests, consten dos models àmpliament coneguts, entrenats amb imatges d’un àmbit més general i un tercer model més especialitzat en la classificació d’espècies d’ocells. • Model VGG16: Desenvolupat per Visual Geometry Group de la Universitat d'Oxford, és conegut per la seva simplicitat i profunditat, amb 16 capes de convolució i capes totalment connectades. Aquest va ser entrenat al conjunt de dades ImageNet, que conté més de 14 milions d'imatges etiquetades en 1000 categories diferents. [52] • Model ResNet50: Desenvolupat per Microsoft Research, és una versió de 50 capes de la ResNet. És famós pel seu ús de "blocs residuals" que permet entrenar xarxes molt més profundes. ResNet50 també va ser entrenat al conjunt de dades ImageNet, amb les mateixes 14 milions d'imatges etiquetades en 1000 categories. [53] • Model EfficientNetB0 especialitzat en ocells: Aquest és model preentrenat de
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 53 domini públic desenvolupat per l’usuari Gerry de Kaggle, una plataforma web que aplega la comunitat Data Science més gran del món. Aquest model és un EfficientNetB0, entrenat específicament en un conjunt de dades de 525 espècies d'ocells. El conjunt de dades més de 92.000 imatges. [54] En aquesta memòria no es mostra detalladament com s'han provat els diferents models, ja que no es vol profunditzar excessivament en la selecció del model i tampoc s'han obtingut raons concloents per determinar quin és el millor. Tot i haver-se provat els tres models, per provar determinar realment quin model és el més adequat, seria necessari fer un desenvolupament molt profund de cadascun d'ells per després seleccionar el millor, la qual cosa no és l'objectiu principal d'aquest treball. Per aquest motiu, s'ha escollit el model EfficientNetB0 especialitzat en ocells, per dues raons. La primera és el fet que ell model ja havia demostrat una precisió molt alta en la classificació d'espècies d'ocells, la qual cosa suggeria que podria transferir-se bé a la classificació específica entre garses i tórtores. La segona és que la seva arquitectura permet una adaptació òptima a tasques específiques amb un nombre relativament petit d'imatges d'entrenament addicionals, fet que el fa ideal per a la tasca de classificació amb dades limitades d’aquest projecte. Descripció del model EfficientNetB0 especialitzat en ocells: El data set amb el que s’ha entrenat consta de 525 espècies d'aus, de les quals no estan incloses ni la garsa ni la tórtora. Disposa de 84.635 imatges d’entrenament, 2.625 imatges de prova i 2,625 imatges de validació (5 imatges per espècie). Totes les imatges són de 224x224 píxels, en format JPG, i en color (3 canals). [54] El conjunt de dades va ser netejat per eliminar imatges duplicades o gairebé duplicades i aquelles de baixa qualitat. Les imatges van ser seleccionades per assegurar que cada imatge contingui un sol ocell ocupant almenys el 50% de la imatge. Les imatges de prova i validació van ser seleccionades manualment per ser les millors imatges, cosa que podria resultar en una major precisió del model en aquests conjunts. Aquestes imatges van ser obtingudes mitjançant cerques a internet per nom d'espècie, després processades per assegurar que l'ocell ocupi almenys el 50% de la imatge i es van redimensionar a 224x224 píxels. [54] Quant al model, aquest és un EfficientNetB0 entrenat en imatges de 224x224x3. Ha sigut entrenat durant 15 èpoques usant augmentació de dades perquè cada classe tingués 200 imatges d'entrenament. Va aconseguir una puntuació F1 de 98.97 al conjunt de test. [54] 5.2.4. Reentrenament del model preentrenat A continuació es mostrarà el codi Python des del qual s’ha desenvolupat el model. S’ha partit de la metodologia més simple per fer-ho, proporcionada per la pàgina web de Keras.
Pàg. 54 Memòria És per això que per l’explicació del codi, es fa una descripció detallada del codi més simple i a continuació es mostren les línies de codi que s’han anat afegint per tal de millorar el model en funció de les mètriques obtingudes. 5.2.4.1. Codi base A continuació s’explica detalladament el codi base d’es del qual es desenvolupa el model reentrenat. El primer pas és importar les llibreries i muntar Google Drive per a poder utilitzar totes les dades emmagatzemades. A continuació, es defineix el nombre de mostres que es processaran abans d'actualitzar els paràmetres del model. Una mida de lot més petita proporciona un entrenament més ràpid però menys estable, mentre que una mida més gran proporciona un entrenament més estable però més lent. A continuació s’especifica les dimensions en què es redimensionaran totes les imatges. En aquest cas, cada imatge serà redimensionada a 224x224 píxels. tf.data.AUTOTUNE permet a TensorFlow ajustar automàticament el rendiment de les operacions d'entrada/sortida, optimitzant la càrrega i el preprocessament de dades. Es defineix la ruta base on es troben les imatges a Google Drive i es combina amb els noms de les subcarpetes per obtenir les rutes completes als directoris de cada classe i als directoris de destinació per a entrenament, validació i prova. A continuació es creen els directoris especificats si no existeixen. Es defineix una funció encarregada de dividir i copiar fitxers prenent dos arguments. Aquests arguments són el directori que conté les imatges d'una classe específica. I el nom de la classe, que es fa servir per crear subdirectoris dins dels directoris de destinació (train, val, test). El primer pas dins de la funció és llistar tots els fitxers al directori i filtrar els fitxers per incloure només aquells amb extensions d'imatge. A continuació es divideix els fitxers en dos subconjunts: un per a entrenament que conté el 70% dels fitxers, i un subconjunt temporal que conté el 30% restant. En aquest procés s’assegura que la divisió sigui reproduïble en fixar la llavor aleatòria. El següent pas és dividir el conjunt temporal en dos subconjunts iguals: un per a validació i un altre per a prova. Finalment, es copien els fitxers Fig. 5.57. Codi base (1/13)
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 55 al directori de destí. La funció és utilitzada amb ambdues espècies. Es defineix una funció per a carregar els conjunts de dades a partir dels directoris plens d’imatges. L'argument que pren és la ruta del directori on estan emmagatzemades les imatges d'entrenament, validació o prova. La funció tf.keras.utils.image_dataset_from_directory de TensorFlow carrega imatges des d'un directori i les converteix en un objecte tf.data.Dataset a partir d’una sèrie d’arguments. S’especifica la ruta del directori que conté les subcarpetes d'imatges, que s’infereixi automàticament les etiquetes a partir de les subcarpetes, el nombre de mostres per lot i les dimensions a les quals s'han de redimensionar totes les imatges. Es defineix una funció per al preprocessament de les imatges d’entrada. En aquesta converteix la imatge a tipus flotant i normalitza els valors de píxels a un rang entre 0 i 1 Fig. 5.68. Codi base (2/13) Fig. 5.7. Codi base (3/13)
Pàg. 56 Memòria dividint per 255. Es tracta d’un pas important ja que els models d'aprenentatge profund solen funcionar millor quan les dades d'entrada estan normalitzades. També converteix les etiquetes en vectors one-hot amb 2 classes. Això és útil per a la classificació multiclasse i és compatible amb la capa de sortida del model. Un cop definida, s’aplica la funció a cada element del conjunt de dades d'entrenament, validació i test. Per a optimitzar el rendiment del conjunt de dades, s’emmagatzema en memòria cau el conjunt de dades per millorar el rendiment de lectura, es barreja les dades per evitar patrons durant l'entrenament i es superposa el processament de dades i l'execució del model per millorar-ne el rendiment. S’especifica la ruta al fitxer del model preentrenat desat a Google Drive i es carrega. Ja que a la descripció del model s’especifica que aquest utilitzava una mètrica personalitzada (‘F1_score’), s’especifica en carregar-lo. A continuació, és necessari eliminar la darrera capa del model base. Aquesta línia del codi crea un nou model que utilitza les mateixes entrades que el model original però pren la sortida de la penúltima capa. Això és útil quan es vol adaptar un model preentrenat a una nova tasca. En el cas d’aquest projecte, donat que el model original era per classificar més de 100 espècies i es vol tenir un model que només pugui tenir dues sortides, és necessari. A la següent línia s’afegeix una capa densa (totalment connectada) amb 2 neurones, que correspon al nombre de classes en el problema de classificació. Fig. 5.8. Cosi base (4/13) Fig. 5.9. Cosi base (5/13)
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 57 Es complia el model definint la funció de pèrdua a utilitzar durant l'entrenament. sparse_categorical_crossentropy és adequada per a problemes de classificació amb etiquetes. També s’especifica l'optimitzador a utilitzar. SGD (descens de gradient estocàstic) amb una taxa d'aprenentatge de 0,01 s'usa per actualitzar els pesos del model. Finalment, també es defineix la mètrica de rendiment a rastrejar durant l'entrenament i l'avaluació del model. Aquí, es fa servir la precisió. S’inicia el procés d'entrenament del model indicant el conjunt de dades d'entrenament, el conjunt de dades de validació i les èpoques. Un nombre més gran d'èpoques pot portar a un millor ajustament del model, però també pot augmentar el risc de sobreajustament. Un cop el model està entrenat, s’avalua el rendiment del model amb el conjunt de dades de prova per mesurar-ne la precisió i la pèrdua. Fig. 5.10. Codi base (6/13) Fig. 5.11. Codi base (7/13) Fig. 5.12. Codi base (8/13)
Pàg. 64 Memòria Taula 5.3. Pèrdua i exactitud del model amb reducció d’imatges per a la millora de la qualitat Pèrdua 1.4128 Exactitud 0.5350 En reduir les imatges, es veu a la taula 5.3 com l’exactitud ha disminuït notablement perquè el model ja no pot dependre de la classe majoritària. La pèrdua d'entrenament i validació ha mostrat una millora lleu, però es presenta una alta variabilitat en les corbes de l’entrenament, les quals mostren la variació de la pèrdua i exactitud pel conjunt d’entrenament i validació per a cada època. Aquest fet reflecteix la dificultat del model per aprendre les dues classes de manera equilibrada. També es veu com l’exactitud de l’entrenament és molt superior a la de validació i test, símptoma molt clar de sobreajustament i incapacitat de reconèixer imatges noves. Per augmentar la diversitat de les dades i evitar el sobreajustament, s’ha decidit implementar tècniques d'augment de dades (data augmentation), com ara rotacions, translacions i miralls. Aquest plantejament hauria d'ajudar el model a aprendre característiques més generals i millorar la seva capacitat per reconèixer les dues classes. 5.2.4.3. Ús de l’augmentació de dades L'augmentació de dades ajuda a prevenir el sobreajustament i millora la capacitat del model per generalitzar dades noves i invisibles. Aquestes tècniques generen variacions realistes de les imatges d'entrenament, cosa que permet que el model sigui més robust i capaç de manejar diferents transformacions i distorsions que podrien passar en imatges del món real. La classe ‘ImageDataGenerator’ utilitzada, proporciona diverses tècniques per aconseguir aquest augment. Dins d’aquesta s’ha especificat els següents paràmetres: • Normalitza les imatges dividint per 255 perquè els valors dels píxels estiguin al rang [0, 1] en lloc de [0, 255]. • Rota aleatòriament les imatges en un rang de 0 a 40 graus. • Mou aleatòriament les imatges horitzontalment fins al 20% de l'amplada de la imatge. • Desplaça aleatòriament les imatges verticalment per fins al 20% de l'alçada de la imatge. • Aplica una transformació de cisallament aleatòria amb un angle de fins a 20 graus. • Aplica un zoom aleatori de fins al 20%. • Inverteix aleatòriament les imatges horitzontalment. • Omple els píxels buits creats per les transformacions usant el valor del píxel més proper.
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 65 Per al conjunt de dades de validació només s'aplica la normalització. No es fa servir augment de dades perquè l'objectiu és avaluar el rendiment del model en dades que no han estat distorsionades. A continuació, el generador de dades llegeix les imatges de les carpetes, aplica les transformacions d’augment de dades i les prepara per ser alimentades al model durant l’entrenament en lots. Tornant a entrenar el model amb l’augment de dades, s’han obtingut els resultats mostrats a la següent taula. Taula 5.4. Pèrdua i exactitud del model amb augmentació de dades Pèrdua 1.2784 Fig. 5.23. Codi per la augmentació de dades (1/2) Fig. 5.24. Codi per la augmentació de dades (2/2)
Pàg. 66 Memòria Exactitud 0.5875 Les corbes de pèrdua i exactitud han mostrat una millora notable. La pèrdua d'entrenament comença a disminuir de manera més constant, però l’exactitud encara és baixa a causa de la dificultat del model per classificar correctament la classe minoritària. Tot i això, la tendència model que el model comença a equilibrar-se millor entre les dues classes. 5.2.4.4. Finetuning del model base Per aprofitar millor les característiques del model base i ajustar-lo millor al conjunt de dades propi, s’ha decidit aplicar finetuning. Aquest procés permet actualitzar els pesos del model preentrenat perquè s'adaptin millor a la tasca específica. El següent fragment de codi ajusta les darreres 10 capes del model base perquè siguin entrenables. Durant el procés d'entrenament, només s'actualitzaran els pesos d'aquestes capes, mentre que les capes restants del model base romandran amb els seus pesos preentrenats sense canvis. Tornant a entrenar el model fent ús del finetuning, s’han obtingut els resultats mostrats a la següent taula. Taula 5.5. Pèrdua i exactitud pel model amb finetuning Pèrdua 1.0576 Exactitud 0.5881 Es pot observar a la taula 5.5 com amb el finetuning no hi ha hagut una millora substancial de la pèrdua i l’exactitud del conjunt de test. De totes formes, ha millorat significativament les primeres èpoques d’entrenament, amb una disminució més ràpida de la pèrdua. Tot i això, l’exactitud encara reflecteix, juntament amb la prova individual de diverses imatges, que no acaba de funcionar correctament amb la classificació correcta de la classe minoritària. 5.2.4.5. Ús de l’Early Stopiping i reducció del Learning Rate Per evitar el sobreentrenament i assegurar que el model s'atura al punt òptim de rendiment, Fig. 5.25. Codi pel finetuning (1/1)
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 67 s’ha implementat l'Early Stopping. Això permet aturar l'entrenament quan la pèrdua de validació deixa de millorar durant un nombre determinat d'èpoques. Es per això que el model es passa a entrenar amb moltes més èpoques, però sense la necessitat de fer-les totes. Per fer-ho, s’utilitza ‘tf.keras.callbacks.EarlyStopping’. Aquesta és una tècnica per aturar l'entrenament quan la mètrica monitorada deixa de millorar. En aquest cas s’ha indicat que aquesta mètrica és la pèrdua de validació i que el nombre d'èpoques amb cap millora a la mètrica monitorada abans d'aturar l'entrenament són 10. També s’indica que, un cop s'atura l'entrenament, els pesos del model han de ser restaurats als valors de l'època amb la millor pèrdua de validació. També s’utilitza ‘tf.keras.callbacks.ReduceLROnPlateau’. Aquesta tècnica redueix la taxa d'aprenentatge quan una mètrica especificada deixa de millorar. En aquest cas s’ha indicat que aquesta mètrica és la pèrdua de validació, que el nombre d'èpoques amb cap millora a la mètrica monitorada abans d'aturar l'entrenament són 5 i que quan ho faci la taxa d'aprenentatge es redueixi multiplicant-la per 0,2 amb un mínim indicat. Un cop definides, l’entrenament del model comença amb les dades d'entrenament i de validació però tenint en consideració és dos callbacks. Tornant a entrenar el model, s’han obtingut els resultats mostrats a la següent taula. Taula 5.6. Pèrdua i exactitud del model amb ús de l’Early Stopiping i reducció del Learning Rate Pèrdua 0.9812 Fig. 5.26. Codi per l’ús de l’Early Stopiping i reducció del Learning Rate (1/2) Fig. 5.27. Codi per l’ús de l’Early Stopiping i reducció del Learning Rate (2/2)
Pàg. 68 Memòria Exactitud 0.5901 Es pot observar com no hi ha hagut una millora substancial de la pèrdua i l’exactitud del conjunt de test. El que també es pot observar és que la pèrdua s’ha estabilitzat i la precisió ha deixat de millorar significativament després de diverses èpoques. El fet que les corbes de pèrdua s’hagin fet més estables, hauria d’indicar una millor generalització. De totes formes segueix havent-hi una notòria diferència entre l’exactitud del conjunt d’entrenament i el conjunt de validació, sent el de entrenament gairebé 1. Signa que encara reflecteix un fort sobreajustament. 5.2.4.6. Regularització amb Dropout i L2 Per millorar encara més la capacitat de generalització del model i reduir el risc de sobreajustament, s’ha decidit afegir regularització a través de tècniques de Dropout i L2. Per aplicar-ho, una vegada carregat el model base s’afegeixen una sèrie de capes. Primerament, s’afegeix una capa Dropout amb una taxa de deserció del 50%. Seguidament, s’afegeix una capa densa amb on s’aplica regularització L2. A continuació, s’afegeix una altra capa Dropout amb una taxa de deserció del 50%, igualment seguida per una capa densa on també s’aplica regularització L2. En fer-ho dos vegades, s'introdueix una regularització més gran en el model, la qual cosa ajuda a reduir encara més el sobreajustament. Una vegada definides aquestes capes, s’afegeixen al model base, creant així el model per a ser entrenat. Tornant a entrenar el model, s’han obtingut els resultats mostrats a la següent taula. Taula 5.7. Pèrdua i exactitud del model amb ús de regularització amb Dropout i L2 Pèrdua 0.8842 Exactitud 0.6221 Fig. 5.28. Codi per l’ús de regularització amb Dropout i L2 (1/1)
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 69 Es pot observar com no ha hagut una millora substancial de la pèrdua i l’exactituddel conjunt de test. De totes formes en les exactituds de cada època en el conjunt d’entrenament, s’ha notat una reducció respecte al cas anterior (exactitud perfecte), així assimilant-se més a la precisió del conjunt de validació, demostrant que ha funcionat aquest enfocament per reduir el sobreajustament. S’ha comprovat el mode també amb una taula de confusió. Per fer-la primerament s’ha fet la predicció amb imatges que no contenen cap de les dues classes. D’aquesta forma es pot veure per on ha d’estar el llindar que diferencia si amb una confiança donada es pot afirmar si realment la imatge correspon a una classe o no és res. S’ha observat que depenent del fons, arriba a classificar imatges amb molta confiança. Per exemple, fent prediccions amb imatges que consisteixen en un paisatge de gespa, diu amb molta seguretat (al voltant del 80%) que es tracta d’una tórtora. Això és degut a que la majoria de les fotografies que s’han utilitzat de cotorres, tenen gespa de fons, mentre que les de les garses no. És per això que es decideix usar un threshold de 0,85. Tal com es mostra a la següent taula de confusió, utilitzar un llindar tan elevat, ha fet que moltes de les imatges es classifiquessin com a desconegudes. Això es pot veure degut a que hi ha un total de 45 imatges en el conjunt de test i només s’han pogut classificar amb prou confiança 19, menys de la meitat. 5.2.4.7. Preprocessament amb detecció d’objectes Una de les possibles solucions a què el fons no prengui tanta rellevància a l’hora de distingir les dues classes és fer l’entrenament utilitzant imatges les quals l’au ocupi la gran part. Per fer-ho es podria haver retallat cada imatge de forma individual perquè es vegi la menor quantitat de fons possible, però s’ha decidit utilitzar una nova eina de visió per computador per fer-ho. S’ha utilitzat el model de detecció d’objectes YOLOv5, ja que aquesta ja està Fig. 5.29 Taula de confusió del model amb ús de regularització amb Dropout i L2
Pàg. 70 Memòria entrenada per detectar aus i poder envolta-les en un requadre. Un cop delimitada per un rectangle, és fàcil retallar la imatge i utilitzar-la per l’entrenament després de reescalar-la. Per fer-ho possible, s’importa les classes Image del mòdul PIL (Python Imaging Library) per obrir i manipular imatges. La funció ‘detect_and_crop’ està dissenyada per detectar aus en una imatge, retallar-les i desar aquestes retallades en un directori específic. Aquesta intenta obrir la imatge utilitzant la biblioteca PIL per després convertir-la en un array de Numpy, cosa que permet processar-lo pel model de detecció d'objectes. La funció utilitza el model per detectar objectes a la imatge. Ho fa tornant les coordenades de les caixes delimitadores, la confiança de cada detecció i la classe de l’objecte detectat. Només es consideren les deteccions amb una confiança superior al llindar especificat (0.5 en aquest cas). A continuació, per a cada detecció que el compleix, es fan servir les coordenades de la caixa delimitadora per retallar la regió corresponent de la imatge original. Finalment, un cop retallada, la imatge es desa en un directori específic. Per fer la detecció, es carrega el model YOLOv5. Finalment, es fa ús de la funció per a cada una de les imatges dels directoris corresponents al conjunt de dades d’entrenament, creant així un nou conjunt amb imatges retallades per les dues classes. Fig. 5.30. Codi pel preprocessament amb detecció d’objectes (1/3) Fig. 5.31. Codi pel preprocessament amb detecció d’objectes (2/3)
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 71 Tornant a entrenar el model utilitzant com a conjunt de dades d’entrenament les imatges retallades, s’han obtingut els resultats mostrats a la següent taula. Taula 5.8. Pèrdua i exactitud del model amb preprocessament amb detecció d’objectes Pèrdua 1.9184 Exactitud 0.5556 Hi va haver una caiguda inesperada en l’exactitud i un augment de la pèrdua durant les èpoques d'entrenament i validació. Les corbes mostren una gran variabilitat i no convergien adequadament, suggerint que la detecció d'objectes no millora el model, sinó que introdueix soroll addicional. Es conclou que no és l’estratègia adequada per diferenciar el fons de les espècies a detectar. 5.2.4.8. Selecció manual estratègica de les imatges S’ha decidit fer una selecció manual estratègica de les imatges, en comptes de usar l’aleatorietat, per assegurar-se que el conjunt de dades estava optimitzat i lliure de soroll que pogués confondre el model. Per a un model de classificació d'imatges, és crucial tenir una distribució balancejada i representativa als conjunts d'entrenament, validació i tets. Donat que tens un total d'aproximadament 30 imatges d'internet per a cada espècie, les quals aporten més generalització i variabilitat entre elles, i imatges preses en situacions similars a les de d’inferència, es decideix fer una distribució intel·ligent. Es divideixen de la manera següent: • Entrenament: Per entrenar el model és important tenir una varietat d'imatges que permetin generalitzar. Com que les imatges d'internet són més variades, s’utilitzen la majoria per a l'entrenament. S’han utilitzat 25 d’internet i 15 pròpies per a cada espècie. • Validació: El conjunt de validació es fa servir per ajustar els hiperparàmetres del model i evitar el sobreajustament. Aquest conjunt ha de tenir imatges que no estiguin al conjunt d'entrenament, però que siguin representatives del conjunt de test. S’han utilitzat 5 d’internet i 10 pròpies per a cada espècie. Fig. 5.32. Codi pel preprocessament amb detecció d’objectes (3/3)
Pàg. 72 Memòria • Test: El conjunt de test ha de contenir imatges que siguin representatives de l'escenari real on s'utilitzarà el model. S’han utilitzat aproximadament 100 pròpies per a cada espècie. En aquest cas després de varies iteracions provant diferents tècniques prèviament esmentades s’ha acabat utilitzant l’augment de dades, Regularització amb Dropout i L2, l’Early Stopiping amb paciència 10 i reducció del Learning Rate amb factor 0,2 i paciència 5. A més, amb un petit conjunt de dades, un BATCH_SIZE de 32 pot ser massa gran, per això s’ha utilitzat un de 8, cosa que ajuda a estabilitzar l'entrenament. Tornant a entrenar el model, s’han obtingut els resultats mostrats a la següent taula. Taula 5.9. Pèrdua i exactitud del model amb preprocessament amb detecció d’objectes Pèrdua 0.5913 Exactitud 0,9793 La selecció manual estratègica de les imatges ha portat a una millora significativa en l’exactitud final del model, aconseguint una excel·lent precisió i una pèrdua baixa. Durant les èpoques d'entrenament, s’ha observat una convergència ràpida i estable de les corbes de pèrdua i precisió, indicant que el model està ben ajustat i generalitza correctament al conjunt de test. 5.2.5. Avaluació del model definitiu En aquest apartat s’avalua el model definitiu amb mètriques vistes en el capítol 2.7 per tal de demostrar el correcte funcionament i eficiència del model de classificació d’imatges desenvolupat. Primerament, durant el seu entrenament s’han observat una sèrie de coses: • S’ha arribat a entrenar fins a 30 èpoques • La pèrdua disminueix de forma constant al llarg de les èpoques, cosa que és un bon indici que el model està aprenent. • L'exactitud amb les dades d’entrenament millora notablement i arriba gairebé al 100% cap a les darreres èpoques, indicant un bon ajustament a les dades d'entrenament. • L’exactitud amb les dades de validació fluctua inicialment i mostra una millora significativa a partir de l'època 13, encara que les fluctuacions a les primeres èpoques poden ser un senyal de sobreajustament. • El learning_rate inicial és 0,01 i es redueix a 0,002 a l'època 12, cosa que és una bona pràctica per ajustar el model de manera més precisa. • A partir de l'època 19, es redueix encara més a 0,0004 i després a 0,00008, cosa
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 73 que pot ajudar a afinar el model, encara que els beneficis addicionals semblen ser limitats ja que l’exactitud i la pèrdua del conjunt de validació s'estabilitzen. També s’ha fet la taula de confusió comparant les dues espècies. Com en aquest cas les imatges eren predites amb molt alta confiança, s’ha decidit usar un threshold de 0,9. Es pot considerar un resultat satisfactori ja que tot i que no totes les deteccions passin el llindar de confiança, no hi ha cap confusió entre espècies. A part que en la inferència, en tractar-se d’una successió d’imatges i no només un frame, s’acabaria detectant correctament l’espècie amb suficient confiança. De totes maneres, es vol avaluar la detecció de cada espècie individualment, avaluant-les en comparació amb imatges sense cap espècie (només un fons). D’aquesta forma es pot no només avaluar si el model sap diferenciar espècies, sinó també identificar la presència Fig. 5.33. Corba d’evolució per èpoques de l’exactitud i pèrdua amb el conjunt de dades d’entrenament (blau) i validació (taronja) Fig. 5.34. Taula de confusió del model final
Pàg. 80 Memòria 6. Resultat final 6.1. Implementació del sistema en entorn real Per comprovar el resultat final del sistema desenvolupat es disposa el hardware mostrat a l’apartat 4.1 amb el seu corresponent software mostrat en el capítol 5 en el mateix entorn d’es d’on s’han obtingut les imatges per a l’entrenament. Donat que el sistema es capaç d’identificar tórtores i garses, es col·loca en diferents localitzacions del mateix jardí particular de Cabrera de Mar. El sistema ha sigut provat duran durant 7 dies, 4 hores al dia de forma ininterrompuda, així permetent fer una comprovació en diferents entorns d’il·luminació i clima. Fent un total de 28 hores. En aquest temps s’ha obtingut 28 hores de vídeos des dels qual s’ha vist un total de 48 aus de les quals 48 son tórtores i cap és garsa. Fent una revisió exhaustiva del metratge obtingut durant aquest temps s’ha observat com en cap moment s’ha detectat de forma errònia una espècie provocant el lliurament equivocat de menjar. En canvi, de les 48 tórtores vistes, s’han detectat i dispensat menjar amb èxit a un total de 22, ja que han sigut detectades amb una confiança superior al llindar escollit a com a mínim un frame. Les 26 restants s’ha considerat que no han sigut detectades degut a la llunyania respecte a la càmera. Taula 6.1. Observacions, deteccions amb èxit i lliurament de menjar amb èxit per espècie Espècie Observacions Deteccions amb èxit Lliurament de menjar amb èxit Tórtora 48 22 22 Garsa 0 0 0 Degut a la falta d’aparicions d’aus, no s’ha pogut fer una comprovació completa del Fig. 6.1. Frames processats pel sistema en la detecció d’una tòrtora
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 81 sistema. De totes maneres, el funcionament del model ja ha sigut comprovat a l’apartat 5.2.5., i el que busca en la implementació del sistema és la comprovació del correcte funcionament conjunt del harware i software desenvolupats en un entorn real. Amb els resultats obtinguts, s’ha pogut demostrar com el sistema pot funcionar de forma ininterrompuda, fent ús del model i sense cap mena de connexió remota, i per tant es pot determinar com un èxit tot i les possibilitats de millora explicades a continuació. 6.2. Línies de millora Tot i els èxits obtinguts amb el sistema de reconeixement d'espècies d'aus, hi ha diverses àrees on es podrien realitzar millores significatives. En primer lloc, un dels aspectes limitants del sistema actual és la seva dependència d'una font d'alimentació constant, ja que ha d'estar endollat per funcionar. Una possible millora seria la implementació d'una solució d'energia autònoma, com ara panells solars o bateries recarregables, que permetrien al sistema operar en ubicacions més remotes sense necessitat d'una connexió elèctrica. L’altre aspecte crític que cal abordar és la impermeabilització del sistema. Actualment, el sistema no és resistent a l'aigua, cosa que en limita l'operativitat en entorns exteriors on podria estar exposat a la pluja o a condicions climàtiques adverses. Un altra millora podria venir d’una actualització és el harware utilitzat. L'elecció inicial de la NVIDIA Jetson Nano, encara que adequada al seu moment, ja mostra signes de quedar desfasada. Amb la disponibilitat de maquinari més modern i potent, com la Jetson Xavier NX o fins i tot dispositius més avançats, es podria millorar significativament la capacitat de processament i l’eficiència del sistema. La mida i la diversitat del conjunt de dades utilitzades també representen una oportunitat per a la millora. Amb més temps i recursos, es podria haver compilat un conjunt de dades més gran i variat, que inclogués més espècies d'aus. Això no només milloraria la precisió del model de classificació, sinó que també faria el sistema més robust davant de diferents condicions ambientals i variacions en l'aparença de les aus. A més, el Servo Driver utilitzat al prototip té la capacitat de connectar múltiples servomotors. Aprofitar aquesta funcionalitat permetria desenvolupar un sistema de dispensació de menjar més complex i eficient, capaç d'atendre diferents tipus d'aus simultàniament o gestionar diverses estacions d'alimentació en un sol entorn. Finalment, es podrien considerar millores a la interfície d'usuari. El desenvolupament d'una interfície d'usuari més intuïtiva i accessible facilitaria la configuració i monitoratge del sistema per part d'usuaris amb diferents nivells d'experiència tècnica.
Pàg. 82 Memòria 7. Estudi econòmic En aquest apartat es realitza l’estudi econòmic del desenvolupament d’aquest projecte. S'hi recullen totes les despeses. En les següents taules, es detalla el cost de cada component, les eines utilitzades per desenvolupar l’aplicació, l’amortització de l’ordinador utilitzat i les hores dedicades. A la taula següent es veu el cost dels materials, que molts en ser reutilitzats, i sabent que es reutilitzaran, s’ha tingut en compte el seu amortiment. Taula 7.1. Cost del material del projecte Material Component Quantitat Preu unitari (€/u) Amortització Cost total (€) NVIDIA Jetson Nano Starter Kit 1 239 10% 23,9 Mòdul PCA9685 1 3 40% 1,2 Càmera RP v2 1 19 40% 7,6 Servomotor 1 1,85 40% 0,7 Ventilador 1 2 50% 1 Disc dur 2TB 1 80 5% 4 LEDs 3 0.03 10% 0.003 Menjar ocell 5 4 100% 20 Estructura de fusta 2 10 100% 20 Peces muntatge Vàries - 100% 5 Total 83,4 Taula 7.2. Cost de personal del projecte Costos de personal Tipus de tasca Hores Cost per hora (€/h) Cost total (€) Estudi previ 70 15,00 1050,00
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 83 Programació 110 20,00 2200,00 Muntatge 25 10,00 250,00 Proves 25 10,00 250,00 Transport 10 10,00 100,00 Redacció de memòria 90 15,00 1350,00 Total 5200,00 Taula 7.3. Cost de recursos del projecte Costos de consum de recursos Tipus de recurs Hores Cost per hora (€/h) Cost total (€) Consum elèctric de PC, plaques i bateria 270 0,14 37,8 Consum elèctric de l’espai de treball 320 0,14 44,8 Total 82,6 Taula 7.4. Cost total del projecte Cost total del projecte Part Cost (€) Material 83,40 Costos de personal 5200,00 Consum de recursos 82,60 Total (sense IVA) 5366,00 Total (amb IVA) 6492,86
Pàg. 84 Memòria 8. Planificació El projecte està planificat per al desenvolupament i la implementació d'un sistema basat en la plataforma Jetson Nano. Aquest projecte està format per diverses fases clau, des de l'adquisició de coneixements teòrics fins a la prova en un entorn real. Cada fase està dissenyada per assegurar una progressió lògica i eficient, permetent una integració amb èxit de totes les parts del sistema. Fig. 8.1. Diagrama de Gantt de la planificació del projecte
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 85 9. Estudi ambiental Aquest estudi ambiental avaluarà els impactes positius i negatius de la menjadora intel·ligent a l'entorn natural, considerant factors com la biodiversitat, la interacció amb espècies locals, l'ús de recursos i la sostenibilitat. L'impacte ambiental de la part de programari del projecte és molt baix, ja que el desenvolupament s'ha dut a terme de forma virtual. L’impacte està lligat principalment als materials utilitzats per a la construcció de l’ordinador involucrat en tot el procés i al consum elèctric resultant del seu ús. Per al muntatge de la menjadora intel·ligent s'ha optat per utilitzar materials reciclats d'altres projectes. Això vol dir que no s'ha comprat cap dispositiu nou i els components utilitzats no són d'ús exclusiu per a aquest projecte. Es planeja prolongar-ne l'ús al màxim i reciclar-los en finalitzar la vida útil. Els únics materials nous i no reciclats són els components electrònics necessaris, com el Jetson Nano i la càmera, a més de la pila o bateria necessària per a la seva alimentació. A continuació, s’avaluarà l’impacte ambiental de la realització del treball mitjançant la selecció de diversos indicadors ambientals significatius. 1. kg de Gasos d'efecte hivernacle (kg CO2e) i. Consum energètic del Jetson Nano: • El Jetson Nano té un consum mitjà de 10 W. • Funcionament continu: 24 hores al dia durant un any (365 dies). 𝐶𝑜𝑛𝑠𝑢𝑚𝑒𝑛𝑒𝑟𝑔𝑒𝑡𝑖𝑐𝑎𝑛𝑢𝑎𝑙 =10𝑊 × 24ℎ𝑜𝑟𝑒𝑠 𝑑𝑖𝑎 ×365𝑑𝑖𝑒𝑠 𝑎𝑛𝑦 =87,6𝑘𝑊ℎ 𝑎𝑛𝑦 ii. Emissions de CO2e per kWh: • A Espanya, l'emissió mitjana de CO2e per kWh consumit és aproximadament de 0,27 kg CO2e/kWh. 𝐸𝑚𝑖𝑠𝑠𝑖𝑜𝑛𝑠𝐶𝑂2𝑒 =87,6𝑘𝑊ℎ 𝑎𝑛𝑦 ×0,27𝑘𝑔𝐶𝑂2𝑒 𝑘𝑊ℎ=23,652𝑘𝑔𝐶𝑂2𝑒/𝑎𝑛𝑦 Un arbre pot absorbir entre 20 i 30 kg de CO2 cada any. Comparant amb les emissions del sistema, un sol arbre podria compensar aproximadament les emissions del sistema anualment. 2. kg de Residus Sòlids Urbans (RSU) generats Els components electrònics de la menjadora, principalment el Jetson Nano i la
Pàg. 86 Memòria càmera, poden generar residus electrònics al final de la seva vida útil. Suposem una vida útil de 5 anys per al dispositiu: • Pes del Jetson Nano i la càmera: Aproximadament 150 g (0,15 kg) 𝑅𝑒𝑠𝑖𝑑𝑢𝑢𝑠𝑎𝑛𝑢𝑎𝑙𝑠 =0,15𝑘𝑔 5𝑎𝑛𝑦𝑠 = 0,03𝑘𝑔/𝑎𝑛𝑦 3. kg de Residus Tòxics i Perillosos Els residus electrònics contenen components tòxics com ara plom, mercuri i cadmi. Per simplificar, considerem que el 10% del pes total del dispositiu es pot classificar com a residus tòxics. 𝑅𝑒𝑠𝑖𝑑𝑢𝑢𝑑𝑡ò𝑥𝑖𝑐𝑠 =0,03 kg any × 0,1 = 0,003kg/any 4. Energia Total (kWh) El consum energètic total anual del sistema és la suma del consum del Jetson Nano i altres components (cambra, dispensador). 𝐶𝑜𝑛𝑠𝑢𝑚_𝑡𝑜𝑡𝑎𝑙_𝑎𝑛𝑢𝑎𝑙 = 87,6 kWh(JetsonNano) + 20 kWh(altres) = 107,6 kWh/any Per l’altre banda, la implementació d’aquest projecte també pot provocar efectes positius respecte a la biodiversitat, la interacció amb espècies locals i la sostenibilitat. En proporcionar una font d'aliment constant, la menjadora pot atreure més diversitat d'aus a la zona. Això pot ser especialment beneficiós en àrees urbanes o suburbanes on les fonts d’aliment natural poden ser limitades. La disponibilitat selectiva d'aliment pot ajudar també a la reducció d’espècies invasores que podrien competir amb les espècies locals per recursos. La càmera integrada permet el monitoratge constant de les espècies que visiten la menjadora. Aquesta informació pot ser valuosa per a estudis de conservació i biodiversitat, permetent identificar patrons de comportament i necessitats alimentàries de diferents espècies.
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 87 10. Estudi social i d’igualtat de gènere Aquest estudi social i d'igualtat de gènere avaluarà si el projecte està condicionat o pot condicionar diferenciacions discriminatòries de gènere o estatus social. S'analitzaran diversos aspectes relacionats amb l'accés a la tecnologia, l'equilibri de gènere a l'equip de treball i l'impacte social i de gènere del projecte. i) Accés a la tecnologia • No s'han identificat discriminacions a l'accés a la tecnologia utilitzada en el projecte entre homes i dones formats en l'àmbit tecnològic. • S’ha identificat discriminacions a l'accés a la tecnologia utilitzada en el projecte, ja que l'accés pot ser més difícil per a persones no formades tecnològicament. • No s'han identificat discriminacions a l'accés a la tecnologia utilitzada en el projecte a persones amb identitats de gènere diferents. • No s'han identificat discriminacions a l'accés a la tecnologia utilitzada en el projecte a col·lectius vulnerables. ii) L'equip de treball que desenvolupa aquest projecte està compost per 100% d'homes (2 homes), cosa que no garanteix un equilibri de gènere. iii) S’han usat imatges i un ús del llenguatge no sexista ni androcèntric. iv) El projecte no promou polítiques diferenciadores entre col·lectius per raons de raça, cultura o nivell econòmic. v) El treball ha tingut en compte si organitzacions socials poden participar en el desenvolupament del projecte, però no ha sigut necessari. vi) En aquest projecte no han existit mecanismes per monitorar mitjançant indicadors els aspectes relatius al gènere. vii) En la documentació del projecte s'ha tingut en compte la igualtat de gènere, utilitzant els noms de pila complets de cada persona involucrada per assegurar la visibilitat i el reconeixement equitatiu. viii) Els resultats del projecte tenen el potencial de beneficiar col·lectius vulnerables i proporcionen una eina accessible i útil per a l'educació ambiental i la conservació d'aus.
Pàg. 88 Memòria ix) Objectius de Desenvolupament Sostenible (ODS): ODS 4: Educació de qualitat: Fomenta l’educació ambiental i la conscienciació sobre la biodiversitat. ODS 11: Ciutats i comunitats sostenibles: Promou la integració de la naturalesa en entorns urbans i suburbans. ODS 15: Vida d'ecosistemes terrestres: Contribueix a la conservació de la biodiversitat i dels ecosistemes.
Intel·ligència artificial a l’Edge: Menjador d’ocells intel·ligent Pág. 89 11. CONCLUSIONS El projecte ha aconseguit complir els objectius plantejats a l'inici, centrats en la implementació d'un sistema autònom de reconeixement d'espècies d'aus utilitzant tecnologies d'intel·ligència artificial i computació a la vora. Al llarg del desenvolupament, s'ha demostrat la capacitat del sistema per identificar dues espècies d'aus de manera eficient. La revisió exhaustiva de la literatura ha permès identificar les tècniques més efectives i sense requeriment d’un molt alt coneixement de programació i xarxes neuronals en visió per computador i aprenentatge automàtic per classificar espècies. Això ha sigut fonamental per desenvolupar una base de dades d'imatges pròpia, prou extensa i variada per entrenar models de classificació robusts. Utilitzant aquestes imatges, s’ha reentrenar un model preentrenat de xarxa neuronal convolucional, adaptant-lo específicament a les necessitats del projecte. Aquest procés ha assegurat que el sistema és capaç d'identificar diferents espècies d'aus amb una precisió alta, fins i tot en condicions variades d'il·luminació i clima. L'avaluació estadística de diferents models de classificació ha permès seleccionar el més adequat en termes de precisió, eficiència i robustesa, optimitzant-lo per al seu desplegament en un dispositiu Edge, com el Jetson Nano. En el projecte ha destacat la importància d'una base de dades d'imatges extensa i diversificada i ha demostrat la possibilitat de crear un model sense un coneixement molt elevat de programació. Ja que amb l’ús de llibreries especialitzades com Tensorflow i APIs de molt alt nivell com Keras, han permès utilitzar tècniques de reentrenament i ajust fi de models preentrenats, que han permès adaptar el sistema a les particularitats de l’entorn específic d’aplicació. La combinació de hardware i software desenvolupada ha resultat en un prototip funcional que podria ser la base per a futures investigacions i aplicacions comercials. Com a recomanació per a treballs futurs, seria valuós explorar l'ampliació del sistema per incloure més espècies i millorar la robustesa davant de variacions ambientals com canvis d'il·luminació i condicions climàtiques.