RAFT:使用RNN計算光流

什麼是光流?
光流在計算機視覺中,指的是計算兩張連續的影像中每個像素點的位移,所得到的密集運動場,稱為光流。
傳統的方法藉由亮度恆定性以及平滑性來估算光流,近年來也有許多使用CNN、深度學習的方式去計算光流,也都得到很好的結果。本文介紹 RAFT: Recurrent All-Pairs Field Transforms for Optical Flow,此方法使用了Recurrent neuron network計算光流,圖一為模型的架構。
圖一

RAFT由三部分組成:

1. feature encode
首先,先提取兩張照片的特徵,解析度為原圖的1/8。

2. correlation volume
接著計算第一張圖和第二張圖的關聯性。首先先找第一張圖的某一點,和第二張圖的每個點都做點乘,藉此計算關聯性;而第一張圖的每個點也都做相同的動作,因此得到一個四維的correlation volume。接著在使用不同的kernel size處理,得到4個不同解析度的correlation volume。(操作如圖二)
圖二

接著,可以開始查找(Correlation lookup):藉由correlation volume,查找第一張圖上的任一點和第二張圖的相關性,尋找該點在第二張圖的可能所在位置。

3. GRU
此模型使用GRU(Gate Recurrent Unit)計算光流,GRU也是循環神經網路的一種,為了解決長期記憶和反向傳播中的梯度問題而被提出。模型的輸入為Flow、相關性的訊息和context layer。經由多次迭代,可以得到最終收斂的結果,就此得到光流。(圖三)
圖三

本篇論文提出使用GRU來計算光流,也影響到後來2021 CVPR其中一篇論文:Learning Optical Flow from a Few Matches。下面參考文獻會將兩篇放上去,有興趣的讀者可以看他們的原始論文以及github。


撰文:吳芯瑀


Reference
1. 原始論文:Teed, Zachary, and Jia Deng. "Raft: Recurrent all-pairs field transforms for optical flow." European conference on computer vision. Springer, Cham, 2020.
2. Jiang, Shihao, et al. "Learning Optical Flow from a Few Matches." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.

留言