Toteutimme konenäköön perustuvan ohjelman, jolle on mahdollista livekuvasta opettaa ja tunnistaa erinäköisiä objekteja. Ohjelma on suunniteltu toimimaan SICK:in konenäkökameran muodostamassa sulautetussa järjestelmässä.
Projektimme tiivistetysti
Projektimme tarkoitus oli saada aikaan ohjelma, joka tunnistaa ja jolle on mahdollista opettaa tunnistettavat objektit käyttäen kameran ottamia kuvia syötteenään. Lähtökohtaisesti tunnistettavien objektien oletetaan olevan aikakauslehtien kansia, mutta loppupeleissä mitkä tahansa muukin objektit, joissa tunnistettavat muodot ovat vain oleellisesti yhdessä tasossa, käyvät tarkoitukseen.
Ohjelmointiympäristönä käytimme SICK:in tarjoamaa AppStudiota, joka on suunniteltu toimimaan yhdessä yrityksen ohjelmoitavien laitteiden, kuten Inspector63x-kameran kanssa, jota me käytimme ohjelmamme suoritukseen. Ohjelmointikielenä AppStudiossa toimii Lua.
Mistä lähdimme liikkeelle
Tavoitteenamme oli siis rakentaa ohjelma, jolle on mahdollista opettaa ja jonka on mahdollista tunnistaa livekuvasta eri lehtiä. Lähtökohtaisesti ajattelimme, että käyttökohteita voisivat olla esimerkiksi lehtitalon tuotantolinja tai lehtikioskit. Tuotantolinjalla ohjelma voisi tunnistaa lehtiä, jotka liikkuvat hihnaa pitkin. Tästä tunnistus ohjattaisiin johonkin mekaaniseen lajittelukoneeseen, joka lajittelisi lehdet. Lehtikioskissa työntekijä voisi “skannata” lehdet päivän päätteeksi ja palauttaa myymättömät lehdet lehtitalolle saaden rahaa takaisin.
Haasteenamme oli rakentaa kokonaisvaltaiset opetus- ja tunnistusprosessit sisältävä ohjelma, jota olisi helppo käyttää ja jonka suoritusta käyttäjä pystyisi valvomaan.
Toteutus
Algoritmisellä tasolla päädyimme hyödyntämään SICK:in omaa pointmatcher-algoritmia, jossa kuvasta etsitään tunnistukseen sopivia pisteistä erilaisin matriisioperaatioin ja joita sitten verrataan livekuvasta löydettyihin pisteisiin.
Osana tunnistusta toimii myös Ethernetin kautta TCP/IP -protokollalla lähetettävä listan indeksinumero, jota kameran alla oleva lehti vastaa, ja jonka avulla lehdet lajitellaan. Tämä voitaisiin siis lähettää esimerkiksi tuotantolinjan mekaaniseen lajittelijaan.
Käyttöliittymässä hyödynsimme AppStudion tarjoamaa graafista käyttöliittymä-rakentajaa. Käyttöliittymästä onnistuu opetus- ja tunnistusprosessien käynnistys, seuranta ja visualisointi, sekä tunnistusparametrien muuttaminen ajonaikaisesti ohjelman käyttäjän toimesta.
Lopputulos
Sovelluksen käyttöliittymä on melko yksiselitteinen (quick-guide sen käyttöön löytyy linkeistä). Opetukseen ja tunnistukseen vaikuttavia asetuksia on kuitenkin paljon, ja ne saa näkyviin show configurations-säätimestä. Laitoimme tarkoituksella paljon erilaisia säätimiä käyttöliittymään, jotta käyttäjällä olisi mahdollisuus säätää ohjelma toimimaan juuri täydellisesti hänen tarvitsemaansa käyttökohteeseen. Asetuksista ja niiden vaikutuksista kerrotaan pikaisesti quick-guidessa ja syvemmin loppuraportin komponenttiosiossa.
Käyttöliittymässä pystyy myös tarkastelemaan tunnistuksen laatua ja nopeutta. Toteutetusta optimointimahdollisuudesta huolimatta, ohjelman tunnistusnopeutta ei pidetty lähtökohtaisesti kovinkaan tärkeänä, koska käytössä olevasta kamerasta on nopeampia malleja, joita oikeassa tuotantomallissa käytettäisiin. Kyse onkin prototyyppi-mallista, josta voi jatkaa sen laajentamista erilaisiin käyttötarkoituksiin. Tästä huolimatta, onnistuimme saamaan opetus ja tunnistusajat melko hyviksi säätämällä asetukset lähelle minimiä (nämä näkyvät edellisissä kuvissa).
Lue myös kattava loppuraporttimme kokonaisuudessaan tästä
Tekijät
(alk. vas.) Mikko Seppi Kerkko Karttunen Taavi Oja Roope Räsänen Juuso Korhonen
Linkit
Quick-guide, nopea käyttöopas käyttöliittymään ja ohjelman käyttöön.
Koodi: mvision.7z
Lisenssit:
Koodi: MIT-lisenssi
This work is licensed under a Creative Commons Attribution 4.0 International License.