logo

Uvod v konvolucijsko nevronsko mrežo

A Konvolucijska nevronska mreža (CNN) je vrsta arhitekture nevronske mreže globokega učenja, ki se običajno uporablja v računalniškem vidu. Računalniški vid je področje umetne inteligence, ki računalniku omogoča razumevanje in interpretacijo slike ali vizualnih podatkov.

Ko gre za strojno učenje, Umetne nevronske mreže deluje zelo dobro. Nevronske mreže se uporabljajo v različnih zbirkah podatkov, kot so slike, zvok in besedilo. Različne vrste nevronskih mrež se uporabljajo za različne namene, na primer za napovedovanje zaporedja besed, ki jih uporabljamo Ponavljajoče se nevronske mreže natančneje an LSTM , podobno za klasifikacijo slik uporabljamo konvolucijske nevronske mreže. V tem blogu bomo zgradili osnovni gradnik za CNN.



V navadni nevronski mreži obstajajo tri vrste plasti:

  1. Vhodni sloji: To je plast, v kateri damo vhod v naš model. Število nevronov v tej plasti je enako skupnemu številu funkcij v naših podatkih (številu slikovnih pik v primeru slike).
  2. Skriti sloj: Vnos iz vhodne plasti se nato vnese v skrito plast. Glede na naš model in velikost podatkov je lahko veliko skritih plasti. Vsaka skrita plast ima lahko različno število nevronov, ki so na splošno večji od števila funkcij. Izhod iz vsake plasti se izračuna z matričnim množenjem izhoda prejšnje plasti z naučenimi utežmi te plasti in nato z dodajanjem naučljivih pristranskosti, ki ji sledi aktivacijska funkcija, zaradi česar je omrežje nelinearno.
  3. Izhodna plast: Izhod iz skritega sloja se nato vnese v logistično funkcijo, kot je sigmoid ali softmax, ki pretvori izhod vsakega razreda v oceno verjetnosti vsakega razreda.

Podatki se vnesejo v model in izhod iz vsake plasti se pridobi iz zgornjega koraka posredovanje naprej , nato izračunamo napako s funkcijo napake, nekatere običajne funkcije napak so navzkrižna entropija, kvadratna napaka izgube itd. Funkcija napake meri, kako dobro deluje omrežje. Po tem se z izračunom derivatov vrnemo v model. Ta korak se imenuje Konvolucijska nevronska mreža (CNN) je razširjena različica umetne nevronske mreže (ANN) ki se večinoma uporablja za ekstrahiranje funkcije iz nabora podatkov mreže podobne matrike. Na primer vizualni nabori podatkov, kot so slike ali videoposnetki, kjer imajo podatkovni vzorci obsežno vlogo.

Arhitektura CNN

Konvolucijska nevronska mreža je sestavljena iz več plasti, kot so vhodna plast, konvolucijska plast, plast združevanja in popolnoma povezane plasti.



maks

Preprosta arhitektura CNN

123 film

Konvolucijski sloj uporabi filtre za vhodno sliko, da izloči značilnosti, sloj združevanja zmanjša vzorčenje slike, da zmanjša izračune, popolnoma povezan sloj pa izvede končno napoved. Omrežje se nauči optimalnih filtrov s širjenjem nazaj in gradientnim spuščanjem.

Kako delujejo konvolucijski sloji

Konvolucijske nevronske mreže ali covnets so nevronske mreže, ki si delijo svoje parametre. Predstavljajte si, da imate sliko. Lahko ga predstavimo kot kvader, ki ima svojo dolžino, širino (dimenzija slike) in višino (tj. kanal, saj imajo slike na splošno rdeče, zelene in modre kanale).



cnn-2-300x133

Zdaj pa si predstavljajte, da vzamete majhen delček te slike in na njem zaženete majhno nevronsko mrežo, imenovano filter ali jedro, z recimo K izhodi in jih predstavite navpično. Zdaj povlecite to nevronsko mrežo čez celotno sliko, kot rezultat bomo dobili drugo sliko z različnimi širinami, višinami in globinami. Namesto samo kanalov R, G in B imamo zdaj več kanalov, a manjšo širino in višino. Ta operacija se imenuje Konvolucija . Če je velikost zaplate enaka velikosti slike, bo to običajna nevronska mreža. Zaradi te majhne zaplate imamo manj uteži.

Posnetek zaslona-iz-2017-08-15-13-55-59-300x217

Vir slike: Deep Learning Udacity

Zdaj pa se pogovorimo o matematiki, ki je vključena v celoten proces konvolucije.

  • Konvolucijske plasti so sestavljene iz nabora učljivih filtrov (ali jeder), ki imajo majhne širine in višine ter enako globino kot vhodna prostornina (3, če je vhodna plast slikovni vnos).
  • Na primer, če moramo zagnati konvolucijo na sliki dimenzij 34x34x3. Možna velikost filtrov je lahko axax3, kjer je lahko 'a' karkoli kot 3, 5 ali 7, vendar manjši v primerjavi z dimenzijo slike.
  • Med prehodom naprej vsak filter korak za korakom drsimo po celotnem vhodnem volumnu, kjer se vsak korak pokliče korakati (ki ima lahko vrednost 2, 3 ali celo 4 za visokodimenzionalne slike) in izračuna pikčasti produkt med utežmi jedra in popravkom iz vhodnega volumna.
  • Ko potisnemo naše filtre, bomo dobili 2-D izhod za vsak filter in jih bomo kot rezultat zložili skupaj, dobili bomo izhodni volumen z globino, ki je enaka številu filtrov. Omrežje se bo naučilo vseh filtrov.

Sloji, uporabljeni za gradnjo ConvNets

Popolna arhitektura konvolucijskih nevronskih mrež je znana tudi kot covnets. Covnets je zaporedje plasti in vsaka plast pretvori en volumen v drugega z diferencialno funkcijo.
Vrste plasti: nabori podatkov
Vzemimo primer z zagonom kovnetov na sliki dimenzij 32 x 32 x 3.

  • Vhodni sloji: To je plast, v kateri damo vhod v naš model. V CNN bo na splošno vnos slika ali zaporedje slik. Ta plast vsebuje neobdelani vnos slike s širino 32, višino 32 in globino 3.
  • Konvolucijski sloji: To je plast, ki se uporablja za ekstrahiranje funkcije iz vhodnega nabora podatkov. Za vhodne slike uporablja niz učljivih filtrov, znanih kot jedra. Filtri/jedra so manjše matrice, običajno v obliki 2×2, 3×3 ali 5×5. drsi po vhodnih slikovnih podatkih in izračuna pikčasti produkt med težo jedra in ustreznim popravkom vhodne slike. Rezultat tega sloja se imenuje zemljevidi značilnosti. Recimo, da za to plast uporabimo skupno 12 filtrov, dobili bomo izhodno prostornino dimenzij 32 x 32 x 12.
  • Aktivacijska plast: Z dodajanjem aktivacijske funkcije izhodu predhodne plasti aktivacijske plasti omrežju dodajo nelinearnost. uporabil bo elementno aktivacijsko funkcijo za izhod konvolucijske plasti. Nekatere pogoste funkcije aktiviranja so Nadaljuj : max(0, x), Sramežljiv , Puščanje RELU , itd. Glasnost ostane nespremenjena, zato bo imela izhodna prostornina dimenzije 32 x 32 x 12.
  • Plast združevanja: Ta plast je občasno vstavljena v mreže in njena glavna naloga je zmanjšati velikost nosilca, zaradi česar je izračun hiter, zmanjša pomnilnik in prepreči prekomerno opremljanje. Dve pogosti vrsti združevanja plasti sta največje združevanje in povprečno združevanje . Če uporabimo največji bazen z 2 x 2 filtroma in korakom 2, bo rezultantna prostornina dimenzij 16x16x12.
Posnetek zaslona-od-2017-08-15-17-04-02

Vir slike: cs231n.stanford.edu

  • Sploščitev: Dobljeni zemljevidi funkcij so po slojih konvolucije in združevanja sploščeni v enodimenzionalni vektor, tako da jih je mogoče prenesti v popolnoma povezan sloj za kategorizacijo ali regresijo.
  • Popolnoma povezani sloji: Prevzame vhod iz prejšnje plasti in izračuna končno klasifikacijo ali regresijsko nalogo.
Posnetek zaslona-iz-2017-15-17-22-40

Vir slike: cs231n.stanford.edu

  • Izhodna plast: Izhod iz popolnoma povezanih slojev se nato vnese v logistično funkcijo za naloge klasifikacije, kot sta sigmoid ali softmax, ki pretvori izhod vsakega razreda v verjetnostni rezultat vsakega razreda.

primer:

Oglejmo si sliko in uporabimo konvolucijsko plast, aktivacijsko plast in operacijo združevanja plasti, da izvlečemo notranjo funkcijo.

Vhodna slika:

Ganesh

Vhodna slika

korak:

  • uvozite potrebne knjižnice
  • nastavite parameter
  • definirajte jedro
  • Naložite sliko in jo narišite.
  • Preoblikujte sliko
  • Uporabite operacijo konvolucijske plasti in narišite izhodno sliko.
  • Uporabite operacijo aktivacijske plasti in narišite izhodno sliko.
  • Uporabite operacijo plasti združevanja in narišite izhodno sliko.

Python3


cast int v niz 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'>)> image>=> 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()>

>

>

Izhod :

prenos-(23)

Originalna slika v sivinah

Posnetek zaslona-iz-2023-03-20-15-07-10-(2)

Izhod

mesto v ZDA

Prednosti konvolucijskih nevronskih mrež (CNN):

  1. Dober pri zaznavanju vzorcev in funkcij v slikah, videoposnetkih in zvočnih signalih.
  2. Robusten na invariantnost prevajanja, rotacije in skaliranja.
  3. Usposabljanje od konca do konca, ni potrebe po ročnem pridobivanju funkcij.
  4. Lahko obdeluje velike količine podatkov in doseže visoko natančnost.

Slabosti konvolucijskih nevronskih mrež (CNN):

  1. Računalniško drago za usposabljanje in zahteva veliko pomnilnika.
  2. Lahko je nagnjen k prekomernemu opremljanju, če ni uporabljenih dovolj podatkov ali pravilne ureditve.
  3. Zahteva velike količine označenih podatkov.
  4. Interpretabilnost je omejena, težko je razumeti, kaj se je omrežje naučilo.

Pogosto zastavljena vprašanja (FAQ)

1: Kaj je konvolucijska nevronska mreža (CNN)?

Konvolucijska nevronska mreža (CNN) je vrsta nevronske mreže globokega učenja, ki je zelo primerna za analizo slik in videa. CNN uporabljajo niz konvolucijskih in združevalnih plasti za ekstrahiranje funkcij iz slik in videoposnetkov, nato pa te funkcije uporabijo za razvrščanje ali zaznavanje predmetov ali prizorov.

2: Kako delujejo CNN?

CNN delujejo tako, da na vhodno sliko ali videoposnetek uporabijo niz konvolucijskih in združevalnih plasti. Konvolucijski sloji ekstrahirajo funkcije iz vnosa tako, da pomaknejo majhen filter ali jedro čez sliko ali video in izračunajo pikčasti produkt med filtrom in vhodom. Plasti združevanja nato zmanjšajo vzorčenje izhoda konvolucijskih plasti, da zmanjšajo dimenzionalnost podatkov in jih naredijo računsko učinkovitejše.

3: Katere so pogoste aktivacijske funkcije, ki se uporabljajo v CNN?

Nekatere pogoste aktivacijske funkcije, ki se uporabljajo v CNN, vključujejo:

  • Rektificirana linearna enota (ReLU): ReLU je aktivacijska funkcija brez nasičenja, ki je računsko učinkovita in enostavna za treniranje.
  • Puščajoča rektificirana linearna enota (Leaky ReLU): Leaky ReLU je različica ReLU, ki omogoča, da majhna količina negativnega gradienta teče skozi omrežje. To lahko pomaga preprečiti, da bi omrežje med treningom umrlo.
  • Parametrična rektificirana linearna enota (PReLU): PReLU je posplošitev Leaky ReLU, ki omogoča učenje naklona negativnega gradienta.

4: Kakšen je namen uporabe več konvolucijskih plasti v CNN?

Uporaba več konvolucijskih plasti v CNN omogoča omrežju, da se iz vhodne slike ali videa nauči vse bolj zapletenih funkcij. Prve konvolucijske plasti se naučijo preprostih funkcij, kot so robovi in ​​vogali. Globlje konvolucijske plasti se naučijo kompleksnejših lastnosti, kot so oblike in predmeti.

5: Katere so pogoste tehnike urejanja, ki se uporabljajo v CNN?

Tehnike uravnavanja se uporabljajo za preprečevanje, da bi CNN preveč opremili podatke o usposabljanju. Nekatere običajne tehnike urejanja, ki se uporabljajo v CNN, vključujejo:

  • Dropout: Dropout med treningom naključno izloči nevrone iz omrežja. To prisili omrežje, da se nauči bolj robustnih funkcij, ki niso odvisne od nobenega posameznega nevrona.
  • Uravnavanje L1: Uravnavanje L1 uravnava absolutna vrednost uteži v omrežju. To lahko pomaga zmanjšati število uteži in naredi omrežje učinkovitejše.
  • Uravnavanje L2: Uravnavanje L2 uravnava kvadrat uteži v mreži. To lahko tudi pomaga zmanjšati število uteži in narediti omrežje učinkovitejše.

6: Kakšna je razlika med konvolucijsko plastjo in plastjo združevanja?

Konvolucijska plast izvleče funkcije iz vhodne slike ali videa, medtem ko združujoča plast zmanjša vzorčenje izhodnih konvolucijskih plasti. Konvolucijski sloji uporabljajo niz filtrov za pridobivanje funkcij, medtem ko združujoči sloji uporabljajo različne tehnike za zmanjšanje vzorčenja podatkov, kot sta največje združevanje in povprečno združevanje.