Articles

#021 CNN Object Localization

Object Localization

detectarea obiectelor este una dintre zonele de viziune computerizată care explodează și funcționează mult mai bine decât acum câțiva ani. Pentru a construi detectarea obiectelor, învățăm mai întâi despre localizarea obiectelor. Să începem prin a defini ce înseamnă asta.

am spus deja că sarcina de clasificare a imaginii este să privim o imagine și să spunem că există o mașină sau nu. Clasificarea cu localizare înseamnă nu numai că trebuie să etichetăm un obiect ca mașină, ci și să punem o cutie de delimitare sau să desenăm un dreptunghi în jurul poziției mașinii din imagine. În clasificarea termenul cu problema de localizare, localizare se referă la imaginind în cazul în care în imagine este masina am detectat.

vom afla despre problema de detectare unde ar putea exista mai multe obiecte în imagine și trebuie să le detectăm pe toate și să le localizăm pe toate. Dacă facem acest lucru pentru o aplicație de conducere autonomă, atunci s-ar putea să fie nevoie să detectăm nu doar alte mașini, ci poate alți pietoni și motociclete sau chiar alte obiecte. Clasificarea și clasificarea cu probleme de localizare au de obicei un obiect mare în mijlocul imaginii pe care încercăm să-l recunoaștem sau să-l recunoaștem și să-l localizăm. În contrast, în problema de detectare pot exista mai multe obiecte, și, de fapt, poate chiar mai multe obiecte de diferite categorii într-o singură imagine. Ideile pe care le învățăm despre clasificarea imaginilor vor fi utile pentru clasificarea cu localizare și apoi ideile pe care le învățăm pentru localizare se vor dovedi utile pentru detectare.

ce sunt localizarea și detectarea ?

Clasificarea imaginii cu localizare, localizarea obiectelor

Clasificarea imaginii (stânga); Clasificarea cu localizare (centru); detectarea mai multor obiecte (dreapta)

să începem prin a vorbi despre clasificarea cu localizare. Suntem deja familiarizați cu problema de clasificare a imaginii în care am putea introduce o imagine într-un \(convnet \) cu mai multe straturi, iar acest lucru are ca rezultat un vector de caracteristici care este alimentat poate unei unități \(softmax \) care emite clasa prezisă.

rețea neuronală convoluțională cu ieșire softmax

a \(convnet \) cu ieșire softmax

dacă construim o mașină cu conducere automată, poate categoriile noastre de obiecte sunt un pieton, o mașină, o motocicletă și un fundal(aceasta nu înseamnă nimic din cele de mai sus). Deci, dacă nu există nici un pieton, nici o mașină, nici o motocicletă, atunci putem avea un fundal de ieșire. Acestea sunt cele patru clase ale noastre, deci avem nevoie de un \(softmax \) cu \(4 \) ieșiri posibile.

Ce zici dacă vrem să localizăm mașina și în imagine ? Pentru a face acest lucru, ne putem schimba rețeaua neuronală pentru a mai avea câteva unități de ieșire care produc o cutie de delimitare. În special, putem avea ieșirea rețelei neuronale \(4\) mai multe numere, iar acele numere vor fi \(b_x\), \(b_y\), \(b_h\), \(b_w\). Aceste numere \(4 \) parametrizează caseta de încadrare a obiectului detectat.

CNN care emite poziția unei cutii de încadrare

rețea neuronală convoluțională care emite poziția unei cutii de încadrare

clasificare cu localizare

aici se folosește notația că punctul din stânga sus al imaginii este \((0,0) \), dreapta jos este \((1,1) \).

caseta de delimitare pe mașină, , localizarea obiectului

caseta de delimitare și coordonatele sale

specificarea casetei de delimitare dreptunghiul roșu necesită specificarea punctului de mijloc, deci acesta este punctul \(b_x \), \(b_y \) precum și înălțimea care ar fi \(b_h\), precum și lățimea \(b_w \) a acestei cutii de delimitare. Acum, dacă setul nostru de antrenament conține nu doar eticheta clasei de obiecte, pe care rețeaua noastră neuronală încearcă să o prezică aici, dar conține și \(4 \) numere suplimentare care dau caseta de încadrare, atunci putem folosi învățarea supravegheată pentru a face ca algoritmul nostru să producă nu doar o etichetă de clasă, ci și parametrii \(4 \) pentru a ne spune unde este caseta de încadrare a obiectului pe care l-am detectat. În acest exemplu \(b_x\) ar putea fi despre \(0.5\) deoarece acest lucru este de aproximativ jumătate de drum spre dreapta la imagine, \(b_y\) ar putea fi despre \(0.7 \) deoarece este vorba despre \(70\) % din drumul până la imagine, \(b_h\) ar putea fi despre \(0.3\) deoarece înălțimea acestui pătrat roșu este despre \(30\) % din înălțimea totală a imaginii și \(b_w\) ar putea fi despre \(0.4\) deoarece lățimea casetei roșii este despre \(0.4\) din lățimea totală a întregii imagini.

definirea etichetei țintă \(y\)

să formalizăm acest lucru un pic mai mult în ceea ce privește modul în care definim eticheta țintă \(Y \) pentru aceasta ca o sarcină de învățare supravegheată. Să definim eticheta țintă \(Y \). Va fi un vector în care prima componentă \(p_c \) va arăta că există un obiect. Dacă obiectul este un pieton, o mașină sau o motocicletă, \(p_c \) va fi egal cu 1, iar dacă este clasa de fundal (dacă nu este niciunul dintre obiectele pe care le-am detectat ), atunci \(p_c \) va fi \(0 \). Putem crede că \(p_c \) înseamnă probabilitatea că există un obiect, probabilitatea ca una dintre clasele pe care încercăm să le detectăm să fie acolo, altceva decât clasa de fundal.

vectorul nostru \(y \) ar fi după cum urmează:

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

apoi, în cazul în care există un obiect, atunci vrem să ieșire \(b_x\), \(b_y\), \(b_h\) și \(B_W\), caseta de încadrare pentru obiectul pe care l-am detectat. Și, în sfârșit, dacă există un obiect, deci dacă \(p_c =1\), vrem să scoatem și \(C1\), \(C2 \) și \(C3 \) care spune este \(class1\), \(class 2 \) sau \(class 3\), cu alte cuvinte este un pieton, o mașină sau o motocicletă. Presupunem că imaginea noastră are un singur obiect și cel mai unul dintre aceste obiecte apare în imagine în această clasificare cu problema de localizare. Să trecem prin câteva exemple.

dacă \(x \) este o imagine a setului de antrenament, atunci \(y \) va avea prima componentă \(p_c =1\) deoarece există un obiect, atunci \(b_x \),\(b_y \), \(b_h\) și \(b_w \) vor specifica caseta de încadrare. Deci, setul nostru de formare etichetă vom avea nevoie de cutii de încadrare în etichete.

și apoi în cele din urmă aceasta este o mașină, deci este \(clasa 2 \). \(C_1 = 0\) pentru că nu este un pieton, \(C_2=1\) pentru că este o mașină, \(C_3=0\) deoarece nu este o motocicletă. Printre \(C_1,C_2, C_3 \) cel mult unul dintre ele ar trebui să fie egal cu \(1 \).

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

ce se întâmplă dacă nu există nici un obiect în imagine? În acest caz \(p_c = 0\) și restul elementelor acestui vector pot fi orice număr, deoarece dacă nu există niciun obiect în această imagine,atunci nu ne pasă ce casetă de delimitare a ieșirilor rețelei neuronale,precum și care dintre cele trei obiecte \(C_1, C_2, c_3\) se gândește la acest lucru.

$ $ y = \ începe{bmatrix}0\\?\\?\\?\\?\\?\\?\\? \ end{bmatrix} $ $

Car image (stânga) - nature image(dreapta)

Exemple de imagini dintr-un set de antrenament

dat fiind un set de exemple de antrenament etichetate, acesta este modul în care îl construim: \(x \) imaginea de intrare, precum și \(y \) eticheta clasei atât imaginile în care există un obiect, cât și imaginile în care nu există obiect, iar setul acestora va defini apoi setul nostru de antrenament.

funcția de pierdere

în cele din urmă să descriem funcția de pierdere pe care o folosim pentru a instrui rețeaua neuronală. Eticheta de adevăr la sol a fost \(y\), și ieșiri de rețea neuronale unele \(\hat{y}\) ceea ce ar trebui să albina pierdere.

$$ l \ stânga (\pălărie{y},y\dreapta) = \ stânga (\pălărie{y} _ {1} – Y_{1} \ dreapta) ^{2}+\stânga ( \pălărie{y}_{2}-Y_{2} \dreapta )^{2}+…+\stânga ( \pălărie{y}_{8}-y_{8} \dreapta )^{2}, y_{1}=1 $$

$$ L \ stânga (\pălărie{y},y \dreapta) = \stânga (\pălărie{y}_{1}-y_{1} \ dreapta )^{2}, y_{1}=0 $$

observați că \(y \) aici are \(8\) componente (primul rând al funcției de pierdere), astfel încât merge de la suma pătratelor diferenței elementelor, și că este pierderea dacă \(y_1 =1\). Acesta este cazul în care există un obiect so \(y_1 \)=\(p_c \). Deci, dacă există un obiect în imagine, atunci pierderea poate fi suma pătratelor peste toate elementele diferite.

celălalt caz este dacă \(y_1 =0.\ ) Asta dacă acest \(p_c=0\), în acest caz pierderea poate fi doar \(\hat{y_1}\) minus \(y_1\) pătrat, deoarece în acel al doilea caz toate celelalte componente nu sunt importante. Tot ce ne pasă este cât de precis este rețeaua neuronală care emite \(p_c \) în acest caz.

doar o recapitulare…

dacă \(y_1 =1 \), atunci putem folosi eroarea pătrată pentru a penaliza abaterea pătrată de la predictor decât ieșirile reale pentru toate cele opt componente, în timp ce dacă \(y_1 = 0\) atunci nu ne pasă de șapte valori rămase. Tot ce ne pasă este cât de precis este estimarea rețelei noastre neuronale \(y_1 \) care este egală cu \(p_c \). La fel ca un comentariu lateral pentru cei dintre voi care doresc să cunoască toate detaliile. Am folosit eroarea squared doar pentru a simplifica descrierea aici, în practică am putea folosi probabil o pierdere de probabilitate pentru \(C1 \enspace ,C2 \enspace ,C3\enspace \) la ieșirea \(softmax\), dar, la calcularea loos, eroarea squared va funcționa bine.

Lasă un răspuns

Adresa ta de email nu va fi publicată.