論文地址: 論文
代碼地址: 代碼
這是一篇效果極好的像素級(jí)跟蹤的文章, 發(fā)表在ICCV2023, 可以非常好的應(yīng)對(duì)遮擋等情形, 其根本的方法在于將2D點(diǎn)投影到一個(gè)偽3D(quasi-3D)空間, 然后再映射回去, 就可以在其他幀中得到穩(wěn)定跟蹤.
這篇文章的方法不是很好理解, 代碼也剛開源, 做一下筆記備忘.
0. Abstract
傳統(tǒng)的光流或者粒子視頻跟蹤方法都是用有限的時(shí)間窗口去解決的, 所以他們并不能很好的應(yīng)對(duì)長(zhǎng)時(shí)遮擋, 也不能保持估計(jì)的軌跡的全局連續(xù)性. 為此, 我們提出了一個(gè)完整的, 全局的連續(xù)性的運(yùn)動(dòng)表示方法, 叫做OmniMotion. 具體地, OmniMotion將一個(gè)視頻序列表示成一個(gè)準(zhǔn)-3D的規(guī)范量(quasi-3D canonical volume), 然后通過定義一個(gè)雙射(也就是從平面空間到所謂的canonical的空間), 這樣我們通過一個(gè)準(zhǔn)3D空間, 就可以描述一個(gè)完整的運(yùn)動(dòng)(因?yàn)檠a(bǔ)償了2D缺失的信息).
1. Method
由于對(duì)相關(guān)領(lǐng)域知識(shí)的匱乏, 先略過Introduction和Related Work部分, 先來(lái)看方法.
從整體流程上, OmniMotion將一整個(gè)視頻序列作為輸入, 同時(shí)還輸入不太準(zhǔn)確的帶噪的運(yùn)動(dòng)估計(jì)(例如光流估計(jì)), 然后解出一個(gè)完整的, 全局的運(yùn)動(dòng)軌跡.
那么如何解決遮擋問題呢? 遮擋, 只是在2D的圖像平面下遮擋了, 但是在3D信息中是可以恢復(fù)出來(lái)的. 為此, 我們將場(chǎng)景給投影到某個(gè)3D空間, 這個(gè)空間可以盡可能描述像素完整的運(yùn)動(dòng). 比如說, 第 t 1 t_1 t1?幀的某個(gè)像素 x 1 x_1 x1?, 給投影到這個(gè)3D空間變?yōu)?span id="n5n3t3z" class="katex--inline"> x ′ x' x′, 然后在第 t 2 t_2 t2?幀我們?cè)賹⑦@個(gè) x ′ x' x′投射到2D平面, 就得到了對(duì)應(yīng)的點(diǎn) x 2 x_2 x2?. 由于這個(gè)3D不需要真正的進(jìn)行3D重建(因?yàn)檎嬲?D重建是需要知道相機(jī)的內(nèi)參和外參, 內(nèi)參包括圖像中心的坐標(biāo), 相機(jī)的焦距等, 外參需要知道相機(jī)的朝向等, 是比較復(fù)雜的), 因此我們將該空間成為quasi-3D.
所以具體是如何做的呢?
1.1 規(guī)范3D量的組成
我們將前述的規(guī)范3D量記為 G G G. 和神經(jīng)輻射場(chǎng)(NeRF)一樣, 我們?cè)?span id="n5n3t3z" class="katex--inline"> G G G上定義了一個(gè)基于坐標(biāo)的網(wǎng)絡(luò) F θ F_{\theta} Fθ?, 該網(wǎng)絡(luò)將 G G G中的3D坐標(biāo) u u u映射到密度 σ \sigma σ和顏色 c c c. 其中密度可以告訴我們表面(surface)在這個(gè)3D空間中的位置, 顏色是可以在訓(xùn)練過程中計(jì)算光度損失(photometric loss).
1.2 3D雙射
如前所述, 我們需要定義一個(gè)從本地坐標(biāo)(也就是視頻或圖像坐標(biāo))到quasi-3D空間的一個(gè)映射, 以及逆映射, 這樣我們可以再映射回別的時(shí)間索引的幀找到對(duì)應(yīng)點(diǎn). 然而, 實(shí)際上該工作是將本地的2D坐標(biāo)給提升到3D的(后面會(huì)講如何做的), 然后從提升后的本地3D坐標(biāo)投影到quasi-3D空間. 整個(gè)映射和逆映射的過程如下:
x j = T j ? 1 ° T i ( x i ) x_j = \mathcal{T}_j^{-1}\circ \mathcal{T}_i(x_i) xj?=Tj?1?°Ti?(xi?)
其中 i , j i,j i,j是frame index, 因此, 我們定義的映射是和時(shí)間有關(guān)的. 然而, 中間產(chǎn)物 u = T i ( x i ) u= \mathcal{T}_i(x_i) u=Ti?(xi?)應(yīng)該是與時(shí)間無(wú)關(guān)的.
在實(shí)現(xiàn)上, 映射是用可逆神經(jīng)網(wǎng)絡(luò)(INN)做的.
1.3 計(jì)算運(yùn)動(dòng)
流程上, 我們?cè)?D圖像上的一個(gè)像素 p i p_i pi?, 我們首先將其提升到3D, 變成 p i ′ p_i' pi′?. 方法是在一個(gè)射線上進(jìn)行采樣. 然后用上一節(jié)定義的3D雙射投影到第 j j j幀對(duì)應(yīng)的3D點(diǎn), 最后再降維回2D就可以了.
具體地, 由于我們已經(jīng)將相機(jī)的運(yùn)動(dòng)包含在映射 T \mathcal{T} T內(nèi)了 , 因此我們直接將相機(jī)建模成固定的正交相機(jī). 固定正交相機(jī)的含義是, 物體不再具有近大遠(yuǎn)小的特征. 這樣一來(lái), 我們就可以很容易的將2D坐標(biāo)拓展到3D坐標(biāo). 也就是說, 既然物體的大小不再隨著深度的變化而變化, 那么2D像素點(diǎn) ( x i , y i ) (x_i, y_i) (xi?,yi?)不論深度如何, 它的值(RGB)一直是一樣的, 因此前述的射線可以這樣定義:
r i ( z ) = o i + z d , o i = [ p i , 0 ] ∈ R 3 , d = [ 0 , 0 , 1 ] r_i(z)=o_i+zd, \\ o_i = [p_i, 0] \in \mathbb{R}^3, d = [0, 0, 1] ri?(z)=oi?+zd,oi?=[pi?,0]∈R3,d=[0,0,1]
因此我們?cè)谶@個(gè)射線上采集 K K K個(gè)樣本, 就相當(dāng)于在這個(gè)固定正交相機(jī)拍攝的3D場(chǎng)景中進(jìn)行深度采樣.
然后, 這么一堆樣本, 我們用映射 T i \mathcal{T}_i Ti?投影到quasi-3D空間, 然后再用之前說的映射 F θ F_{\theta} Fθ?轉(zhuǎn)換成密度和顏色的量 ( σ , c ) (\sigma, c) (σ,c), 即, 對(duì)于第 k k k個(gè)樣本:
( σ k , c k ) = F θ ( T i ( x i k ) ) x j k = T j ? 1 ( ( σ k , c k ) ) (\sigma_k, c_k) = F_\theta(\mathcal{T}_i(x_i^k)) \\ x_j^k = \mathcal{T}_j^{-1}((\sigma_k, c_k)) (σk?,ck?)=Fθ?(Ti?(xik?))xjk?=Tj?1?((σk?,ck?))
隨后, 我們根據(jù)第 j j j幀的這 K K K個(gè)對(duì)應(yīng)樣本, 得到第 j j j幀的估計(jì):
x ^ j = ∑ k = 1 K T k α k x j k , where?? T k = Π l = 1 k ? 1 ( 1 ? α l ) , α k = 1 ? exp ? { ? σ k } \hat{x}_j = \sum_{k=1}^KT_k\alpha_kx_j^k, \\ \text{where} ~~T_k=\Pi_{l=1}^{k-1}(1-\alpha_l), \\ \alpha_k = 1-\exp\{-\sigma_k\} x^j?=k=1∑K?Tk?αk?xjk?,where??Tk?=Πl=1k?1?(1?αl?),αk?=1?exp{?σk?}
以上的過程叫做alpha compositing, 是NeRF中一個(gè)常用的技巧. 意義是, 密度實(shí)際上表達(dá)了3D空間中存在物體的可能性, 1 ? exp ? { ? σ k } 1-\exp\{-\sigma_k\} 1?exp{?σk?}就是一種對(duì)概率的衡量. 對(duì)于是否采納第 k k k個(gè)樣本, 重要性為 T k α k T_k\alpha_k Tk?αk?, α k \alpha_k αk?已經(jīng)解釋. T k T_k Tk?的含義是在這之前的樣本的聯(lián)合可信程度, 也就是說, 之前有一個(gè)樣本已經(jīng)比較可信了, 那么這個(gè)樣本就可以更少的采納.
以上是個(gè)人理解
因此, 上面的過程總結(jié)為下圖:
2. Training
這個(gè)工作是用已有的光流方法生成標(biāo)簽, 指導(dǎo)訓(xùn)練的. 這部分重點(diǎn)先記一下?lián)p失函數(shù).
損失函數(shù)由三部分構(gòu)成, 一個(gè)是位置誤差, 也就是坐標(biāo)誤差. 一個(gè)是顏色誤差, 這就是前面 c c c的作用, 還有一個(gè)是因?yàn)橐WC平穩(wěn)性而加入的罰項(xiàng). 其中1, 3項(xiàng)采用1范數(shù), 第二項(xiàng)采用2范數(shù).
Flow loss:
L f l o = ∑ f i → j ∣ ∣ f ^ i → j ? f i → j ∣ ∣ 1 , f ^ i → j = p ^ j ? p i \mathcal{L}_{flo} = \sum_{f_{i \to j}}|| \hat{f}_{i \to j} - f_{i \to j}||_1, \\ \hat{f}_{i \to j} = \hat{p}_j - p_i Lflo?=fi→j?∑?∣∣f^?i→j??fi→j?∣∣1?,f^?i→j?=p^?j??pi?
photometric loss:
L p h o = ∑ i , p ∣ ∣ C ^ i ( p ) ? C i ( p ) ∣ ∣ 2 2 \mathcal{L}_{pho} = \sum_{i, p}|| \hat{C}_{i}(p) - C_i(p)||_2^2 Lpho?=i,p∑?∣∣C^i?(p)?Ci?(p)∣∣22?
smooth loss:
L r e g = ∑ i , x ∣ ∣ x i + 1 ? x i + x i ? 1 ? x i ∣ ∣ 1 \mathcal{L}_{reg} = \sum_{i, x}|| x_{i + 1} - x_i + x_{i - 1} - x_i||_1 Lreg?=i,x∑?∣∣xi+1??xi?+xi?1??xi?∣∣1?
意義是保證前一幀和后一幀的差距盡量小.文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-680451.html
最終的loss是這三項(xiàng)的線性組合.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-680451.html
到了這里,關(guān)于[論文閱讀筆記26]Tracking Everything Everywhere All at Once的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!