Mitä mahtaisi teollisuuden koneiden toimintaan vaikuttaa, jos ne näkisivät ympärillään olevat olosuhteet? Älykkään konenäön toteuttamisen vaikeus tiivistyy käsiteltävän datan suureen määrään ja luonteeseen. Teollisessa kuva-anturissa on tyypillisesti miljoonasta kymmeneen miljoonaan pikseliä ja sen kehysnopeudet yltävät useisiin satoihin kehyksiin sekunnissa.
Artikkelin on kirjoittanut Future Electronicsin Pohjois-Euroopan alueen tekninen johtaja André Schwarz. |
Useimpien teollisuuden laitteiden kohdalla kysymys ympäristön näkemisestä on tähän asti ollut lähinnä hypoteettinen. Toki joitakin konenäköön perustuvia sovelluksia on jo olemassa esimerkiksi suursarjatuotannossa ja prosessiteollisuudessa, joissa kameroita käytetään automaattisessa optisessa tarkastuksessa (AOI) havainnoimaan vikoja tai luokittelemaan tavaroita ihmissilmää luotettavammin, nopeammin ja edullisemmin. Kameralaitteilla voidaan myös suorittaa visuaalisia tehtäviä kuten optista merkkien tunnistamista, esimerkiksi auton rekisterikilpien lukemista parkkihalleissa. Tämän kaltaiset konenäkösovellusten järjestelmät ovat tähän saakka perustuneet arkkitehtuuriin, jossa on kamera ja siihen kytketty PC tai palvelin.
PC-pohjaisten järjestelmien toteutukset vaativat kuitenkin varsin paljon tilaa sekä tehoa ja ovat varsin kalliita, jolloin ne eivät sovellu käytettäväksi monissakaan valtavirran teollisuussovelluksissa. Tässä artikkelissa esitelläänkin uudenlainen näköominaisuuksilla varustettu järjestelmäsiru (SoC) ja sitä tukevat helppokäyttöiset kehitystyökalut, joiden avulla lähes mihin tahansa sulautettuun järjestelmään voidaan lisätä älykästä näkemistä halutun lopullisen toiminnon vaatimusten mukaisesti.
Nykyiset konenäköjärjestelmät hankalasti käytettäviä
Älykkään konenäön toteuttamisen vaikeus tiivistyy käsiteltävän datan suureen määrään ja luonteeseen. Teollisessa kuva-anturissa on tyypillisesti miljoonasta kymmeneen miljoonaan pikseliä ja sen kehysnopeudet yltävät useisiin satoihin kehyksiin sekunnissa. Kun IT-ammattilaiset puhuvat suurista potentiaalisista tietomääristä (big data), he osittain tarkoittavat valtavia kuvadatan määriä, joita sulautetut kamerajärjestelmät tuottavat.
Sen lisäksi että syntyvät tietokannat ovat valtavia, ne ovat myös vaikeasti luokiteltavissa. Ihmisaivot pystyvät helposti tutkimaan kuvatietokantaa ja nimeämään sen yksittäiset kuvaobjektit ”koiraksi”, ”linnuksi” tai ”linja-autoksi” absoluuttisella varmuudella. Tämän suorittamiseksi kone vaatii hyvin monimutkaisen loogisten operaatioiden käskykannan. Joitakin kuvadatan muotoja on jo nykyisin helppo käsitellä ja on kehitetty kamerajärjestelmiä, joilla voidaan suorittaa niihin perustuvia suoraviivaisia toimintoja kuten alfanumeeristen merkkien tunnistusta, tason ilmaisua tai värin havainnointia.
Jotkut sovellukset taas vaativat monimutkaisempia käsittelymuotoja. Esimerkiksi itsenäisesti toimivien kulkuneuvojen teknologioita on kehitelty jo vuosia. Tässä vaikeutena on ollut opettaa koneita erottamaan liikkuvia kohteita, kuten autoja, linja-autoja, polkupyöriä ja jalankulkijoita. Konenäöltä edellytetään tässä teknologiassa vielä paljon enemmän kuin nyt tutkimuksen alla olevissa koneissa, joilla pyritään lukemaan tunnetiloja ihmiskasvoilta tarkoituksena käyttää saatuja tietoja mainonnassa tai rikosten ehkäisyssä.
Konenäkö siis edellyttää valtavien datamäärien nopeaa käsittelyä monimutkaisia algoritmeja hyödyntäen. Nykyisin tämä toteutetaan tavallisesti PC- tai palvelinpohjaisilla arkkitehtuureilla. Nämä tarjoavat kaksi tasavahvaa etua:
- Uusimpien ultranopeiden, moniytimisten prosessorien tai grafiikan käsittely-yksiköiden (GPU) mahdollistava massiivinen datankäsittely
- Windowsin tai Linuxin tarjoamat monipuoliset korkeantason sovellusten ohjelmoinnin resurssit ja työkalut
Sulautettujen järjestelmien suunnittelijoiden ongelmana on kuitenkin se, että PC ei usein ole kovinkaan kätevä laitealusta heidän sovelluksiinsa. Tyypillisesti sulautettuja järjestelmiä suunnitellaan hyvin tiukkojen tehonkulutus-, koko- ja kustannusvaatimusten paineessa. PC ei ole optimaalinen missään noissa vaatimuksissa.
On kuitenkin selvästi nähtävissä, että sulautettujen järjestelmien lisäarvoa voidaan kasvattaa varustamalla ne älykkäillä näköominaisuuksilla. Esimerkiksi automaattiovien aukeaminen saadaan nykyisin käynnistymään lähestymistä aistivilla infrapuna-antureilla tai lattiassa olevilla paineantureilla. Nämä ”tyhmät” anturit voivat kuitenkin tuottaa myös virhetoimintoja. Vilkkaalla kadulla automaattiovet voivat aueta yhtä hyvin myös ohikulkijan kuin liikkeeseen sisälle haluavan vaikutuksesta.
Ovet, joilla on kyky nähdä ja erottaa pikseleitä ihmiskasvojen muodoista, voivat erottaa ihmisen, jonka kasvot ovat kohti ovea, ihmisestä, joka vain kävelee ohi suuntaamatta kasvojaan ovea kohti, jolloin kameraa kohti suuntautuu vain ohikulkijan kasvojen profiili kasvojen sijaan. Tämän kaltainen älykkyys mahdollistaa sen, että ovijärjestelmän avulla säästetään energiaa, koska ovi avautuu vain liikkeeseen sisään tuleville, jolloin lämpö pysyy paremmin sisällä ja veto vähenee. Samalla ovimekanismi ei kulu turhissa avautumisissa, jolloin oven käyttöikä todennäköisesti lisääntyy ja huoltokustannukset pienenevät.
Edellä kuvattu on esimerkki sovelluksesta, jossa on tiukat kokoa ja kustannuksia rajoittavat vaatimukset, jolloin PC ei ole sopivin laitealusta. Kun konenäkö halutaan sulauttaa tällaiseen sovellukseen, suunnittelija joutuu ottamaan huomioon seuraavat näkökohdat:
- Pieni tehonkulutus
- Lausekielisen ohjelmoinnin tuki toiminnallisella tasolla
- Yhteysvaihtoehdot järjestelmän liittämiseksi isäntäjärjestelmään tai pilveen
- Monipuolinen etupää kuva-anturiliitännöille
- Perustason laitteistokiihdytettävät kuvanparannuslohkot, jotka nykyisin toteutetaan tavallisesti FPGA-piirillä
- Tehokas kuvanpakkaus
- Yhteydet massamuistiin
- Stardardoidun kestävän käyttöjärjestelmän tuki – sulautetuissa se on yleensä Linux
Edellä mainituilla ominaisuuksilla varustetun sulautetun konenäön toteuttamiseen soveltuvan SoC-pohjaisen S32V-alustan on esitellyt NXP Semiconductors.
Monipuoliset laitteet ja ohjelmistot
SoC-pohjainen S32V koostuu yhdistelmästä laitteisto- ja ohjelmistoresursseja, joita tarvitaan sulautettujen järjestelmien kehitystyössä ja suunnittelussa.
Uudenlaisessa SoC-laitteistossa on erityiset lohkot näkötoimintoja varten rinnallaan tehokas yleiskäyttöinen prosessointilohko (katso kuva 1). CPU-alusta koostuu kahdesta tai neljästä enimmillään 1 GHz:n taajuudella toimivasta Arm Cortex-A53 -ytimestä. 133 MHz:n Arm Cortex-M4 -ydin huolehtii puolestaan toimintavarmuuden ja turvallisuuden takaavista operaatioista sekä muista ylläpitoon liittyvistä tehtävistä.
Kuvankäsittelyn toimintalohko käsittää kaksi APEX-2 vision -kiihdytinydintä sekä ohjelmistosuunnittelun työkalut OpenCL, APEX-CV ja APEX-grafiikkaohjelmistot. S32V käsittää lisäksi kaksi kameraliitäntää, joiden avulla voidaan toteuttaa myös stereonäkösovelluksia, jolloin algoritmit soveltuvat käytettäväksi vaativissakin luonnon olosuhteissa.
Sulautettu kuva-anturikäsittely (ISP) tukee HDR-videota, värimuunnoksia, sävykartoitusta ja muita toimintoja, joiden toteuttaminen FPGA-lähestymistapaa käyttäen olisi useissa tapauksissa työläämpää.
Kuva 1: S32V SoC:n lohkokaavio.
Monipuoliset liitäntävaihtoehdot takaavat sen, että prosessoidut kuvat siirtyvät nopeasti tietokonearkkitehtuurin rajapinnoilla. Tarjolla on liitännät skaalattavaksi mm. seuraaville rajapinnoille: Gigabit Ethernet -ohjain, kaksois-CAN-FD, kaksois-FlexRay ja yksikanavainen PCIe-litäntä (5 Gb/s).
Vaihtoehtoinen grafiikka-alijärjestelmä sisältää 3D-grafiikan käsittely-yksikön, joka tukee OpenCL 1.2 EP 2.0:aa, OpenGL ES 3.0:aa ja OpenVG 1.1 -grafiikankorjausta. Tällöin saadaan toteutettua kuvankäsittelyä, jonka tuloksena saadaan tasokkaat videolähdöt älykkään mainonnan, kuljettajan ajoavustimien tai turvatarkastussovellusten tarpeisiin.
Armin A-luokan prosessoriperheen tehohyötysuhteen ansiosta S32V:n tehonkulutus on tyypillisesti 5-10 W ja S32V tarjoaa riittävästi tehoa suorittaa edistyneitä toimintoja, kuten kasvojen tunnistusta tai liikkuvan kohteen ilmaisua (katso kuva 2). Mutta jos sitä käytetään näköominaisuuksien lisäämiseksi järjestelmään, esimerkiksi automaattioveen, ensimmäistä kertaa, suunnittelija saattaa olla tottumaton kirjoittamaan ohjelmistoa edistyneisiin konenäkösovelluksiin. Suunnittelijan kannalta onkin tärkeää ottaa huomioon, kuinka hyvin S32V-ekosysteemi tukee sovellusohjelmiston kehitystä.
Kuva 2: S32V Vision -työkaluissa on saatavissa esimerkkikoodina kasvontunnistuksen algoritmi.
S32V:n ohjelmiston perustan tarjoaa NXP:n ohjelmistokehityspaketti Vision SDK, joka on osana integroitua kehitysympäristöä S32 Design Studio for Vision IDE. NXP:n S32V-evaluointikortit tukevat Vision SDK:ta ja ne toimitetaan sovellusta tukevilla esimerkeillä toiminnoista kuten kasvojen tunnistuksesta ja ilmeiden vastaavuuksia ilmaisevasta homografiasta. Perustana on avoin lähdekoodi: Linux-käyttöjärjestelmä, avoin lähdekirjasto (OpenCV) sekä avoimet standardit kielet ja API:t mukaan lukien OpenCL ja OpenGL.
Ohjelmistonkehitys voidaan tehdä pelkästään C-ohjelmointikielellä. Vision SDK huolehtii osaltaan tehtävien jaosta laitteistokiihdyttimien ja yleiskäyttöisten ytimien välillä, mikä on aikaisemmin ollut erityisen hankalasti toteutettavissa ollut osa näköjärjestelmien suunnittelussa.
Vision SDK:hon on saatavissa myös ylimääräinen tietokonenäkökirjasto APEX-CV, joka tarjoaa:
- Laajat tietokonenäkökirjastot. Asiakaskohtaiset OpenCV- ja OpenVX-algoritmit, jotka on kirjoitettu käyttäen APEX-ytimen kehystä tai S32V APEX -ytimille optimoitua räätälöityä liukuhihnaa
- APEX-CV:n perusversion: kuvankäsittelyn kernelien kirjasto kuvansuodatusta ja muita toimintoja varten käyttäjän avuksi vision-algoritmien tekemiseen
- APEX-CV:n ammattilaisversion: laaja kehittyneempien algoritmien kirjasto kuvankäsittelyä, tietokonenäköä ja tietokoneella tapahtuvaa valokuvausta varten APX-ytimille optimoituna
Vision SDK:n lisäksi NXP:n repertuaariin kuuluu Vision-työkalulle tarkoitettu Model Based Design Toolbox, jonka avulla suunnittelija saa käyttöönsä MATLAB-ohjelmistot S32V-pohjaista sovelluskehitystä varten.
Tuotekehityksen nopea testaus
S32V toimitetaan esikonfiguroituna siten, että nopea prototyypitys on mahdollista suorittaa standardeilla kaupallisesti saatavilla olevilla kameramoduuleilla, jolloin suunnittelija voi alusta alkaen keskittyä ohjelmistokehitykseen:
- NXP:n toimittama S32V-SONYCAM-moduuli
- Omnivisionin toimittama suurella dynaamisella alueella varustettu MIPI-kamera OV10640CSP-S32V tai MXOV10635-S32V
Myös muiden anturien integrointi on mahdollista, kun niiden ajurien kehityksestä huolehditaan. S32V-kuvaliukuhihna on suunniteltu käytettäväksi aina kahden megapikselin resoluution kuva-antureille asti. On siis otettava huomioon kaistanleveysrajoitukset, kun toimitaan tätä suuremmilla resoluutioilla.
NXP toimittaa myös erilaisia evaluointikortteja S32V-pohjaisten prototyyppien tuotekehitystä varten. Näitä ovat:
- SBC-S32V234-evaluointikortti vision- ja anturilaitteille
- S32V234-EVB2-evaluointikortti vision- ja anturilaitteille sekä tuotekehitysalusta
Kuva 3: SBC-S32V234-evaluointikortti S32V-vision-prosessorin suunnitteluun.
Kaupallisesti saatavilla olevan tuotekehityslaitteiston ja monipuolisten työkalujen yhdistelmä valmiine sovellusesimerkkeineen antaa aloittelevalle sulautetun kokenäköjärjestelmän suunnittelijalle hyvän alustan nopeaan järjestelmäkehitykseen. Tämä mahdollistaa ensimmäistä kertaa sen, että ne sulautetut järjestelmät, joille PC-pohjainen arkkitehtuuri ei sovellu, saavat nyt käyttöönsä ne edut, joita älykkään konenäön lisääminen sulautettuun järjestelmään tuo. Tällä tavoin voidaan merkittävästi parantaa monia olemassa olevia sulautettuja järjestelmiä.