logo

Ievads Convolution neironu tīklā

A Konvolucionālais neironu tīkls (CNN) ir dziļās mācīšanās neironu tīkla arhitektūras veids, ko parasti izmanto datorredzībā. Datorredze ir mākslīgā intelekta joma, kas ļauj datoram saprast un interpretēt attēlu vai vizuālos datus.

Runājot par mašīnmācīšanos, Mākslīgie neironu tīkli darbojas patiešām labi. Neironu tīkli tiek izmantoti dažādās datu kopās, piemēram, attēlos, audio un tekstā. Dažādi neironu tīklu veidi tiek izmantoti dažādiem mērķiem, piemēram, lai paredzētu izmantoto vārdu secību Atkārtoti neironu tīkli precīzāk an LSTM , līdzīgi attēlu klasifikācijai mēs izmantojam Convolution neironu tīklus. Šajā emuārā mēs izveidosim CNN pamata bloku.



Parastā neironu tīklā ir trīs veidu slāņi:

  1. Ievades slāņi: Tas ir slānis, kurā mēs sniedzam ievadi savam modelim. Neironu skaits šajā slānī ir vienāds ar kopējo pazīmju skaitu mūsu datos (pikseļu skaits attēla gadījumā).
  2. Slēpts slānis: Pēc tam ievade no ievades slāņa tiek ievadīta slēptajā slānī. Atkarībā no mūsu modeļa un datu lieluma var būt daudz slēpto slāņu. Katrā slēptā slānī var būt atšķirīgs neironu skaits, kas parasti ir lielāks par pazīmju skaitu. Katra slāņa izvade tiek aprēķināta, matricas reizinot iepriekšējā slāņa izvadi ar šī slāņa apgūstamajiem svariem un pēc tam pievienojot apgūstamās novirzes, kam seko aktivizācijas funkcija, kas padara tīklu nelineāru.
  3. Izvades slānis: Pēc tam slēptā slāņa izvade tiek ievadīta loģistikas funkcijā, piemēram, sigmoid vai softmax, kas pārvērš katras klases izvadi katras klases varbūtības rādītājā.

Dati tiek ievadīti modelī, un katra slāņa izvade tiek iegūta no iepriekš minētās darbības uz priekšu , mēs aprēķinām kļūdu, izmantojot kļūdas funkciju, dažas izplatītas kļūdu funkcijas ir šķērsentropija, kvadrātveida zuduma kļūda utt. Kļūdas funkcija mēra, cik labi darbojas tīkls. Pēc tam mēs atgriezīsimies modelī, aprēķinot atvasinājumus. Šo soli sauc Konvolucionālais neironu tīkls (CNN) ir paplašinātā versija mākslīgie neironu tīkli (ANN) ko galvenokārt izmanto, lai iegūtu līdzekli no režģveida matricas datu kopas. Piemēram, vizuālas datu kopas, piemēram, attēli vai videoklipi, kur datu modeļiem ir liela nozīme.

CNN arhitektūra

Konvolucionālais neironu tīkls sastāv no vairākiem slāņiem, piemēram, ievades slāņa, konvolucionālā slāņa, apvienošanas slāņa un pilnībā savienotiem slāņiem.



maks

Vienkārša CNN arhitektūra

Konvolūcijas slānis ievades attēlam lieto filtrus, lai iegūtu līdzekļus, apvienošanas slānis samazina attēla paraugus, lai samazinātu aprēķinu, un pilnībā savienotais slānis veic galīgo prognozi. Tīkls apgūst optimālos filtrus, izmantojot atpakaļizplatīšanu un gradienta nolaišanos.

Kā darbojas konvolucionālie slāņi

Convolution neironu tīkli vai covnets ir neironu tīkli, kuriem ir kopīgi parametri. Iedomājieties, ka jums ir attēls. To var attēlot kā kuboīdu, kura garums, platums (attēla izmērs) un augstums (t.i., kanālam, jo ​​attēliem parasti ir sarkani, zaļi un zili kanāli).



cnn-2-300x133

Tagad iedomājieties, ka paņemat nelielu šī attēla ielāpu un palaižot tajā nelielu neironu tīklu, ko sauc par filtru vai kodolu, ar, piemēram, K izvadiem un attēlojot tos vertikāli. Tagad pabīdiet šo neironu tīklu pa visu attēlu, kā rezultātā mēs iegūsim citu attēlu ar dažādu platumu, augstumu un dziļumu. Tikai R, G un B kanālu vietā tagad mums ir vairāk kanālu, bet mazāks platums un augstums. Šo operāciju sauc Konvolūcija . Ja ielāpa izmērs ir tāds pats kā attēla izmēram, tas būs parasts neironu tīkls. Šī mazā ielāpa dēļ mums ir mazāk atsvaru.

Ekrānuzņēmums no-2017-08-15-13-55-59-300x217

Attēla avots: Deep Learning Udacity

java masīvu saraksts

Tagad parunāsim par matemātiku, kas ir iesaistīta visā konvolūcijas procesā.

  • Konvolūcijas slāņi sastāv no apgūstamu filtru (vai kodolu) kopas, kam ir mazs platums un augstums un tāds pats dziļums kā ievades skaļumam (3, ja ievades slānis ir attēla ievade).
  • Piemēram, ja mums ir jāpalaiž konvolūcija attēlam ar izmēriem 34x34x3. Iespējamais filtru izmērs var būt axax3, kur “a” var būt jebkas, piemēram, 3, 5 vai 7, bet mazāks, salīdzinot ar attēla izmēru.
  • Pārejas laikā mēs soli pa solim bīdām katru filtru visā ievades skaļumā, kur tiek izsaukts katrs solis solis (kuras vērtība var būt 2, 3 vai pat 4 augstas dimensijas attēliem) un aprēķiniet punktu reizinājumu starp kodola svariem un ielāpu no ievades apjoma.
  • Bīdot filtrus, mēs iegūsim 2-D izvadi katram filtram, kā rezultātā mēs tos saliksim kopā, iegūsim izvades tilpumu, kura dziļums ir vienāds ar filtru skaitu. Tīkls apgūs visus filtrus.

Slāņi, ko izmanto, lai izveidotu ConvNets

Pilnīga Convolution neironu tīklu arhitektūra ir pazīstama arī kā covnets. Covnets ir slāņu secība, un katrs slānis pārveido vienu tilpumu citā, izmantojot diferencējamu funkciju.
Slāņu veidi: datu kopas
Ņemsim piemēru, palaižot 32 x 32 x 3 izmēra attēla covnets.

  • Ievades slāņi: Tas ir slānis, kurā mēs sniedzam ievadi savam modelim. CNN parasti ievade ir attēls vai attēlu secība. Šajā slānī ir neapstrādāta attēla ievade ar platumu 32, augstumu 32 un dziļumu 3.
  • Konvolucionālie slāņi: Šis ir slānis, kas tiek izmantots, lai iegūtu līdzekli no ievades datu kopas. Tā ievades attēliem izmanto apgūstamu filtru kopu, kas pazīstama kā kodoli. Filtri/kodoli ir mazākas matricas, kuru forma parasti ir 2 × 2, 3 × 3 vai 5 × 5. tas slīd pāri ievades attēla datiem un aprēķina punktu reizinājumu starp kodola svaru un atbilstošo ievades attēla ielāpu. Šī slāņa izvade tiek dēvēta par objektu kartēm. Pieņemsim, ka šim slānim mēs izmantojam pavisam 12 filtrus, mēs iegūsim izvades apjomu 32 x 32 x 12.
  • Aktivizācijas slānis: Pievienojot aktivizācijas funkciju iepriekšējā slāņa izvadei, aktivizācijas slāņi pievieno tīklam nelinearitāti. tas izmantos elementu aktivizēšanas funkciju konvolūcijas slāņa izvadei. Dažas izplatītas aktivizācijas funkcijas ir turpināt : max(0, x), Zivīgs , Caurlaidīgs RELU utt. Skaļums paliek nemainīgs, tāpēc izvades apjoms būs 32 x 32 x 12.
  • Apvienojuma slānis: Šis slānis tiek periodiski ievietots covnets, un tā galvenā funkcija ir samazināt skaļuma lielumu, kas padara aprēķinu ātru, samazina atmiņu un arī novērš pārmērīgu ietilpību. Ir divi izplatīti apvienošanas slāņu veidi maksimālā apvienošana un vidējais apvienojums . Ja mēs izmantojam maksimālo baseinu ar 2 x 2 filtriem un 2. soli, iegūtais tilpums būs 16 x 16 x 12.
Ekrānuzņēmums no-2017-08-15-17-04-02

Attēla avots: cs231n.stanford.edu

  • Izlīdzināšana: Iegūtās objektu kartes pēc konvolūcijas un apvienošanas slāņiem tiek saplacinātas viendimensijas vektorā, lai tās varētu nodot pilnībā saistītā slānī kategorizēšanai vai regresijai.
  • Pilnībā savienoti slāņi: Tas ņem ievadi no iepriekšējā slāņa un aprēķina galīgo klasifikācijas vai regresijas uzdevumu.
Ekrānuzņēmums no-2017-08-15-17-22-40

Attēla avots: cs231n.stanford.edu

  • Izvades slānis: Pēc tam pilnībā savienoto slāņu izvade tiek ievadīta loģistikas funkcijā tādiem klasifikācijas uzdevumiem kā sigmoid vai softmax, kas pārvērš katras klases izvadi katras klases varbūtības rādītājā.

Piemērs:

Apskatīsim attēlu un pielietosim konvolūcijas slāni, aktivizācijas slāni un apvienošanas slāņa darbību, lai iegūtu iekšējo funkciju.

Ievades attēls:

Ganešs

Ievadiet attēlu

solis:

  • importēt nepieciešamās bibliotēkas
  • iestatīt parametru
  • definējiet kodolu
  • Ielādējiet attēlu un uzzīmējiet to.
  • Pārformatējiet attēlu
  • Lietojiet konvolūcijas slāņa darbību un uzzīmējiet izvades attēlu.
  • Lietojiet aktivizācijas slāņa darbību un uzzīmējiet izvades attēlu.
  • Izmantojiet apvienošanas slāņa darbību un uzzīmējiet izvades attēlu.

Python3

pārvērst par dubulto java




# import the necessary libraries> import> numpy as np> import> tensorflow as tf> import> matplotlib.pyplot as plt> from> itertools>import> product> > # set the param> plt.rc(>'figure'>, autolayout>=>True>)> plt.rc(>'image'>, cmap>=>'magma'>)> > # define the kernel> kernel>=> tf.constant([[>->1>,>->1>,>->1>],> >[>->1>,>8>,>->1>],> >[>->1>,>->1>,>->1>],> >])> > # load the image> image>=> tf.io.read_file(>'Ganesh.webp'plain'>)>> => tf.io.decode_jpeg(image, channels>=>1>)> image>=> tf.image.resize(image, size>=>[>300>,>300>])> > # plot the image> img>=> tf.squeeze(image).numpy()> plt.figure(figsize>=>(>5>,>5>))> plt.imshow(img, cmap>=>'gray'>)> plt.axis(>'off'>)> plt.title(>'Original Gray Scale image'>)> plt.show();> > > # Reformat> image>=> tf.image.convert_image_dtype(image, dtype>=>tf.float32)> image>=> tf.expand_dims(image, axis>=>0>)> kernel>=> tf.reshape(kernel, [>*>kernel.shape,>1>,>1>])> kernel>=> tf.cast(kernel, dtype>=>tf.float32)> > # convolution layer> conv_fn>=> tf.nn.conv2d> > image_filter>=> conv_fn(> >input>=>image,> >filters>=>kernel,> >strides>=>1>,># or (1, 1)> >padding>=>'SAME'>,> )> > plt.figure(figsize>=>(>15>,>5>))> > # Plot the convolved image> plt.subplot(>1>,>3>,>1>)> > plt.imshow(> >tf.squeeze(image_filter)> )> plt.axis(>'off'>)> plt.title(>'Convolution'>)> > # activation layer> relu_fn>=> tf.nn.relu> # Image detection> image_detect>=> relu_fn(image_filter)> > plt.subplot(>1>,>3>,>2>)> plt.imshow(> ># Reformat for plotting> >tf.squeeze(image_detect)> )> > plt.axis(>'off'>)> plt.title(>'Activation'>)> > # Pooling layer> pool>=> tf.nn.pool> image_condense>=> pool(>input>=>image_detect,> >window_shape>=>(>2>,>2>),> >pooling_type>=>'MAX'>,> >strides>=>(>2>,>2>),> >padding>=>'SAME'>,> >)> > plt.subplot(>1>,>3>,>3>)> plt.imshow(tf.squeeze(image_condense))> plt.axis(>'off'>)> plt.title(>'Pooling'>)> plt.show()>

>

>

Izvade :

lejupielādēt (23)

Oriģinālais pelēktoņu attēls

Ekrānuzņēmums no-2023-03-20-15-07-10-(2)

Izvade

np.histogramma

Konvolucionālo neironu tīklu (CNN) priekšrocības:

  1. Labi spēj noteikt modeļus un funkcijas attēlos, videoklipos un audio signālos.
  2. Izturīgs pret tulkošanu, rotāciju un mērogošanas nemainīgumu.
  3. Pilnīga apmācība, nav nepieciešama manuāla funkciju iegūšana.
  4. Var apstrādāt lielu datu apjomu un sasniegt augstu precizitāti.

Konvolucionālo neironu tīklu (CNN) trūkumi:

  1. Apmācība ir dārga skaitļošanas ziņā un prasa daudz atmiņas.
  2. Ja netiek izmantots pietiekami daudz datu vai netiek izmantota pareiza regulācija, var rasties pārmērīga pielāgošana.
  3. Nepieciešams liels daudzums marķētu datu.
  4. Interpretējamība ir ierobežota, ir grūti saprast, ko tīkls ir iemācījies.

Bieži uzdotie jautājumi (FAQ)

1: Kas ir konvolucionālais neironu tīkls (CNN)?

Konvolucionālais neironu tīkls (CNN) ir dziļas mācīšanās neironu tīkls, kas ir labi piemērots attēlu un video analīzei. CNN izmanto virkni konvolūcijas un apvienošanas slāņu, lai no attēliem un videoklipiem iegūtu funkcijas, un pēc tam izmanto šīs funkcijas, lai klasificētu vai atklātu objektus vai ainas.

2: Kā darbojas CNN?

CNN darbojas, ievades attēlam vai videoklipam piemērojot virkni konvolūcijas un apvienojot slāņus. Konvolūcijas slāņi iegūst līdzekļus no ievades, bīdot nelielu filtru vai kodolu virs attēla vai video un aprēķina punktu reizinājumu starp filtru un ievadi. Pēc tam apvienojot slāņus, tiek samazināts konvolūcijas slāņu izejas paraugs, lai samazinātu datu dimensiju un padarītu tos skaitļošanas ziņā efektīvākus.

3. Kādas ir dažas izplatītas aktivizācijas funkcijas, ko izmanto CNN?

Dažas izplatītākās aktivizācijas funkcijas, ko izmanto CNN, ietver:

  • Rektificēta lineārā vienība (ReLU): ReLU ir nepiesātināta aktivizācijas funkcija, kas ir skaitļošanas ziņā efektīva un viegli apmācāma.
  • Leaky Rectified Linear Unit (Leaky ReLU): Leaky ReLU ir ReLU variants, kas ļauj nelielam daudzumam negatīva gradienta plūst caur tīklu. Tas var palīdzēt novērst tīkla bojāeju treniņa laikā.
  • Parametriskā rektificētā lineārā vienība (PReLU): PReLU ir Leaky ReLU vispārinājums, kas ļauj uzzināt negatīvā gradienta slīpumu.

4: Kāds ir vairāku konvolūcijas slāņu izmantošanas mērķis CNN?

Vairāku konvolūcijas slāņu izmantošana CNN ļauj tīklam apgūt arvien sarežģītākas funkcijas no ievades attēla vai video. Pirmie konvolūcijas slāņi apgūst vienkāršas funkcijas, piemēram, malas un stūrus. Dziļāki konvolūcijas slāņi apgūst sarežģītākas funkcijas, piemēram, formas un objektus.

5. Kādas ir dažas izplatītas regularizācijas metodes, ko izmanto CNN?

Lai novērstu CNN pārmērīgu apmācību datu pielāgošanu, tiek izmantotas legalizācijas metodes. Dažas izplatītas regulēšanas metodes, ko izmanto CNN, ietver:

  • Izkrišana: Atbirums treniņa laikā nejauši izmet neironus no tīkla. Tas liek tīklam apgūt spēcīgākas funkcijas, kas nav atkarīgas no neviena neirona.
  • L1 regularizācija: L1 regularizācija regularizē svaru absolūtā vērtība tīklā. Tas var palīdzēt samazināt svaru skaitu un padarīt tīklu efektīvāku.
  • L2 regularizācija: L2 regularizācija regularizē atsvaru kvadrāts tīklā. Tas var arī palīdzēt samazināt svaru skaitu un padarīt tīklu efektīvāku.

6: Kāda ir atšķirība starp konvolūcijas slāni un apvienošanas slāni?

Konvolūcijas slānis izvelk funkcijas no ievades attēla vai video, savukārt apvienošanas slānis samazina konvolūcijas slāņu izvades paraugus. Konvolūcijas slāņi izmanto virkni filtru, lai iegūtu līdzekļus, savukārt apvienošanas slāņi izmanto dažādus paņēmienus, lai samazinātu datu paraugus, piemēram, maksimālo apkopošanu un vidējo apkopošanu.