Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2022] Estimacija pokreta #6

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
7b9013a
deo uvoda, trecina metode, daisy, deo rezultata
GojakMilica Oct 9, 2022
1bd7b82
Slovne greske, LaTeX, izmenjen deo o generisanju
NovakTJ Oct 15, 2022
d5b06a1
Dodato o modelu i BCD
NovakTJ Oct 16, 2022
34fba3b
Lepse pojasnjen DP deo BCDa
NovakTJ Oct 24, 2022
231b103
Dodato objasnjenje k skupova
NovakTJ Oct 24, 2022
ebe413d
popravljena grcka slova
NovakTJ Oct 25, 2022
641f37b
Dodat latex i pojasnjenja
NovakTJ Nov 9, 2022
77df5b6
Popravljena latex definicija k skupa
NovakTJ Nov 9, 2022
f88fd1a
Dodati grafici zavisnosti u repozitorijum
NovakTJ Nov 9, 2022
d44fdbb
Dodati grafici u izvestaj
NovakTJ Nov 9, 2022
3820662
popravljen jedan dolar, inace latex ne radi svugde
NovakTJ Nov 9, 2022
aeffb13
dodat folder images
NovakTJ Nov 9, 2022
82b0574
gomila komentara resolvovana, latex radi.
NovakTJ Nov 11, 2022
31ede1e
par ispravki
NovakTJ Nov 12, 2022
b14bd3d
dodate ref, opis KITTI, postproc, izmena DAISY
GojakMilica Nov 12, 2022
5cf4cbc
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 13, 2022
b75a49e
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 13, 2022
c9f552b
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 13, 2022
9409bd5
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 13, 2022
da3ae60
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 13, 2022
2a32174
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 13, 2022
8beb7e3
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 13, 2022
74225c0
objasnjen coarse to fine,izbrisan visak, KITTI ref
GojakMilica Nov 13, 2022
6e73ca9
apstrakt
GojakMilica Nov 20, 2022
204fc53
popravljene greske u apstraktu
NovakTJ Nov 20, 2022
f2d2964
Dodat graf apstrakt
NovakTJ Nov 23, 2022
15a00f3
objasnjenu u apstraktu sta su predlozi
NovakTJ Nov 23, 2022
174e8cb
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 25, 2022
7454ae0
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 25, 2022
2bff5d6
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 25, 2022
b2efeff
Update content/2022/estimacija-pokreta.md
NovakTJ Nov 25, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions content/2022/estimacija-pokreta.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,130 @@
title: Estimacija pokreta
summary: Estimacija pokreta pomoću optical flow je projekat rađen na letnjem kampu za stare polaznike 2022. godine od Milice Gojak i Novaka Stijepića.
---
[to do]: <ubaci reference, objasni CRF, ubaci slike, postprocessing>

KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved
## Uvod

Procena kretanja je proces određivanja vektora kretanja koji opisuju prelazak jedne slike u drugu. Predstavlja jedan od osnovnih problema oblasti kompjuterske vizije.

Većina metoda definiše problem estimacije kao problem minimizacije energije.
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

Uprkos njihovim uspesima, ovaj i mnogi drugi pristupi su ograničeni činjenicom da je prostorna regularnost modelirana kao konveksna funkcija. Pretpostavka pomaže optimizaciji, mada dobijenom polju kretanja (eng. *flow field*)
nedostaju oštri prekidi koji postoje u pravom polju kretanja, naročito pri opisivanju kretanja u blizini granica.
Veliki broj istraživača je fokusiran na preformulaciju problema ne bi li bili dopušteni diskontinuiteti.

Roth i Black su proučavali prostorne statistike optičkog protoka i nagovestili da konveksne energije koje koristi većina pristupa estimaciji obezbeđuju samo aproksimaciju statistika protoka. Predlažu korišćenje Markovljevih slučajnih procesa, ali zbog nekonveksnih energija dobijanje zaključka ostaje vrlo izazovan problem i polja kretanja procenjena korišćenjem pristupa kontinualne optimizacije još uvek pate od izglađenih diskontinuiteta.

U oblasti *stereo matching*-a ove poteškoće su prepoznate i potreba za nekonveksnim energetskim funkcijama je razrešena. Korišćenje funkcija je olakšano modeliranjem diskretnih optimizacionih algoritama, poput *graph cut*-ova ili *message passing* koje su često bile u mogućnosti da ostvare približno globalan optimum. Većina stereo tehnika sa najboljim rezultatima se oslanja na diskretnu optimizaciju za minimizaciju energije a ne konveksnih funkcija. Iako se estimacija dispariteta može posmatrati i kao ograničeni slučaj optičkog protoka, malo autora je pokušalo da koristi diskretnu optimizaciju za estimaciju optičkog protoka.
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

U referentnoj metodi(Menze et al. 2015) su predložene tri različite strategije optimizacije diskretnog pristupa. Cilj rada je bio ispitivanje uticaja različitih algoritama na preciznost određivanja optičkog prootka.
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

## Metod

### Generisanje predloga

Polje kretanja se određuje nad parom slika; referentnoj slici i ciljanoj slici (slici koja je uslikana nekoliko trenutaka nakon referentne). Referentnu sliku želimo da pomoću vektora protoka pretvorimo u ciljanu sliku.

Ciljana slika se deli na ćelije visine $h$ i širine $w$. Svaki piksel referentne slike treba dobiti po $K$ predloga destinacije vektora protoka iz svake okolne ćelije ciljane slike, čime se dobija raznovrstan skup predloga od koji će se kasnije birati konačni vektor protoka. Okolne ćelije definišemo kao ćelije u pravougaoniku širine $5\*w$ i visine $5\*h$, centriranom na referentnoj ćeliji. Za svaku ćeliju se koristi nasumična k-d šuma (eng: *randomized k-d tree forest*) za deskriptore piksela koji pripadaju toj ćeliji. To je efikasna struktura za nalaženje $K$ piksela najbližih datom pikselu, po sličnosti deskriptora računatih DAISY algoritmom. Za razliku od referentne metode koja čuva sve k-d šume tokom generisanja predloga, naša metoda pravi k-d šumu za jednu ćeliju, iskoristi je za nalaženje najsličnijih piksela u ćelijama u okolini i više je ne čuva. Za pravljenje k-d šuma koristi se algoritam iz biblioteke FLANN[^10].
NovakTJ marked this conversation as resolved.
Show resolved Hide resolved

Menhetn norma razlike deskriptorskih vektora početnog i krajnjeg piksela nekog predloga rednog broja $l$ u pikselu $(x,y)$ se čuva kao *cena* tog vektora protoka, $\varphi_{(x,y)}(l)$. Odseca se iznad granične vrednosti $\tau_\phi$ i koristi se u daljim proračunima. Vektori protoka između piksela koji su slični po DAISY algoritmu imaju malu cenu.

Iz skupa predloga svakog piksela se bira vektor protoka sa najmanjom cenom i koristi se kao najbolji vektor protoka tog piksela pre dalje obrade. Time dobijamo prvi rezultat za polje protoka slike.

Susedni pikseli često imaju sličan vektor protoka. Zato se dodatno uzima $N$ nasumičnih piksela iz lokalne Gausove distribucije centrirane na referentnom pikselu i iz svakog od njih bira vektor protoka sa najmanjom cenom. On se dodaje u skup predloga prvobitnog piksela, ako već nije prisutan. U slučaju da jeste, naša metoda ga ne dodaje, za razliku od referentne metode koja dodaje sledeći najbolji vektor protoka tog piksela. Zbog toga ne mora da sortira sve predloge iz datog piksela, čime dobija na efikasnosti, ali broj predloga nije isti za svaki piksel.

#### DAISY

DAISY je algoritam koji pretvara lokalne regione slike u niskodimenzionalne invarijantne deskriptore koji mogu da se koriste za uparivanje i klasifikaciju.

Slično SIFT deskriptoru, DAISY je 3D histogram gradijenata lokacija i orijentacija. Razlika leži u dva aspekta.
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved
Jedna je da se u SIFT-u za konvolucije gradijenata u određenim smerovima koriste težinske sume normi gradijenata, dok DAISY koristi nekolino Gausovih filtera. Ovo doprinosi efikasnom računanju deskriptora na svakoj lokaciji piksela, zato što histogram treba da se izračuna samo jednom po regiji i može se koristiti za sve okolne piksele. Druga razlika je da DAISY koristi kružnu konfiguraciju komšija umesto pravougaone koje koristi SIFT. Za datu ulaznu sliku $I$, određen broj mapa orijentacija $G_o$, jedna za svaki procenjeni pravac $o$, su prvo izračunati. Formalno su definisani kao:


$$G_o = \left(\frac{\partial I}{\partial o} \right) ^+ $$

Gde $+$ znači da su samo pozitivne vrednosti sačuvane da bi se održala polarnost intenziteta promena. Nad svakom mapom orijentacija, koja predstavlja gradijentne norme za taj pravac na svim lokacijama piksela, se nekoliko puta vrši Gausova konvolucija sa kernelima različitih standardnih devijacija da bi se dobile konvoluirane orijentacione mape. Efikasnost DAISY algoritma proizilazi upravo odavde, zato što su Gausovi filteri razdvojivi i zato se konvolucije mogu vršiti vrlo efikasno. Ovo znači da se konvolucije sa velikim kernelom mogu računati iz nekoliko uzastopnih konvolucija sa manjim kernelima. Stoga se smanjuje količina računanja.

Na svakoj lokaciji piksela, njegova okolina je podeljena u krugove različitih veličina lociranih na seriji koncentričnih prstenova. Prečnik svakog kruga je proporcionalan njegovoj udaljenosti od centraknog piksela i standardna devijacija Gausovog kernela je proporcionalna veličini kruga. Unutar svakog kruga je napravljen vektor sabiranjem svih

Postoje 4 glavna parametra koji određuju izgled DAISY deskriptora: prečnik oblasti komšija ($R$), broj izdvojenih orijentacija ($o$), broj konvolucionih orijentacionih prstenova ($r$) i broj krugova na svakom prstenu ($c$).

### Random Field Model

Za par predloga $l$ i $k$ susednih piksela $p$ i $q$ definišemo *cenu slaganja* $\psi_{\mathbf{p}, \mathbf{q}}\left(l,k\right)$ kao Menhetn normu njihove razlike. Kao i cena vektora protoka, odsečena je odozgo sa $\tau_\psi$.

Polje protoka je modelirano kao Markovljev slučajni proces. Problem procene pokreta je sveden na minimizaciju zbira cena vektora protoka i cena slaganja.
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

$$ \lambda \sum\_{\mathbf{p}} \varphi\_{\mathbf{p}}(l\_{\mathbf{p}})+\sum\_{\mathbf{p} \sim \mathbf{q}} \psi\_{\mathbf{p}, \mathbf{q}}\left(l\_{\mathbf{p}}, l\_{\mathbf{q}}\right) $$

Vrednost $\lambda$ je težinski faktor. Simbolom $\sim$ su označeni susedni pikseli $\mathbf{p}$ i $\mathbf{q}$ na slici, a simbolom $l_\mathbf{p}$ redni broj predloga izabranog kao konačni vektor protoka piksela $\mathbf{p}$.

### Pronalaženje optimalnih vektora

U svakom trenutku se čuva trenutno polje protoka, i ukupna cena se postepeno smanjuje odabirom bolje kombinacije vektora protoka iz skupa predloga svakog piksela. To se radi pomoću spuštanja po blokovima koordinata (eng: *block coordinate descent*), nalaženjem minimalnog zbira cena u pojedinačnom redu ili koloni piksela na slici. Ovo ne garantuje nalaženje globalnog minimuma cene, što je NP-težak problem, ali garantuje smanjivanje ukupne cene slike u svakom koraku spuštanja. Iako deluje da mogu biti od pomoći, u originalnom radu je pokazano da korišćenje algoritama detekcije ivica u ovom delu programa daje gore rezultate, tako da nisu korišćeni.

U pojedinačnom redu piksela je potrebno naći kombinaciju vektora protoka iz predloga koja će dati minimalan zbir cena vektora protoka i cena slaganja, uzimajući u obzir trenutno stanje polja protoka u susedna dva reda. Cene na koje treba paziti su cene vektora protoka, cena slaganja sa pikselima iz susednih redova i cena slaganja sa pikselima iz istog reda.

Problem minimizacije je rešen matricom $C$, čije su koordinate pozicija piksela u redu i redni broj trenutnog predloga u tom pikselu. Za red $y$ se matrica algoritmom dinamičkog programiranja popunjava po jednačinama:

$$ \mathbf{C}(x, l) =\lambda \varphi\_{(x, y)}(l)+\psi\_{(x, y),(x, y-1)}\left(l, l\_{(x, y-1)}^\*\right)+\psi\_{(x, y),(x, y+1)}\left(l, l\_{(x, y+1)}^\*\right) $$

$$
\mathbf{C}(x, l)=\mathbf{C}(x, l)+\min \_{0 \leq k < L(x,y)}\left(\psi\_{(x, y),(x-1, y)}(l, k)+\mathbf{C}(x-1, k)\right)
$$

Algoritam kreće od početka reda piksela, i u $\mathbf{C}(x, l)$ čuva najmanju od kumulativnih cena svih kombinacija u delu reda od početnog piksela do piksela $(x,y)$, koje se završavaju predlogom rednog broja $l$ tog piksela. Predlozi označeni sa $l^*$ su trenutni predlozi iz susednih redova, a $L(x,y)$ broj predloga piksela $(x,y)$. Sami vektori protoka koji sačinjavaju kombinaciju date ukupne cene se ne čuvaju, već se najbolja kombinacija rekonstruiše idući unazad kroz matricu nakon što se popuni do kraja. Stari predlozi vektora se zamene novim i kreće se sa obradom sledećeg reda.

Minimum u drugoj jednačini se nalazi pomoću *skupova sličnih predloga*.

#### Skupovi sličnih predloga

Bez modifikacija algoritma, bilo bi neophodno računati cene slaganja svakog para vektora protoka iz svaka dva susedna piksela u redu. Radi optimizacije možemo koristiti činjenicu da su cene slaganja odsečene. Naša metoda pre BCD-a za svaki par susednih piksela pravi skupove sličnih predloga, označenih $\mathcal{S}$, koji za svaki predlog jednog od njih čuvaju redne brojeve predloga drugog piksela koji daju cenu slaganja manju od granične vrednosti, $\tau_\psi$.

$$ \mathcal{S}\_{\mathbf{p}, \mathbf{q}, l}=\\\{ 0 \leq k < L(x,y) | \psi\_{\mathbf{p}, \mathbf{q}}(l,k)<\tau\_\psi \\\} $$

Algoritam mora da računa samo cene slaganja za predloge prisutne u k-skupovima. Zbog raznovrsnosti predloga, velika većina cena slaganja je odsečena, što čini skupove malim i ubrzava algoritam. Minimum u jednačini popunjavanja matrice za predlog $l$ piksela $(x,y)$ je koristi minimum vrednosti $a$ i $b$, gde je $a$ najbolja vrednost dobijena koristeći predloge iz relevantnih skupova sličnih predloga, a $b$ vrednost koja podrazumeva cenu slaganja odsečenu na $\tau_\psi$.

$$
a = \min \_{k \in \mathcal{S}\_{(x, y),(x-1, y), l}}(\psi\_{(x, y),(x-1, y)}(l, k)+\mathbf{C}(x-1, k))
$$

$$
b=\tau_\psi+\min \_{0 \leq k < L(x,y)}\left(\mathbf{C}(x-1, k)\right)
$$

### Baza podataka

(Malo o bazi)
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

### Postprocesiranje
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

## Rezultati

### Kvantitativni rezultati

Uspešnost algoritma je merena na osnovu dve metrike: srednja greška i procenat pogrešnih piksela. Srednja greška je računata kao srednja vrednost zbira kvadrata razlike komponenata istinitog vektora pomeraja i naše procene. Pogrešan piksel se smatra onaj čija je greska veća od 3 piksela. Za evaluaciju su korišćeni podaci iz KITTI baze koja sadrži parove uzastopnih slika sa primerima manjih i većih pomeraja. Svaki par slika u skupu za trening sadrži i istinito polje pokreta.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Referenca na KITTI.

Tabela prikazuje zavisnost metrike od broja izvršenih BCD-ova. Testiranja su vršena nad skupom od po sedam parova slika.
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

| BCD | Srednja greška | Procenat pogrešnih piksela|
| ----------- | ----------- | ------------------------|
| 0 | 13.81 | 30.97 |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rekli smo da na ovom mestu treba dodati merne nesigurnosti, za sve vrednosti koje su usrednjene treba izračunati standardnu devijaciju i zabeležiti pored srednje vrednosti, i uskladiti broj cifara srednje vrednosti sa brojem cifara greške. U moje vreme, Stojke bi nas linkovao do ove prezentacije, koja vam i sad može biti od koristi.

| 1 | 6.59 | 21.67 |
|2 | 4.81| 19.2|
|3|4.54| 18.64|
|4|4.41|18.40|
|5|4.36|18.27|
|6| 4.33|18.20|
|7|4.30|18.15|

![Srednja greska](/images/2022/estimacija-pokreta/a.svg)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kad ovo budete ponovo izračunavali, dodajte i error bar.


![Ppp](/images/2022/estimacija-pokreta/b.svg)
Comment on lines +121 to +123
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Molim vas da u alternativnom tekstu napišete opis slike koji bi imao smisla osobama koje ne mogu da vide sliku, i takođe da imena fajlova budu smislena.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pomenuli smo da za procenat pogrešnih piksela ne moramo praviti grafik, već samo za srednju grešku.


Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Na ovom mestu fali zaključak kada ga budete imali, dodati nakon rezultata.

## Literatura

Roth, S., Black, M.J.: On the spatial statistics of optical flow. IJCV 74(1), 33–50 (2007)
KockaAdmiralac marked this conversation as resolved.
Show resolved Hide resolved

prepravi brojeve milice!

[10]: Muja, M., & Lowe, D. (2009). Flann-fast library for approximate nearest neighbors user manual. Computer Science Department, University of British Columbia, Vancouver, BC, Canada, 5.
Loading