Using Convolutional Neural Networks for Image Recognition
Tämä artikkeli on julkaistu alun perin Cadence’s verkkosivuilla. Se on painettu tässä uudelleen Cadencen luvalla.
Konvolutiivisia neuroverkkoja (Convolutional Neural Networks, CNN) käytetään laajalti kuvion- ja kuvantunnistusongelmissa, koska niillä on useita etuja muihin tekniikoihin verrattuna. Tässä valkoisessa kirjassa käsitellään CNN:ien perusteita, mukaan lukien kuvaus käytetyistä eri kerroksista. Käyttämällä liikennemerkkien tunnistusta esimerkkinä keskustelemme yleisen ongelman haasteista ja esittelemme Cadencen kehittämiä algoritmeja ja toteutusohjelmistoja, joiden avulla laskentataakkaa ja energiaa voidaan vaihtaa siten, että merkkien tunnistusnopeus heikkenee vain vähän. Hahmotamme CNN:ien käytön haasteita sulautetuissa järjestelmissä ja esittelemme Cadence® Tensilica® Vision P5 -digitaalisen signaaliprosessorin (Digital Signal Processor, DSP) ja ohjelmistojen keskeiset ominaisuudet, jotka tekevät siitä niin sopivan CNN-sovelluksiin monissa kuvantamis- ja vastaavissa tunnistustehtävissä.
Mikä on CNN?
Neuraaliverkko on toisiinsa kytketyistä keinotekoisista ”neuroneista” koostuva systeemi, jotka vaihtavat viestejä keskenään. Yhteyksillä on numeeriset painot, jotka viritetään koulutusprosessin aikana, jotta oikein koulutettu verkko reagoi oikein, kun sille esitetään tunnistettava kuva tai kuvio. Verkko koostuu useista kerroksista ominaisuuksia tunnistavia ”neuroneja”. Jokaisella kerroksella on useita neuroneja, jotka reagoivat edellisiltä kerroksilta saatujen syötteiden eri yhdistelmiin. Kuten kuvassa 1 näkyy, kerrokset rakentuvat siten, että ensimmäinen kerros havaitsee syötteessä joukon alkeellisia kuvioita, toinen kerros havaitsee kuvioiden kuvioita, kolmas kerros havaitsee näiden kuvioiden kuvioita ja niin edelleen. Tyypilliset CNN:t käyttävät 5-25 erillistä kuviotunnistuskerrosta.
Kuvio 1: Keinotekoinen neuroverkko
Harjoittelu suoritetaan käyttämällä ”leimattua” tietokokonaisuutta, joka koostuu laajasta valikoimasta edustavia sisääntulokuvioita, jotka on leimattu aiotulla ulostulovasteella. Koulutuksessa käytetään yleiskäyttöisiä menetelmiä, joilla määritetään iteratiivisesti painot väli- ja loppuominaisuusneuroneille. Kuvassa 2 havainnollistetaan koulutusprosessia lohkotasolla.
Kuva 2: Neuroverkkojen koulutus
Neuraaliset verkot ovat saaneet innoituksensa biologisista hermojärjestelmistä. Aivojen laskennallinen perusyksikkö on neuroni, ja ne ovat yhteydessä toisiinsa synapseilla. Kuvassa 3 verrataan biologista neuronia matemaattiseen perusmalliin .
Kuva 3: Havainnollistus biologisesta neuronista (ylhäällä) ja sen matemaattisesta mallista (alhaalla)
Todellisessa eläimellisessä hermosysteemissä hermosolun hahmotetaan vastaanottavan syöte- eli input-signaaleja dendriiteiltään ja tuottavan ulostulo- eli output-signaaleja aksoniaan pitkin. Aksoni haarautuu ja liittyy synapsien kautta muiden neuronien dendriitteihin. Kun sisääntulosignaalien yhdistelmä saavuttaa jonkin kynnysehdon sen sisääntulevien dendriittien välillä, neuroni laukeaa ja sen aktivaatio välittyy seuraajaneuroneille.
Neuraaliverkon laskennallisessa mallissa aksoneita pitkin kulkevat signaalit (esim. x0) vuorovaikuttavat multiplikatiivisesti (esim. w0x0) toisen neuronin dendriittien kanssa kyseisen synapsin synapsien synaptisen voimakkuuden (esim. w0) perusteella. Synaptiset painot ovat opittavissa ja ohjaavat yhden tai toisen neuronin vaikutusta. Dendriitit kuljettavat signaalin solurunkoon, jossa ne kaikki summataan. Jos lopullinen summa on tietyn kynnysarvon yläpuolella, neuroni laukeaa ja lähettää aksoniaan pitkin piikin. Laskennallisessa mallissa oletetaan, että laukeamisen tarkalla ajoituksella ei ole merkitystä, vaan ainoastaan laukeamisen taajuus välittää tietoa. Nopeuskoodin tulkinnan perusteella neuronin laukaisunopeus mallinnetaan aktivointifunktiolla ƒ, joka edustaa aksonia pitkin kulkevien piikkien taajuutta. Yleinen valinta aktivointifunktioksi on sigmoidi. Yhteenvetona voidaan todeta, että jokainen neuroni laskee syötteiden ja painojen pistetuoton, lisää biasin ja soveltaa epälineaarisuutta laukaisufunktiona (esimerkiksi sigmoidista vastefunktiota seuraten).
CNN on edellä kuvatun neuroverkon erikoistapaus. CNN koostuu yhdestä tai useammasta konvoluutiokerroksesta, usein alinäytteenottokerroksen kanssa, joita seuraa yksi tai useampi täysin kytketty kerros kuten tavallisessa neuroverkossa.
CNN:n suunnittelun taustalla on aivojen visuaalisen mekanismin, näköaivokuoren, löytyminen. Näköaivokuori sisältää paljon soluja, jotka ovat vastuussa valon havaitsemisesta pienillä, päällekkäisillä näkökentän osa-alueilla, joita kutsutaan reseptiivisiksi kentiksi. Nämä solut toimivat tuloalueen paikallisina suodattimina, ja monimutkaisemmilla soluilla on suuremmat reseptiiviset kentät. CNN:n konvoluutiokerros suorittaa toiminnon, jonka näköaivokuoren solut suorittavat .
Kuvassa 4 on esitetty tyypillinen CNN liikennemerkkien tunnistamiseen. Jokainen kerroksen ominaisuus saa syötteitä joukosta ominaisuuksia, jotka sijaitsevat edellisen kerroksen pienessä naapurustossa, jota kutsutaan paikalliseksi reseptiiviseksi kentäksi. Paikallisten reseptiivisten kenttien avulla piirteistä voidaan poimia alkeellisia visuaalisia piirteitä, kuten suunnattuja reunoja, päätepisteitä, kulmia jne., joita ylemmät kerrokset sitten yhdistelevät.
Perinteisessä kuvio-/kuvatunnistusmallissa käsin suunniteltu piirteiden poimintayksikkö (feature extractor) kerää syötteestä relevanttia tietoa ja eliminoi epärelevantit vaihtelut. Uuttimen jälkeen seuraa koulutettava luokittelija, tavallinen neuroverkko, joka luokittelee piirrevektorit luokkiin.
CNN:ssä konvoluutiokerrokset toimivat piirteenottimen roolissa. Niitä ei kuitenkaan ole suunniteltu käsin. Konvoluutiosuodattimen ytimen painot päätetään osana koulutusprosessia. Konvoluutiokerrokset pystyvät poimimaan paikallisia piirteitä, koska ne rajoittavat piilokerrosten reseptiiviset kentät paikallisiksi.
Kuva 4: Tyypillinen CNN:n lohkokaavio
CNN:iä käytetään monilla eri aloilla, kuten kuva- ja hahmontunnistuksessa, puheentunnistuksessa, luonnollisen kielen prosessoinnissa ja videoanalyysissä. On useita syitä siihen, että konvoluutiohermoverkoista on tulossa tärkeitä. Perinteisissä hahmontunnistusmalleissa piirteiden poimijat suunnitellaan käsin. CNN-verkoissa ominaisuuksien louhintaan käytettävän konvoluutiokerroksen ja luokitteluun käytettävän täysin kytketyn kerroksen painot määritetään koulutusprosessin aikana. CNN:ien parannetut verkkorakenteet johtavat säästöihin muistivaatimuksissa ja laskennan monimutkaisuusvaatimuksissa ja samalla parempaan suorituskykyyn sovelluksissa, joissa syötteessä on paikallista korrelaatiota (esim. kuva ja puhe).
CNN:ien harjoittelun ja arvioinnin suuriin laskentaresurssivaatimuksiin vastataan joskus grafiikkaprosessoriyksiköillä (GPU:t), digitaalisilla signaalitehostimilla (DSP:t) tai muilla piiarkkitehtuurien arkkitehtuurityypeillä, jotka on optimoitu suureen läpimenotehon saavuttamista varten mutta jotka ovat pienen energiankulutuksen kannalta edullisia, kun ne ajavat omalaatuisia malleja, joita CNN-menetelmällä tapahtuvaan laskentaan tarvitaan. Kehittyneissä prosessoreissa, kuten Cadencen Tensilica Vision P5 DSP for Imaging and Computer Vision -prosessorissa, on itse asiassa lähes ihanteellinen joukko laskenta- ja muistiresursseja, joita tarvitaan CNN:ien suorittamiseen suurella hyötysuhteella.
Kuvio- ja kuvantunnistussovelluksissa CNN:ien avulla on saavutettu parhaita mahdollisia virheettömyysprosentteja (Correct Detection Rate, CDR). Esimerkiksi CNN:t ovat saavuttaneet 99,77 %:n CDR:n käyttämällä MNIST-tietokantaa käsinkirjoitetuista numeroista , 97,47 %:n CDR:n 3D-objekteja sisältävällä NORB-tietokannalla ja 97,6 %:n CDR:n ~5600:lla yli 10 objektin kuvalla . CNN:t eivät ainoastaan anna parasta suorituskykyä muihin havaitsemisalgoritmeihin verrattuna, vaan ne jopa päihittävät ihmiset esimerkiksi luokiteltaessa esineitä hienojakoisiin luokkiin, kuten tiettyyn koirarotuun tai lintulajiin .
Kuvassa 5 on esitetty tyypillinen näköalgoritmin putki, joka koostuu neljästä vaiheesta: kuvan esikäsittely, todennäköisiä objekteja sisältävien kiinnostavien alueiden havaitseminen, objektien tunnistaminen ja näköä koskeva päätöksenteko. Esikäsittelyvaihe on yleensä riippuvainen syötteen yksityiskohdista, erityisesti kamerajärjestelmästä, ja se on usein toteutettu kiinteästi kytkettynä yksikkönä visio-osajärjestelmän ulkopuolella. Päätöksenteko putken lopussa toimii tyypillisesti tunnistettujen kohteiden perusteella – se voi tehdä monimutkaisia päätöksiä, mutta se toimii paljon pienemmällä tietomäärällä, joten nämä päätökset eivät yleensä ole laskennallisesti vaikeita tai muistia vaativia ongelmia. Suuri haaste on objektien havaitsemis- ja tunnistamisvaiheissa, joissa CNN:llä on nyt laaja vaikutus.
Kuva 5: Näköalgoritmiputki
CNN:ien kerrokset
Pinoamalla CNN:ssä useampia ja erilaisia kerroksia rakennetaan monimutkaisia arkkitehtuureja luokitteluongelmiin. Neljä erilaista kerrosta ovat yleisimpiä: konvoluutiokerrokset, pooling/subsampling-kerrokset, epälineaariset kerrokset ja täysin kytketyt kerrokset.
Konvoluutiokerrokset
Konvoluutio-operaatio poimii syötteestä erilaisia piirteitä. Ensimmäinen konvoluutiokerros poimii matalan tason piirteitä, kuten reunoja, viivoja ja kulmia. Korkeamman tason kerrokset poimivat korkeamman tason piirteitä. Kuva 6 havainnollistaa CNN:ssä käytettävän 3D-konvoluution prosessia. Syötteen koko on N x N x D, ja se konvolvoidaan H ytimellä, joista jokainen on
koko k x k x D erikseen. Syötteen konvoluutio yhdellä ytimellä tuottaa yhden ulostulo-ominaisuuden, ja H ytimen konvoluutio tuottaa itsenäisesti H ominaisuutta. Alkaen syötteen vasemmasta yläkulmasta kutakin ydintä siirretään vasemmalta oikealle elementti kerrallaan. Kun oikea yläkulma on saavutettu, ydintä siirretään yksi elementti alaspäin, ja taas ydintä siirretään vasemmalta oikealle yksi elementti kerrallaan. Tämä prosessi toistetaan, kunnes
ydin saavuttaa oikean alakulman. Tapauksessa, jossa N = 32 ja k = 5 , ytimellä voi olla 28 eri sijaintia vasemmalta oikealle ja 28 eri sijaintia ylhäältä alas. Näiden paikkojen mukaisesti jokainen piirre tulosteessa sisältää 28 x 28 (eli (N-k+1) x (N-k+1)) elementtiä. Kutakin ytimen sijaintia kohti liukuvan ikkunan prosessissa tulon k x k x D elementtiä ja ytimen k x k x D elementtiä kerrotaan elementtikohtaisesti ja kumuloidaan. Yhden ulostulo-ominaisuuden yhden elementin luomiseen tarvitaan siis k x k x D kertolasku-akkumulointioperaatiota.
Kuva 6: Kuvallinen esitys konvoluutioprosessista
Poolaus-/alinäytteenottokerrokset
Poolaus-/alinäytteenottokerros pienentää ominaisuuksien resoluutiota. Se tekee piirteistä kestäviä kohinaa ja vääristymiä vastaan. Pooling voidaan tehdä kahdella tavalla: max pooling ja average pooling. Molemmissa tapauksissa tulo jaetaan päällekkäisiin kaksiulotteisiin tiloihin, jotka eivät ole päällekkäisiä. Esimerkiksi kuvassa 4 kerros 2 on poolikerros. Kukin syöttöominaisuus on kooltaan 28×28 ja jaettu 14×14 alueeseen, joiden koko on 2×2. Keskimääräistä yhdistämistä varten lasketaan alueen neljän arvon keskiarvo. Maksimipoolausta varten valitaan neljästä arvosta suurin arvo.
Kuvassa 7 esitellään poolausprosessia tarkemmin. Syötteen koko on 4×4. 2×2-osanäytteenottoa varten 4×4-kuva jaetaan neljään päällekkäiseen 2×2-kokoiseen matriisiin. Kun kyseessä on maksimipoolaus, tulosteena on 2×2-matriisin neljän arvon maksimiarvo. Kun kyseessä on average pooling, tuloksena on neljän arvon keskiarvo. Huomaa, että indeksillä (2,2) varustetussa tulosteessa keskiarvon laskennan tulos on murtoluku, joka on pyöristetty lähimpään kokonaislukuun.
Kuva 7: Kuvallinen esitys maksimipoolingista ja keskiarvopoolingista
Ei-lineaariset kerrokset
Neuraaliset verkot yleensä ja CNN:t erityisesti tukeutuvat epälineaariseen ”laukaisufunktioon”, jonka avulla voidaan signaloida todennäköisten piirteiden erillistä tunnistamista kullakin piilevällä kerroksella. CNN:t voivat käyttää erilaisia erityisiä funktioita – kuten rektifioituja lineaarisia yksiköitä (ReLU) ja jatkuvia (epälineaarisia) laukaisufunktioita – tämän epälineaarisen laukaisun tehokkaaseen toteuttamiseen.
ReLU
ReLU toteuttaa funktiota y = max(x,0), joten tämän kerroksen tulo- ja lähtösuureet ovat samat. Se lisää päätösfunktion ja koko verkon epälineaarisia ominaisuuksia vaikuttamatta konvoluutiokerroksen reseptiivisiin kenttiin. Verrattuna muihin CNN:ssä käytettyihin epälineaarisiin funktioihin (esim. hyperbolinen tangentti, hyperbolisen tangentin absoluuttinen arvo ja sigmoidi) ReLU:n etuna on se, että verkko kouluttautuu monta kertaa nopeammin. ReLU:n toiminnallisuutta havainnollistetaan kuvassa 8, jossa sen siirtofunktio on piirretty nuolen yläpuolelle.
Kuva 8: ReLU:n toiminnallisuuden kuvallinen esitys
Jatkuva laukaisufunktio (epälineaarinen funktio)
Epälineaarinen kerros operoi elementti kerrallaan kussakin ominaisuudessa. Jatkuva laukaisufunktio voi olla hyperbolinen tangentti (kuva 9), hyperbolisen tangentin absoluuttinen arvo (kuva 10) tai sigmoidi (kuva 11). Kuvassa 12 havainnollistetaan, miten epälineaarisuutta sovelletaan elementtikohtaisesti.
Kuva 9: Hyperbolisen tangenttifunktion kuvaaja
Kuva 10: Hyperbolisen tangenttifunktion absoluuttisen hyperbolisen tangenttifunktion kuvaaja
Kuva 11. Hyperbolisen tangenttifunktion absoluuttisen funktion kuvaaja: Sigmoidifunktion kuvaaja
Kuva 12: Kuvallinen esitys tanh-käsittelystä
Täysin kytketyt kerrokset
Täysin kytkettyjä kerroksia käytetään usein CNN:n viimeisinä kerroksina. Nämä kerrokset laskevat matemaattisesti yhteen edellisen kerroksen piirteiden painotuksen, mikä osoittaa tarkan ”ainesosien” sekoituksen tietyn tavoitellun tulostuloksen määrittämiseksi. Täysin kytketyn kerroksen tapauksessa kaikkien edellisen kerroksen kaikkien piirteiden elementtejä käytetään jokaisen lähtöpiirteen jokaisen elementin laskennassa.
Kuvassa 13 selitetään täysin kytketty kerros L. Kerroksessa L-1 on kaksi piirrettä, joista kumpikin on kooltaan 2×2, eli niissä on neljä elementtiä. Kerroksessa L on kaksi piirrettä, joista kussakin on yksi elementti.
Kuvio 13: Täysin kytketyn kerroksen prosessointi
Miksi CNN?
Neuraaliverkot ja muut hahmontunnistusmenetelmät ovat olleet käytössä jo viimeiset 50 vuotta, mutta viime aikoina on tapahtunut merkittävää kehitystä konvolutiohermoverkkojen alalla. Tässä luvussa käsitellään CNN:n käytön etuja kuvantunnistuksessa.
Kestävyys kuvassa tapahtuville siirtymille ja vääristymille
CNN:ää käyttävä tunnistus on kestävä vääristymille, kuten kameran linssin aiheuttamille muodonmuutoksille, erilaisille valaistusolosuhteille, erilaisille asennoille, osittaisille peittymille, vaaka- ja pystysuuntaisille siirtymille jne. CNN:t ovat kuitenkin siirtymättömät, koska samaa painokokoonpanoa käytetään kaikkialla avaruudessa. Teoriassa voimme saavuttaa siirtymättömyyden myös käyttämällä täysin kytkettyjä kerroksia. Tässä tapauksessa harjoittelun tuloksena on kuitenkin useita yksiköitä, joilla on identtiset painomallit syötteen eri kohdissa. Näiden painokonfiguraatioiden oppimiseen tarvittaisiin suuri määrä harjoitustapauksia, jotta voitaisiin kattaa mahdollisten variaatioiden avaruus.
Vähäisemmät muistivaatimukset
Tässä samassa hypoteettisessa tapauksessa, jossa käytämme täysin kytkettyä kerrosta piirteiden poimimiseen, 32×32-kokoinen sisääntulokuva ja piilokerros, jossa on 1000 piirrettä, vaatisi 106 kertoimen suuruisen kertoimen, mikä on valtava muistivaatimus. Konvoluutiokerroksessa samoja kertoimia käytetään eri paikoissa avaruudessa, joten muistivaatimus pienenee huomattavasti.
Leppoisempi ja parempi harjoittelu
Käytettäessä tavallista neuroverkkoa, joka vastaisi CNN:ää, koska parametrien määrä olisi paljon suurempi, myös harjoitteluaika kasvaisi samassa suhteessa. Koska CNN:ssä parametrien määrä vähenee huomattavasti, koulutusaika lyhenee samassa suhteessa. Jos oletetaan, että koulutus on täydellistä, voidaan myös suunnitella tavallinen neuroverkko, jonka suorituskyky olisi sama kuin CNN:n. Käytännön harjoittelussa
CNN:ää vastaavassa tavallisessa neuroverkossa olisi kuitenkin enemmän parametreja, mikä johtaisi kohinan lisääntymiseen harjoitteluprosessin aikana. Näin ollen CNN:ää vastaavan tavallisen neuroverkon suorituskyky on aina huonompi.
Tunnistusalgoritmi GTSRB-tietokannalle
German Traffic Sign Recognition Benchmark (GTSRB) oli vuoden 2011 International Joint Conference on Neural Networks (IJCNN) -konferenssissa järjestetty moniluokkainen, yhden kuvan luokitteluhaaste, jonka vaatimukset olivat seuraavat:
- 51 840 kuvaa saksalaisista liikennemerkeistä 43 luokassa (kuvat 14 ja 15)
- Kuvien koko vaihtelee 15×15:stä 222×193:een
- Kuvat on ryhmitelty luokittain ja raidoittain siten, että kullakin raidoituksella on vähintään 30 kuvaa
- Kuvat ovat saatavissa värikuvina (RGB), HOG-piirteinä (HOG features), Haar-piirteinä (Haar features) ja värihistogrammeina
- Kilpailuun osallistujat voivat valita vain luokittelualgoritmia; algoritmia kiinnostavan alueen löytämiseksi kehyksestä ei tarvita
- Testisekvenssien ajallista tietoa ei jaeta, joten ajallista ulottuvuutta ei voida käyttää luokittelualgoritmissa
Kuvio 14. Testisekvenssien ajallinen informaatio: GTSRB:n ihanteelliset liikennemerkit
Kuva 15: GTSRB:n liikennemerkit, joissa on heikentymiä
Cadence-algoritmi liikennemerkkien tunnistamiseen GTSRB-tietokannassa
Cadence on kehittänyt MATLAB:issa erilaisia algoritmeja liikennemerkkien tunnistamiseen GTSRB-tietokannassa, aloittaen peruskonfiguraatiosta, joka perustuu tunnettuun liikennemerkkien tunnistamista käsittelevään artikkeliin . Oikea tunnistusprosentti 99,24 % ja lähes >50 miljoonan kertolaskun työmäärä merkkiä kohti on esitetty paksuna vihreänä pisteenä kuvassa 16. Cadence on saavuttanut huomattavasti parempia tuloksia käyttämällä uutta omaa hierarkkista CNN-menetelmää. Tässä algoritmissa 43 liikennemerkkiä on jaettu viiteen perheeseen. Yhteensä toteutamme kuusi pienempää CNN:ää. Ensimmäinen CNN päättää, mihin perheeseen vastaanotettu liikennemerkki kuuluu. Kun liikennemerkin perhe on tiedossa, käynnistetään havaittua perhettä vastaava CNN (yksi jäljelle jäävistä viidestä CNN:stä) päättelemään, mikä liikennemerkki kuuluu kyseiseen perheeseen. Tämän algoritmin avulla Cadence on saavuttanut 99,58 prosentin oikean havaitsemisasteen, joka on paras tähän mennessä GTSRB:llä saavutettu CDR.
Algoritmi suorituskyvyn ja monimutkaisuuden välistä kompromissia varten
Hallitakseen CNN:ien monimutkaisuutta sulautetuissa sovelluksissa Cadence on myös kehittänyt oman algoritmin, joka käyttää ominaisarvojen purkamista ja joka pelkistää koulutetun CNN:n kanoniseen ulottuvuuteensa. Tämän algoritmin avulla olemme pystyneet vähentämään huomattavasti CNN:n monimutkaisuutta ilman suorituskyvyn heikkenemistä tai pienellä kontrolloidulla CDR-vähennyksellä. Kuvassa 16 näkyvät saavutetut tulokset:
Kuva 16: Suorituskyvyn vs. monimutkaisuuden kuvaaja eri CNN-konfiguraatioille liikennemerkkien havaitsemiseksi GTSRB-tietokannassa
Kuvan 16 vihreä piste on peruskonfiguraatio. Tämä konfiguraatio on melko lähellä referenssissä ehdotettua konfiguraatiota. Se vaatii 53 MMAC:ia kehystä kohti, kun virhetaso on 0,76 %.
- Vasemmalta toinen piste vaatii 1,47 miljoonaa MAC:ia kehystä kohti, kun virhetaso on 1,03 %, ts, virheprosentin kasvaessa 0,27 % MAC-tarve on pienentynyt 36,14-kertaiseksi.
- Vasemmanpuoleisin piste vaatii 0,61 MMAC:ia kehystä kohti 2,26 %:n virheprosentin saavuttamiseen, eli MAC:ien määrä on pienentynyt 86,4-kertaiseksi.
- Sinisellä merkityt pisteet ovat yksitasoiselle CNN:lle, kun taas punaisella merkityt pisteet ovat hierarkkiselle CNN:lle. Hierarkkisella CNN:llä saavutetaan parhaassa tapauksessa 99,58 %:n suorituskyky.
CNN:t sulautetuissa järjestelmissä
Kuten kuvasta 5 käy ilmi, visio-osajärjestelmä vaatii CNN:n lisäksi paljon kuvankäsittelyä. Jotta CNN:iä voitaisiin käyttää kuvankäsittelyä tukevassa sulautetussa järjestelmässä, jonka teho on rajoitettu, sen tulisi täyttää seuraavat vaatimukset:
- Suuren laskentatehon saatavuus:
- Suuri lataus-/tallennuskaistanleveys: Luokitteluun käytettävän täysin kytketyn kerroksen tapauksessa jokaista kerrointa käytetään kertolaskussa vain kerran. Niinpä load-store-kaistanleveysvaatimus on suurempi kuin prosessorin suorittamien MACien määrä.
- Matalan dynaamisen tehon tarve: Järjestelmän tulisi kuluttaa vähemmän virtaa. Tämän ongelman ratkaisemiseksi tarvitaan kiintopistetoteutus, joka asettaa vaatimuksen suorituskykyvaatimusten täyttämisestä mahdollisimman pienellä äärellisellä bittien määrällä.
- Joustavuus:
Koska sulautetuissa järjestelmissä laskennalliset resurssit ovat aina rajoitteena, jos käyttötapaus sallii pienen suorituskyvyn heikkenemisen, on hyödyllistä, että käytössä on algoritmi, joka pystyy saavuttamaan valtavia säästöjä laskennallisessa monimutkaisuudessa suorituskyvyn pienen, hallitun heikkenemisen kustannuksella. Cadencen työ algoritmin parissa, jolla saavutetaan kompleksisuuden ja suorituskyvyn välinen kompromissi, kuten edellisessä kappaleessa selitettiin, on siis erittäin merkityksellistä CNN:ien toteuttamisessa sulautetuissa järjestelmissä.
CNN:t Tensilica-prosessoreilla
Tensilica Vision P5 DSP on suorituskykyinen ja vähän virtaa kuluttava DSP, joka on suunniteltu erityisesti kuvan- ja tietokonenäön käsittelyyn. DSP:ssä on VLIW-arkkitehtuuri, jossa on SIMD-tuki. Siinä on viisi emissiopaikkaa jopa 96 bitin käskysanassa ja se voi ladata muistista jopa 1024-bittisiä sanoja joka syklissä. Sisäiset rekisterit ja operaatioyksiköt vaihtelevat 512 bitistä 1536 bittiin, jolloin data esitetään 16, 32 tai 64 viipaleena 8b-, 16b-, 24b-, 32b- tai 48b-pikselidataa.
DSP vastaa kaikkiin haasteisiin, joita CNN:ien toteuttamiselle sulautetuissa järjestelmissä on asetettu edellisessä kohdassa käsitellyllä tavalla.
- Korkean laskentasuorituskyvyn saavuttaminen: Sen lisäksi, että DSP:llä on kehittynyt tuki kuvasignaalien käsittelyn toteuttamiseen, siinä on käskytuki CNN:ien kaikille vaiheille. Konvoluutio-operaatioita varten siinä on erittäin rikas käskykanta, joka tukee 8b x 8b-, 8b x 16b- ja 16b x 16b-operaatioita 8b x 8b-, 8b x 16b- ja 16b x 16b-operaatioita allekirjoitetuille/esimerkittömille tiedoille. Se voi suorittaa jopa 64 8b x 16b- ja 8b x 8b-kerroin-/kerto-/kerto-/kerto-/kerto-/kerto-/kerto-/kerto-operaatiota yhdessä syklissä ja 32 16b x 16b-kerroin-/kerto-/kerto-/kerto-/kerto-operaatiota yhdessä syklissä. Maksimipooling- ja ReLU-toimintoja varten DSP:ssä on ohjeet, joilla voidaan tehdä 64 8-bittistä vertailua yhdessä syklissä. Epälineaaristen funktioiden, kuten tanh:n ja signumin, toteuttamista varten sillä on ohjeet 64 7-bittisen arvon hakutaulukon toteuttamiseksi yhdessä syklissä. Useimmissa tapauksissa vertailua ja hakutaulukkoa koskevat ohjeet ajoitetaan rinnakkain kertolasku-/kertolasku-kertolaskentaohjeiden kanssa, eivätkä ne vie ylimääräisiä syklejä.
- Suurempi lataus/tallennuskaistanleveys: DSP voi suorittaa jopa kaksi 512-bittistä lataus/tallennusoperaatiota sykliä kohti.
- Matalat dynaamiset tehontarpeet: DSP on kiintopistekone. Erilaisten tietotyyppien joustavan käsittelyn ansiosta 16b:n ja 8b:n sekalaskennan täysi suorituskyky- ja energiahyöty voidaan saavuttaa minimaalisella tarkkuuden menetyksellä.
- Joustavuus: Koska DSP on ohjelmoitava prosessori, järjestelmä voidaan päivittää uuteen versioon vain suorittamalla laiteohjelmistopäivitys.
- Floating Point:
Vision P5 DSP:n mukana toimitetaan täydellinen ohjelmistotyökalupaketti, joka sisältää tehokkaan C/C++-kääntäjän, jossa on automaattinen vektorointi ja aikataulutus SIMD- ja VLIW-arkkitehtuuria tukevien SIMD- ja VLIW-arkkitehtuurien tukemiseksi ilman tarvetta kirjoittaa kokoonpanokieltä. Tämä kattava työkalupaketti sisältää myös linkkerin, assemblerin, debuggerin, profiloijan ja graafiset visualisointityökalut. Kattavan käskysarjasimulaattorin (ISS) avulla suunnittelija voi nopeasti simuloida ja arvioida suorituskykyä. Kun työskennellään suurten järjestelmien tai pitkien testivektoreiden parissa, nopealla, toiminnallisella TurboXim-simulaattorivaihtoehdolla saavutetaan 40-80 kertaa nopeammat nopeudet kuin ISS:llä, mikä mahdollistaa tehokkaan ohjelmistokehityksen ja toiminnallisen verifioinnin.
Cadence on toteuttanut yksikerrosarkkitehtuurin CNN:n DSP:llä saksalaista liikennemerkkien tunnistusta varten. Cadence on saavuttanut 99,403 %:n CDR-arvon käyttämällä 16-bittistä kvantisointia datanäytteille ja 8-bittistä kvantisointia kertoimille kaikissa kerroksissa tässä arkkitehtuurissa. Siinä on kaksi konvoluutiokerrosta, kolme täysin kytkettyä kerrosta, neljä ReLU-kerrosta, kolme max pooling -kerrosta ja yksi epälineaarinen tanh-kerros. Cadence on saavuttanut suorituskyvyn, joka on keskimäärin 38,58 MACs/sykli koko verkon osalta, mukaan lukien kaikkien max pooling-, tanh- ja ReLU-kerrosten syklit. Cadence on saavuttanut kolmannessa kerroksessa parhaimmillaan 58,43 MACia/sykli, mukaan lukien tanh- ja ReLU-toimintojen syklit. Tämä 600 MHz:n taajuudella toimiva DSP pystyy käsittelemään yli 850 liikennemerkkiä sekunnissa.
CNN:ien tulevaisuus
Neuraaliverkkojen tutkimuksen lupaaviin alueisiin kuuluvat rekursiiviset neuroverkot (RNN), jotka käyttävät pitkää lyhytkestoista muistia (LSTM). Nämä alueet tuottavat nykyistä tekniikan tasoa aikasarjatunnistustehtävissä, kuten puheentunnistuksessa ja käsialan tunnistuksessa. RNN/autokooderit pystyvät myös tuottamaan käsialaa/puhetta/kuvia, joilla on jokin tunnettu jakauma ,,,,.
Syvät uskomusverkot, toinen lupaava verkkotyyppi, jossa käytetään rajoitettuja Boltzmanin koneita (RMB)/autokoodereita, pystytään kouluttamaan ahnaasti, kerros kerrallaan, ja siten ne ovat helpommin kouluttautuvia hyvin syviä verkkoja varten ,.
Johtopäätökset
CNN:t tuottavat parhaan suorituskyvyn kuvioiden/kuvien tunnistusongelmissa ja jopa päihittävät ihmisen tietyissä tapauksissa. Cadence on saavuttanut alan parhaita tuloksia käyttämällä omia algoritmeja ja arkkitehtuureja CNN:ien kanssa. Olemme kehittäneet hierarkkisia CNN:iä liikennemerkkien tunnistamiseen GTSRB-tietokannassa ja saavuttaneet tässä tietokannassa kaikkien aikojen parhaan suorituskyvyn. Olemme kehittäneet toisen algoritmin suorituskyvyn ja monimutkaisuuden välistä kompromissia varten ja pystyneet vähentämään monimutkaisuutta 86-kertaisesti CDR:n heikkenemisen ollessa alle 2 prosenttia. Cadencen kuvantamiseen ja tietokonenäköön tarkoitetussa Tensilica Vision P5 DSP:ssä on kaikki ominaisuudet, joita tarvitaan CNN:ien toteuttamiseen kuvasignaalien käsittelyyn tarvittavien ominaisuuksien lisäksi. DSP:llä voidaan suorittaa yli 850 liikennemerkkien tunnistusta 600 MHz:n taajuudella. Cadencen Tensilica Vision P5 DSP:ssä on lähes ihanteelliset ominaisuudet CNN:ien suorittamiseen.
”Keinotekoinen neuroverkko.” Wikipedia. https://en.wikipedia.org/wiki/Artificial_neural_network
Karpathy, Andrej. 2015. ”Neuroverkot osa 1: Arkkitehtuurin asettaminen”. Notes for CS231n Convolutional Neural Networks for Visual Recognition, Stanfordin yliopisto. http://cs231n.github.io/neural-networks-1/
”Convolutional neural network”. Wikipedia. https://en.wikipedia.org/wiki/Convolutional_neural_network
Sermanet, Pierre ja Yann LeCun. 2011. ”Liikennemerkkien tunnistaminen moniasteisilla verkoilla”. Courant Institute of Mathematical Sciences, New Yorkin yliopisto. http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6033589
Ciresan, Dan, Ueli Meier ja Jürgen Schmidhuber. 2012. ”Multi-column deep neural networks for image classi- fication.” 2012 IEEE Conference on Computer Vision and Pattern Recognition (New York, NY: Institute of Electrical and Electronics Engineers (IEEE)). http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6248110
Ciresan, Dan, Ueli Meier, Jonathan Masci, Luca M. Gambardella ja Jürgen Schmidhuber. 2011. ”Flexible, High Performance Convolutional Neural Networks for Image Classification”. Proceedings of the Twenty-Second International Joint Conference on Artificial Intelligence-Volume Two: 1237-1242. Haettu 17. marraskuuta 2013. http://people.idsia.ch/~juergen/ijcai2011.pdf
Lawrence, Steve, C. Lee Giles, Ah Chung Tsoi ja Andrew D. Back. 1997. ”Face Recognition: A Convolutional Neural Network Approach.” IEEE Transactions on Neural Networks, Volume 8; Issue 1. http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=554195
Russakovsky, O. et al. 2014. ”ImageNet Large Scale Visual Recognition Challenge”. International Journal of Computer Vision. http://link.springer.com/article/10.1007/s11263-015-0816-y#
Ovtcharov, Kalin, Olatunji Ruwarse, Joo-Young Kim et al. 22.2.2015. ”Syvien konvoluutioverkkojen nopeuttaminen käyttämällä erikoistunutta laitteistoa”. Microsoft Research. http://research-srv.microsoft.com/pubs/240715/CNN%20Whitepaper.pdf
Stallkamp, J., M. Schlipsing, J. Salmen ja C. Igel. ”Ihminen vastaan tietokone: Benchmarking Machine Learning Algorithms For Traffic Sign Application.” IJCNN 2011. http://www.sciencedirect.com/science/article/pii/S0893608012000457
Hochreiter, Sepp ja Jürgen Schmidhuber. 1997. ”Pitkä lyhytkestoinen muisti”. Neural Computation, 9(8):1735-1780. ftp://ftp.idsia.ch/pub/juergen/lstm.pdf
Graves, Alex. 2014. ”Generating Sequences With Recurrent Neural Networks”. http://arxiv.org/abs/1308.0850
Schmidhuber, Jurgen. 2015. ”Recurrent Neural Networks.” http://people.idsia.ch/~juergen/rnn.html
Olshausen, Bruno A. ja David J. Field. 1996. ”Emergence of simple-cell receptive field properties by learning a sparse code for natural images”. Nature 381.6583: 607-609. http://www.nature.com/nature/journal/v381/n6583/abs/381607a0.html
Hinton, G. E. ja Salakhutdinov, R. R. 2006. ”Datan dimensionaalisuuden vähentäminen neuroverkoilla”. Science vol. 313 no. 5786 pp. 504-507. http://www.sciencemag.org/content/suppl/2006/08/04/313.5786.504.DC1.
Hinton, Geoffrey E. 2009. ”Syvät uskomusverkot”. Scholarpedia, 4(5):5947.
http://www.scholarpedia.org/article/Deep_belief_networks