Articles

#021 Cnn Object Localization

Object Localization

Object detection er et av områdene av datasyn som eksploderer, og det fungerer så mye bedre enn bare et par år siden. For å bygge opp objektdeteksjon lærer vi først om objektlokalisering. La oss begynne med å definere hva det betyr.

vi har allerede sagt at bildet klassifisering oppgave er å se på et bilde og si er det en bil eller ikke. Klassifisering med lokalisering betyr ikke bare at vi må merke et objekt som en bil, men også å sette en grenseboks eller tegne et rektangel rundt bilens posisjon i bildet. I begrepet klassifisering med lokaliseringsproblem refererer lokalisering til å finne ut hvor i bildet er bilen vi har oppdaget.

vi lærer om deteksjonsproblemet der det kan være flere objekter i bildet, og vi må oppdage dem alle og lokalisere dem alle. Hvis vi gjør dette for en autonom kjøreprogram, må vi kanskje oppdage ikke bare andre biler, men kanskje andre fotgjengere og motorsykler eller til og med andre gjenstander. Klassifiseringen og klassifiseringen med lokaliseringsproblemer har vanligvis et stort objekt midt i bildet som vi prøver å gjenkjenne eller gjenkjenne og lokalisere. I motsetning til deteksjonsproblemet kan det være flere objekter, og faktisk kanskje til og med flere objekter av forskjellige kategorier i et enkelt bilde. Ideene vi lærer om bildeklassifisering vil være nyttige for klassifisering med lokalisering, og ideene vi lærer for lokalisering vil vise seg å være nyttige for deteksjon.

hva er lokalisering og gjenkjenning ?

Bilde Klassifisering med lokalisering, objekt lokalisering

Bilde Klassifisering (venstre); Klassifisering med lokalisering (midten); Påvisning av flere objekter(høyre)

la oss begynne med Å snakke Om Klassifisering med lokalisering. Vi er allerede kjent med bildeklassifiseringsproblemet der vi kan legge inn et bilde i en \ (convnet \) med flere lag, og dette resulterer i en vektor av funksjoner som mates til kanskje en \(softmax \) enhet som utgir den forutsagte klassen.

Convolutional Nevrale Nettverk med en softmax utgang

a \(convnet \) med en \ (softmax\) utgang

hvis vi bygger en selvkjørende bil, er kanskje våre objektkategorier en fotgjenger, en bil, en motorsykkel og en bakgrunn (dette betyr ingen av de ovennevnte). Så, hvis det ikke er fotgjenger, ingen bil, ingen motorsykkel, så kan vi ha en utgangsbakgrunn. Dette er våre fire klasser, så vi trenger en \(softmax \) med \(4 \) mulige utganger.

hva med om vi vil lokalisere bilen i bildet også ? For å gjøre det kan vi endre vårt nevrale nettverk for å få noen flere utgangsenheter som sender ut en grenseboks. Spesielt kan vi ha nevrale nettverksutgang \(4 \) flere tall, og disse tallene vil være \(b_x \), \(b_y \), \(b_h\), \(b_w \). Disse \(4 \) tallene parameteriserer markeringsrammen for det oppdagede objektet.

CNN som utganger posisjon av en markeringsboks

Convolutional neural network som utganger posisjon av en markeringsboks

Klassifisering med lokalisering

her brukes notasjonen at øvre venstre punkt på bildet er \((0,0)\), nederst til høyre er \(((1,1)\).

 Markeringsrammen på bil, , objektlokalisering

Markeringsrammen og det er koordinater

Angi markeringsrammen det røde rektangelet krever å spesifisere midtpunktet, så det er punktet \(b_x\), \(b_y\) samt høyden som ville være \(b_h\), samt bredden \(b_w \) av denne markeringsrammen. Nå hvis vårt treningssett ikke bare inneholder objektklasseetiketten, som vårt nevrale nettverk prøver å forutsi her, men det inneholder også \(4 \) flere tall som gir grenseboksen, så kan vi bruke veiledet læring for å gjøre algoritmeutgangene våre ikke bare en klasseetikett, men også \(4 \) parametrene for å fortelle oss hvor er grenseboksen til objektet vi oppdaget. I dette eksemplet kan \(b_x \) være omtrent \(0,5 \) fordi dette er omtrent halvveis til høyre for bildet, \(b_y \) kan være omtrent \(0.7 \) siden det handler om \(70 \) % av veien ned til bildet, kan \(b_h\) være omtrent \(0,3 \) fordi høyden på denne røde firkanten er omtrent \(30 \) % av den totale høyden på bildet, og \(b_w \) kan være omtrent \(0,4 \) fordi bredden på den røde boksen er omtrent \(0,4 \) av den totale bredden på hele bildet.

Definere måletiketten \(y \)

La oss formalisere dette litt mer når det gjelder hvordan vi definerer måletiketten \(Y \) for dette som en veiledet læringsoppgave. La oss definere måletiketten \(Y \). Det kommer til å være en vektor der den første komponenten \(p_c \) skal vise er det et objekt. Hvis objektet er en fotgjenger, en bil eller en motorsykkel, vil \(p_c \) være lik 1, og hvis det er bakgrunnsklassen (hvis det ikke er noen av objektene vi er oppdaget ), vil \(p_c \) være \(0\). Vi kan tenke \(p_c \) står for sannsynligheten for at det er et objekt, sannsynlighet for at en av klassene vi prøver å oppdage er der, noe annet enn bakgrunnsklassen.

vår vektor \(y \) ville være som følger:

$$ y=\begin{bmatrix} p_{c}\\ b_{x}\\b_{h}\\b_{w}\\c_{1}\\c_{2}\\c_{3}\end{bmatrix} $$

Neste, Hvis det er et objekt, vil vi deretter sende ut\(b_x\), \(b_y\), \(b_h\) og \(b_w\), markeringsrammen for objektet vi oppdaget. Og til slutt, hvis det er et objekt, så hvis \(p_c =1\), vil vi også sende ut \(C1\), \(C2 \) og \(C3 \) som forteller er det \(class1 \), \(class 2 \) eller \(class 3 \), med andre ord er det en fotgjenger, en bil eller en motorsykkel. Vi antar at bildet vårt bare har ett objekt, og det meste av disse objektene vises i bildet i denne klassifiseringen med lokaliseringsproblem. La oss gå gjennom et par eksempler.

hvis \(x \) er et treningssettbilde, vil \(y \) ha den første komponenten \(p_c =1\) fordi det er et objekt, vil \(b_x \),\(b_y \), \(b_h\) og \(b_w \) angi grenseboksen. Så, vår etikett trening sett vi trenger markeringsbokser i etikettene.

og så til slutt er dette en bil, så det er \(klasse 2 \). \(C_1 = 0\) fordi det ikke er en fotgjenger, \(C_2=1 \) fordi det er en bil, \(C_3=0 \) siden det ikke er en motorsykkel. Blant \(C_1, C_2, C_3 \) skal maksimalt en av dem være lik \(1 \).

$ $ y= \ begin{bmatrix}1 \ \ b_{x}\ \ b_{y}\ \ b_{h}\ \ b_{w}\\0\\1\\0 \end{bmatrix} $$

Hva om det ikke er noe objekt i bildet? I dette tilfellet \(p_c=0 \) og resten av elementene i denne vektoren kan være et hvilket som helst tall, fordi hvis det ikke er noe objekt i dette bildet, bryr vi oss ikke om hvilken grenseboks av nevrale nettverkutganger, samt hvilken av de tre objektene \(C_1, C_2, C_3 \) det tenker på dette.

$$ y=\begynner{bmatrix}0\\?\\?\\?\\?\\?\\?\\? \end{bmatrix} $ $

Bilbilde (venstre) - naturbilde(høyre)

Eksempler på bilder i et treningssett

Gitt et sett med merkede treningseksempler slik konstruerer vi det: \(x \) inngangsbildet samt \(y \) klassen merker begge bildene der det er et objekt og for bilder der det ikke er noe objekt, og settet av disse vil da definere vårt treningssett.

Tap funksjon

Endelig la oss beskrive tap funksjon vi bruker til å trene nevrale nettverk. Bakken sannhet etiketten var \(y\), og nevrale nettverk utganger noen \(\hat{y}\) hva skal tapet bee.

$ $ l \ venstre (\hat{y},y\høyre) =\venstre (\hat{y}_{1}-y_{1}\høyre )^{2}+\venstre (\hat{y}_{2}-y_{2} \ høyre )^{2}+… + \ venstre (\hat{y} _ {8} – y_{8} \ høyre) ^{2}, y_{1}=1 $$

$$ L \ venstre (\hat{y},y \høyre) = \venstre (\hat{y}_{1}-y_{1} \ høyre )^{2}, y_{1}=0 $$

Legg Merke til at \(y \) her har \(8 \) komponenter(den første raden med tapsfunksjon), så det går fra summen av kvadratene av forskjellen på elementene, og det er tapet hvis \(y_1 =1 \). Det er tilfellet der det er et objekt så \(y_1 \) =\(p_c \). Så, hvis det er et objekt i bildet, kan tapet være summen av kvadrater over alle de forskjellige elementene.

det andre tilfellet er hvis \ (y_1 =0.\ ) Det er hvis dette \(p_c=0 \), i så fall kan tapet være bare \(\hat{y_1}\) minus \(y_1\) kvadrert fordi i det andre tilfellet er resten av komponentene ikke viktige. Alt vi bryr oss om er hvor nøyaktig det nevrale nettverket sender ut \(p_c \) i så fall.

Bare en oppsummering…

Hvis \(y_1=1\), kan vi bruke den kvadrerte feilen til å straffe kvadrert avvik fra prediktoren enn de faktiske utgangene for alle åtte komponenter, mens hvis \(y_1 =0\) så bryr vi oss ikke om gjenværende syv verdier. Alt vi bryr oss om er hvor nøyaktig er vårt nevrale nettverk estimering \(y_1 \) som er lik \(p_c \). Akkurat som en side kommentar for de av dere som ønsker å vite alle detaljene. I praksis kan vi sannsynligvis bruke et sannsynlighetstap for \(C1 \enspace ,C2 \enspace ,C3\enspace \) til \(softmax\) – utgangen, men når du beregner loos, vil den kvadrerte feilen fungere fint.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.