SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical Flow

caoeryingzi發表於2024-09-26
SEA-RAFT: Simple, Efficient, Accurate RAFT for Optical Flow
Yihan Wang, Lahav Lipson, and Jia Deng
一種比RAFT更簡單、有效、準確率高的光流演算法,比起來RAFT, sea-raft訓練時用了一種新的loss,拉普拉斯混合。SEA-RAFT 是現有方法的2.3倍快,同時保持精確具有可比性。在3090卡上,1080P大小的圖,能達到21fps,比RAFT快3倍。

相比較原始的RAFT主要改進有三點:

  1. laplace 混合loss, 在RAFT中使用的是L1 loss。
  2. 直接回歸初始化光流,在初始狀態,不是從0開始,而是重複使用現有上下文解碼器來直接預測初始光流,然後供應給輸入的frame。
  3. 能夠提升泛化性。

這些改進和現有的RAFT相關工作是垂直的,也就是說可以方便地遷移到別的方法上使用。首先是基於資料集TartanAir進行rigid flow預訓練,而後再進行optical flow訓練。

和光流相關的任務比如點匹配,在存在大位移、外觀變化或均勻區域的情況下,密集流估計容易出錯。 在遮擋的情況下或例如 天空,那裡的預測必然是不準確的。PDCNet不僅估計了準確的對應關係,而且還估計了何時信任它們。它預測了一個穩健的不確定性地圖,識別準確的匹配,並排除不正確和不匹配的畫素。本文引進的MOL需要一個混合的,有一個常量方差,這樣和L1 loss等價,更適合光流的評估標準。這樣在光流中,每一個畫素需要一個準確的反饋,不像點匹配中那樣,是一個匹配的點集合。

備註,此處增加一些額外知識:

又是一堆新領域知識,來自GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose. Zhichao Yin and Jianping S. 中文參考:https://zhuanlan.zhihu.com/p/37671541

與完整的場景理解相比,理解相機的齊次運動相對容易得多,因為大部分割槽域都受到相機的約束。為了從本質上分解三維場景的理解問題,將由相機運動控制的場景級一致性運動稱為rigid flow,區別於物體運動(object motion)。所以計算rigid flow需要把相機運動算出來,透過把target畫素pt對映到source 畫素ps上,然後兩個畫素做差值計算pt-ps,這樣得到rigid flow.

方法

3.1 迭代最佳化

先進行rigid flow預訓練,而後進行optical flow訓練。

兩個解碼器,特徵解碼器F(圖中藍色部分),I1,I2作為輸入,輸出F(I1), F(I2),上下文解碼器C(圖中橙色部分),輸入I1,輸出C(I1)。 然後生成多尺度的4D 關聯Vk,此處詳細的框架可以參考RAFT原文中的圖,如下圖,這個圖中,畫的比較清楚,SEA-RAFT用convnet替換掉了GRU部分。

,RAFT迴圈最佳化光流預測u。每一步都得到一個運動特徵M

返回I1上每個畫素點和I2上臨近畫素之間在半徑r內的相似性。運動特徵向量然後透過一個運動編碼器轉換。RNN但願輸入有一個隱藏狀態h,運動特徵,以及上下文特徵。而後透過flow head得到delta u。

相比較來說,SEA-RAFT需要更少的迭代次數,RAFT相關的演算法一般需要在訓練過程中每一次需要12次迭代,推理時需要32次迭代,而sea-raft訓練過程中只需要4次迭代,推理時需要12次迭代,同時結果已經相當優秀了。

3.2 Mixture-of-Laplace Loss

先前的工作大多是用EPE(endpoint-error loss on all pixels,光流估計中標準的誤差度量,是預測光流向量與真實光流向量的歐式距離在所有畫素上的均值。)進行監督學習,但是光流訓練資料通常包含大量模稜兩可、不可預測的樣本,這樣的資料充滿這個loss資料。作者分析資料發現,這種模稜兩可的情況主導了誤差。

Review of Probabilistic Regression

PS: 機率迴歸問題,目的是點匹配過程中只找到最佳的匹配給預測機率值,而不是一個子集。
給定兩張圖I1,I2,光流真值ugt,訓練誤差損失

在對數空間進行最佳化,就是直接最佳化的值是取對數之後的值。

機率迴歸probablistic regression無法收斂的原因有兩個:1. 迴歸範圍太大,很小值到很大值之間。2. 損失函式來自標準的EPE,這種損失函式只關心L1誤差,不關心不確定性估計。提出了兩個Laplace distributions,一個是針對正常情況,一個是針對模稜兩可的情況,混合稀疏是\alpha=[0,1]

最後loss是這樣的,其中r<1, n表示迭代的次數。

最後根據不同的配置,實驗如下表所示。在實驗中,使用imagenet做預訓練效果會更好,同時loss的使用確實是MOL是更好的,同時把GRU換成了conv,但是可以看到計算量稍微減少了。從實驗結果可以看到,替代掉GRU後,增加block數並不能提升。

整體來看,這篇文章工作沒有RAFT驚豔是肯定的,但是實現了加速這算是解決了痛點。尤其是工程上用的時候,速度很關鍵,可以跑一下試試。作者網站上也公開了很多基於RAFT進行SLAM和3d重建的工作,可以參考。作者之一Jia Deng是L. FeiFei的學生,可能和他們創業成立AI 3d重建公司也有關。

相關文章