蕭簫 發自 凹非寺量子位 報導 | 公眾號 QbitAI
作為計算機視覺三大頂會之一,備受矚目的ECCV 2020(歐洲計算機視覺國際會議)最近公布了所有獎項。
其中,最佳論文獎被ImageNet一作、李飛飛高徒鄧嘉及其學生摘得。
這篇名為《RAFT: Recurrent All-Pairs Field Transforms for Optical Flow》的論文,究竟講了啥?
一起來學習一下。
視頻中的「光流預測」
在解讀這篇論文前,先來大致回顧一下論文涉及的領域,即光流預測。
光流預測是什麼
在計算機視覺中,光流是一個有關物體運動的概念,指在一幀視頻圖像中,代表同一目標的像素點到下一幀的移動量,用向量表示。
根據光流的亮度恆定假設,同一物體在連續的幀間運動時,像素值不變(一隻小鳥不會在運動時突然變成鴨或者飛機)。
所以這個運動的過程,就像是光的「流動」過程,簡稱光流,預測光流的過程,就被稱之為光流預測。
應用上,光流通常會用於視頻中的目標跟蹤,例如TLD算法。
此外,光流還可以作為視覺裡程計和SLAM同步定位,以及視頻動作識別和視頻插幀等。
先前光流預測法的缺陷
根據是否選取圖像稀疏點(特徵明顯,梯度較大),可以將光流預測分為稀疏光流和稠密光流,如下圖左和右。
其中,稀疏光流會選取圖像稀疏點進行光流估計;而在稠密光流裡,為了表示方便,會使用不同的顏色和亮度表示光流的大小和方向。
針對這兩種方法,目前有傳統預測和基於深度學習的兩種經典算法。
1、傳統方法:稀疏光流估計算法
求解光流預測算法前,首先要知道孔徑問題。
如圖,從圓孔中觀察移動條紋的變化,發現條紋無論往哪個方向移動,從圓孔來看,移動的變化都是一致的。
例子再通俗一點,看看髮廊的旋轉燈,燈上的條紋看起來總在往上走(其實沒有)。
其中一種傳統的Lucas-Kanade算法,是求解稀疏光流的方法,選取了一些可逆的像素點估計光流,這些像素點是亮度變化明顯(特徵明顯)的角點,藉助可逆相關性質,預測光流方向。
2、深度學習方法:FlowNet
FlowNet是CNN用於光流預測算法的經典例子。
在損失設計上,對於每個像素,損失定義為預測的光流值和真值(groundtruth)之間的歐氏距離,稱這種誤差為EPE,全稱End-Point-Error。
當然,說到這裡,不得不提一句光流預測的經典數據集FlyingChairs(飛椅)。
為了模擬目標的多種運動方式,飛椅數據集將虛擬的椅子疊加到背景圖像中,並將背景圖和椅子用不同的仿射變換,得到對應的另一張圖。
△ 畫風有點像玩個錘子
這個數據集也成為許多光流預測網絡必備的數據集之一。
然而,上述基於深度學習的經典光流預測算法,存在著幾個缺點,無論怎麼優化,這些缺點都會因為框架自身而一直存在。
但在RAFT,這個全稱光流循環全對場變換的框架中,過往的3大缺點都被一一解決了:
突破局限,三點創新
第一,先前的框架普遍採用從粗到細的設計,也就是先用低解析度估算流量,再用高解析度採樣和調整。
相比之下,RAFT以高解析度維護和更新單個固定的光流場。
這種做法帶來了如下幾個突破:低解析度導致的預測錯誤率降低,錯過小而快速移動目標的概率降低,以及超過1M參數的訓練通常需要的迭代次數降低。
第二,先前的框架包括某種形式上的迭代細化,但不限制迭代之間的權重,這就導致了迭代次數的限制。
例如,IRR使用的FlowNetS或PWC-Net作為循環單元,前者受網絡大小(參數量38M)限制,只能應用5次迭代,後者受金字塔等級數限制。
相比之下,RAFT的更新運算是周期性、輕量級的:這個框架的更新運算器只有2.7M個參數,可以迭代100多次。
第三,先前框架中的微調模塊,通常只採用普通卷積或相關聯層。
相比之下,更新運算符是新設計,由卷積GRU組成,該卷積GRU在4D多尺度相關聯向量上的表現更加優異。
光流預測的效果
話不多說,先上RAFT光流預測的效果圖。
這是在Sintel測試集上的效果展示,最左邊是真值,最右邊是RAFT預測的光流效果,中間的VCN和IRR-PWC是此前效果較好的幾種光流預測框架。
可以看出,相較於中間兩個框架的預測效果,RAFT的預測不僅邊界更清晰,而且運動的大小和方向準確(看顏色)。
此外,在KITTI數據集上的預測效果也非常不錯。
圖左的幾輛小車被清楚地預測了出來,而圖右中,駕駛方向不同的車輛也能用不同的顏色(紅、藍)區分標記。
不僅小視頻,在1080p的高解析度視頻(DAVIS數據集)中,光流預測的效果也非常不錯。
有意思的是,在訓練參數(下圖橫軸)幾乎沒有明顯增加的情況下,RAFT在一系列光流預測框架中,EPE誤差(下圖縱軸)做到了最小。
由上圖可見,團隊同時推出了5.3M參數量和1.0M輕量級的兩個框架,EPE誤差效果均非常好。
從效果來看,在KITTI數據集上,RAFT的F1-all誤差是 5.10%,相比此前的最優結果(6.10%)減少了16%;在Sintel數據集上,RAFT只有2.855像素的端點誤差(End-Point-Error),相比先前的最佳結果(4.098 像素)減少了30%。
不僅推理效率高,而且泛化能力強,簡直就是光流預測中各方面超越SOTA的存在。
那麼,RAFT的框架究竟是怎麼設計的呢?
高性能端到端光流網絡架構
從圖中可見,RAFT框架主要由三個部分構成:特徵編碼器、相關聯層(correlation layer)和基於GRU的更新運算器。
其中,特徵編碼器主要用來從輸入的2張圖中提取每個像素的特徵,期間也包括一個上下文編碼器,專門用來提取圖1的特徵。
至於相關聯層,則構建了一個4D的W×H×W×H相關聯向量,用於表示所有特徵向量對的點積(內積)。當然,這個4D向量的後2維會被多尺度採樣,用於構建一系列多尺度向量。
下圖是構建相關聯向量的方法,從圖中可見,作者將用了幾個2D片段來描述一整個4D向量。
在圖1的一個特徵向量中,構建了圖2中所有向量對的點積,從而生成了一個4D的W×H×W×H向量(其中,圖2的每個像素產生一個2D的響應圖)。
這樣,就能用大小為{1,2,4,8}的卷積核對向量進行平均採樣了。
而更新操作器,則通過光流預測,來重複更新光流,以展現這一系列多尺度向量的向量值。
總結歸納一下,RAFT的框架流程分為三步,對每個像素提取特徵,計算所有像素對的相關性,高效迭代更新光流場。
目前,RAFT框架已經放出了GitHub的項目連結,想要學習代碼、或者復現的小夥伴們,可以戳文末傳送門~
作者介紹
這篇論文的第一作者是Zachary Teed。
Zachary Teed目前在普林斯頓大學讀博,是視覺與學習實驗室的一名成員,導師為鄧嘉。目前的主要研究方向為視頻3D重建,包括運動、場景流和SLAM中的結構。
此前,他曾獲聖路易斯華盛頓大學的計算機科學學士學位,並在那裡取得了Langsdorf 獎學金和 McKevely研究獎。
而論文二作,則是普林斯頓大學計算機科學系助理教授鄧嘉。
鄧嘉曾於2006年本科畢業於清華大學計算機系,隨後赴美國普林斯頓大學讀博。
2007 年,李飛飛回到他的母校普林斯頓大學任職後便開始啟動 ImageNet 項目,李凱教授作為支撐,將鄧嘉介紹到李飛飛的實驗組中,2012 年鄧嘉於普林斯頓大學獲計算機科學博士學位。
這並非他第一次獲ECCV最佳論文獎。
2014 年,鄧嘉就曾憑藉論文《Large-Scale Object Classification Using Label Relation Graphs》獲得當年的ECCV最佳論文獎,並且是該研究的第一作者。
除此之外,他也是ImageNet論文的第一作者。
傳送門
論文連結:https://arxiv.org/abs/2003.12039
項目連結:https://github.com/princeton-vl/RAFT