Konvoluutiolla irrotetaan piirteitä. Yksinkertaisimmillaan
piirteet voivat olla esimerkiksi reunoja, ja monimutkaisemmat piirteet voivat
muistuttaa esimerkiksi silmän rakennetta. Piirteitä yhdistelemällä voidaan
lopulta tunnistaa vaikkapa kasvot tai syöpäkasvain. Kuva Pixabayn kuvapankista.
Konvoluutioneuroverkkoja (convolutional
neural networks, CNN) käytetän yleensä kuvien luokitteluun ja tunnistamiseen. Alunperin
nämä verkot on kehitetty ikään kuin matkimaan eläinten näköhermoston toimintaa.
Kuvantunnistus perinteisellä
ohjelmoinnilla on ollut ongelmallista, sillä pelkästään valaistuksen muutos,
kuvausväline, erilaiset taustat, liikkeen aiheuttamat vääristymät ja erilaiset kuvakulmat
luovat kuvantunnistusmenetelmien kannalta haasteellista vaihtelua. Siispä yksikäsitteistä matemaattista mallia,
joka ottaisi huomioon nämä kaikki seikat, lienee mahdotonta luoda.
Jos haluttaisiin varmasti tunnistaa esimerkiksi
tietyn henkilön kasvot kuvista perinteisin keinoin, niin periaatteessa hänestä
pitäisi ensin ottaa kuvia kaikista mahdollisista kulmista, kaikilla
mahdollisilla valaistuksilla, varjostuksilla ja erilaisilla ilmeillä (esim.
irvistys vs levollinen ilme muuttavat kasvoja melkoisesti), sekä näiden
yhdistelmillä. Lisäksi olisi hyvä olla tiedossa käytetyn kuvausvälineen
ominaisuudet jotta osattaisiin käsitellä mahdollisia tyypillisiä
kuvausvirheitä.
Arvioitavaa tai luokiteltavaa uutta
kuvaa verrattaisiin edellä kuvattuun massiiviseen aineistoon, jotta saataisiin
osuma pitäsi tietokannasta löytyä jotakuinkin samanlainen kuva (ideaalitapauksessa
samanlainen kuva kasvoista) valitulla tarkkuudella. Tätä varten laskettaisiin virhe
analysoitavan kuvan ja kuvapankissa olevien kuvien välille. Jos virhe olisi
kasvojen kaikissa kohdissa riittävän pieni, voitaisiin henkilö tunnistaa
kuvasta.
Tärkeiden piirteiden valinnalla
(olennaiset yksilölliset piirteet/mittasuhteet) edellä kuvattua työsarkaa voitaisiin
helpottaa mutta siltikin jäljelle jäisi valtava määrä erilaisia
huomioon otettavia asioita.
Lääketieteellisten kuvien luokittelussa
(esim. terve vai sairas) tilanne menisi vieläkin hankalammaksi, sillä nyt
pitäisi ottaa huomioon edellisten lisäksi mm. ympäröivien kudosten rakenne,
mahdolliset muut sairaudet ja fysiologiset anomaliat, sekä potilaan ikä ja
sukupuoli. Kudokset rappeutuvat vanhetessa, ja toisaalta täysin terveelläkin
ihmisellä voi olla kuvissa näkyviä poikkeavuuksia. Ei siis ole olemassa
suoranaista vertailukohtaa, jonka perusteella voisi sanoa, että tutkittava
kudos on kauttaaltaan terve tai selkeästi sairas.
Edellä kuvaillusta informaatiotulvasta
pitäisi kyetä erottelemaan tutkittavan sairauden kannalta olennaiset piirteet
ja sivuuttamaan tarpeeton informaatio.
Erilaisia piirteitä, niiden yhdistelmiä ja muuta huomioon otettavaa
informaatiota on yksinkertaisesti niin paljon että ihmismieli ei kykene
käsittelemään kaikkea saatavilla olevaa dataa. Tietokone käsittelee kuvia
numeroita sisältävinä kokonaisuuksina (matriiseina) ja se pystyy havainnoimaan
yksittäisiäkin pikseliarvoja. Ihmisen havainnointikyky ei riitä tällaiseen
pikselitason kuva-analyysiin. AIDMEI-projektissa tutkitaan esimerkiksi,
pystyisikö tekoälyalgoritmi löytämään
kuvadatasta syövän esiasteita, mahdollisesti tällaisina ihmissilmälle
näkymättöminä minimaalisina pikselikokoluokan esiintyminä tai rakenteina.
Konvoluutioneuroverkkojen perusteet
Konvoluutioneuroverkko perustuu piirteiden
poimimiseen/irrottamiseen kuvista ja niiden analysointiin tilastotieteen
keinoin. Koulutusvaiheessa verkko oppii opetusdatasta näitä piirteitä ja pyrkii
luokittelemaan automaattisesti uutta dataa oikeisiin luokkiin näiden piirteiden
perusteella (eli lääketieteellisten kuvien tapauksessa antamaan diagnoosin
kudoksen terveydentilasta). Jos verkko on onnistuttu kouluttamaan hyvin, sitä
voidaan käyttää uusien kuvien luokitteluun. Uutta dataa ei siis verrata
opetusdatan kuviin, vaan niiden tuottamaan matemaattiseen malliin, joka poimii
datasta olennaiset piirteet joiden perusteella verkko antaa luokituksensa tai
ennusteensa.
Piirteiden poimiminen tapahtuu
kerroksittain ns. konvoluutio-operaation avulla (tästä lisää myöhemmin). Piirteet
voivat olla alussa nurkkia, reunoja tai muita yksinkertaisia muotoja. Syvemmissä
kerroksissa näitä alkeellisia piirteitä yhdistelemällä voidaan havaita
monimutkaisempia piirteitä, kuten silmiä, kissoja, yms. Lopulta voidaan
tunnistaa vaikkapa kasvoja tai syöpäkasvaimia.
Tällä hetkellä syvien konvoluutioneuroverkkojen
soveltaminen terveydenhuollon diagnostiikassa on tuottanut lupaavia tuloksia. Verkkoja
on koulutettu mm. tunnistamaan rintasyövän etäpesäkkeitä kudosnäytteistä (https://www.mtvuutiset.fi/artikkeli/tekoaly-voi-tunnistaa-rintasyovan-etapesakkeet-yhta-hyvin-tai-paremmin-kuin-patologi/6695036).
Tässä etäpesäkekokeessa verkon
suorituskyky oli kokeneen patologin tasolla. Luonnollisestikin nyt kehitteillä
oleviin tekoälysovelluksiin tarvitaan vielä lisää tutkimuksia, mutta tulokset
antavat jo nyt viitteitä tehokkaasta tavasta lisätä diagnostiikan tarkkuutta ja
sujuvuutta.
Konvoluutio
Konvoluutio-operaatio on keskeisessä
osassa konvoluutioneuroverkossa. Kuvankäsittelyn matematiikassa konvoluutiota
varten määritetään ns. maski tai ydin, jolla kuva käydään pikseli kerrallaan
läpi. Käsiteltävälle pikselille lasketaan uusi arvo perustuen sen nykyiseen
arvoon, sen naapuripikselien arvoon ja konvoluutiomaskin sisältämiin
painokertoimiin. Maski siis ikään kuin asetetaan käsiteltävän pikselin ja sen
naapuruston päälle, kerrotaan maskin ja pikseleiden arvot alkioittain
keskenään, ja lopuksi summataan saadut luvut yhteen. Maskia liikutetaan koko
kuvan yli ja tuloksena saadaan uusi kuva, joka sisältää maskin löytämiä
piirteitä, ja joka voidaan puolestaan syöttää taas uudelle maskille. Alla on
esitetty yksinkertainen esimerkki konvoluutiosta pystysuoria reunoja etsivää maskia
käyttäen.
Esimerkiksi yllä olevassa kuvassa esitetyn
lopputuloksen vihreällä neliöllä reunustettu arvo -8 saadaan käsittelemällä
alkuperäisen kuvan sinisellä neliöllä reunustettua arvoa 3. Suoritetaan
yhdeksän kertolaskua maskin sisältämillä kertoimilla ja summataan ne yhteen: 0
x 1 + 0 x 0 + 0 x -1 + 0 x 1 + 3 x 0 + 7 x -1 + 0 x 1 + 4 x 0 + 1 x -1 = -8,
pikseliarvo 3 päivitetään siis arvoon -8. Seuraavaksi siirrytään kuvassa oikealle
yksi askel ja päivitetään pikseliarvo 7 jne. Kun ensimmäinen rivi on käsitelty
niin siirrytään yksi askel alaspäin ja käsitellän vastaavalla tavalla tämä
seuraava rivi. Konvoluution perusperiaate on siis varsin yksinkertainen.
Verkot muodostuvat kerroksista
Neuroverkkojen ensimmäistä kerrosta,
jossa verkkoon tuodaan käsiteltävä data (eli konvoluutioverkon tapauksessa kuva),
kutsutaan syötekerrokseksi.
Seuraavaksi dataa käsitellään
konvoluutiomaskeilla. Maskeja luodaan useita, jotta datasta saadaan erilaisia
piirteitä esiin. Konvoluutioiden jälkeen saadut tulokset syötetään
aktivointifunktiolle, jonka tarkoitus on ikään kuin selvittää onko saatu
tulos/piirre tarpeeksi merkittävä jatkamaan kulkuaan verkon läpi. Näitä
rinnakkaisia konvoluutio-aktivaatio-operaatioita kutsutaan
konvoluutiokerrokseksi, ja näitä kerroksia voidaan asettaa peräkkäin siten,
että uusi kerros ottaa syötteekseen aina edellisen kerroksen tuloksen.
Konvoluutioverkoissa käytetään usein
myös alinäytteistyskerroksia. Näiden kerrosten tarkoitus on tiivistää
seuraavalle kerrokselle syötetyn informaation määrää. Usein käytetään ns.
maksimioperaatiota, jossa kuva jaetaan osiin ja jokaiselta alueelta valitaan
suurin pikseliarvo (tämä operaatio pienentää käsiteltävän kuvan kokoa).
Syvemmälle verkkoon mentäessä kuvien kokoa halutaan pienentää, jotta voitaisiin
suurten kuvien käsittelyn sijaan käyttää laskennalliset resurssit yhä useampien
konvoluutio-operaatioiden suorittamiseen.
Luokitteluongelmissa konvoluutio- ja alinäytteistyskerrosten
läpi kulkenut data päätyy lopuksi täysin kytkettyihin kerroksiin joissa
varsinainen luokittelu (esimerkiksi sairaaseen tai terveeseen) tapahtuu. Tässä
vaiheessa ei siis enää käsitellä kuvia tai piirteitä, vaan lukuja, jotka ennustavat
lopullisen luokan.
Yksinkertaistettu esimerkki mahdollisesta syvästä konvoluutioneuroverkosta:
Data sisään
-> Konvoluutio -> Alinäytteistys -> Konvoluutio -> Alinäytteistys -> Konvoluutio -> Alinäytteistys -> Täysin-kytketty -> Ulostulo, luokitus
Esimerkiksi rintasyöpäkasvaimien
luokittelun opetuksessa konvoluutioneuroverkolle voitaisiin syöttää
mammogrammeja sekä niitä vastaava aineisto, johon radiologi on merkinnyt
kasvaimien paikat. Verkon tehtävänä olisi oppia tuottamaan vastaava tulos. Kun
verkko on koulutettu kattavan opetusdatan avulla hyvin (ks. postaukset Mikä sesemmoinen tekoäly sitten on? sekä Syvät neuroverkot ja kuvien käsittely), sen
läpi voitaisiin syöttää ennennäkemätön mammogrammi ja lopputuloksena olisi
oikein luokiteltu kuva, johon olisi merkattu löydettyjen kasvamien paikat.
|
Tekoälyn hyödyntäminen rintasyöpien seulonnassa eli mammografiassa sekä alaselkäkivun syiden selvityksessä.
maanantai 7. lokakuuta 2019
Konvoluutioneuroverkot
Kirjoittaja: Helinä Heino
Tilaa:
Blogitekstit (Atom)