Syväoppimiseen perustuville avoimen lähdekoodin neuroverkoille povataan huikeita kasvulukuja jo lähivuosiksi. Verkoille laadittujen ohjelmistokehysten lisäksi tarvitaan järjestelmien suunnittelijoille tarkoitettuja tehotyökaluja ohjelmistojen kehittämiseksi. Sellainen on esimerkiksi Intelin tarjoama OpenVINO-työkalupaketti.
Artikkelin on kirjoittanut Craig Davis. Hän toimii vanhempana tuotemarkkinoinnin päällikkönä Intelin Network and Custom Logic -ryhmässä. |
Muutaman viime vuoden aikana tekoälyn käyttöönotto on yleistynyt merkittävästi. Valtionhallinnon tietoturvaosastot ja erilaiset puolustussovellukset ovat tulleet jäädäkseen, ja sen myötä AI-järjestelmien (Artificial Intelligence) hyödyntämisestä on tullut jokapäiväistä.
Lisäksi monet suositut sosiaalisen median mobiilisovellukset ja ääniohjatut kodinlaitteet hyödyntävät nykyään AI-pohjaisia toimintoja, jotka lisäävät niiden suosiota. Kuvankäsittelyyn perustuvat AI-sovellukset ovat nyt ehkä kaikkein suosituimpia ja niitä käytetään jo rutiininomaisesti esimerkiksi tuotantolinjoilla, IIoT-järjestelmissä ja muissa teollisissa sovelluksissa.
Tekoälypohjaisia sovelluksia ja niiden taustalla olevia CNN-neuroverkkoja (Convolutional Neural Network) voi kohdata esimerkiksi pysäköintialueiden tulo/poistumismaksuja hoitavissa järjestelmissä, verkkojen tietoturvajärjestelmissä ja yhä enemmän myös itsenäisesti liikkuvissa ajoneuvoissa.
CNN on erityinen keinotekoisen neuroverkon tyyppi, jolla mallinnetaan ihmisaivojen tapaa käsitellä visuaalista tietoa. Sellaisena se soveltuu kuvien tunnistus- ja käsittelysovelluksiin. Kaikkien muiden neuroverkkojen tavoin CNN-verkkokin sisältää solmukerroksia, mutta eroaa muista siinä, että tietyt neuronit on kytketty vain ennalta valittuihin muihin solmuihin.
Tämä johtuu siitä, että CNN-verkot painottavat datan tilarakennetta aivan kuten aivommekin. Kehitystyön kannalta CNN-järjestelmien koodaaminen voi olla varsinkin uusien tekniikoiden kohdalla melko haastavaa kehityksen alkuvaiheissa. Saatavissa on vasta muutamia työkaluja, jotka auttavat nopeuttamaan suunnittelua.
Usein kehittäjät käyttävät sen sijaan toisenlaista, hajautettua lähestymistapaa suunnittelun toteuttamiseksi. Useimmiten avoimen lähdekoodin yhteisöt luovat nopeasti tarvittavat ohjelmistokehykset, kehitystyökalut ja menetelmät.
Nykyään on tarjolla joukko avoimeen lähdekoodiin perustuvia neuroverkkojen ohjelmistokehyksiä ja topologioita kuten Caffe, TensorFlow ja MXNet. Ne sisältävät verkon luomiseen tarvittavat elementit aina mallien tuottamisesta niiden opettamiseen, testaamiseen ja paranteluun.
Intelin hiljattain julkistama OpenVINO (Open Visual Inference and Neural Network Optimization) on hyvä esimerkki ohjelmistonkehityksen työkalupaketista, jonka avulla voidaan nopeuttaa kuvien käsittelyyn perustuvien innovatiivisten sovellusten kehittämistä. CNN-pohjainen työkalupakki laajentaa, optimoi ja maksimoi Intelin laskentapiirien suorituskyvyn työkuorman käsittelyssä.
OpenVINO tukee tehtävien heterogeenistä suoritusta CPU-, FPGA- ja GPU-piirien sekä laskentamoduulien avulla yhteisen sovellusrajapinnan (API) kautta. Se hyödyntää funktiokirjastoa ja ennalta optimoituja ytimiä kehityssyklin keventämiseksi ja järjestelmän markkinoille tuonnin nopeuttamiseksi. OpenVINO hallinnoi myös optimoituja kutsuja tietokonenäön OpenCV-kirjastoon (Computer Vision) sekä eri alustojen väliseen CV-kiihdytyksen OpenVX-sovellusrajapintaan.
OpenVINO sisältää kolme pääosaa: tietokonenäön syväoppiminen, perinteiset tietokonenäön tekniikat ja laitteiston kiihdytyselementit.
Kuva 1. Tietokonenäön syväoppiminen.
Syväoppimisen ratkaisut tarjoavat mahdollisuuden mallien optimointiin useilla Intelin heterogeenisillä alustoilla ja kiihdyttävät näin CNN-työkuormien suorittamista. Tämän ansiosta kehittäjät voivat ottaa käyttöön ennalta opetettuja syväoppimisen malleja (kuva 1) korkean tason C++-päättelykoneen API-rajapinnan kautta.
Kuva 2. Intelin kehittämä työkalupaketti syväoppimisen käyttöönottoa varten.
OpenVINO-työkalupaketin tähän osaan kuuluu kaksi ydinkomponenttia: mallien optimoija ja päättelykone. Python-pohjaista mallien optimoijaa käytetään komentoriviliittymällä (CLI) ja se sallii opetettujen mallien tuomisen suosituista syväoppimisen ohjelmistokehyksistä kuten Caffe-kehysrungosta. Se myös antaa mahdollisuuden analysointiin ja säätämiseen mallien optimaaliseksi suorittamiseksi päätepisteiden useissa eri kokoonpanoissa.
Päättelykone tarjoaa alustakohtaisen suoritustavan käyttämällä yhteistä sovellusrajapintaa, joka sallii eri mallikerrosten ajamisen eri kohdealustoilla. On myös mahdollista luoda mukautettuja kerroksia niin, että tietyt tehtävät suoritetaan esimerkiksi GPU-sirulla samaan aikaan, kun verkon muuta topologiaa ajetaan FPGA-sirulla. Suorittaminen voidaan myös optimoida kohdealustoja varten.
Kuva 3. OpenVINO-työkalupaketin perinteiset tietokonenäön komponentit.
OpenVINO-työkalupaketin perinteiset tietokonenäön komponentit (kuva 3) ovat keskeisessä asemassa minkä tahansa CNN-verkon käyttöönotossa ja ne korostavat ratkaisujen rakentamista, optimointia ja käyttöönottoa. Tämä pätee etenkin ratkaisuihin, jotka on suunnattu vain vähän resursseja käyttäviin ympäristöihin sekä sellaisiin, joissa datajoukot ovat suhteellisen pieniä. Optimoidut kuvankäsittelyn OpenCV- ja OpenVX-sovellusrajapinnat ja kirjastot muodostavat ydinkomponentit työkalupaketin tähän osaan.
Kolmas OpenVINO-komponentti on laitteiston kiihdytys (kuva 4). Siihen päästään optimoimalla resursseja heterogeenisillä alustoilla käyttämällä kuhunkin tarkoitukseen parhaiten soveltuvia laskentavälineitä kuten FPGA-, GPU- ja CPU-piirejä.
Kuva 4. Laitteiston kiihdytys.
Intelin tekemän tutkimuksen mukaan koko maailman panostukset syväoppimisen sovelluksiin nousevat vuoteen 2025 mennessä 39,9 miljardiin dollariin. Syväoppimiseen perustuvien neuroverkkojen ohjelmistokehysten ja OpenVINOn kaltaisten työkaluohjelmistojen saatavuus on välttämätöntä, mikäli kehittäjät haluavat ennusteen mukaisesti yltää odotetulle tasolle CNN-pohjaisten ratkaisujen määrässä.