Grundlæggende AI

Hvordan fungerer billedklassifikation?

mm
Føj Unite.AI til dine foretrukne kilder på Google

Hvordan kan din telefon bestemme, hvad et objekt er, bare ved at tage et billede af det? Hvordan kan sociale medier automatisk markere personer på billeder? Dette opnås gennem AI-drevet billedgenkendelse og klassifikation.

Genkendelsen og klassifikationen af billeder er, hvad der muliggør mange af de mest imponerende bedrifter inden for kunstig intelligens. Men hvordan lærer computere at detektere og klassificere billeder? I denne artikel vil vi dække de generelle metoder, som computere bruger til at fortolke og detektere billeder, og derefter se på nogle af de mest populære metoder til at klassificere disse billeder.

Pixel-niveau vs. objektbaseret klassifikation

Billedklassifikationsteknikker kan hovedsageligt deles ind i to forskellige kategorier: pixelbaseret klassifikation og objektbaseret klassifikation.

Pixler er de grundlæggende enheder i et billede, og analysen af pixler er den primære måde, hvorpå billedklassifikation udføres. Men klassifikationsalgoritmer kan enten bruge kun den spektrale information inden for enkelt pixler til at klassificere et billede eller undersøge spatial information (nærliggende pixler) sammen med den spektrale information. Pixelbaserede klassifikationsmetoder bruger kun spektral information (intensiteten af en pixel), mens objektbaserede klassifikationsmetoder tager både pixel spektral information og spatial information i betragtning.

Der er forskellige klassifikationsteknikker, der bruges til pixelbaseret klassifikation. Disse inkluderer minimum-afstand-til-gennemsnit, maksimum-sandsynlighed og minimum-Mahalanobis-afstand. Disse metoder kræver, at gennemsnittet og varianserne for klasserne er kendt, og de fungerer alle ved at undersøge “afstanden” mellem klasse-gennemsnit og målpixlerne.

Pixelbaserede klassifikationsmetoder er begrænsede af, at de ikke kan bruge information fra andre nærliggende pixler. I modsætning hertil kan objektbaserede klassifikationsmetoder inkludere andre pixler og bruger derfor også spatial information til at klassificere genstande. Bemærk, at “objekt” blot henviser til sammenhængende områder af pixler og ikke til, om der er et målobjekt inden for det pågældende område af pixler.

Forarbejdning af billeddata til objektgenkendelse

De seneste og mest pålidelige billedklassifikationssystemer bruger primært objekt-niveau klassifikationsskemaer, og til disse tilgange skal billeddata forberedes på bestemte måder. Objekterne/områderne skal vælges og forarbejdes.

Før et billede og objekterne/områderne inden for billedet kan klassificeres, skal data, der udgør billedet, fortolkes af computeren. Billeder skal forarbejdes og gøres klar til indgang i klassifikationsalgoritmen, og dette gøres gennem objektgenkendelse. Dette er en kritisk del af at gøre data klar og forberede billederne til at træne maskinlæringsklassifikatoren.

Objektgenkendelse udføres med en række metoder og teknikker. For at begynde med, om der er flere objekter af interesse eller et enkelt objekt af interesse, har betydning for, hvordan billedforarbejdningen håndteres. Hvis der kun er ét objekt af interesse, undergår billedet billedlokalisering. Pixelværdierne, der udgør billedet, har numeriske værdier, der fortolkes af computeren og bruges til at vise de rigtige farver og nuancer. Et objekt kaldet en begrænsningsboks tegnes omkring objektet af interesse, hvilket hjælper computeren med at vide, hvilken del af billedet er vigtigt og hvilke pixelværdier definerer objektet. Hvis der er flere objekter af interesse i billedet, bruges en teknik kaldet objektgenkendelse til at anvende disse begrænsningsbokse til alle objekterne inden for billedet.

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 anden metode til forarbejdning er billedsegmentering. Billedsegmentering fungerer ved at dele hele billedet ind i segmenter baseret på lignende funktioner. Forskellige områder af billedet vil have lignende pixelværdier i forhold til andre områder af billedet, så disse pixler grupperes sammen i billedmasker, der svarer til formen og grænserne for de relevante objekter inden for billedet. Billedsegmentering hjælper computeren med at isolere billedets funktioner, der vil hjælpe med at klassificere et objekt, ligesom begrænsningsbokse gør, men de giver mere præcise, pixel-niveau mærker.

Efter at objektgenkendelse eller billedsegmentering er fuldført, tilføjes mærker til de pågældende områder. Disse mærker indføres sammen med værdierne af pixlerne, der udgør objektet, i maskinlæringsalgoritmerne, der vil lære mønstre associeret med de forskellige mærker.

Maskinlæringsalgoritmer

Når data er blevet forberedt og mærket, indføres data i en maskinlæringsalgoritme, der trænes på data. Vi vil dække nogle af de mest almindelige typer maskinlærings billedklassifikationsalgoritmer nedenfor.

K-Nearest Neighbors

K-Nearest Neighbors er en klassifikationsalgoritme, der undersøger de nærmeste trænings eksempler og ser på deres mærker for at fastslå den mest sandsynlige mærke for et givet testeksempel. Når det kommer til billedklassifikation med KNN, gemmes funktionvektorerne og mærkerne for træningsbillederne, og kun funktionvektoren indføres i algoritmen under testning. Trænings- og testfunktionvektorerne sammenlignes derefter med hinanden for lighed.

KNN-baserede klassifikationsalgoritmer er ekstremt simple og de kan håndtere multiple klasser meget let. Men KNN beregner lighed baseret på alle funktioner ligeligt. Dette betyder, at det kan være tilbøjeligt til misklassificering, når det præsenteres for billeder, hvor kun en undermængde af funktionerne er vigtig for klassificeringen af billedet.

Support Vector Machines

Support Vector Machines er en klassifikationsmetode, der placerer punkter i rummet og derefter tegner dividerende linjer mellem punkterne, placerer objekter i forskellige klasser afhængigt af, hvilken side af divideringsplanet punkterne falder på. Support Vector Machines kan udføre ikke-lineær klassifikation gennem brug af en teknik kaldet kernel-tricket. Mens SVM-klassifikatorer ofte er meget nøjagtige, er en betydelig ulempe ved SVM-klassifikatorer, at de tendenser til at være begrænsede af både størrelse og hastighed, hvor hastigheden lider, når størrelsen øges.

Multi-Layer Perceptrons (Neural Nets)

Multi-layer perceptrons, også kaldet neurale netværksmodeller, er maskinlæringsalgoritmer inspireret af det menneskelige hjerte. Multilayer perceptrons består af forskellige lag, der er forbundet med hinanden, ligesom neuroner i det menneskelige hjerte er forbundet med hinanden. Neurale netværk gør antagelser om, hvordan indgangsfunktionerne er relateret til datas klasser, og disse antagelser justeres over træningsforløbet. Simple neurale netværksmodeller som multi-layer perceptron er i stand til at lære ikke-lineære relationer, og som resultat kan de være meget mere nøjagtige end andre modeller. Men MLP-modeller lider af nogle bemærkelsesværdige problemer som tilstedeværelsen af ikke-konvekse tab-funktioner.

Deep Learning Algoritmer (CNNs)

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

Den mest almindeligt brugte billedklassifikationsalgoritme i nyere tid er Convolutional Neural Network (CNNs). CNNs er tilpassede versioner af neurale netværk, der kombinerer multilag-neurale netværk med specialiserede lag, der kan trække de funktioner, der er mest vigtige og relevante for klassificeringen af et objekt. CNNs kan automatisk opdage, generere og lære funktioner af billeder. Dette reducerer betydeligt behovet for at manuelt mærke og segmentere billeder for at forberede dem til maskinlæringsalgoritmer. De har også en fordel over MLP-netværk, fordi de kan håndtere ikke-konvekse tab-funktioner.

Convolutional Neural Networks får deres navn fra, at de skaber “konvolutioner”. CNNs fungerer ved at tage en filter og glide den over et billede. Du kan tænke på det som at se på dele af et landskab gennem et flytbart vindue, koncentrerer dig kun om de funktioner, der er synlige gennem vinduet på et givet tidspunkt. Filteret indeholder numeriske værdier, der multipliseres med pixelværdierne selv. Resultatet er en ny ramme eller matrix fuld af numre, der repræsenterer det originale billede. Denne proces gentages for et valgt antal filtre, og derefter kombineres rammerne til en ny billed, der er lidt mindre og mindre kompleks end det originale billede. En teknik kaldet pooling bruges til at vælge kun de vigtigste værdier inden for billedet, og målet er, at konvolutionslagene til sidst trækker kun de mest fremtrædende dele af billedet, der vil hjælpe neurale netværk med at genkende objekterne i billedet.

Convolutional Neural Networks består af to forskellige dele. Konvolutionslagene er, hvad der trækker billedets funktioner og konverterer dem til et format, som neurale netværkslag kan fortolke og lære fra. De tidlige konvolutionslag er ansvarlige for at trække de mest grundlæggende elementer af billedet, som simple linjer og grænser. De midterste konvolutionslag begynder at fange mere komplekse former, som simple kurver og hjørner. De senere, dybere konvolutionslag trækker de højt niveau funktioner af billedet, som er, hvad der indføres i neurale netværksdelen af CNN, og er, hvad klassifikatoren lærer.

Blogger og programmør med specialer i Machine Learning og Deep Learning emner. Daniel håber at hjælpe andre med at bruge AI's kraft til sociale formål.