Articles

#021 lokalizace objektů CNN

lokalizace objektů

detekce objektů je jednou z oblastí počítačového vidění, která exploduje a funguje mnohem lépe než před pár lety. Za účelem vybudování detekce objektů se nejprve dozvíme o lokalizaci objektů. Začněme definováním toho, co to znamená.

již jsme řekli, že úkolem klasifikace obrázků je podívat se na obrázek a říct, zda existuje auto nebo ne. Klasifikace s lokalizací znamená nejen, že musíme označit objekt jako auto, ale také umístit ohraničující rámeček nebo nakreslit obdélník kolem polohy automobilu v obraze. V termínu klasifikace s lokalizačním problémem se lokalizace týká zjištění, kde na obrázku je auto, které jsme detekovali.

dozvíme se o problému detekce, kde by mohlo být na obrázku více objektů a musíme je všechny detekovat a lokalizovat. Pokud to děláme pro aplikaci pro autonomní řízení, možná budeme muset detekovat nejen jiná auta, ale možná i další chodce a motocykly nebo dokonce jiné předměty. Klasifikace a klasifikace s lokalizačními problémy mají obvykle jeden velký objekt uprostřed obrazu, který se snažíme rozpoznat nebo rozpoznat a lokalizovat. Naproti tomu v detekčním problému může být více objektů a ve skutečnosti možná i více objektů různých kategorií v rámci jednoho obrazu. Nápady, které se dozvíme o klasifikaci obrazu, budou užitečné pro klasifikaci s lokalizací a pak se nápady, které se naučíme pro lokalizaci, ukážou jako užitečné pro detekci.

co jsou lokalizace a detekce?

 klasifikace obrazu s lokalizací, lokalizace objektu

klasifikace obrazu (vlevo); klasifikace s lokalizací( uprostřed); detekce více objektů (vpravo)

začněme mluvením o klasifikaci s lokalizací. Jsme již obeznámeni s problémem klasifikace obrazu, ve kterém bychom mohli vložit obrázek do \(convnet \) s více vrstvami, a to má za následek vektor vlastností, který je přiváděn do jednotky \(softmax \), která vysílá předpovídanou třídu.

konvoluční neuronová síť s výstupem softmax

a \(convnet \) s výstupem \(softmax\)

pokud stavíme auto s vlastním pohonem, možná naše kategorie objektů jsou chodec, auto, motocykl a pozadí (to znamená nic z výše uvedeného). Takže, pokud není chodec, žádné auto, žádný motocykl, pak můžeme mít výstupní pozadí. Toto jsou naše čtyři třídy, takže potřebujeme \(softmax \) s \(4 \) možnými výstupy.

Co kdybychom chtěli lokalizovat auto i na obrázku ? K tomu můžeme změnit naši neuronovou síť tak, aby měla několik dalších výstupních jednotek, které vydávají ohraničující krabici. Zejména můžeme mít výstup neuronové sítě \(4 \) více čísel a tato čísla budou \(b_x \), \(b_y \), \(b_h\), \(b_w \). Tato čísla \(4 \) parametrizují ohraničující rámeček detekovaného objektu.

CNN, která vypisuje polohu ohraničujícího boxu

konvoluční neuronové sítě, která vypisuje polohu ohraničujícího boxu

klasifikace s lokalizací

zde se používá notace, že levý horní bod obrazu je \((0,0)\), pravý dolní je \((1,1)\).

ohraničující rámeček na car,, object localization

ohraničující rámeček a jeho souřadnice

zadání ohraničujícího pole červený obdélník vyžaduje zadání středu, takže to je bod \(b_x\), \(b_y\), stejně jako výška, která by byla \(b_h\), stejně jako šířka \(b_w \) tohoto ohraničujícího pole. Nyní, pokud naše tréninková Sada obsahuje nejen štítek třídy objektů, který se naše neuronová síť snaží předpovědět zde, ale také obsahuje \(4 \) další čísla, která dávají ohraničující rámeček, pak můžeme pomocí učení pod dohledem vytvořit z našeho algoritmu nejen štítek třídy, ale také parametry \(4\), které nám řeknou, kde je ohraničující rámeček objektu, který jsme detekovali. V tomto příkladu může být \(b_x \) asi \(0.5 \), protože je to asi v polovině cesty doprava k obrázku, \(b_y \) může být asi \(0.7 \) protože to je asi \(70 \) % cesty dolů k obrázku, \(b_h\) může být asi \(0.3\), protože výška tohoto červeného čtverce je asi \(30 \) % celkové výšky obrázku a \(b_w \) může být asi \(0.4\), protože šířka červeného pole je asi \(0.4 \) celkové šířky celého obrázku.

definování cílového štítku \(y \)

pojďme to trochu formalizovat, pokud jde o to, jak definujeme cílový štítek \(Y\) jako úkol pod dohledem. Definujme cílový štítek \(Y \). Bude to vektor, kde první komponenta \(p_c \) ukáže, že existuje objekt. Pokud je objekt chodec, auto nebo motocykl, \(p_c \) se bude rovnat 1, a pokud je to třída pozadí (pokud to není žádný z objektů, které jsme detekovali ), pak \(p_c \) bude \(0 \). Můžeme si myslet, že \(p_c \) znamená pravděpodobnost, že existuje objekt, pravděpodobnost, že jedna z tříd, kterou se snažíme zjistit, je tam, něco jiného než třída pozadí.

náš vektor \(y \) by byl následující:

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

dále, pokud existuje objekt, chceme výstup \(b_x\), \(b_y\), \(b_h\) a \(B_W\), ohraničující rámeček pro objekt, který jsme detekovali. A konečně, pokud existuje objekt, takže pokud \(p_c =1 \), chceme také výstup \(C1 \), \(C2 \) a \(C3 \), který říká, je to \(class1 \), \(class 2 \) nebo \(class 3 \), jinými slovy je to chodec, auto nebo motocykl. Předpokládáme, že náš obrázek má pouze jeden objekt a nejvíce z těchto objektů se objeví na obrázku v této klasifikaci s lokalizačním problémem. Podívejme se na několik příkladů.

pokud \(x \) je obraz tréninkové sady, pak \(y \) bude mít první komponentu \(p_c =1\), protože existuje objekt, pak \(b_x\), \(b_y\), \(b_h\) a \(b_w \) určí ohraničující rámeček. Takže naše tréninková sada štítků budeme potřebovat ohraničující krabice na štítcích.

a nakonec je to auto, takže je to \(třída 2 \). \(C_1=0 \) protože to není chodec, \(C_2=1 \) protože je to auto, \(C_3=0 \) protože to není motocykl. Mezi \(C_1,C_2,C_3 \) by se nanejvýš jeden z nich měl rovnat \(1 \).

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

co když na obrázku není žádný objekt? V tomto případě \(p_c=0 \) a zbytek prvků tohoto vektoru může být libovolné číslo, protože pokud na tomto obrázku není žádný objekt, pak je nám jedno, jaké ohraničující pole výstupů neuronové sítě a který ze tří objektů \(C_1,C_2,C_3 \) si o tom myslí.

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

Car image (left) - nature image (right)

Příklady obrázků v tréninkové sadě

vzhledem k sadě označených tréninkových příkladů to je způsob, jak jej konstruujeme: \(x \) vstupní obraz a \(y \) štítek třídy jak obrázky, kde je objekt, tak pro obrázky, kde není žádný objekt, a jejich sada pak definuje naši tréninkovou sadu.

ztrátová funkce

nakonec popíšeme ztrátovou funkci, kterou používáme k trénování neuronové sítě. Označení ground truth bylo \(y\) a neuronová síť vypíše nějaké \(\hat{y} \), co by měla ztráta včela.

$$ L \ left (\hat{y}, y \right) =\left (\hat{y}_{1} – y_{1} \right) ^{2}+\left ( \hat{y}_{2}-y_{2} \right) ^{2}+…+\left ( \hat{y}_{8}-y_{8} \right) ^{2}, y_{1}=1 $$

$$ L \ left (\hat{y},y \right) = \left (\hat{y}_{1}-y_{1} \ right )^{2}, y_{1}=0 $$

Všimněte si, že \(y \) zde má \(8 \) komponenty (první řádek funkce ztráty), takže to jde ze součtu čtverců rozdílu prvků, a to je ztráta, pokud \(y_1 =1 \). To je případ, kdy existuje objekt so \(y_1 \) =\(p_c \). Pokud je tedy na obrázku objekt, může být ztráta součtem čtverců nad všemi různými prvky.

druhým případem je if \(y_1 =0.\ ) To je, pokud to \(p_c=0 \), v tomto případě ztráta může být jen \(\hat{y_1} \) minus \ (y_1 \) na druhou, protože v tomto druhém případě nejsou všechny ostatní komponenty důležité. Jediné, co nás zajímá, je, jak přesně je neuronová síť výstup \(p_c \) v tomto případě.

jen rekapitulace …

pokud \(y_1=1 \), pak můžeme pomocí kvadratické chyby penalizovat kvadratickou odchylku od prediktoru než skutečné výstupy pro všech osm komponent, zatímco pokud \(y_1 =0\) pak nám nezáleží na zbývajících sedmi hodnotách. Vše, co nás zajímá, je, jak přesně naše neuronová síť odhaduje \(y_1 \), což se rovná \(p_c \). Stejně jako vedlejší komentář pro ty z vás, kteří chtějí znát všechny podrobnosti. Pro zjednodušení popisu jsme použili kvadratickou chybu, v praxi bychom pravděpodobně mohli použít ztrátu pravděpodobnosti pro \(C1 \ enspace, C2 \enspace, C3 \ enspace \) na \(softmax \) výstup, ale při výpočtu loos bude kvadratická chyba fungovat dobře.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.