Just Go with the Flow: Self-Supervised Scene Flow Estimation[CVPR2020 Oral]

在這裏插入圖片描述
[論文鏈接]

\qquad現有的估計場景流的方法都需要有標註的場景流數據去使用監督的方法訓練網絡。本文作者提出了使用兩個自監督損失函數訓練(場景流估計)網絡的方法,這兩個損失函數分別基於最近鄰和cycle consistency(不知道該怎麼翻譯。。。)。自監督的訓練方法使得大量沒有標註信息的自動駕駛數據集可以用於訓練網絡。使用本篇文章自監督方法訓練的網絡,表現與目前最好的使用監督方法學習的網絡效果相當。如果使用自監督訓練並在小規模標註數據上監督學習,可以得到超越當前最好方法的表現。

\qquad假定估計的流爲D^={di^}N\hat{\mathcal{D}}=\{\hat{d_i}\}^N,真實流爲D={di}N\mathcal{D}^*=\{d_i^*\}^N。則監督損失函數定義爲:
Lgt=1NiNdid^i2 \mathcal{L}_{gt}= \frac{1}{N} \sum_{i}^{N}{||d_i^*-\hat{d}_i||^2}
上述的損失函數是有用的,因爲它數學等價於終點誤差,論文中使用它作爲評估度量。合成數據上流的標註很好計算,然而對於真實數據就需要大量的人工標註。而且有標註的場景流數據集很少。已有的工作表明在合成數據上訓練,在目標應用域的真數據上fine-tuning可以得到很大的提升。
在這裏插入圖片描述
\qquad接下來介紹一下文章提出的兩個無監督的loss,假設X\mathcal{X}爲在時刻t捕捉到的點雲,Y\mathcal{Y}爲在時刻t+1捕捉到的點雲,D={di}N,diR3\mathcal{D}=\{d_i\}^N,d_i\in \mathbb{R}^3爲兩幀點雲之間的場景流。
\qquadNearest Neighbor (NN) Loss 在未標註的數據集中,並沒有關於did_i^*的信息,因此也不能使用上面提到的損失函數。受到ICP算法的啓發,這裏用變形後點的最近鄰x^i=xi+d^i\hat{x}'_i=x_i+\hat{d}_i作爲正確對應點的近似。對於每個變形後的點x^iX^\hat{x}'_i\in \hat{\mathcal{X}'},在t+1幀中找到它的最近鄰yiYy_i\in \mathcal{Y}並計算他們之間的距離,如下圖(a)(a)eNNe_{NN}所示:
LNN=1NiNminyiYx^iyi2 \mathcal{L}_{NN}=\frac{1}{N}\sum_{i}^{N}\underset{y_i\in \mathcal{Y}}{min}||\hat{x}'_i-y_i||^2
在這裏插入圖片描述
這個loss可以使得變形的點雲與目標點雲更加接近。但也有一定的缺點,首先如上圖(a)(a)所示,找到的最近鄰並不一定是變形點應該正確對應的點。再者,在點雲稀疏的情況下,並不一定能找到對應點。以上情況可能導致0 loss的出現。所以提出瞭如下的 Cycle Consistency Loss。
\qquadCycle Consistency Loss 爲解決上述問題,引入了另一個自監督損失,如上圖(b)(b)所示。先估計一個前向的流D^=g(X,Y)\hat{\mathcal{D}}=g(\mathcal{X},\mathcal{Y}),每個點xix_i的流d^iD^\hat{d}_i\in \hat{\mathcal{D}} 給定了一個在下一幀中估計的點x^i=xi+d^i\hat{x}'_i=x_i+\hat{d}_i。然後從相反的方向估計流:對每個變形的點x^i\hat{x}'_i估計一個流(D^=g(X^,X)\hat{\mathcal{D'}}=g(\hat{\mathcal{X'}},\mathcal{X}))將其變換回初始的幀中。用反向的流di^\hat{d'_i}變換每個點x^i\hat{x}'_i會得到一個新的點x^i\hat{x}''_i。如果前向和反向的流均正確,那麼這個新的點x^i\hat{x}''_i應該和原始點xix_i相同。這些點之間的誤差ecyclee_{cycle}就是cycle consistency loss:
Lcycle=iNx^ixi2 \mathcal{L}_{cycle}=\sum_{i}^{N}||\hat{x}''_i-x_i||^2
然而實際上這樣實現cycle loss進行自監督訓練時並不能得到穩定的結果。原因是估計的流導致變形點雲的結構發生畸變,而畸變的點雲又作爲反向流估計的輸入。爲了解決畸變問題,文中使用變換點x^i\hat{x}'_i在t+1幀中的最近鄰yiy_i作爲反向傳播的錨點。最近鄰yiy_i的使用,可以在循環中穩定變形點雲結構的同時保持點的對應關係。效果如下圖所示。由於錨點作爲循環反向傳播的一部分,所以這個loss稱作“anchored cycle consistency loss”。
在這裏插入圖片描述
\qquad計算反向流的具體過程如下:
(1)\qquad(1) 首先計算前向流D^=g(X,Y)\hat{\mathcal{D}}=g(\mathcal{X},\mathcal{Y});
(2)\qquad(2) 根據前向流計算變形的點雲:x^i=xi+d^i\hat{x}'_i=x_i+\hat{d}_i;
(3)\qquad(3) 錨點作爲變形點和最近鄰的組合來計算:Xˉ={xˉi}N\bar{\mathcal{X'}}=\{\bar{x}'_i\}^Nxˉi=λx^i+(1λ)yi\bar{x}'_i=\lambda \hat{x}'_i+(1-\lambda)y_i,其中λ\lambda在論文中的取值爲0.5;
(4)\qquad(4) 用得到的錨點計算反向流,使用上面的方式計算cycle loss;
\qquadcycle consistency loss也會出現 0 loss的情況,但使用anchored cycle consistency loss後可以避免這種情況的出現。最後使用兩個loss的和作爲真實誤差的穩定替代:L=LNN+Lcycle\mathcal{L}=\mathcal{L}_{NN}+\mathcal{L}_{cycle}
\qquad此外作者還使用了翻轉訓練集點雲序列的方法增強數據集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章