johdanto:
Convolutionaalinen neuroverkko (CNN tai ConvNet) on syvien neuroverkkojen luokka, jota käytetään lähinnä kuvantunnistukseen, kuvien luokitteluun, objektien tunnistamiseen jne.
syväoppimiseen perustuvan Tietokonenäön edistysaskeleet on rakennettu ja hiottu ajan myötä, pääasiassa yhden tietyn algoritmin — Konvolutionaalisen neuroverkkojen-avulla.
Google käyttää sitä kuvahakuun, Facebook automaattisiin tunnistealgoritmeihin, Amazon tuotesuosituksiinsa ja lista jatkuu…
CNN: n avulla voi tehdä paljon hienoja juttuja, kuten olen tehnyt käsinkirjoitetun numerotunnistusmallin, joka ennustaa kuvan numeron 98: lla.82 prosentin tarkkuus.
Bonus:
koodi -> https://github.com/UPPERCASEGUY/CNN-implementation
voit myös tehdä hienoja malleja vähän apua käsitteitä koskevat CNN. Tämä blogi alkaa rakentaa käsitteitä cnns ja olet hyvä mennä!
CONVOLUTIONAALINEN neuroverkko:
Kuvanluokitus on tehtävä, jossa otetaan tulokuva ja ulotetaan kuvaa parhaiten kuvaava luokka tai todennäköisyysluokka. CNN: ssä otamme kuvan syötteeksi, annamme merkityksen sen eri näkökohdille/ominaisuuksille kuvassa ja pystymme erottamaan ne toisistaan. CNN: n vaatima esikäsittely on paljon vähäisempää verrattuna muihin luokittelualgoritmeihin.
arkkitehtuuri:
tietokoneet eivät näe asioita kuten me, tietokoneille Kuva ei ole muuta kuin matriisi.
CNN: llä on tyypillisesti kolme kerrosta: convolutionaalinen kerros, yhdistävä kerros ja täysin yhdistetty kerros.
Convolutional layer:
olen melko varma, että olet törmännyt sanaan ’konvoluutio’ elämässäsi aiemmin ja tässä sen merkitys ei muutu. Kyllä! olet oikeassa, tämä kerros on kyse convolving esineitä toisiinsa. Konvoluutiokerros on CNN: n keskeinen rakennuspalikka. Se kuljettaa pääosan verkon laskennallisesta kuormituksesta.
konvoluution päätavoitteena on poimia syötteestä ominaisuuksia, kuten särmiä, värejä, kulmia. Kun menemme syvemmälle verkkoon, verkko alkaa tunnistaa monimutkaisempia ominaisuuksia,kuten muotoja, numeroita, kasvojen osia sekä.
tämä kerros suorittaa pistetulon kahden matriisin välillä, jossa yksi matriisi(tunnetaan nimellä suodatin/ydin)on joukko opetettavissa parametrit, ja toinen matriisi on rajoitettu osa kuvan.
jos Kuva on RGB, suodattimen korkeus ja leveys on pienempi kuin kuvan, mutta sen syvyys on sama(korkeus x Leveys x 3) kuin kuvan.
RGB-kuvissa konvolvoiva osa voidaan visualisoida seuraavasti:
konvoluutioprosessin lopussa on esillä matriisi, jolla on vähemmän parametreja(ulottuvuuksia) kuin varsinaisella kuvalla sekä enemmän selkeitä ominaisuuksia kuin varsinaisella. Joten, nyt työskentelemme meidän esillä matrix tästä lähtien.
Poolauskerros:
tämän tason tarkoituksena on ainoastaan vähentää datan käsittelyyn tarvittavaa laskentatehoa. Se tehdään pienentämällä esillä olevan matriisin ulottuvuuksia entisestään. Tässä kerroksessa, yritämme poimia hallitseva ominaisuuksia rajoitettu määrä naapurustossa. Tehkäämme se selväksi ottamalla esimerkki.
the orange matrix is our featured matrix, The brown one is a pooling kernel and we get our blue matrix as output after pooling is done. Joten, tässä mitä teemme on ottaa suurin joukossa numerot, jotka ovat pooling alueella ja siirtää pooling alue joka kerta käsitellä toisen naapuruston matriisin.
on olemassa kahdenlaisia poolaustekniikoita:keskimääräinen ja MAX-pooling.
näiden kahden välinen erotus on, että keskinäisessä poolingissa otamme kaikkien pooling-alueen arvojen keskiarvon ja MAX-poolingissa otamme vain maksimin kaikkien pooling-alueen sisällä olevien arvojen joukosta.
joten yhdistetyn kerroksen jälkeen meillä on matriisi, joka sisältää kuvan pääpiirteet ja tällä matriisilla on vielä vähemmän ulottuvuuksia, mikä auttaa paljon seuraavassa vaiheessa.
täysin yhdistetty kerros:
tähän mennessä emme ole tehneet mitään eri kuvien luokittelulle, vaan olemme korostaneet joitakin kuvan ominaisuuksia ja pienentäneet kuvan mittasuhteita rajusti.
tästä eteenpäin teemme itse luokitteluprosessin.
nyt kun olemme muuttaneet syöttökuvamme monitasoiseen täysin yhdistettyyn arkkitehtuuriimme sopivaan muotoon, litistämme kuvan yhdeksi sarakevektoriksi. Litistetty ulostulo syötetään syötteen eteenpäin neuroverkkoon ja backpropagaatioon, jota sovelletaan jokaiseen koulutuksen iteraatioon. Useiden aikakausien aikana malli pystyy erottamaan dominoivat ja tietyt matalan tason piirteet kuvissa ja luokittelemaan ne.
Yhteenveto:
- Anna syötekuva konvoluutiokerrokseen.
- ota konvoluutio varustelluilla ytimen/suodattimilla.
- käytä poolauskerrosta pienentääksesi mittoja.
- lisää nämä kerrokset useita kertoja.
- tasoita ulostulo ja syöttö täysin yhdistetyksi kerrokseksi.
- harjoittele nyt mallia backpropagaatiolla logistisen regression avulla.
ja olet tehnyt convolutionaalisen neuroverkkosi.