STORE CLASSIFICATION USING MACHINE LEARNING A Degree Thesis Submitted to the Faculty of the Escola Tècnica d'Enginyeria de Telecomunicació de Barcelona Universitat Politècnica de Catalunya by Sergi Gispert Serrano In partial fulfilment of the requirements for the degree in TELECOMMUNICATION SYSTEMS ENGINEERING Advisor: Josep Ramon Morros Advisor: Elisa Sayrol Barcelona, June 2020
1 Abstract In this project we have developed different image classification systems based on Machine Learning techniques. This work has implemented classifiers based on basic Machine Learning techniques as well as classifiers based on more complex techniques such as Convolutional Neural Networks. The purpose of these classifiers is first to differentiate between an open and a closed store, and then to classify these open stores according to the type of activity carried out there. It should be mentioned that this project is part of a higher project carried out by the Diputació de Barcelona, where the ultimate goal is to place cameras on top of a municipality vehicle so that it captures georeferenced images of shops so that information can be extracted to check if they comply with the regulations.
2 Resum En aquest projecte hem desenvolupat diferents sistemes de classificació d’imatges basat en diferents tècniques de Machine Learning. En aquest treball s’ha implementat classificadors basats en tècniques bàsiques de Machine Learning i també classificadors basats en tècniques més complexes com les Xarxes Neuronals Convolucionals. L’objectiu d’aquests classificadors es tracta primerament de diferenciar entre una botiga oberta i una tancada, i posteriorment de classificar aquestes botigues obertes segons el tipus d’activitat que s’hi realitza. Cal mencionar que aquest projecte forma part d’un projecte superior portat a terme per la Diputació de Barcelona, on l’objectiu final es tracta de col·locar càmeres a la part superior d’un cotxe perquè vagi capturant imatges GEO referenciades de comerços i poder extreure informació d’aquests i veure si compleixen la normativa.
3 Resumen En este proyecto hemos desarrollado diferentes sistemas de clasificación de imágenes basado en diferentes técnicas de Machine Learning. En este trabajo se ha implementado clasificadores basados en técnicas básicas de Machine Learning y también clasificadores basados en técnicas más complejas como las Redes Neuronales convolucionales. El objetivo de estos clasificadores se trata primeramente de diferenciar entre una tienda abierta y una cerrada, y posteriormente de clasificar estas tiendas abiertas según el tipo de actividad que se realiza. Cabe mencionar que este proyecto forma parte de un proyecto superior llevado a cabo por la Diputación de Barcelona, donde el objetivo final se trata de colocar cámaras en la parte superior de un coche que vaya capturando imágenes GEO referenciadas de comercios y poder extraer información de estos y ver si cumplen la normativa.
4 Revision history and approval record Revision Date Purpose 0 15/06/2020 Document creation 1 22/06/2020 Document revision 2 27/06/2020 Document revision DOCUMENT DISTRIBUTION LIST Name e-mail Sergi Gispert Serrano
[email protected] Josep Ramon Morros Rubió
[email protected] Elisa Sayrol Clols
[email protected] Written by: Reviewed and approved by: Date 15/06/2020 Date 27/06/2020 Name Sergi Gispert Name Josep Ramon Morros Position Project Author Position Project Supervisor
5 Table of contents Abstract 1 Resum 2 Resumen 3 Revision history and approval record 4 Table of contents 5 Llistat de Figures 7 Llistat de Taules: 8 1. Introducció 9 1.1. Origen del projecte 9 1.2. Requeriments i Especificacions 9 1.3. Pla de Treball 10 1.4. Diagrama de Gantt 11 1.5. Incidències 11 2. Estat de l’art de la tecnologia aplicada al llarg d’aquest projecte 12 2.1. Machine Learning 12 2.1.1 Classificadors usats en Machine Learning: 13 2.1.1.1 SVM (Support Vector Machine) 13 2.1.1.1. Random Forest 14 2.2. Deep Learning 14 2.2.1. Definició 14 2.2.2. Paràmetres 15 2.2.2.1. Funció de Cost: 15 2.2.2.2. Optimitzador: 15 2.2.2.3. Èpoques: 15 2.2.2.4. Batch size 15 2.3. Xarxes Neuronals Convoluvionals 16 2.3.1. Definició 16 2.3.2. Tipus de Capes Utilitzades 16 2.3.2.1. Capa convolucional 16 2.3.2.2. Capa de Pooling 16 2.3.2.3. Capa Fully Connected 16 2.3.2.4. Capa de Dropout 17 2.3.3. Models Pre-Entrenats 17
6 2.3.3.1. VGG16 17 2.3.3.2 ResNet 50 18 3. Metodologia 19 3.1. Treball Preliminar 19 3.1.1. Creació d’una Base de Dades 19 3.1.2. Anotació de la Base de Dades 20 3.1.3. Aprenentatge del llenguatge de programació 21 3.2. Processat i Classificació 21 3.2.1. Mètodes clàssics classificació 21 3.2.2. Classificadors 22 3.2.3. Mètodes de Deep Learning 22 3.2.3.1 Extractor de característiques 22 3.2.3.1.1 Model Propi 22 3.2.3.1.2 Model Propi amb tècniques de Data Augmentation 23 3.2.3.1.3 Model Pre-Entrenat 23 3.2.3.1.4 Fine Tuning (Model pre-entrenat amb Data Augmentation) 24 3.3. Mètriques 24 3.3.1. Mètriques usades en classificacions binaries 24 3.3.2. Mètriques usades en classificacions multiclasse 25 3.4. Experiments 25 3.4.1. Experiment 1 (Classificador binari 1) 25 3.4.2. Experiment 2 (Classificador binari 2) 26 3.4.3. Experiment 3 (Classificador Multiclasse) 26 4. Resultats 27 4.1. Experiment 1 (Classificador binary 1) 27 4.2. Experiment 2 (Classificador binary 2) 28 4.3. Experiment 3 (Classificador Multiclasse) 30 5. Costos 31 6. Conclusions i futures millores 32 Bibliography: 33 Glossary 35 Annex 1 36
7 Llistat de Figures Figura 1: Diagrama de Gantt Figura 2: Aplicació del Kernel Figura 4: Esquema Random Forest Figura 4: Funció ReLu Figura 5: Funció Sigmoid Figura 6: Funció Softmax Figura 7: Arquitectura VGG16 Figura 8: Arquitectura ResNet Figura 9:Exemple comerç tancat Figura 10: Exemple comerç obert Figura 11: Arquitectura Model Propi Figura 12: Arquitectura Model Pre-Entrenat Figura 13: Arquitectura Model Fine Tuning Figura 14: Accuracy Experiment 2 Model propi Figura 15: Loss Experiment 2 Model propi Figura 15: Accuracy usant Model propi + data augmentation Figura 16: Loss usant Model propi + data augmentation Figura 17: Accuracy i Loss usant model pre-entrenat VGG 16 Figura 18: Accuracy i Loss usant model pre-entrenat ResNet Figura 19: Accuracy i Loss usant model pre-entrenat VGG 16 + FT Figura 20: Accuracy i Loss usant model pre-entrenat ResNet +FT Figura 21: Accuracy i Loss usant model pre-entrenat VGG 16 Figura 22: Accuracy i Loss usant model pre-entrenat ResNet Figura 13: Accuracy i Loss usant model pre-entrenat VGG 16 + FT Figura 24: Accuracy i Loss usant model pre-entrenat ResNet +FT
8 Llistat de Taules: Taula 1: Resultats Experiment 1 Taula2 : Representació costos del Projecte
15 Aquestes neurones artificials estan connectades a altres neurones. Cada connexió està escalada amb un pes (w) per tal d’incrementar o reduir el valor de cadascun d’aquests inputs depenent de la seva importància. Cada una d’aquestes neurones té també una funció d’activació a la seva sortida, la qual és una funció no lineal utilitzada per transformar el nivell d’activació d’aquesta neurona en una senyal de sortida. Algunes d’aquestes activacions són les Sigmoides, Hipertangents, ReLu, LeakyRelu i Softmax. Les més utilitzades són les ReLu o LeakyRelu després de les neurones que formen capes convolucionals, la Sigmoid com a activació final si es tracta d’una classificació binària o Softmax si es tracta d’una classificació multi classe. Figura 4: Funció ReLu [23] Figura 5: Funció Sigmoid [24] Figura 6: Funció Softmax [25] En aquests models les dades fan dues passades, una de input a output (forward propagation [28]) on es calcula la sortida i es troba el seu error, i després una segona passada on l’error trobat al final, passa en direcció contrària de output a input (backward propagation [28]) per tal d’ensenyar a les neurones i capes com corregir aquest error i ajustar el valor dels pesos i biaixos. 2.2.2. Paràmetres Aquestes xarxes tenen una sèrie de paràmetres per ser ajustats: 2.2.2.1. Funció de Cost: La loss function o funció de cost es tracta de la funció usada per estimar l’error comparant la predicció amb el valor original. En altres paraules es tracta d’un mètode que avalua el bon funcionament del algoritme en relació a les dades d’entrada. Si la predicció es desvia massa dels resultats esperats, la loss function tindrà un valor molt alt. Gradualment, amb l’ajuda d’alguns optimitzadors aquesta funció aprèn a reduir l’error en la predicció.[29] 2.2.2.2. Optimitzador: Es tracta d’una optimització de l’algoritme que ens ajuda a minimitzar la loss function a través de canviar i adaptar els valors dels pesos i els biaixos de la xarxa neuronal. Hi han un gran nombre d’optimitzadors entre ells els més comuns són el SGD (Stochastic Gradient Descent), Adagram, Adam, etc . 2.2.2.3. Èpoques: El nombre d’èpoques es pot resumir com el nombre de passades que fan cap endavant i cap endarrere totes les dades d’entrenament per tal d’entrenar el nostre algoritme. A mesura que el nombre d’èpoques s’incrementa més cops són canviats els pesos i bias de la nostre xarxa fins que s’arriba a obtenir uns bons resultats o un sobre entrenament. 2.2.2.4. Batch size Quan el nombre de dades d’entrada és massa gran per ser passades totes de cop per una xarxa neuronal, aquestes es divideixen en lots. El nombre de mostres dins de cada lot és l’anomenat batch size. Aquest lot representa l’entrada d’una única iteració a la nostre xarxa neuronal.
16 2.3. Xarxes Neuronals Convoluvionals 2.3.1. Definició Una xarxa neuronal convolucional (CNN) és un tipus particular de xarxa neuronal. Mentre que en una xarxa neuronal normal es dona per assumit que totes les neurones d’una capa estan connectades a les de la següent capa, en una CNN cada neurona només està connectada a un subconjunt de les neurones de la capa anterior. Aquestes xarxes han mostrat bons resultats a la hora d’adquirir un aprenentatge quan els seus inputs són imatges gràcies al seu mètode d’extreure característiques. Aquestes xarxes tenen dos particularitats que les diferencien de les altres. ● Mecanisme de Pooling, que té la funció de reduir el nombre de paràmetres d’entrenament del model al mateix temps que s’assegura que els paràmetres més importants són conservats. ● Aquestes xarxes contenen capes localment connectades, el que significa que les neurones a la sortida de les capes estan connectades només amb les seves neurones d’entrada locals properes en lloc de les neurones d’entrada senceres de les capes connectades. 2.3.2. Tipus de Capes Utilitzades Les capes més comuns usades en aquest tipus de xarxes són explicades a continuació: 2.3.2.1. Capa convolucional Aquestes capes són les que s’apliquen com a filtres a la imatge original o a altres mapes de característiques en les xarxes neuronals convolucionals. La funció d’aquestes capes es tracta de realitzar una convolució entre la imatge i un filtre anomenat Kernel per entrenar el model. Aquesta convolució consta de diferents híper paràmetres a configurar i que defineixen com entrena aquesta capa. En el nostre cas al tractar-se d’imatges usarem una convolució bidimensional, que és capaç de detectar característiques visuals en aquestes com els canvis de color, els marges, les línies etc. Una característica molt interessant d’aquestes capes és que quan han après a detectar una característica en un punt de la imatge, és capaç de reconèixer-la després en qualsevol altre punt d’aquesta imatge. 2.3.2.2. Capa de Pooling Com hem mencionat anteriorment, aquesta capa té la funció de reduir el nombre de paràmetres d’entrenament del model al mateix temps que s’assegura que els paràmetres més importants són conservats. Aquesta tècnica és útil per reduir el cost computacional del nostre algoritme que requeriria entrenar amb totes les característiques en comptes de fer-ho únicament amb les més importants i que ens aporten més informació i fan el nostre procés més eficient. Existeixen diversos tipus d’aquestes capes, les més habituals són, la MaxPooling, que agafa la característica amb el valor més alt d’un conjunt d’aquestes i la Average Pooling, que es queda amb el valor de la mitjana de totes aquestes. 2.3.2.3. Capa Fully Connected Un cop aplanades les característiques en un únic vector, el mapa de característiques aplanat es passa a través d’una xarxa neuronal la qual es compon de la capa d’entrada, la capa completament connectada i la de sortida on es prendrà la decisió de a quina classe pertany. La capa completament connectada és una capa semblant a una de les capes ocultes en xarxes ANN però en la que cadascuna de les neurones que formen la capa anterior està connectada amb totes les neurones de la següent. La informació de les classe
17 prevista es transmet a la xarxa i es calcula l’error de predicció que s’usa posteriorment per millorar la predicció. És important que el valor a cadascuna de les neurones finals que representen les classes tinguin un valor entre 0 i 1, que representa la probabilitat de que sigui aquella classe, i aquesta és la tasca que realitza la funció Softmax mencionada anteriorment. 2.3.2.4. Capa de Dropout Es tracta d’una tècnica de regularització utilitzada per reduir el sobre ajustament de les xarxes neuronals. Es basa en deixar de banda algunes neurones de la xarxa neuronal. Aquestes neurones són rebutjades durant la fase d’entrenament de forma aleatòria amb una certa probabilitat. D’aquesta manera s’obliga a la xarxa a aprendre funcions més robustes que són més útils amb diferents subconjunts aleatoris d’altres neurones. 2.3.3. Models Pre-Entrenats Algunes d’aquestes xarxes neuronals convolucionals ja han estat pre-entrenades per altres investigadors utilitzant bases de dades genèriques formades per milions d’imatges i nosaltres les usarem com a extractors de característiques. Existeixen molts d’aquests models ja pre-entrenats, entre ells podem trobar el VGG16 i VGG19 [18], ResNet [19], DenseNet [20], AlexNet [21] etc. Degut al seu bon funcionament en imatges, al gran nombre de paràmetres que tenen per ser entrenats, el temps d’execució que tenen respecte les altres i les particularitats que comentem en els següents apartats ens hem decantat per utilitzar les següents, tot i que en un futur si es vol seguir amb el projecte s’hauran d’acabar provant totes: 2.3.3.1. VGG16 Es tracta d’una xarxa neuronal convolucional desenvolupada per K.Simonyan i A.Zissereman de la universitat d’Oxford. Aquest model aconsegueix un 92.7% d’accuracy a ImageNet, que es tracta d’una base de dades d’aproximadament 15 milions d’imatges d’alta resolució que pertanyen a 1000 classes diferents. Aquest model té com a base un model anterior anomenat AlexNet reemplaçant els filtres de kernel de gran tamany per filtres de Kernel amb un tamany múltiple de 3x3 un rere l’altre. Aquesta xarxa està formada per les capes explicades anteriorment i té la següent arquitectura: Figura 7: Arquitectura VGG16 [26]
18 2.3.3.2 ResNet 50 Es tracta d’un tipus de ANN que es diferència de les demés degut a la seva particularitat de “saltar-se” algunes capes en les anomenades capes residuals, la particularitat d’aquestes capes es tracta de que molts paràmetres passen per ser entrenats a través de capes convolucionals, però hi han uns altres que no s’entrenen i s’uneixen tots posteriorment, això provoca que hi hagin uns paràmetres que no estan tant entrenats com altres i que permeten mantenir algunes de les característiques de la imatge original.. Els models típics de ResNet implementen salts de doble o triple capa acompanyats de ReLus i una normalització dels lots. S’acostuma a utilitzar una matriu de pesos addicional per tal de que la xarxa aprengui amb els salts. L’objectiu que es pretén complir amb aquests salts de capes és evitar el problema de la desaparició dels gradients reutilitzant les activacions d’una capa anterior fins que la següent capa aprengui els seus pesos. Durant l’entrenament, els pesos s’adapten per silenciar la capa superior i amplificar la capa anteriorment saltada. Aquesta xarxa està formada per les capes explicades anteriorment i té la següent arquitectura: Figura 8: Arquitectura ResNet [27]
19 3. Metodologia Durant la part inicial del projecte, hem estat molt centrats en investigar i estudiar diferents tècniques de classificació per adaptar-les al nostre sistema i que ens permetessin construir un model el més fiable i robust possible. Hem prioritzat aquest aspecte abans que en enfocar-nos en un únic mètode de classificació i intentar obtenir els millors resultats amb aquest, ja que el nostre objectiu ha sigut deixar una bona base per que en un futur, qualsevol persona que vulgui seguir desenvolupant aquest projecte pugui partir d’una base sòlida. 3.1. Treball Preliminar 3.1.1. Creació d’una Base de Dades Un cop se'ns va plantejar aquest projecte, el primer en el que tots vam estar d’acord degut a la falta d’una base de dades, va ser la construcció i anotació d’aquesta. La seva construcció es basava en que els diferents membres que hem participat en projectes semblants i que necessitàvem una base de dades comuna sortíssim al carrer i fotografiéssim tot tipus de comerços, ja estiguessin oberts o tancats o inclús algunes fotografies que no representessin cap tipus de comerç per veure com les tractava el nostre sistema, sempre buscant una gran varietat. La seva construcció havia de ser constant durant tota la durada del projecte i hem procurat en tot moment tenir una base de dades balancejada, és a dir, amb el mateix nombre d’imatges de cada classe, això ens ajudarà a tenir un millor entrenament. Aquest pla es va veure afectat pràcticament des d’un principi amb l’aparició del virus SARS-CoV-2, que com tots sabem va suposar un confinament nacional i el tancament de les botigues durant un llarg període de temps. Això va provocar que ens haguéssim d’adaptar buscant altres mètodes per obtenir noves imatges amb les seves limitacions i dificultats corresponents. A la hora de crear i d’anotar la nostre base de dades vam seguir una sèrie de criteris: ● Capturar imatges GEO referenciades. ● Les imatges han de contenir preferentment un únic comerç. ● Es realitzaran fotografies de comerços localitzats a edificis baixos de pobles o ciutats. ● Cal fotografiar comerços oberts i tancats. ● Les fotografies es realitzaran de dia. ● La càmera ha d’estar paral·lela a la façana i des d’una distància que permeti veure la porta principal del comerç/activitat. ● Cal capturar també fotografies negatives, és a dir, on no hi hagi cap comerç (portals, portes de parkings, etc.) ● Inicialment no hem de realitzar fotografies on intervinguin obstacles en el camp de visió entre el fotògraf i la botiga/comerç com per exemple vehicles, contenidors, senyals de trànsit, semàfors, etc. ● En una primera fase, és millor fotografiar comerços el més comuns possible per reduir el nombre de categories. ● Cal tornar a fer fotos dels comerços/activitats (o d’un subconjunt dels mateixos) ja fotografiats en la primera versió de la base de dades dos mesos després de les primeres captures. Aquests dos últims punts, han estat més difícils de complir degut a l’aparició del virus i tot el que aquest ha provocat mencionat en el paràgraf superior.
20 Figura 9:Exemple comerç tancat Figura 10: Exemple comerç obert 3.1.2. Anotació de la Base de Dades Un cop construïda la nostre base de dades, el següent pas es tracta de la seva anotació. Necessitàvem un mètode d’anotació conjunt entre els membres de l’equip per tal de que tots el poguéssim utilitzar. Per tant vam establir una sèrie de criteris que tots hem seguit per anotar les imatges. Aquesta part d’anotació també s’ha realitzat de forma comuna entre diferents membres que realitzàvem un projecte on necessitàvem una base de dades comuna. ● Les imatges es guarden en un fitxer .csv (valors separats per comes). ● Els camps a anotar seran: nom fitxer imatge, nom activitat/comerç, obert/tancat, #captura, tipus activitat, comentaris. IMG_20200303_101719-a.jpg,Banco Caixa Geral,obert,1,banc, IMG_20200303_101719-b.jpg,Supermercat,obert,1,alimentacio, IMG_20200303_183931.jpg,UPC,obert,1,educacio, IMG_20200303_184056.jpg,abertis,obert,1,oficines, IMG_20200303_184239.jpg,Santa Gloria Coffe & Bakery,obert,1,bar/rest, ● Les imatges sense anotacions no es tindran en compte per part dels diferents algoritmes. En cas de dubte en una determinada foto, cal deixar les anotacions en blanc. ● En el camp de comentaris, es posarà una etiqueta ‘difícil’ per permetre excloure la imatge d’entrenament o test si cal. ● Obert/tancat fa referència a l’aparença exterior. Es considera tancat si està la persiana baixada o mig baixada o és molt evident visualment que el comerç està tancat. ● El camp #captura es posarà a 1 el primer cop que es fotografiï el comerç, a 2 el segon, etc. Això fa referència a fotografies preses en diferents intervals temporals (~2 mesos) ● Si una fotografia no mostra cap tipus de comerç/activitat se li assignarà la etiqueta ‘unknown’. ● Si no podem definir alguna de les etiquetes li assignarem l’etiqueta ‘negatiu’. Finalment hem creat una BBDD amb un total de 930 imatges de les quals 587 corresponen a imatges de botigues obertes, 302 a imatges de comerços tancats i 45 a altres (portals, contenidors, cotxes etc.). De les imatges que contenen una botiga oberta en pertanyen 95 a cadascuna d’aquestes categories que utilitzarem posteriorment a la nostra classificació multi classe (forn, farmàcia, fruiteria, supermercat, banc i estanc)
21 3.1.3. Aprenentatge del llenguatge de programació El següent pas en el que tots vam estar d’acord va ser la necessitat d’aprendre programació amb python [9], ja que és per excel·lència l’idioma de programació més utilitzat a la hora de de treballar amb deep learning. Per tal de fer això se’ns van proporcionar diversos tutorials [2][5][6] amb activitats que ens van permetre aprendre programació amb python al mateix moment que apreníem certes tècniques de Machine Learning. Posteriorment, procedim a la instal·lació d’una màquina virtual per crear el nostre entorn virtual amb tot el software, llibreries, mòduls etc[10]. necessaris per executar els nostres scripts amb python. Per realitzar aquest pas vam seguir les instruccions per alumnes de la UPC que es troben a la pàgina per alumnes. 3.2. Processat i Classificació 3.2.1. Mètodes clàssics classificació Primerament vam necessitar crear un algoritme capaç d’extreure les imatges que ens interessen de la nostre base de dades i les seves corresponents etiquetes. Aquest algoritme recorre línia per línia el nostre fitxer .csv on tenim anotades les nostres imatges i guarda els noms i etiquetes de la imatge en dues llistes independents transformant les etiquetes obert tancat en 1 i 0 respectivament. Un cop es tenen aquestes dues llistes es recorre el directori on tenim emmagatzemades les imatges, en cas de que el nom coincideixi amb alguna de les imatges s’extreuen les característiques d’aquesta imatge i es conserva la seva etiqueta, mentre que si no es troben s’elimina. Com a extractor de característiques utilitzem la tècnica HOG (Histogram of Oriented Gradients) [3], pensem que com que la nostre classificació es basa principalment en que la botiga tingui la persiana baixada, podem resumir la classificació amb la detecció o no d’aquesta a cada imatge, i en això el següent algoritme obté molt bons resultats. Aquesta tècnica extreu característiques de les imatges basant-se en el càlcul del gradient d’intensitat i les direccions dels contorns. Es divideix en regions més petites connectades a les que s’anomenen cel·les i es calcula el gradient dins de cada cel·la. La combinació d’aquests histogrames de cada cel·la representa l’extractor de característiques. Per a una major precisió, els histogrames locals poden ser normalitzats en contrast mitjançant el càlcul d'una mesura de la intensitat a través d'una regió més gran de la imatge, anomenada bloc, i utilitzar aquest valor per normalitzar totes les caselles dins del bloc. Un cop extretes les característiques de cada imatge i les seves etiquetes ens falta entrenar un classificador capaç de distingir entre les classes. Dividim les nostres imatges entre subconjunt d’entrenament i subconjunt de test amb unes mides de 70% i 30% del total respectivament i passarem a entrenar el nostre classificador.
22 3.2.2. Classificadors En aquest projecte hem usat els classificadors explicats anteriorment SVM amb diferents kernels i RF. Per trobar els híper paràmetres òptims dels classificadors durant l’entrenament utilitzem la tècnica ‘grid search’, que consisteix en entrenar el model amb múltiples valors de cadascun dels possibles híper paràmetres. Un cop aplicades totes les combinacions possibles agafem la que millors resultats té. Per ser més precisos es pot aplicar aquesta tècnica dos cops, ja que amb un primer cop acotem els valors d’aquests paràmetres de forma més àmplia i amb un segon cop concretem de forma molt més precisa el seu valor òptim. Finalment un cop entrenats cadascun d’aquests models amb el subconjunt d’entrenament, es provarà l’eficàcia d’aquests utilitzant el subconjunt de test i guardarem els resultats perquè siguin analitzats posteriorment. 3.2.3. Mètodes de Deep Learning L’estructura que seguirem per la creació d’algoritmes de classificació usa tècniques més avançades de Machine Learning (deep learnnig), com les xarxes convolucionals. Extracció d’imatges: L’extracció d’imatges dels directoris serà una mica diferent a la realitzada anteriorment. En aquest cas tenim una carpeta que inclou tantes carpetes com classes voldrem classificar, i dins de cada una d’aquestes trobarem les imatges. Per tant el nostre algoritme recorrerà les carpetes extraient les imatges i les etiquetes, que corresponen al nom de la carpeta. Aquestes etiquetes seran transformades a 1 o 0 quan estiguem treballant en una classificació binària, o seran codificades amb la tècnica de onehot encoding [30] quan es tracti de 3 o més classes. Un cop extretes les característiques de cada imatge i les seves etiquetes ens falta entrenar un classificador capaç de distingir entre les classes. Dividim les nostres imatges entre subconjunt d’entrenament i subconjunt de test amb unes mides de 80% i 20% del total respectivament i passarem a entrenar el nostre classificador. Normalment aquests models tenen també un subconjunt de test, de tal manera que s’entrena el model usant el subconjunt d’entrenament, es prova el model usant el subconjunt de validació i quan aquests dos subconjunts tenen bons resultats es prova el model amb el subconjunt de test. Degut a que tenim una base de dades bastant petita, hem decidit dividir només en subconjunt d’entrenament i de validació. 3.2.3.1 Extractor de característiques En aquest casos usarem xarxes convolucionals com a extractor de característiques basant-nos en diferents models: 3.2.3.1.1 Model Propi Crearem el nostre propi model, el qual entrenarem des de zero. Al tenir una base de dades petita, esperem obtenir un gran overfitting, el qual intentarem eliminar o minimitzar posteriorment amb l’ús de diferents tècniques o amb altres models. Aquests resultats ens serviran de base per veure la seva evolució. Creem aquest model usant 4 capes convolucionals (de 64, 128, 256 i 256 neurones respectivament) de dues dimensions amb kernels de mida 3x3. Inclourem també una ReLu i un max pooling de 2x2 després de cadascuna de les operacions convolucionals. Finalment d’afegeix una capa fully-connected amb una activació Sigmod per classificar les nostre fotografies entre obert i tancat. Amb aquest model, al tenir poques imatges esperem
23 obtenir uns resultats que ens indiquin un clar overfitting que anirem eliminant utilitzant diferents tècniques. Aquesta és l’estructura del nostre model: Figura 11: Arquitectura Model Propi 3.2.3.1.2 Model Propi amb tècniques de Data Augmentation Per tal d’intentar solucionar el problema del overfiting, usarem tècniques de data augmentation, que consisteixen en aplicar una sèrie de transformacions a les imatges originals de forma aleatòria, de manera que cada època serà entrenada amb noves imatges i no amb les mateixes com passava amb el model anterior. Amb aquesta implementació pretenem millorar els resultats, però al tenir una base de dades amb tant poques imatges, aquests seguiran tenint molt marge de millora. Les operacions de data augmentation que realitzem a les nostres imatges són les següents: ● Rotació entre -20 i 20 graus. ● Apropar o allunyar la imatge entre un 0 i un 15% ● Estirar o contraure la imatge horitzontalment entre un 0 i un 20% ● Estirar o contraure la imatge verticalment entre un 0 i un 20% 3.2.3.1.3 Model Pre-Entrenat Per tal de seguir millorant els resultats del nostre model, passarem a usar una xarxa convolucional pre-entrenada (convnet). Ens hem centrat principalment en dos models preentrenats, vgg16 i ResNet. Usarem aquestes xarxes com a extractors de característiques i utilitzarem un classificador creat amb una capa fully-connected amb una activació Sigmod per classificar les nostre fotografies si es tracta d’una classificació binària i activació Softmax si es tracta de 3 o més classes. Aquest classificador, al contrari que la xarxa usada com a extractor de característiques si que s’entrenarà. Esperem obtenir uns resultats bastant bons, però encara amb un marge de millora usant Fine-Tuning. Figura 12: Arquitectura Model Pre-Entrenat CONV 2D 64 MAXPOOL ReLu CONV 2D 128 MAXPOOL ReLu CONV 2D 256 MAXPOOL ReLu CONV 2D 256 MAXPOOL ReLu Fully Connected Sigmoid / Softmax IMATGE CLASSE Model Pre-Entrenat IMATGE Fully Connected CLASSE Sigmoid / Softmax
24 3.2.3.1.4 Fine Tuning (Model pre-entrenat amb Data Augmentation) Finalment, per acabar de millorar els resultats, descongelarem les últimes capes de l’extractor de característiques per tal d’entrenar-les igual que fem amb el classificador, aquesta tècnica s’anomena fine-tunig. Amb el model vgg16 descongelarem les ultimes 2 capes mentre que amb el model ResNet50 descongelarem les ultimes 4 capes de tal manera que en els dos casos es descongeli la ultima capa convolucional perquè sigui entrenada. Figura 13: Arquitectura Model Fine Tuning 3.3. Mètriques Un cop entrenats els models i classificades les imatges necessitem extreure certes mètriques per valorar els resultats obtinguts. 3.3.1. Mètriques usades en classificacions binaries True Positive (TP) : Es tracta del nombre de mostres d’una classe A correctament predites. True Negative (TN): Es tracta del nombre de mostres de la classe B correctament predites. False Positive (FP): Es tracta del nombre de mostres de la classe B predites com a classe A. False Negative (FN): Es tracta del nombre de mostres de la classe Apredites com a classe B. Un cop definits aquests casos podem calcula la precision, recall i F1 Score: ● Precision: Es tracta de la relació d’imatges correctament predites entre el total d’imatges predites d’aquella classe (Precision=TP/(TP+FP)) ● Recall: Es tracta de la relació d’imatges correctament predites entre les imatges d’aquella classe correctament predites i les imatges mal predites de l’altre classe (Recall=TP/(TP+FN)) ● F1 Score: És el càlcul de la mitjana de Precision i Recall tenint en compte el nombre d’imatges de cada classe que s’està predint. (F1 Score = 2* (Recal l * Precision)/(Precision + Recall)) Model Pre- Entrenat IMATGE Fully Connected CLASSE Sigmoid / Softmax Entrenament últimes capes
31 5. Costos En calcular el cost d’aquest projecte tindrem en compte les hores traballades en ell, així com el software o recursos que hi hem utilitzat. Tenim en compte el treball realitzat per un enginyer junior (que seria el nostre cas personal) i dos enginyers seniors (que representarien els dos tutors a les reunions setmanals). Càrrec Hores Setmanals Setmanes Euros/Hora Total Enginyer Junior 25 20 10 € 5000 € Enginyer Senior 2 20 40 € 1600€ Servei GPU 8 20 0.36 € 58 € Ordinador Portàtil 700 € Mòbil 200 € Total 7558 € Taula2 : Representació costs del Projecte
32 6. Conclusions i futures millores Analitzant els resultats, podem veure la bona l’evolució i la millora del nostre classificador binari amb els diferents experiments fets, desde els mètodes més bàsics de Machine Learning com els classificadors SVM i RF fins a obtenir els millors resultats passant per xarxes neuronals convolucionals usant tècniques de data augmentation, xarxes pre entrenades i fine tuning. Podem definir aquests resultats com a satisfactoris ja que ens permeten distingir amb bastant bon encert quan un establiment està obert o tancat amb poc marge d’error. Per desgràcia, els resultats amb el nostre model de classificació multi classe no han estat tan bons. Podem observar un clar overfitting, el que significa que el nostre model no ha après a extreure les característiques que diferencien les classes entre elles, sinó que únicament ha memoritzat la classe de cada imatge. Aquests resultats tenen dues grans raons, la primera es tracta la mida de la nostre base de dades, aquesta és massa petita i això provoca que el nostre sistema no tingui prou imatges de cada classe per aprendre a extreure les característiques que defineixen cada una d’elles. La segona es deu a la similitud de les imatges de diferents classes, ja que si comparem les imatges, en moltes d’elles únicament distingim de quin comerç es tracta pel rètol i el nom. Degut a aquests resultats tenim algunes propostes que s’hauran d’aplicar en un futur desenvolupament perquè aquests millorin: ● La primera mesura es tracta d’ampliar la nostre base de dades, com més imatges tinguem a la nostre base de dades i més varietat tinguem millors seran els resultats. ● Una altre mesura que ens ajudaria molt seria ampliar la base de dades amb fotografies de la mateixa botiga en diferents condicions d'il·luminació (matí, tarda, nit, solejat, núvol etc.) i tant oberta com tancada. ● Aplicació del algoritme K-Fold Validation, el qual divideix la base de dades en diferents subconjunts d’entrenament i validació, i finalment entrena el model amb els subconjunts que han obtingut millors resultats. Això aconseguiria que el nostre model fos més realista ja que si només agafem una partició d’entrenament i validació pot ser que tots els casos fàcils (o difícils) vagin a la part de validation i tinguis molt bons (o molt mals) resultats. Amb el k-fold, al promitjar diferents particions, això és molt menys probable i el conjunt de train de de validation son més comparables. ● Integrar aquest projecte amb el dels companys que han realitzat un reconeixedor de text, d’aquesta manera milloraríem molt els resultats del nostre classificador multi classe, ja que si no encerta el comerç únicament per la fotografia, podríem reconèixer el text del rètol i mitjançant un petit diccionari amb els noms més comuns i la classe a on pertanyen seria molt més fàcil classificar-los.
33 Bibliography: [1] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E Hinton. Imagenet classification with deepconvolutional neural networks. InAdvances in neural information processing systems. [2] Slides from Master’s degree in Advanced Telecommunication Technologies (MATT).Deep Learning for a Artificial Intelligence. Master Course UPC ETSETB Telecom Bar-celona. Autumn 2017 [3] N. Dalal and B. Triggs, "Histograms of oriented gradients for human detection," 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05), San Diego, CA, USA, 2005, pp. 886-893 vol. 1, doi: 10.1109/CVPR.2005.177. [4] Wikipedia contributors.Artificial neuron — Wikipedia, the free encyclopedia,2019.URLhttps://en.wikipedia.org/w/index.php?title=Artificial_neuron&oldid =885171186. [Online] [5] Michael A. Nielsen, ”Neural Networks and Deep Learning”, Determination Press, 2015 [6] Vincent Vanhoucke and Arpan Chakraborty. Deep Learning by Google. Udacity Course.https://eu.udacity.com/course/deep-learning–ud730 [7] Python Software Foundation. Python 3 Tutorial. iBook Version. Published 16 Dec, 2014 [8] Stanford Course: “Convolutional Neural Networks for Visual Recognition” (CS231n) [Online] Available: http://cs231n.stanford.edu [9] PyTorch: https://pytorch.org/ [10] Keras Library: https://keras.io/api/ [11] scikit-learn python library documentation. [Online] Available: https://scikitlearn.org/stable/ [12] Andrew Ng. Machine learning, 2018. [Online]. [13] Landing Page for UPC Students: https://imatge.upc.edu/trac/wiki/Landing [14] Evgeniou, Theodoros & Pontil, Massimiliano. (2001). Support Vector Machines: Theory and Applications. 2049. 249-257. 10.1007/3-540-44673-7_12. [15] Breiman, L. Random Forests. Machine Learning 45, 5–32 (2001). https://doi.org/10.1023/A:1010933404324 [16] LeCun, Y., Bengio, Y. and Hinton, G., 2015. Deep learning. Nature, 521(7553), pp.436-444. [17] an Goodfellow and Yoshua Bengio and Aaron Courville, Deep Learning. MIT Press. 2016 [18] He, Kaiming & Zhang, Xiangyu & Ren, Shaoqing & Sun, Jian. (2016). Deep Residual Learning for Image Recognition. 770-778. 10.1109/CVPR.2016.90. [19] Li, Tao & Jiao, Wencong & Wang, Li-Na & Zhong, Guoqiang. (2020). Automatic DenseNet Sparsification. IEEE Access. PP. 1-1. 10.1109/ACCESS.2020.2984130.
34 [20]wenzhong, liu. (2020). The Alexnet-ResNet-Inception Network for Classifying Fruit Images. 10.1101/2020.02.09.941039. [21] Figura 2 image [Online] Available: https://gtas.unican.es/files/docencia/APS/apuntes/07_svm_kernel.pdf [22] Figura 4 image [Online] Available: https://www.analyticsvidhya.com/blog/2020/05/decision-tree-vs-random-forest-algorithm/ [23] Figura 4 image [Online] Available: https://www.researchgate.net/figure/ReLU- activation-function_fig7_333411007 [24] Figura 5 image [Online] Available: https://www.researchgate.net/figure/An-illustration- of-the-signal-processing-in-a-sigmoid-function_fig2_239269767 [25] Figura 6 image [Online] Available: http://krisbolton.com/a-quick-introduction-to- artificial-neural-networks-part-2 [26] Figura 7 image [Online] Available: https://enmilocalfunciona.io/deep-learning-basico- con-keras-parte-3-vgg/ [27] Figura 8 image [Online] Available: https://towardsdatascience.com/understanding- and-coding-a-resnet-in-keras-446d7ff84d33 [28] Xie, Guotian. (2018). An Interpretation of Forward-Propagation and Back- Propagation of DNN: First Chinese Conference, PRCV 2018, Guangzhou, China, November 23-26, 2018, Proceedings, Part II. 10.1007/978-3-030-03335-4_1. [29] Cho, Kwantae & Roh, Jong-hyuk & Kim, Youngsam & Cho, Sangrae. (2019). A Performance Comparison of Loss Functions. 1146-1151. 10.1109/ICTC46691.2019.8939902. [30] Potdar, Kedar & Pardawala, Taher & Pai, Chinmay. (2017). A Comparative Study of Categorical Variable Encoding Techniques for Neural Network Classifiers. International Journal of Computer Applications. 175. 7-9. 10.5120/ijca2017915495.
35 Glossary ML: Machine Learning CNN: Convolutional Neural Networks SVM:Support Vector Machines RF: Random Forest CPU: Central Processing Unit GPU: Graphics Processing Unit VGG: Very Deep Convolutional Model architecture ResNet: Residual Network FT: Fine Tuning RBF: Radial Basis Function ReLU: Rectifier Linear Unit ANN: Artificial Neural Network
36 Annex 1 En aquest annex mostrarem uns quants exemples d’imatges ben classificades i mal classificades per a cada un dels experiments i mètodes realitzats i analitzarem els casos que han anat malament. Generalment les tècniques de classificació binària usades al experiment 1 (SVM i RF) tenen un bon funcionament quan s’aprecia clarament si un comerç està obert o tancat i únicament surt un sol comerç a la fotografia i sense obstacles. Les següents fotografies mostren el tipus d’imatges que són ben classificades pel nostre model: Les imatges en les que el comerç es veu lluny, la botiga per dins està poc il·luminada, hi han graffitis pintats amb molt de color a les persianes, tenen vidres tintats o existeixen obstacles en el nostre camp de visió són mal classificades, a continuació es mostren algunes d’aquestes fotografies mal classificades:
37 Un cop apliquem les tècniques de data augmentation, aquests resultats milloren i les imatges que tenen obstacles com cotxes o senyals davant de la botiga ja són ben classificats, així com les botigues que estan obertes però que el vidre del seu aparador és molt fosc i no s’arriba a veure l’interior de la botiga però les botigues que queden lluny de l’objectiu de la càmera segueixen donant molts problemes al igual que passa amb les imatges on existeix un gran reflex al vidre de l’aparador, que inclús pot arribar a reflectir la persiana d’una botiga tancada de l’assera contrària.
38 L’experiment 2 segueix bastant la tendència de l’experiment 1 en les primeres èpoques, però un cop van passant les èpoques i arriba a la època 15 on arribem a tenir una accuracy de 0.92 en el model pre-entrenat ResNet + Fine Tuning, únicament ens classifica malament imatges que inclús serien difícils de classificar per una persona ja que o estan molt llunyanes. L’experiment 3 tractava d’un classificador multiclasse per reconeixer el tipus d’activitat comercial que es duu a terme en aquell establiment, hem creat 6 classes: Forn: Fruiteria:
39 Farmacia: Banc: Supermercat: Estanc: Com hem vist a l’apartat de resultats amb els mètodes aplicats obtenim una accuracy del 0.73, pel que clarament cada classe té una serie d’imatges que classifica malament i que expliquem a continuació:
40 Les fruiteries es tracta de la classe que millor funciona degut a que totes les fruiteries tenen caixes de fruita a fora, o tenen aparadors amb fruita dibuixada, cosa que facilita molt al programa extreure aquestes característiques d’una imatge i saber que es tracta d’una fruiteria, únicament es classifiquen malament les imatges de fruiteries que precisament no tenen aquests colors vius, ja sigui per les fruites al carrer o pels rètols colorits: Amb els forns passa una cosa semblant, si es veuen les barres de pa o la bolleria desde l’aparador aquestes imatges són ben classificades però quan això no passa els resultats no són bons: Amb els supermercats les imatges referents a grans superfícies, si aquestes es troben repetides a la base de dades les classifica perfectament, però quan es tracten de petits establiments que no pertanyen a cap gran cadena, el model falla ja que podria ser qualsevol comerç i únicament el distingim pel rètol: