Articles

täydellinen aloittelijan opas Syväoppimiseen: Convolutionary Neural Networks and Image Classification

Posted by admin

”yksi asia, joka iski minuun jo varhain, on se, että et laita valokuvaan mitä sieltä tulee. Tai päinvastoin, se, mikä tulee ulos, ei ole sitä, mitä laitetaan sisään.”

― Diane Arbus

suosikkiyhteisöpalveluusi ilmestyy ilmoitus, että joku julkaisi kuvan, jossa saatat olla.

se on oikein.

se on huonoin kuva sinusta ikinä.

GIF via GIPHY

miten se tapahtui?

Kuvan luokitus!

convolutionaalinen neuroverkko (CNN) on syväoppivien neuroverkkojen Luokka. CNNs on valtava läpimurto kuvantunnistuksessa. Niitä käytetään yleisimmin visuaalisten kuvien analysointiin ja ne toimivat usein kulissien takana kuvanluokituksessa. Ne löytyvät kaiken ytimestä Facebook-kuvamerkinnöistä itseohjautuviin autoihin. He tekevät kovasti töitä kulissien takana kaikessa terveydenhuollosta turvallisuuteen.

he ovat nopeita ja tehokkaita. Mutta miten ne toimivat?

Kuvan luokittelu on prosessi, jossa otetaan tulo (kuten kuva) ja ulotetaan luokka (kuten ”kissa”) tai todennäköisyys, että tulo on tietty luokka (”on 90% todennäköisyys, että tämä tulo on kissa”). Voit katsoa kuvaa ja tietää, että sinulla on kauhea kuva omasta naamastasi, mutta miten tietokone voi oppia tekemään niin?

convolutionaalisella neuroverkolla!

a CNN has

  • Convolutional layers
  • ReLU layers
  • täysin yhdistetty kerros

klassinen CNN: n arkkitehtuuri näyttäisi jotakuinkin tältä:

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. Muihin kuvanluokitusalgoritmeihin verrattuna CNNs käyttää itse asiassa hyvin vähän esikäsittelyä. Tämä tarkoittaa, että he voivat oppia suodattimia, jotka on käsin tehty muissa algoritmeissa. CNNs voidaan käyttää tonnia sovelluksia kuvan ja videon tunnistus, kuvan luokittelu, ja suosittelujärjestelmät luonnollisen kielen käsittelyyn ja lääketieteellisen kuvan analysointi.

CNN: t ovat saaneet innoituksensa biologisista prosesseista. Ne perustuvat Hubelin ja Wieselin 60-luvulla tekemiin siisteihin tutkimuksiin kissojen ja apinoiden näkökyvystä. CNN: n yhteyden malli tulee heidän tutkimuksestaan koskien näköaivokuoren organisaatiota. Nisäkkään silmässä yksittäiset hermosolut reagoivat visuaalisiin ärsykkeisiin vain vastaanottavassa kentässä, joka on suppea alue. Eri alueiden vastaanottokentät menevät osittain päällekkäin niin, että koko näkökenttä peittyy. Näin CNN toimii!

Image by Natwhitefotography on

cnns: ssä on tulokerros ja ulostulokerros sekä piilokerrokset. Piilokerrokset koostuvat yleensä convolutionaalisista kerroksista, ReLU-kerroksista, yhdistävistä kerroksista ja täysin toisiinsa kytkeytyneistä kerroksista.

  • Konvolaatiokerrokset soveltavat tuloon konvolaatio-operaatiota. Tämä siirtää tiedot seuraavalle tasolle.
  • yhdistyminen yhdistää neuroniryppäiden tuotokset yhdeksi seuraavan kerroksen hermosoluksi.
  • täysin yhdistetyt kerrokset yhdistävät jokaisen yhden kerroksen hermosolun seuraavan kerroksen jokaiseen hermosoluun.

konvolaatiokerroksessa hermosolut saavat syötteen vain edellisen kerroksen ala-alueelta. Täysin yhdistetyssä kerroksessa jokainen hermosolu saa syötteen jokaisesta edellisen kerroksen elementistä.

a CNN toimii poimimalla kuvista piirteitä. Tämä poistaa tarpeen manuaalinen ominaisuus louhinta. Ominaisuuksia ei ole koulutettu! Ne opitaan samalla, kun verkosto harjoittelee kuvasarjaa. Tämä tekee syväoppimismalleista erittäin tarkkoja tietokonenäkötehtäviin. CN: t oppivat ominaisuuksien tunnistuksen kymmenien tai satojen piilotettujen kerrosten kautta. Jokainen kerros lisää opittujen ominaisuuksien monimutkaisuutta.

GIF via GIPHY

CNN

  • aloittaa syötekuvalla
  • soveltaa siihen monia eri suodattimia luodakseen ominaisuuskartan
  • soveltaa relufunktiota epälineaarisuuden lisäämiseksi
  • soveltaa poolauskerrosta jokaiseen ominaisuuskarttaan
  • litistää yhdistetyt kuvat yhdeksi pitkäksi vektoriksi.
  • syöttää vektorin täysin yhdistettyyn keinotekoiseen neuroverkkoon.
  • käsittelee ominaisuuksia verkon kautta. Lopullinen täysin kytketty kerros tarjoaa” äänestäminen ” luokat, että olemme jälkeen.
  • treenaa eteenpäin etenemisen ja vastapropagaation kautta monelle, monelle aikakaudelle. Tämä toistuu, kunnes meillä on hyvin määritelty neuroverkko, jossa on koulutetut painot ja ominaisuusilmaisimet.

Joten mitä se tarkoittaa?

heti tämän prosessin alussa syötekuva jaetaan pikseleihin.

GIF via GIPHY

mustavalkoisessa kuvassa nämä Pikselit tulkitaan 2D-ryhmäksi (esimerkiksi 2×2 pikseliä). Jokaisen pikselin arvo on välillä 0 ja 255. (Nolla on täysin musta ja 255 on täysin valkoinen. Harmaasävy on olemassa näiden lukujen välillä.) Näiden tietojen perusteella tietokone voi alkaa työstää dataa.

värikuvassa tämä on 3D-ryhmä, jossa on sininen kerros, vihreä kerros ja punainen kerros. Jokainen näistä väreistä on oma arvo välillä 0 ja 255. Väri löytyy yhdistämällä kunkin kolmen kerroksen arvot.

konvoluutio

konvoluutiovaiheen päätarkoitus on poimia ominaisuuksia syötekuvasta. Convolutional kerros on aina ensimmäinen askel CNN.

sinulla on syötekuva, ominaisuusilmaisin ja ominaisuuskartta. Otat suodattimen ja soveltaa sitä pikselilohko pikselilohko syöttökuvan. Tämä tehdään matriisien kertolaskun avulla.

oletetaan, että sinulla on taskulamppu ja kuplamuovi. Taskulamppu loistaa 5-kupla x 5-kupla alue. Katsoaksesi koko arkkia, liu ’ uta taskulamppuasi jokaisen 5×5 neliön yli, kunnes olet nähnyt kaikki kuplat.

Photo by stux on

taskulampun valo tässä on suodattimesi ja alue, jonka yli liu ’ utat, on vastaanottava kenttä. Valo, joka liukuu vastaanottavien kenttien yli, on taskulamppusi kiertävä. Suodatin on joukko numeroita (kutsutaan myös painot tai parametrit). Etäisyys valo taskulamppu liukuu kuin se kulkee (siirrätkö suodatin yli yhden rivin kuplia kerrallaan? Kaksi?) on nimeltään stride. Esimerkiksi yhden askel tarkoittaa, että siirrät suodatinta yhden pikselin kerrallaan. Puoluekokous on kahden askel.

suodattimen syvyyden on oltava sama kuin syötön syvyys, joten jos katsottaisiin värikuvaa, syvyys olisi 3. Tämä tekee tämän suodattimen mitat 5x5x3. Jokaisessa asennossa suodatin kertoo suodattimen arvot pikselin alkuperäisillä arvoilla. Tämä on elementtiviisasta kertolaskua. Kertolaskut summataan yhteen, jolloin syntyy yksi luku. Jos aloitit kuplamuovin vasemmasta yläkulmasta, tämä numero edustaa vasenta yläkulmaa. Nyt siirrät suodattimen seuraavaan asentoon ja toista prosessi ympäri kuplamuovia. Array päätyä kutsutaan ominaisuus kartta tai aktivointi kartta! Voit käyttää useampaa kuin yhtä suodatinta, joka tekee parempaa työtä tilasuhteiden säilyttämisessä.

GIF via GIPHY

määrittelet parametrit, kuten suodattimien määrän, suodattimen koon, verkon arkkitehtuurin ja niin edelleen. CNN oppii suodattimien arvot itse harjoitusprosessin aikana. Sinulla on paljon vaihtoehtoja, että voit työskennellä tehdä paras kuva luokittelija mahdollista tehtävääsi. Voit pehmustaa tulomatriisin nollilla (nollapehmustus), jotta voit käyttää suodatinta tulokuvamatriisin reunaelementteihin. Näin voit myös hallita ominaisuuskarttojen kokoa. Nollapehmusteen lisääminen on laaja konvoluutio. Nollatäytteen lisäämättä jättäminen on kapea konvoluutio.

näin me periaatteessa havaitsemme kuvat! Emme katso jokaista kuvan pikseliä. Näemme ominaisuuksia, kuten hattu, punainen mekko, tatuointi, ja niin edelleen. Silmiimme menee koko ajan niin paljon tietoa, ettemme mitenkään pystyisi käsittelemään sitä joka ikistä pikseliä. Annamme mallimme tehdä samoin.

tämän tuloksena on konvolvoitu ominaisuuskartta. Se on pienempi kuin alkuperäinen syötekuva. Tämä helpottaa ja nopeuttaa käsittelyä. Menetämmekö tietoja? – Jonkin verran. Mutta samalla ominaisuusilmaisimen tarkoitus on havaita ominaisuuksia, mitä tämä juuri tekeekin.

luomme monia ominaisuuskarttoja saadaksemme ensimmäisen konvolutiivisen kerroksemme. Tämän avulla voimme tunnistaa monia erilaisia ominaisuuksia, joita ohjelma voi oppia.

Ominaisuusilmaisimet voidaan asettaa eri arvoilla, jotta saadaan erilaisia tuloksia. Voidaan käyttää esimerkiksi suodatinta, joka voi terävöittää ja tarkentaa kuvaa tai sumentaa kuvaa. Silloin kaikki arvot olisivat yhtä tärkeitä. Voit tehdä reuna lisälaite, reuna tunnistus, ja enemmän. Voit tehdä sen soveltamalla eri ominaisuus ilmaisimet luoda erilaisia ominaisuuksia karttoja. Tietokone pystyy määrittämään, mitkä suodattimet ovat järkevimpiä ja soveltamaan niitä.

tässä ensisijainen tarkoitus on löytää kuvaasi ominaisuuksia, laittaa ne ominaisuuskartalle ja silti säilyttää pikselien välinen tilasuhde. Se on tärkeää, jotta pikselit eivät mene sekaisin.

Let ’ s visualize this stuff!

Say hello to my little friend:

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)

ja me näemme:

Filter 1: 



]

tässä visualisointi neljästä suotimestamme

nyt määritellään convolutionaalinen kerros (I ’m loving pytorch right now, so that’ s what we ’ re used here.)

näemme

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

Lisää hieman koodia

sitten vähän enemmän

ja voimme visualisoida konvolutionaalisen kerroksen tuotoksen ennen Relun aktivointifunktion soveltamista!

nyt luodaan oma ydin käyttäen Sobel-operaattoria reunatunnistussuodattimena. Sobel-suodatinta käytetään hyvin yleisesti reunatunnistuksessa. Se tekee hyvää työtä löytää kuvioita intensiteetti kuvan. Sobel-suodattimen käyttäminen kuvaan on tapa ottaa kuvan derivaatan approksimaatio erikseen x-tai y-suunnassa.

me muunnamme pikku hemmomme harmaasävyksi suodatukseen

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

here we go!

haluatko tarkistaa matikan? Tutustu Johdatus Convolutional neuroverkkojen Jianxin Wu

ReLU kerros

ReLU (korjattu lineaarinen yksikkö) kerros on toinen askel meidän konvoluutio kerros. Käytät aktivointitoimintoa ominaisuuskartoihisi lisätäksesi verkon epälineaarisuutta. Tämä johtuu siitä, että kuvat itsessään ovat hyvin epälineaarisia! Se poistaa negatiiviset arvot aktivointikartalta asettamalla ne nollaan.

konvoluutio on lineaarinen operaatio, jossa on asioita, kuten elementtiviisas matriisikertoaminen ja yhteenlasku. Reaalimaailman tiedot, jotka haluamme CNN: n oppivan, ovat epälineaarisia. Voimme selittää sen Relun kaltaisella operaatiolla. Voit käyttää muita toimintoja, kuten tanh tai sigmoid. ReLU on kuitenkin suosittu valinta, koska se voi kouluttaa verkkoa nopeammin ilman suurempia rangaistuksia yleistystarkkuuteen.

Tsekkaa C.-C. Jay Kuo Hahmottamassa Konvolutionaalisia Neuroverkkoja matemaattisella mallilla.

Haluatko kaivaa syvemmältä? Yritä Kaiming He, et al. Syvennytään syvälle Tasasuuntaajiin: ylitetään ihmisen tason suorituskyky ImageNet-luokituksessa.

Jos tarvitset hieman lisätietoa aktivointitoimintojen ehdottomista perusteista, löydät sen täältä!

näin pikku kaverimme huolehtii Relun aktivointifunktiosta, joka muuttaa kaikki negatiiviset pikseliarvot mustiksi

viz_layer(activated_layer)

Related Post

Leave A Comment