Introducere:

CNN (Convolutional Neuron Network) este o rețea neuronală de deep learning. Este deosebit de eficient pentru a găsi modele în imagini pentru a efectua diverse sarcini, cum ar fi clasificarea imaginilor, detectarea obiectelor și segmentarea. Din punct de vedere structural, un CNN este compus dintr-un strat convoluțional, un strat de pooling și un strat complet conectat. Aceste straturi efectuează operații de filtrare pentru a învăța și a extrage ierarhii spațiale ale caracteristicilor din datele brute de intrare și pentru a completa diferite funcții de viziune computerizată. Mai mult, atunci când lucrează cu CNN, utilizatorii au și opțiunea de a folosi modele pre-instruite care au fost dezvoltate cu succes de alți experți pentru a accelera procesul de instruire sau pentru a optimiza acuratețea modelului. S-au dovedit a fi un bun punct de plecare pentru rezolvarea aplicațiilor de deep-learning conexe modele pre-instruite, cum ar fi GoogLeNet și AlexNet.

Pentru proiectul din ultimul semestru din clasa mea de AI, vreau să folosesc CNN și Transfer Learning pentru a explora conceptul de învățare profundă. În special, vreau să dezvolt un model AI pentru a detecta măști într-un set de date care constă din 12.000 de imagini diferite. Scopul nu este doar de a realiza cu succes clasificarea întregii imagini în pixeli pentru a detecta 2 grupuri: imagini cu persoane care poartă măști și imagini cu persoane care nu o poartă; dar, de asemenea, pentru a determina dacă un CNN auto-dezvoltat poate mai bine pregătit modele care sunt disponibile și ușor disponibile pentru utilizare. Totul este construit și modificat prin Keras, API-ul de rețele neuronale de nivel înalt scris în Python.

Set de date:

Sursa de date este obținută de pe un site web public numit Kaggle. Setul de date are aproximativ 12.000 de imagini. Și imaginile persoanelor care poartă măști faciale sunt eliminate din Căutarea Google, în timp ce imaginile persoanelor care nu poartă una sunt compilate și reprocesate din setul de date CelebFace creat de Jessica Li. Surse:

  1. https://www.kaggle.com/datasets/ashishjangra27/face-mask-12k-images-dataset — set de date complet.
  2. https://www.kaggle.com/jessicali9530 - setul de date al Jessicai Li

Mai mult, imaginile sunt împărțite în 3 foldere, inclusiv date de testare, date tren și date de validare. În acele imagini, oamenii sunt înfățișați cu diverse expresii faciale și emoții. Ambii sunt bărbați/femei și din medii culturale multiple. De altfel, un număr mic de imagini sunt desene animate în loc de persoană reală.

  1. Date tren: 5000 — imagini cu măști | 5000 — imagini fără măști
  2. Date de testare: 483 — imagini cu măști | 509 — imagini fără măști
  3. Date de validare: 400 —imagini cu măști
    400 — imagini fără măști.

Două CNN-uri ar fi dezvoltate pentru a compara și a contrasta cu alte modele pre-antrenate. Primul CNN ar fi unul cu adevărat de bază și nu are hiperparametri de suport. Pe de altă parte, cel de-al doilea CNN ar include diferiți parametri de susținere, cum ar fi mersul, normalizarea loturilor, pooling etc. În ceea ce privește modelele pre-antrenate, InceptionV3, MobileNet_V2 și VGG16 ar fi folosite, instruite și evaluate.

Obiective și metode:

›› Scopul este de a produce modele inteligente pentru a detecta când măștile sunt purtate corect în imagini.​

›› Cum ar putea autoritățile să profite de studii similare pentru a genera date statistice care vor ajuta la controlul bolilor contagioase?​

›› Ce modele sunt cele mai potrivite pentru aceste date?​

›› Cum se compară modelul nostru cu modelele de transfer de învățare?​

›› Care sunt unele îmbunătățiri care ar putea fi aduse pentru a obține rezultate și acuratețe mai bune?​

Procese și statistici:

I. CNN fără hiperparametri suportați

În primul rând, trebuie să import pachetele necesare pentru ca modelul să ruleze cu succes. Sunt keras, secvențiale, complot. După aceea, definesc modelul cu un număr de clase egal cu 2, deoarece există două grupuri de imagini care trebuie segmentate. Pentru straturile de convoluție, sigmoidul este utilizat ca funcție de activare și forma de intrare este menținută consecventă la (200, 200 și 3). La straturi mai adânci, încerc să îmbunătățesc modelul prin scăderea treptată a dimensiunii filtrului și creșterea numărului de filtre. La ultimul strat, nu am putut uita să adaug flatten și SoftMax, care permit modelului să realizeze sarcina de clasificare.

Rezultatele revin după 2 ore de antrenament. Pierderile medii sunt de aproape 70%, în timp ce precizia este de 48%. Pierderea de validare este, de asemenea, în medie de aproape 70%, iar acuratețea validării este de 50%. De asemenea, construiesc un CFM pentru acest model cu clasa 0 și clasa 1 au valori foarte diferite. Pentru clasa 0 (imagini cu persoane fără măști), rechemarea este la 100%, în timp ce clasa 1 (imagini cu persoane cu măști) este la 0. Același lucru se întâmplă și pentru valoarea F1. Pe baza acestor cifre, acesta nu este un model bun și vă recomand cu căldură să stați departe de el.

II. CNN cu parametrii de suport

Pentru al doilea model CNN, straturile de convoluție ar arăta drastic diferit de cel precedent. Acest lucru se datorează faptului că ar implica diverși hiperparametri în scopul de a regla fin rețeaua și de a o face mai eficientă. Hiperparametrii menționați aici sunt Dense, Dropout, Maxpooling2D, Batch Normalization și Conv2D. Folosesc relu ca funcție de activare de data aceasta, dar încă păstrez forma de intrare la (200, 200 și 3). De asemenea, reduc treptat dimensiunea filtrului și cresc numărul de filtre la straturi mai adânci. Când ajungeți la ultimul strat, se introduc din nou Flatten și SoftMax. Straturile de convoluție complete sunt după cum urmează

După cum era de așteptat, rezultatele acestui model sunt mult mai bune decât cel anterior. Cu hiperparametrii suportați, procesul de antrenament durează doar 30 de minute pentru a se finaliza, iar precizia medie este de aproximativ 98%; în timp ce pierderea medie este de numai aproximativ 25% peste 10 epoci. Privind la CFM-ul său, precizia, reamintirea și scorul F1 pentru ambele clase rămân la 98–99%. Ajută să semnificăm că modelul a clasificat cu succes și eficient imaginile în grupuri de imagini care poartă și dezmască.

III. Transferați modele de învățare cu InceptionV3, MobileNetV2 și VGG16

Pentru a configura aceste modele pre-antrenate, inițial, trebuie să elimin straturile lor complet conectate și să le înlocuiesc cu propriul strat care are o dimensiune de ieșire egală cu numărul de clase din setul de date imagine. Prin urmare, noul model va fi respectat și adaptat pentru a permite învățarea să aibă loc pe toate straturile și noile greutăți care să fie actualizate pe noul strat complet conectat. Supraechitarea nu este o mare îngrijorare, deoarece caracteristicile superioare nu sunt eliminate din aceste rețele pre-antrenate. Pașii sunt următorii (remarcat, acești pași sunt demonstrați pentru InceptionV3, dar codurile sunt aplicate la fel pentru celelalte două modele).

Toate modelele durează aproximativ 20 de minute pentru a finaliza procesul de antrenament și precizia lor este semnificativ ridicată. Mai exact, MobileNetV2 atinge o precizie de până la 99,4%; în timp ce, valorile de precizie ale InceptionV3 și VGG16 sunt la 99,80% și, respectiv, 99,50%. Aceste modele au demonstrat într-adevăr capacitatea de a clasifica imagini ale persoanelor care poartă mască și ale celor care nu o poartă. Mai jos sunt graficele de precizie și pierderi ale acestora. Din CFM-urile lor, totul converge la 1 pentru ambele clase, ceea ce sugerează că învățarea prin transfer se face cu succes.

Concluzie și gânduri finale:

Strategia de a construi și proiecta propria mea rețea CNN de la zero necesită mai mult efort și putere de calcul decât reutilizarea unei rețele recalificate. Pentru acest set de date de imagine, abordarea Transfer Learning este o soluție preferabilă, deoarece toate rețelele pre-antrenate pe care le folosesc ajung să producă o acuratețe mai bună decât propriul meu model CNN, cu sau fără hiperparametri compatibile. Mai mult, Transfer Learning durează mai puțin timp pentru a se antrena, deoarece nu are nevoie de un procesor de înaltă performanță, așa cum are CNN auto-dezvoltat. În general, MobileNetV2 este cel mai bun model cu o precizie de 99,89%; întrucât, CNN care nu are hiperparametri esențiali este cea mai proastă soluție, cu o precizie de doar 48,69%. În ceea ce privește aceste rezultate, se poate spune că Transfer Learning este o tehnică mai bună și mai puternică în domeniul detectării modelelor și clasificării imaginilor. Cu toate acestea, nu vreau să mă bazez doar pe un proiect pentru a-i descuraja pe alții să-și conceapă și să-și antreneze propriul CNN. Deoarece într-o serie de cercetări empirice care au fost făcute, se obține o acuratețe mai mare atunci când un CNN personalizat este construit cu succes.

Vă mulțumesc că ați citit și vă rog să-mi spuneți părerea dvs. dacă Transfer Learning este sau nu mai bună decât proiectarea CNN!!!