1. 程式人生 > 實用技巧 >論文解讀1-LiteFlowNet3: Resolving Correspondence Ambiguity for More Accurate Optical Flow Estimation

論文解讀1-LiteFlowNet3: Resolving Correspondence Ambiguity for More Accurate Optical Flow Estimation

paper連結:http://www.ecva.net/papers/eccv_2020/papers_ECCV/papers/123650171.pdf

github連結:https://github.com/twhui/LiteFlowNet3

liteflownet2連結:https://github.com/twhui/LiteFlowNet

該工程是用caffe實現的,https://github.com/twhui/LiteFlowNet3僅提供inference的部分和網路的prototxt和訓練好的模型, caffe工程與https://github.com/twhui/LiteFlowNet一致,需要訓練的兩者進行結合

目前在光流估計演算法中,Cost Volume和Coarse-to-Fine策略被大量的演算法和實驗驗證是work的。然而當影象存在遮擋(假設ref和src兩影象,要估計的是ref->src的光流,某些區域是在ref可見,但是在src由於前後遮擋關係是不可見,這些區域稱之為遮擋區域)和homogeneous regions(中文翻譯為同質區域,個人理解是無紋理/重複紋理區域)的時候,構建的Cost Volume會存在一些outliers,如果單純想靠conv去解決這些outliers,在理論上是行不通的。另外,Coarse-to-Fine的策略在非最高層需要一個比較精確的初始值,然而上述的這些outliers,會使得Coarse層產生錯誤的光流估計值,這個會嚴重影響後面Fine層的光流估計。該篇論文主要是為了解決上述兩個問題,提出了以下幾個模組:

  • 文章主要貢獻
    • 提出自適應調節修改cost vector來改善Cost Volume中outliers的問題,個人直觀上的理解是自適應調節的引數代表著該區域是否是遮擋/同質區域,從而將outliers分辨出來,如果是outliers,則選取周圍置信度高的cost來代替該畫素的cost
    • 提出Flow Field Deformation來為Coarse-to-Fine的策略提供比較精確的初始值,它的一個假設是某個畫素與它周圍畫素的光流是一致的/較為接近的,做法是某個畫素置信度較低時,去尋找周圍置信度較高的光流去代替
  • 論文框架

Cost volume是通過:這個公式獲取到的,D為最大匹配半徑,x'需要滿足

  • Cost Volume Modulation

該模組主要作用是去修改Cost Volume去解決Cost Volume中的outliers的問題。如上圖所示,(a)通過Modulation Parameter Generator生成\alpha, \beta引數; (b)與其他光流演算法構建Cost Volume類似構建出C,根據(a)步驟生成的\alpha, \beta去修改C得到C_m, 修改公式如下C_m = C \bigotimes \alpha \bigoplus \beta, 其中\bigotimes表示element-wise multiplication,\bigoplus表示element-wise addition。

個人理解該模組如何能夠改善Cost Volume中outliers的問題:

該模組的輸入是confidence map, feature from I1以及cost volume. 通過cost volume和F1資訊直觀上理解足夠獲得該畫素是否在遮擋/同質區域,是否是遮擋/同質區域的輸出形式是在引數\alpha

上(如果該畫素是在遮擋/同質區域上的時候,它本身的cost vector其實是不可靠的,而通過上述的公式來看,引數\alpha主要是去看本畫素的被留下來的比例),當然confidence map的輸入應該也有助於判斷是否是遮擋/同質區域(如果是在遮擋/同質區域中,獲取得到的confidence應該不高(對於大部分是成立的),當然根據論文中confidence map的label的獲取,也有一定的遮擋/同質區域能夠獲得高的置信度);而在貢獻中,本人提到如果是遮擋/同質區域時,會選取周圍的cost vector來代替,那麼這個如何去實現呢,個人的推測是:判斷出是在遮擋/同質區域之後,可去尋找該畫素周圍置信度較高的cost vectors,組合成新的一個cost vector作為該畫素的cost vector,輸出形式表現在引數\beta上。

上述所提到的confidence map(在每個level估計光流的上一層時候,接一個conv + sigmoid獲取得到),label通過以下公式獲取:

,使用L2 Loss

論文對比在cost volume構建的三種方式上的效能表現:

(a)為最簡單的方式,不去對C進行任何改動; (b)將上一層獲取得到的光流進行upsample和F1以及C進行concat; (c)就是上述所進行修改的Cm。

論文上圖的(b)其實畫得有些問題,PWC-Net原文的網路結構為:

以及PWC-Net針對Optical flow Estimator模組的輸入描述如下:

上述三者Cost形式對比如下,可以看出該模組還是有較大的效能提升:

  • Flow Field Desformation

該模組主要解決的就是上述貢獻點2的問題,分為兩個步驟,(a)通過Displacement Field Generator獲取得到每個畫素應該保留本身還是應該選取周圍哪一個畫素的畫素偏移值(例如該畫素是u0, 但是假設這個光流不精確,需要周圍u1畫素的光流代替,則該模組輸出的是u1-u0);(b)通過(a)獲取得到的displacement進行warping, 公式如下:.

注意:該correlation與上面Cost Volume Modulation的不一樣, 注意到進行correlation的兩個特徵都是F1, 所以Ca主要是為了去構建F1每個畫素和周圍畫素的相似程度的Cost Volume.

由於confidence較高的畫素其實是不需要去替換其光流的,所以為了加這一約束,將confidence map和Ca concat在一起作為輸入去估計displacement field.

  • 實驗結果

注意:實驗部分建議仔細看源論文,在此僅僅貼一些重要的結果