Articles

Ghidul complet pentru începători pentru învățarea profundă: rețele neuronale convoluționale și clasificarea imaginilor

Posted by admin

„un lucru care m-a lovit devreme este că nu puneți într-o fotografie ce va ieși. Sau, invers, ceea ce iese nu este ceea ce puneți.”

― Diane Arbus

o notificare apare pe rețeaua socială preferată că cineva a postat o imagine care ar putea să te aibă în ea.

este corect.

este cea mai proastă imagine cu tine vreodată.

GIF prin GIPHY

cum s-a întâmplat asta?

clasificarea imaginii!rețeaua neuronală convoluțională (CNN) este o clasă de rețele neuronale de învățare profundă. CNN-urile reprezintă un progres imens în recunoașterea imaginilor. Acestea sunt cel mai frecvent utilizate pentru a analiza imaginile vizuale și lucrează frecvent în culise în clasificarea imaginilor. Ele pot fi găsite în centrul tuturor, de la etichetarea fotografiilor Facebook la mașinile cu conducere automată. Ei lucrează din greu în spatele scenei în orice, de la asistență medicală la securitate.

sunt rapide și eficiente. Dar cum funcționează?

Clasificarea imaginii este procesul de a lua o intrare (cum ar fi o imagine) și de a scoate o clasă (cum ar fi „pisica”) sau o probabilitate ca intrarea să fie o anumită clasă („există o probabilitate de 90% ca această intrare să fie o pisică”). Poți să te uiți la o poză și să știi că te uiți la o fotografie teribilă a propriei tale fețe, dar cum poate un computer să învețe să facă asta?

cu o rețea neuronală convoluțională!

un CNN are

  • straturi convoluționale
  • straturi ReLU
  • straturi de punere în comun
  • un strat complet conectat

o arhitectură clasică CNN ar arăta cam așa:

Input ->Convolution ->ReLU ->Convolution ->ReLU ->Pooling ->
ReLU ->Convolution ->ReLU ->Pooling ->Fully Connected

A CNN convolves (not convolutes…) learned features with input data and uses 2D convolutional layers. This means that this type of network is ideal for processing 2D images. În comparație cu alți algoritmi de clasificare a imaginilor, CNN-urile folosesc de fapt foarte puțină preprocesare. Aceasta înseamnă că pot învăța filtrele care trebuie realizate manual în alți algoritmi. CNNs poate fi utilizat în tone de aplicații de la recunoașterea imaginilor și video, clasificarea imaginilor și sistemele de recomandare până la procesarea limbajului natural și analiza imaginii medicale.

CNN-urile sunt inspirate de procesele biologice. Ele se bazează pe unele cercetări interesante făcute de Hubel și Wiesel în anii ‘ 60 cu privire la viziunea la pisici și maimuțe. Modelul conectivității într-un CNN provine din cercetările lor privind organizarea cortexului vizual. În ochiul unui mamifer, neuronii individuali răspund la stimuli vizuali numai în câmpul receptiv, care este o regiune restricționată. Câmpurile receptive din diferite regiuni se suprapun parțial, astfel încât întregul câmp vizual este acoperit. Acesta este modul în care funcționează un CNN!

imagine de NatWhitePhotography pe

CNN-urile au un strat de intrare și un strat de ieșire și straturi ascunse. Straturile ascunse constau de obicei din straturi convoluționale, straturi ReLU, straturi de grupare și straturi complet conectate.

  • straturile convoluționale aplică o operație de convoluție la intrare. Aceasta transmite informațiile către următorul strat.
  • punerea în comun combină ieșirile grupurilor de neuroni într-un singur neuron în stratul următor.
  • straturile complet conectate conectează fiecare neuron dintr-un strat la fiecare neuron din stratul următor.

într-un strat convoluțional, neuronii primesc doar intrări dintr-o subzonă a stratului anterior. Într-un strat complet conectat, fiecare neuron primește intrare de la fiecare element al stratului anterior.

un CNN funcționează prin extragerea de caracteristici din imagini. Acest lucru elimină necesitatea extragerii Manuale a caracteristicilor. Caracteristicile nu sunt instruiți! Sunt învățați în timp ce rețeaua se antrenează pe un set de imagini. Acest lucru face ca modelele de învățare profundă să fie extrem de precise pentru sarcinile de viziune pe computer. CNN-urile învață detectarea caracteristicilor prin zeci sau sute de straturi ascunse. Fiecare strat crește complexitatea caracteristicilor învățate.

GIF prin GIPHY

un CNN

  • începe cu o imagine de intrare
  • aplică multe filtre diferite pentru a crea o hartă caracteristică
  • aplică o funcție Relu pentru a crește neliniaritatea
  • aplică un strat comun pentru fiecare hartă caracteristică
  • aplatizează imaginile grupate într-un vector lung.
  • introduce vectorul într-o rețea neuronală artificială complet conectată.
  • procesează caracteristicile prin rețea. Stratul final complet conectat oferă” votul ” claselor pe care le urmărim.
  • trenuri prin propagare înainte și backpropagation pentru multe, multe epoci. Acest lucru se repetă până când avem o rețea neuronală bine definită, cu greutăți antrenate și detectoare de caracteristici.

deci, ce înseamnă asta?

la începutul acestui proces, o imagine de intrare este împărțită în pixeli.

GIF prin GIPHY

pentru o imagine alb-negru, acei pixeli sunt interpretați ca o matrice 2D (de exemplu, 2×2 pixeli). Fiecare pixel are o valoare între 0 și 255. (Zero este complet negru și 255 este complet alb. Scala de gri există între aceste numere.) Pe baza acestor informații, computerul poate începe să lucreze la date.

pentru o imagine color, aceasta este o matrice 3D cu un strat albastru, un strat verde și un strat roșu. Fiecare dintre aceste culori are propria valoare între 0 și 255. Culoarea poate fi găsită prin combinarea valorilor din fiecare dintre cele trei straturi.

convoluție

scopul principal al etapei convoluție este de a extrage caracteristici din imaginea de intrare. Stratul convoluțional este întotdeauna primul pas într-un CNN.

aveți o imagine de intrare, un detector de obiecte spațiale și o hartă a obiectelor spațiale. Luați filtrul și aplicați-l bloc de pixeli cu bloc de pixeli la imaginea de intrare. Faceți acest lucru prin înmulțirea matricelor.

Să presupunem că aveți o lanternă și o foaie de folie cu bule. Lanterna dvs. strălucește o zonă cu 5 bule x 5 bule. Pentru a privi întreaga foaie, glisați lanterna pe fiecare pătrat de 5×5 până când ați văzut toate bulele.

fotografie de stux on

lumina de la lanterna de aici este filtrul dvs., iar regiunea peste care alunecați este câmpul receptiv. Lumina alunecare peste câmpurile receptive este convolving lanterna. Filtrul dvs. este o serie de numere (numite și greutăți sau parametri). Distanța lumina de la slide-uri lanterna ca se deplaseaza (sunt vă deplasați filtrul peste un rând de bule la un moment dat? Două?) se numește pas. De exemplu, un pas de unul înseamnă că vă deplasați filtrul peste un pixel la un moment dat. Convenția este un pas de două.

adâncimea filtrului trebuie să fie aceeași cu adâncimea intrării, deci dacă ne uităm la o imagine color, adâncimea ar fi 3. Asta face ca dimensiunile acestui filtru 5x5x3. În fiecare poziție, filtrul înmulțește valorile din filtru cu valorile originale din pixel. Aceasta este înmulțirea înțeleaptă a elementelor. Multiplicările sunt însumate, creând un singur număr. Dacă ați început în colțul din stânga sus al foliei cu bule, acest număr este reprezentativ pentru colțul din stânga sus. Acum mutați filtrul în poziția următoare și repetați procesul în jurul învelișului cu bule. Matricea cu care ajungeți se numește hartă caracteristică sau hartă de activare! Puteți utiliza mai multe filtre, ceea ce va face o treabă mai bună de a păstra relațiile spațiale.

GIF prin GIPHY

veți specifica parametri precum numărul de filtre, dimensiunea filtrului, arhitectura rețelei și așa mai departe. CNN învață valorile filtrelor pe cont propriu în timpul procesului de instruire. Aveți o mulțime de opțiuni cu care puteți lucra pentru a face cel mai bun clasificator de imagini posibil pentru sarcina dvs. Puteți alege să tamponați matricea de intrare cu zerouri (umplutură zero) pentru a aplica filtrul la elementele limitrofe ale matricei de imagine de intrare. Acest lucru vă permite, de asemenea, să controlați dimensiunea hărților de caracteristici. Adăugarea de umplutură zero este convoluție largă. Nu adăugarea de umplutură zero este convoluția îngustă.

acesta este practic modul în care detectăm imaginile! Nu ne uităm la fiecare pixel al unei imagini. Vedem caracteristici precum o pălărie, o rochie roșie, un tatuaj și așa mai departe. Există atât de multe informații care intră în ochii noștri în orice moment încât nu am putea face față fiecărui pixel al acestuia. Permitem modelului nostru să facă același lucru.

rezultatul este harta caracteristică convoluată. Este mai mică decât imaginea de intrare originală. Acest lucru face mai ușor și mai rapid să se ocupe. Pierdem informații? Unii, Da. Dar, în același timp, scopul detectorului de caracteristici este de a detecta caracteristici, ceea ce face exact acest lucru.

creăm multe hărți de caracteristici pentru a obține primul nostru strat convoluțional. Acest lucru ne permite să identificăm multe caracteristici diferite pe care programul le poate folosi pentru a învăța.detectoarele de caracteristici pot fi configurate cu valori diferite pentru a obține rezultate diferite. De exemplu, se poate aplica un filtru care poate ascuți și focaliza o imagine sau estompa o imagine. Acest lucru ar da o importanță egală tuturor valorilor. Puteți face îmbunătățirea marginilor, detectarea marginilor și multe altele. Ați face acest lucru aplicând detectoare de caracteristici diferite pentru a crea hărți de caracteristici diferite. Computerul este capabil să determine ce filtre au cel mai mult sens și să le aplice.

scopul principal aici este de a găsi caracteristici în imaginea dvs., de a le pune într-o hartă a caracteristicilor și de a păstra în continuare relația spațială dintre pixeli. Acest lucru este important pentru ca pixelii să nu se amestece.

să vizualizăm aceste lucruri!

Salută-l pe micul meu prieten:

Photo by Kirgiz03 on

We’re going to use this guy for our input image.

We’ll make him black and white

Let’s define and visualize our filters

import numpy as npfilter_vals = np.array(, , , ])print('Filter shape: ', filter_vals.shape)

Filter shape: (4, 4)

și vedem:

Filter 1: 



]

Iată o vizualizare a celor patru filtre

acum să definim un strat convoluțional (îmi place pytorch chiar acum, deci asta folosim aici.)

vom vedea

Net(
(conv): Conv2d(1, 4, kernel_size=(4, 4), stride=(1, 1), bias=False)
)

adăugați un pic mai mult Cod

apoi un pic mai mult

și putem vizualiza ieșirea unui strat convoluțional înainte de aplicarea unei funcții de activare ReLu!

acum să creăm un nucleu personalizat folosind un operator Sobel ca filtru de detectare a marginilor. Filtrul Sobel este foarte frecvent utilizat în detectarea marginilor. Face o treabă bună de a găsi modele în intensitate într-o imagine. Aplicarea unui filtru Sobel la o imagine este o modalitate de a lua o aproximare a derivatei imaginii separat în direcția x sau Y.

vom converti micul nostru tip în tonuri de gri pentru filtrare

gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)plt.imshow(gray, cmap='gray')

aici vom merge!

doriți să verificați matematica? Aruncati o privire la Introducere în rețele neuronale convoluționale de Jianxin Wu

ReLU layer

ReLU (rectificat linear unit) layer este un alt pas spre stratul nostru convoluție. Aplicați o funcție de activare pe hărțile de caracteristici pentru a crește neliniaritatea în rețea. Acest lucru se datorează faptului că imaginile în sine sunt extrem de neliniare! Elimină valorile negative dintr-o hartă de activare setându-le la zero.

convoluția este o operație liniară cu lucruri precum înmulțirea și Adunarea matricei înțelepte a elementelor. Datele din lumea reală pe care vrem să le învețe CNN-ul nostru vor fi neliniare. Putem explica asta cu o operațiune ca ReLU. Puteți utiliza alte operații, cum ar fi tanh sau sigmoid. Cu toate acestea, ReLU este o alegere populară, deoarece poate antrena rețeaua mai rapid, fără nicio penalizare majoră la precizia generalizării.

verificați C.-C. Jay Kuo înțelegerea rețelelor neuronale convoluționale cu un Model matematic.

vrei să sapi mai adânc? Încercați Kaiming He și colab. Intrand adânc în redresoare: depășind performanța la nivel uman pe clasificarea ImageNet.

Dacă aveți nevoie de mai multe informații despre elementele de bază absolute ale funcțiilor de activare, le puteți găsi aici!

Iată cum prietenul nostru mic este în căutarea după o funcție de activare ReLU transformă toate valorile negative pixel negru

viz_layer(activated_layer)

Related Post

Leave A Comment