Grunnleggende AI

Hvordan fungerer bildeklassifisering?

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

Hvordan kan telefonen din bestemme hva et objekt er bare ved å ta et bilde av det? Hvordan kan sosiale medier automatisk merke personer i bilder? Dette oppnås gjennom AI-drevet bildegenkjenning og klassifisering.

Gjenkjenning og klassifisering av bilder er det som muliggjør mange av de mest imponerende prestasjonene til kunstig intelligens. Men hvordan lærer datamaskiner å detektere og klassifisere bilder? I denne artikkelen skal vi dekke de generelle metoder som datamaskiner bruker for å tolke og detektere bilder, og så se på noen av de mest populære metodene for å klassifisere disse bildene.

Pixellbasert vs. objektbasert klassifisering

Bildeklassifiseringsteknikker kan hovedsakelig deles inn i to forskjellige kategorier: pixellbasert klassifisering og objektbasert klassifisering.

Pixler er de grunnleggende enhetene i et bilde, og analysen av pixler er den primære måten å klassifisere et bilde på. Men klassifiseringsalgoritmer kan enten bruke bare spektral informasjon innenfor enkelt pixler for å klassifisere et bilde, eller undersøke romlig informasjon (næraste pixler) sammen med spektral informasjon. Pixellbaserte klassifiseringsmetoder bruker bare spektral informasjon (intensiteten til en pixel), mens objektbaserte klassifiseringsmetoder tar hensyn til både pixellbasert spektral informasjon og romlig informasjon.

Det finnes forskjellige klassifiseringsmetoder som brukes for pixellbasert klassifisering. Disse inkluderer minimum-avstand-til-gjennomsnitt, maksimum-sannsynlighet og minimum-Mahalanobis-avstand. Disse metodene krever at gjennomsnittene og variasjonene til klassene er kjent, og de opererer alle ved å undersøke “avstanden” mellom klasse-gjennomsnitt og målpixler.

Pixellbaserte klassifiseringsmetoder er begrenset av det faktum at de ikke kan bruke informasjon fra andre nærliggende pixler. I motsetning kan objektbaserte klassifiseringsmetoder inkludere andre pixler og derfor også bruke romlig informasjon for å klassifisere objekter. Merk at “objekt” bare refererer til sammenhengende områder av pixler og ikke om det finnes et målobjekt innenfor dette området av pixler.

Forbearbeiding av bilde-data for objektdeteksjon

De nyeste og mest pålitelige bildeklassifiserings-systemene bruker hovedsakelig objektnivå-klassifiserings-skjemaer, og for disse tilnærmingene må bilde-dataene forberedes på bestemte måter. Objektene/områdene må velges og forbehandles.

Før et bilde og objektene/områdene innenfor dette bildet kan klassifiseres, må dataene som utgjør dette bildet tolkes av datamaskinen. Bilder må forbehandles og gjøres klare for inngang i klassifiseringsalgoritmen, og dette gjøres gjennom objektdeteksjon. Dette er en kritisk del av å forberede dataene og gjøre bildene klare for å trene maskinlærings-klassifisereren.

Objektdeteksjon gjøres med en rekke metoder og teknikker. For å begynne med, om det finnes flere objekter av interesse eller ett enkelt objekt av interesse, påvirker dette hvordan bilde-forbehandling håndteres. Hvis det bare finnes ett objekt av interesse, gjennomgår bildet bilde-lokasjon. Pixelverdiene som utgjør bildet har numeriske verdier som tolkes av datamaskinen og brukes til å vise riktige farger og nyanser. Et objekt kalt en avgrensningsboks tegnes rundt objektet av interesse, som hjelper datamaskinen å vite hva delen av bildet er viktig og hvilke pixelverdier definerer objektet. Hvis det finnes flere objekter av interesse i bildet, brukes en teknikk kalt objektdeteksjon for å påføre disse avgrensningsboksene til alle objektene innenfor bildet.

Foto: Adrian Rosebrock via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Intersection_over_Union_-_object_detection_bounding_boxes.jpg)

En annen metode for forbehandling er bilde-segmentering. Bilde-segmentering fungerer ved å dele hele bildet inn i segmenter basert på lignende egenskaper. Forskjellige områder av bildet vil ha lignende pixelverdier i sammenligning med andre områder av bildet, så disse pixelene grupperes sammen i bilde-masker som korresponderer med formen og grensene til de relevante objektene innenfor bildet. Bilde-segmentering hjelper datamaskinen å isolere bildets egenskaper som vil hjelpe den å klassifisere et objekt, på samme måte som avgrensningsbokser, men de gir mye mer nøyaktige, pixel-nivå-merker.

Etter at objektdeteksjon eller bilde-segmentering er fullført, påføres merker til områdene i question. Disse merkene føres, sammen med verdiene av pixelene som utgjør objektet, inn i maskinlærings-algoritmer som vil lære mønster assosiert med de forskjellige merkene.

Maskinlærings-algoritmer

Når dataene er forberedt og merket, føres dataene inn i en maskinlærings-algoritme, som trener på dataene. Vi skal dekke noen av de mest vanlige typene maskinlærings- bilde-klassifiserings-algoritmer nedenfor.

K-Nearest Neighbors

K-Nearest Neighbors er en klassifiserings-algoritme som undersøker de nærmeste treningseksemplene og ser på deres merker for å fastslå det mest sannsynlige merket for et gitt testeksempel. Når det gjelder bilde-klassifisering med KNN, lagres funksjonsvektorene og merkene til treningbildene, og bare funksjonsvektoren føres inn i algoritmen under testing. Trening- og test-funksjonsvektorene sammenlignes deretter med hverandre for likhet.

KNN-baserte klassifiserings-algoritmer er ekstremt enkle og de håndterer multiple klasser veldig lett. Men KNN beregner likhet basert på alle funksjoner like mye. Dette betyr at det kan være utsatt for feilklassifisering når det presenteres med bilder hvor bare en undergruppe av funksjonene er viktig for klassifiseringen av bildet.

Support Vector Machines

Support Vector Machines er en klassifiserings-metode som plasserer punkter i rommet og deretter tegner skillelinjer mellom punktene, og plasserer objekter i forskjellige klasser avhengig av hvilken side av skilleplanet punktene faller på. Support Vector Machines er i stand til å gjøre ikke-lineær klassifisering gjennom å bruke en teknikk kalt kernel-trikset. Mens SVM-klassifiserere ofte er veldig nøyaktige, er en betydelig ulempe med SVM-klassifiserere at de tendrer til å være begrenset av både størrelse og hastighet, med hastighet som lider når størrelsen øker.

Multi-Layer Perceptrons (Neural Nets)

Multi-layer perceptrons, også kalt neurale nettverksmodeller, er maskinlærings-algoritmer inspirert av det menneskelige hjernen. Multi-layer perceptrons består av flere lag som er koblet sammen med hverandre, på samme måte som neuroner i det menneskelige hjernen er koblet sammen. Neurale nettverk gjør antagelser om hvordan inndata-funksjonene er relatert til data-klassene, og disse antagelsene justeres over tid under trening. Enkle neurale nettverksmodeller som multi-layer perceptron er i stand til å lære ikke-lineære relasjoner, og som resultat kan de være mye mer nøyaktige enn andre modeller. Men MLP-modeller lider av noen bemerkelsesverdige problemer, som tilstedeværelsen av ikke-konveks tap-funksjoner.

Dyptlærings-algoritmer (CNNs)

Foto: APhex34 via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Typical_cnn.png)

Den mest vanlige bilde-klassifiserings-algoritmen i nyere tid er Convolutional Neural Network (CNNs). CNNs er tilpassede versjoner av neurale nettverk som kombinerer multi-lag neurale nettverk med spesialiserte lag som er i stand til å trekke ut de viktigste og mest relevante funksjonene for klassifisering av et objekt. CNNs kan automatisk oppdage, generere og lære funksjoner av bilder. Dette reduserer behovet for å manuelt merke og segmentere bilder for å forberede dem for maskinlærings-algoritmer. De har også en fordel over MLP-nettverk fordi de kan håndtere ikke-konveks tap-funksjoner.

Convolutional Neural Networks får navnet sitt fra det faktum at de skaper “konvolusjoner”. CNNs opererer ved å ta en filter og gli den over et bilde. Du kan tenke på dette som å se på deler av et landskap gjennom et flyttbart vindu, konsentrert om bare funksjonene som er synlige gjennom vinduet på et gitt tidspunkt. Filteret inneholder numeriske verdier som multipliseres med verdiene av pixelene selv. Resultatet er et nytt rammeverk, eller matrise, fullt av tall som representerer det opprinnelige bildet. Denne prosessen gjentas for et valgt antall filtre, og deretter kobles rammeverkene sammen til et nytt bilde som er litt mindre og mindre komplekst enn det opprinnelige bildet. En teknikk kalt pooling brukes til å velge bare de viktigste verdiene innenfor bildet, og målet er for konvolusjonslagene til slutt å trekke ut bare de mest fremtredende delene av bildet som vil hjelpe neurale nettverk til å gjenkjenne objektene i bildet.

Convolutional Neural Networks består av to forskjellige deler. Konvolusjonslagene er det som trekker ut funksjonene av bildet og konverterer dem til et format som neurale nettverkslagene kan tolke og lære fra. De tidlige konvolusjonslagene er ansvarlige for å trekke ut de mest grunnleggende elementene av bildet, som enkle linjer og grenser. De midtre konvolusjonslagene begynner å fange mer komplekse former, som enkle kurver og hjørner. De senere, dypere konvolusjonslagene trekker ut de høynivå-funksjonene av bildet, som er det som føres inn i neurale nettverks-delen av CNN, og er det som klassifisereren lærer.

Blogger og programmerer med spesialområder i Machine Learning og Deep Learning emner. Daniel håper å hjelpe andre med å bruke kraften av AI for sosialt godt.