Rețele neuronale convoluționale (CNN): o introducere

Rețelele neuronale convoluționale oferă o modalitate mai scalabilă de recunoaștere a obiectelor și sarcini de clasificare a imaginilor.

Există o mulțime de progrese care au loc în lumea tehnologiei. Inteligența artificială și învățarea automată sunt unele pe care le puteți auzi frecvent.

În prezent, aceste tehnologii sunt utilizate în aproape toate domeniile, de la marketing, comerț electronic și dezvoltare de software până la servicii bancare, finanțe și medicină.

AI și ML sunt domenii vaste și se fac eforturi pentru a-și extinde aplicațiile pentru a rezolva multe probleme din lumea reală. Acesta este motivul pentru care puteți vedea o mulțime de ramuri în interiorul acestor tehnologii; ML este un subset al AI în sine.

Rețelele neuronale convoluționale sunt una dintre ramurile AI care devin populare în aceste zile.

În acest articol, voi discuta despre ce sunt CNN-urile, cum funcționează și utilitatea lor în lumea modernă.

Să ne scufundăm direct!

Ce este o rețea neuronală convoluțională?

O rețea neuronală convoluțională (ConvNet sau CNN) este o rețea neuronală artificială (ANN) care utilizează algoritmi de învățare profundă pentru a analiza imagini, a clasifica imagini și a efectua sarcini de viziune pe computer.

CNN folosește principiile algebrei liniare, cum ar fi multiplicarea matricelor, pentru detectarea modelelor dintr-o imagine. Deoarece aceste procese implică calcule complexe, ele necesită unități de procesare grafică (GPU) pentru antrenarea modelelor.

Cu cuvinte simple, CNN folosește algoritmi de învățare profundă pentru a prelua date de intrare precum imagini și pentru a atribui importanță sub formă de părtiniri și ponderi învățate diferitelor aspecte ale acelei imagini. În acest fel, CNN poate diferenția între imagini sau le poate clasifica.

CNN: O scurtă istorie

Deoarece o rețea neuronală convoluțională este o rețea neuronală artificială, este important să reiterăm rețelele neuronale.

În calcul, o rețea neuronală face parte din învățarea automată (ML) folosind algoritmi de învățare profundă. Este analog cu modelele de conectivitate urmate de neuronii din creierul uman. Rețelele neuronale artificiale se inspiră și din modul în care este aranjat cortexul vizual.

Deci, diferite tipuri de rețele neuronale sau rețele neuronale artificiale (ANN) sunt utilizate în scopuri diferite. Unul dintre ele este CNN folosit pentru detectarea și clasificarea imaginilor și multe altele. A fost introdus de un cercetător postdoctoral, Yann LeCun, în anii 1980.

Versiunea timpurie a CNN – LeNet, numită după LeCun, a fost capabilă să recunoască cifrele scrise de mână. Apoi, a fost folosit în serviciile bancare și poștale pentru citirea cifrelor de pe cecuri și coduri poștale scrise pe plicuri.

Cu toate acestea, această versiune timpurie nu avea scalare; prin urmare, CNN-urile nu au fost foarte utilizate în inteligența artificială și viziunea computerizată. De asemenea, a necesitat resurse de calcul și date semnificative pentru a funcționa mai eficient pentru imagini mai mari.

În plus, în 2012, AlexNet a revizuit învățarea profundă care utilizează rețele neuronale formate din mai multe straturi. În această perioadă, tehnologia s-a îmbunătățit și au fost disponibile seturi mari de date și resurse de calcul grele pentru a permite crearea de CNN-uri complexe capabile să desfășoare activități de viziune computerizată în mod eficient.

Straturi într-un CNN

Să înțelegem diferitele straturi dintr-un CNN. Creșterea straturilor într-un CNN îi va crește complexitatea și îi va permite să detecteze mai multe aspecte sau zone ale unei imagini. Începând cu o caracteristică simplă, acesta devine capabil să detecteze caracteristici complexe, cum ar fi forma obiectului și elemente mai mari, până când poate detecta în sfârșit imaginea.

  Cum să deschideți fișiere DWG pe laptop

Stratul convoluțional

Primul strat al unui CNN este stratul convoluțional. Este blocul principal al CNN în care au loc majoritatea calculelor. Are nevoie de mai puține componente, cum ar fi datele de intrare, o hartă a caracteristicilor și un filtru.

Un CNN poate avea, de asemenea, straturi convoluționale suplimentare. Acest lucru face ca structura CNN-urilor să fie ierarhică, deoarece straturile ulterioare pot vizualiza pixelii din câmpurile receptive ale straturilor anterioare. În continuare, straturile convoluționale transformă imaginea dată în valori numerice și permit rețelei să înțeleagă și să extragă modele valoroase.

Straturi de grupare

Straturile de grupare sunt folosite pentru a reduce dimensiunile și sunt numite downsampling. Reduce parametrii utilizați în intrare. Operația de pooling poate muta un filtru peste intrarea completă, cum ar fi stratul convoluțional, dar nu are ponderi. Aici, filtrul aplică o funcție comună valorilor numerice din câmpul receptiv pentru a popula matricea de rezultate.

Pooling-ul are două tipuri:

  • Agrupare medie: Valoarea medie este calculată în câmpul receptiv pe care filierul îl mătură peste intrare pentru a o transmite către matricea de ieșire.
  • Agrupare maximă: alege pixelul cu valoarea maximă și îl trimite la matricea de ieșire pe măsură ce filtrul trece peste intrare. Regruparea maximă este utilizată mai mult decât punerea în comun medie.

Deși se pierd date semnificative în punerea în comun, acestea oferă în continuare multe beneficii pentru CNN. Ajută la reducerea riscurilor de supraadaptare și a complexității, îmbunătățind în același timp eficiența. De asemenea, îmbunătățește stabilitatea CNN.

Strat complet conectat (FC).

După cum sugerează și numele, toate nodurile dintr-un strat de ieșire sunt conectate direct la nodul stratului anterior într-un strat complet conectat. Clasifică o imagine pe baza caracteristicilor extrase prin straturi anterioare împreună cu filtrele acestora.

În plus, straturile FC utilizează în general o funcție de activare softmax pentru a clasifica corect intrările în loc de funcțiile ReLu (ca în cazul straturilor de pooling și convoluționale). Acest lucru ajută la producerea unei probabilități de 0 sau 1.

Cum funcționează CNN-urile?

O rețea neuronală convoluțională constă din multe straturi, chiar din sute. Aceste straturi învață să identifice diverse caracteristici ale unei imagini date.

Deși CNN-urile sunt rețele neuronale, arhitectura lor diferă de o ANN obișnuită.

Acesta din urmă pune o intrare prin multe straturi ascunse pentru a-l transforma, unde fiecare strat este creat cu un set de neuroni artificiali și este complet conectat la fiecare neuron din același strat. În cele din urmă, există un strat complet conectat sau stratul de ieșire pentru a afișa rezultatul.

Pe de altă parte, CNN organizează straturile în trei dimensiuni – lățime, adâncime și înălțime. Aici, un strat de la neuron se conectează doar la neuronii dintr-o regiune mică, în loc să se relaționeze cu fiecare dintre ei în stratul următor. În cele din urmă, rezultatul final este reprezentat de un singur vector cu un scor de probabilitate și are doar dimensiunea adâncimii.

Acum, puteți întreba ce este „convoluția” într-un CNN.

Ei bine, convoluția se referă la o operație matematică de îmbinare a două seturi de date. În CNN, conceptul de convoluție este aplicat datelor de intrare pentru a scoate o hartă a caracteristicilor prin filtrarea informațiilor.

Acest lucru ne aduce la unele dintre conceptele și terminologiile importante folosite în CNN-uri.

  • Filtru: Cunoscut și ca detector de caracteristici sau nucleu, un filtru poate avea o anumită dimensiune, cum ar fi 3×3. Trece peste o imagine de intrare pentru a efectua multiplicarea matricei pentru fiecare element pentru a aplica convoluția. Aplicarea de filtre la fiecare imagine de antrenament la rezoluții diferite plus rezultatul imaginii convoluate va funcționa ca intrare pentru stratul următor.
  • Umplutură: este folosit pentru a extinde o matrice de intrare la marginile matricei prin inserarea de pixeli falși. Se face pentru a contracara faptul că convoluția reduce dimensiunea matricei. De exemplu, o matrice 9×9 se poate transforma într-o matrice 3×3 după filtrare.
  • Pasul: dacă doriți să obțineți o ieșire mai mică decât intrarea dvs., puteți efectua pas. Permite săriți peste anumite zone în timp ce filtrul alunecă peste imagine. Omitând doi sau trei pixeli, puteți produce o rețea mai eficientă prin reducerea rezoluției spațiale.
  • Greutăți și părtiniri: CNN-urile au ponderi și părtiniri în neuronii lor. Un model poate învăța acele valori în timpul antrenamentelor, iar valorile rămân aceleași pe un anumit strat pentru toți neuronii. Acest lucru implică faptul că fiecare neuron ascuns detectează aceleași caracteristici în diferite zone ale unei imagini. Ca rezultat, rețeaua devine mai tolerantă în timp ce traduce obiectele într-o anumită imagine.
  • ReLU: reprezintă Rectified Linear Unit (ReLu) și este folosit pentru un antrenament mai eficient și mai rapid. Mapează valorile negative la 0 și menține valorile pozitive. Se mai numește și activare, deoarece rețeaua transportă doar caracteristicile de imagine activate în stratul următor.
  • Câmp receptiv: Într-o rețea neuronală, fiecare neuron primește input din diferite locații din stratul anterior. Și în straturile convoluționale, fiecare neuron primește input doar dintr-o zonă restrânsă a stratului anterior, numită câmp receptiv al neuronului. În cazul stratului FC, întregul strat anterior este câmpul receptiv.
  Statistici și tendințe în rețelele sociale în 2023

În sarcinile de calcul din lumea reală, de obicei, convoluția este efectuată într-o imagine 3D care necesită un filtru 3D.

Revenind la CNN, acesta cuprinde diferite părți sau straturi de noduri. Fiecare strat de nod are un prag și o greutate și este conectat la altul. La depășirea limitei de prag, datele sunt trimise la nivelul următor din această rețea.

Aceste straturi pot efectua operațiuni pentru a modifica datele pentru a afla caracteristici relevante. De asemenea, aceste operațiuni repetă sute de straturi diferite care continuă să învețe să detecteze alte caracteristici ale unei imagini.

Părțile unui CNN sunt:

  • Un strat de intrare: aici este preluată intrarea, cum ar fi o imagine. Va fi un obiect 3D cu o înălțime, lățime și adâncime definite.
  • Unul/mai multe straturi ascunse sau faza de extracție a caracteristicilor: aceste straturi pot fi un strat convoluțional, un strat de grupare și un strat complet conectat.
  • Un strat de ieșire: aici, rezultatul va fi afișat.

Trecerea imaginii prin stratul de convoluție este transformată într-o hartă de caracteristici sau hartă de activare. După convoluția intrării, straturile convoluează imaginea și trec rezultatul stratului următor.

CNN va efectua multe convoluții și tehnici de grupare pentru a detecta caracteristicile în timpul fazei de extracție a caracteristicilor. De exemplu, dacă introduceți imaginea unei pisici, CNN îi va recunoaște cele patru picioare, culoarea, doi ochi etc.

În continuare, straturile complet conectate într-un CNN vor acționa ca un clasificator asupra caracteristicilor extrase. Pe baza a ceea ce algoritmul de învățare profundă a prezis despre imagine, straturile ar da rezultatul.

Avantajele CNN-urilor

Precizie mai mare

CNN oferă o precizie mai mare decât rețelele neuronale obișnuite care nu folosesc convoluția. CNN-urile sunt utile, mai ales atunci când sarcina implică o mulțime de date, recunoaștere video și imagini etc. Ele produc rezultate și predicții foarte precise; prin urmare, utilizarea lor este în creștere în diferite sectoare.

Eficiență de calcul

CNN-urile oferă un nivel de eficiență de calcul mai mare decât alte rețele neuronale obișnuite. Acest lucru se datorează utilizării procesului de convoluție. De asemenea, folosesc reducerea dimensionalității și partajarea parametrilor pentru a face modelele mai rapid și mai ușor de implementat. Aceste tehnici pot fi, de asemenea, optimizate pentru a funcționa pe diferite dispozitive, fie că este vorba despre smartphone sau laptop.

Extragerea caracteristicilor

CNN poate învăța cu ușurință caracteristicile unei imagini fără a necesita inginerie manuală. Puteți folosi CNN-urile pre-instruite și gestionați greutățile furnizându-le date atunci când lucrați la o nouă sarcină, iar CNN-ul se va adapta la aceasta fără probleme.

  17 instrumente GitOps promițătoare de explorat

Aplicații ale CNN

CNN-urile sunt folosite în diferite industrii pentru multe cazuri de utilizare. Unele dintre aplicațiile din viața reală ale CNN-urilor includ:

Clasificarea imaginilor

CNN-urile sunt utilizate pe scară largă în clasificarea imaginilor. Acestea pot recunoaște caracteristici valoroase și pot identifica obiecte dintr-o imagine dată. Prin urmare, este folosit în sectoare precum asistența medicală, în special în RMN. În plus, această tehnologie este utilizată în recunoașterea cifrelor scrise de mână, care este printre cele mai timpurii cazuri de utilizare a CNN-urilor în viziunea computerizată.

Detectarea obiectelor

CNN poate detecta obiectele din imagini în timp real și, de asemenea, le poate eticheta și clasifica. Prin urmare, această tehnică este utilizată pe scară largă în vehiculele automate. De asemenea, permite caselor inteligente și pietonilor să recunoască fața proprietarului vehiculului. Este, de asemenea, folosit în sistemele de supraveghere alimentate de AI pentru a detecta și marca obiecte.

Potrivire audiovizuală

Ajutorul CNN în potrivirea audiovizuală ajută la îmbunătățirea platformelor de streaming video, cum ar fi Netflix, YouTube etc. De asemenea, ajută la îndeplinirea solicitărilor utilizatorilor, cum ar fi „melodii de dragoste de Elton John”.

Recunoaștere a vorbirii

Pe lângă imagini, CNN-urile sunt utile în procesarea limbajului natural (NLP) și recunoașterea vorbirii. Un exemplu real în acest sens ar putea fi Google care folosește CNN-urile în sistemul său de recunoaștere a vorbirii.

Reconstrucție obiect

CNN-urile pot fi utilizate în modelarea 3D a unui obiect real într-un mediu digital. De asemenea, este posibil ca modelele CNN să creeze un model de față 3D folosind o imagine. În plus, CNN este util în construirea de gemeni digitali în biotehnologie, producție, biotehnologie și arhitectură.

Utilizarea CNN în diferite sectoare include:

  • Asistență medicală: Viziunea computerizată poate fi utilizată în radiologie pentru a ajuta medicii să detecteze tumorile canceroase cu o eficiență mai bună la o persoană.
  • Agricultura: Rețelele pot utiliza imagini de la sateliți artificiali, cum ar fi LSAT, și pot folosi aceste date pentru a clasifica terenurile fertile. Acest lucru ajută, de asemenea, la prezicerea nivelurilor de fertilitate a terenurilor și la dezvoltarea unei strategii eficiente pentru a maximiza randamentul.
  • Marketing: aplicațiile de social media pot sugera o persoană într-o imagine postată pe profilul cuiva. Acest lucru vă ajută să etichetați persoane din albumele dvs. foto.
  • Retail: platformele de comerț electronic pot folosi căutarea vizuală pentru a ajuta mărcile să recomande articole relevante pe care clienții țintă doresc să le cumpere.
  • Automobile: CNN găsește utilizarea în automobile pentru a îmbunătăți siguranța pasagerilor și a șoferului. Face acest lucru cu ajutorul unor funcții precum detectarea liniei benzii, detectarea obiectelor, clasificarea imaginilor etc. Acest lucru ajută, de asemenea, lumea mașinilor cu conducere autonomă să evolueze mai mult.

Resurse pentru a învăța CNN-urile

Coursera:

Coursera are acest curs pe CNN pe care îl puteți lua în considerare. Acest curs vă va învăța cum a evoluat viziunea computerizată de-a lungul anilor și câteva aplicații ale CNN-urilor în lumea modernă.

Amazon:

Puteți citi aceste cărți și prelegeri pentru a afla mai multe despre CNN:

  • Rețele neuronale și învățarea profundă: acoperă modele, algoritmi și teoria învățării profunde și rețelelor neuronale.
  • A Guide to Convolutional Neural Networks for Computer Vision: Această carte vă va învăța aplicațiile CNN-urilor și conceptele acestora.
  • Rețele neuronale convoluționale practice cu Tensorflow: puteți rezolva diverse probleme în viziunea computerizată folosind Python și TensorFlow cu ajutorul acestei cărți.
  • Advanced Applied Deep Learning: Această carte vă va ajuta să înțelegeți CNN-urile, deep learning și aplicațiile lor avansate, inclusiv detectarea obiectelor.
  • Rețele neuronale convoluționale și rețele neuronale recurente: această carte vă va învăța despre CNN-uri și RNN-uri și cum să construiți aceste rețele.

Concluzie

Rețelele neuronale convoluționale sunt unul dintre domeniile emergente ale inteligenței artificiale, învățării automate și învățării profunde. Are diverse aplicații în lumea actuală în aproape fiecare sector. Având în vedere utilizarea în creștere, este de așteptat să se extindă mai mult și să fie mai util în abordarea problemelor din lumea reală.