1. 程式人生 > >19.FlowNet: Learning Optical Flow with Convolutional Networks

19.FlowNet: Learning Optical Flow with Convolutional Networks

論文地址:https://arxiv.org/abs/1504.06852

FlowNet: Learning Optical Flow with Convolutional Networks

使用卷積網路學習光流

摘要

卷積神經網路(CNN)最近在各種計算機視覺任務中非常成功,特別是在與識別相關的任務上。光流估計沒有成為CNNs成功的任務之一。本文構建了適合的CNN,它們能夠解決光流估計問題,作為監督學習任務。我們提出並比較兩種體系結構:通用體系結構和另一種體系結構包括一個在微分位置關聯特徵向量的層。

由於現有的標籤資料集不夠大,因此我們生成了一個很好的飛椅資料集。我們展示了基於這些不切實際的資料訓練的網路仍然可以很好地推廣到現有的資料集,如Sintel和KITTI,在幀速率為5到10幀的情況下實現競爭的準確性。

 

1.引言

卷積神經網路已成為許多計算機視覺領域的首選方法。它們經典地應用於分類[25,24],但最近提出的體系結構還允許畫素語義分割[28]或單個影象深度估計[10]的每畫素預測。在本文中,我們提出訓練CNNs端到端學習從一對影象預測光流場。

雖然光流估計需要精確的每畫素定位,但它還需要在兩個輸入影象之間找到對應關係。這不僅涉及學習影象特徵表示,還涉及學習在兩個影象中的不同位置處匹配它們。在這方面,光流估計從根本上不同於CNN的先前應用。

由於尚不清楚這項任務是否可以通過標準CNN架構解決,我們還開發了一個具有明確提供匹配功能的相關層的架構。這種架構是端到端的訓練。其思想是利用卷積網路的能力,在多個尺度中學習和抽象出強大的特性,並幫助它根據這些特性找到實際的對應關係。關聯層頂部學習如何從這些匹配中預測流。

令人驚訝的是,用這種方法幫助網路是沒有必要的,甚至原始網路也可以學習預測具有競爭力的光流。訓練這樣的網路來預測通用光流需要足夠大的訓練集。雖然資料增加確實有所幫助,但現有的光流資料集仍然太小,無法訓練與現有技術水平相當的網路。對於真實的視訊材料而言,獲得光流是非常困難的[7]。以數量為現實主義進行交易,我們生成一個合成的飛行椅資料集,其中包含來自Flickr的隨機背景影象,我們在其上疊加來自[1]的分段影象。這些資料與現實世界幾乎沒有共同之處,但我們可以使用自定義屬性生成任意數量的樣本。僅對這些資料進行過訓練的CNN就可以很好地概括為逼真的資料集,即使沒有進行微調。

利用一個高效的GPU來實現CNNs,使得我們的方法比大多數方法更快。我們的網路在全解析度的Sintel資料集上以每秒10對影象的速度預測光流,在實時方法中達到最先進的精度。

2.相關工作

光流。自Horn和Schunck [19]的工作以來,變分方法主導了光學流動估計。已經引入了許多改進[29,5,34]。最近的重點是大位移,組合匹配已被納入變分方法[6,35]。[35]稱為DeepMatching和DeepFlow的工作與我們的工作有關,因為使用稀疏卷積和最大池化,特徵資訊從精細到粗略聚合。但是,它不執行任何學習,並且所有引數都是手動設定的。[30]稱為EpicFlow的連續工作更加強調稀疏匹配的質量,因為來自[35]的匹配僅僅是在尊重影象邊界的情況下內插到密集流場。我們只使用變分方法對卷積網預測的流場進行可選的改進,並且不需要任何手工方法進行聚合,匹配和插值。

一些作者以前曾將機器學習技術應用於光流中。孫等人[32]研究光流的統計學方法和使用混合高斯學習正則化;羅森鮑姆等人[31]用混合高斯模型模擬光流的區域性統計。布萊克等[4]計算流動訓練集的主要組成部分。為了預測光流,他們然後估計這些“基礎流動”的線性組合的係數。其他方法訓練分類器在不同的慣性估計[21]中進行選擇或獲得遮擋概率[27]。已經進行了使用神經網路模型在視訊幀之間進行無監督學習視差或運動的工作。

這些方法通常使用乘法互動來模擬一對影象之間的關係。然後可以從潛在變數推斷出差異和光學流動。泰勒等人[33]用因子控制的受限制的玻爾茲曼機來完成任務。Konda和Memisevic [23]使用一種稱為“同步自動編碼器”的特殊自動編碼器。雖然這些方法在受控設定中執行良好,並且學習了對視訊中的活動識別有用的功能,但它們與現實視訊中的經典方法不具競爭力。

 

3.網路框架

卷積網路。最近,Krizhevsky等人[24]在大規模影象分類中表現出用反向傳播[25]訓練的卷積神經網路。這開始了將CNN應用於各種計算機視覺任務的大量工作。

 雖然沒有關於用CNN估算光流的工作,但是已經有關於與神經網路匹配的研究。菲捨爾等人[12]從有監督或無監督方式訓練的CNN中提取特徵表示,並基於歐幾里德距離匹配這些特徵。Zbontar和LeCun [36]訓練CNN採用Siamese架構來預測影象塊的相似性。這些方法與我們的方法的巨大差異在於它們是基於塊的,並且將空間聚合留給後處理,本文中的網路直接預測完整的流場。

CNN的最近應用包括語義分割[11,15,17,28],深度預測[10],關鍵點預測[17]和邊緣檢測[13]。這些任務類似於光流估計,因為它們涉及每畫素預測。由於我們的架構很大程度上受到這些每畫素預測任務的最新進展的啟發,因此我們簡要回顧一下不同的方法。

最簡單的解決方案是以“滑動視窗”方式應用傳統CNN,因此為每個輸入影象塊[8,11]計算單個預測(例如,類標籤)。這在許多情況下都很有效,但是有一些缺點:高計算成本(即使是涉及重用中間特徵對映的優化實現)和每補丁性質,也不考慮全域性輸出屬性,例如銳邊。另一種簡單方法[17]是將所有特徵圖上取樣到所需的全解析度並將它們堆疊在一起,從而產生可用於預測感興趣值的級聯每畫素特徵向量。

Eigen等人[10]通過訓練額外的網路來獲得粗略的深度圖,該網路將粗略預測和輸入影象作為輸入。Long等人[28]和Dosovitskiy等人[9]使用反捲積層迭代地重新定義粗糙特徵圖。我們的方法整合了來自兩個方面的想法。與Long等人不同的是,我們不僅對粗預測進行反捲積,而且對整個粗特徵圖進行反捲積,從而將更多的高階資訊傳遞到細預測中。與Dosovitskiy等人不同,我們將“反捲積”結果與網路“收縮”部分的特徵相結合。

已知卷積神經網路在給定足夠的標記資料的情況下非常擅長學習輸入 - 輸出關係。因此,我們採用端到端的學習方法來預測光流:給定由影象對和ground truth流組成的資料集,我們訓練網路直接從影象預測x-y流場。但是,什麼是用於此目的的良好體系結構呢?

一個簡單的選擇是將兩個輸入影象堆疊在一起並通過一個相當通用的網路提供給他們網路自行決定如何處理影象對以提取運動資訊。這在圖2(頂部)中說明。我們稱這種架構僅包含卷積層'FlowNetSimple'。


原則上,如果該網路足夠大,它可以學習預測光流。但是,我們永遠無法確定區域性梯度優化(如隨機梯度下降)可以使網路達到這一點。因此,手工設計一個不那麼通用的體系結構可能是有益的,但是使用給定的資料和優化技術可能會有更好的效能。


一個簡單的步驟是為兩個影象建立兩個獨立但相同的處理流,並在稍後階段將它們合併,如圖2(下圖)所示。在這種架構下,網路首先被約束為分別生成兩個影象的有意義的表示,然後在更高的層次上組合它們。這類似於標準匹配方法,首先從兩個影象的patch中提取特徵,然後比較這些特徵向量。然而,給定兩個影象的特徵表示,網路如何找到對應關係?

為了在這個匹配過程中幫助網路,我們引入了一個“相關層”,它在兩個特徵對映之間執行乘法補丁比較。包含該層的網路架構“FlowNetCorr”的圖示如圖2(下圖)所示。給定兩個多通道特徵對映f1,f2:R2→Rc,其中w,h和c是它們的寬度,高度和通道數,我們的相關層讓網路將來自f1的每個補丁與來自f2的每個路徑進行比較。


目前我們只考慮兩個補丁的單一比較。第一個圖中以x1為中心,和第二個圖中以x2為中心的兩個patch的“相關性”被定義為

對於大小為K的方形塊:K= 2k + 1.注意等式.1與神經網路中的卷積的一個步驟相同,但不是用卷積核與資料進行卷積,而是將資料與其他資料卷積。因此,它沒有可訓練的權重。

計算c(x1,x2)涉及c·K2乘法。比較所有補丁組合涉及w2·h2這樣的計算,產生大的結果並且使得有效的前向和後向傳遞難以處理。因此,出於計算原因,我們限制了比較的最大位移,並且還引入了兩個特徵圖中的跨越。

給定最大位移d,對於每個位置x1,我們通過限制x2的範圍僅在尺寸D:= 2d + 1的鄰域中計算相關性c(x1,x2)。我們使用步長為s1和s2來全域性量化x1並在以x1為中心的鄰域內量化x2。

理論上,由相關產生的結果是四維的:在每個組合中,我們得到一個相關值,即分別包含裁剪貼片值的兩個向量的標量積。在實踐中,我們組織通道中的相對位移。這意味著我們獲得了大小(w×h×D2)的輸出。對於向後傳遞,我們相應地實現了關於每個底部blob的導數。

改進。CNN擅長提取影象的高階抽象特徵,通過插入卷積層和池化層,即空間縮小特徵對映。池化對於使網路訓練在計算上可行是必要的,並且更基本地,允許在輸入影象的大區域上聚合資訊。但是,池化會導致解析度降低,因此為了提供密集的每畫素預測,我們需要一種方法來重新定義粗彙集表示。

我們對這種改進的方法如圖3所示。主要成分是“反捲積”層,包括解開(擴充套件特徵圖,而不是池化)和卷積。這些層先前已被使用[38,37,16,28,9]。為了執行這些改進,我們將“反捲積”應用於特徵對映,並將其與來自網路的“收縮”部分的相應特徵對映和上取樣的較粗流預測(如果可用)相連線。這樣,我們保留了從較粗糙的特徵圖傳遞的高階資訊和在較低層特徵圖中提供的精細本地資訊。每一步都會將解析度提高兩倍。我們重複這4次,產生預測的流量,其解析度仍然比輸入小4倍。

我們發現,與計算成本更低的雙線性上取樣到全影象解析度相比,進一步改進該解析度並沒有顯著提高結果。這種雙線性向上取樣的結果是網路預測的最終流量。

在另一種方案中,我們使用[6]中的變分方法而不是雙線性上取樣,而不使用匹配項:我們從4倍下采樣解析度開始,然後使用粗到細方案進行20次迭代,使流場得到全解析度。最後,我們以完整的影象解析度再執行5次迭代。我們還使用[26]中的方法計算影象邊界,並通過將平滑度係數替換為α= exp(-λb(x,y)κ)來考慮檢測到的邊界,其中b(x,y)表示重新取樣的薄邊界強度在各自的比例和畫素之間。這種升級方法在計算上比簡單的雙線性上取樣更昂貴,但增加了變分方法的好處,以獲得平滑和次畫素精確的流場。在下文中,我們用“+ v”為字尾表示通過這種變分改進獲得的結果。變數改進的一個例子可以在圖4中看到。

 

4.訓練資料

與傳統方法不同,神經網路需要具有基本事實的資料,不僅用於優化多個引數,而且用於學習從頭開始執行任務。通常,獲得這樣的標籤是困難的,因為不能容易地確定用於現實世界場景的真實畫素對應。表1給出了可用資料集的概述。

4.1存在的資料

米德爾伯裡資料集[2]僅包含8個用於訓練的影象對,其中使用四種不同技術生成標籤流。位移非常小,通常低於10畫素。KITTI資料集[14]較大(194個訓練影象對)並且包括大位移,但僅包含非常特殊的運動型別。通過使用相機和3D鐳射掃描器同時記錄場景,從真實場景獲得標籤。這假定場景是剛性的,並且運動源於移動的觀察者。而且,無法捕捉到諸如天空之類的遠處物體的運動,從而導致光流的稀疏性。MPIS intel [7]資料集從渲染的人工場景中獲取標籤,特別注重逼真的影象屬性。提供了兩個版本:最終版本包含運動模糊和大氣效果,如霧,而Clean版本不包含這些效果。Sintel是可用的最大資料集(每個版本1,041個訓練影象對),併為小型和大型位移量級提供密集的標籤。

 

4.2飛椅

Sintel資料集仍然太小,無法訓練大型CNN。為了提供足夠的訓練資料,我們建立了一個簡單的合成數據集,我們將它命名為Flying Chairs,通過對從Flickr收集的影象和公開可用的3D椅子模型組合進行應用轉換[1]。我們從Flickr2中檢索了964個影象,解析度為1,024×768,分類為“城市”(321),“風景”(129)和“山”(514)。我們將影象切割成4個象限,並使用得到的512×384影象裁剪作為背景。作為前景物件,我們將多個椅子的影象從[1]新增到背景中。從原始資料集中我們刪除了非常相似的椅子,產生了809種椅子型別和每張椅子62個檢視。示例如圖5所示。

為了生成運動,我們隨機地為背景和椅子取樣了變換引數。椅子的變換與背景變換有關,可以將其解釋為相機和移動的物體。使用變換引數,我們渲染第二個影象,光學流動和遮擋區域。隨機取樣每個影象對的所有引數(椅子的數量,型別,尺寸和初始位置;變換引數)。我們調整這些引數的隨機分佈,使得得到的位移直方圖類似於Sintel的位移直方圖(細節可以在補充材料中找到)。使用此過程,我們生成一個包含22,872個影象對和流場的資料集(我們多次重複使用每個背景影象)。注意,這個尺寸是任意選擇的,原則上可以更大。

 

4.3資料增強

一種廣泛使用的改進神經網路泛化的策略是資料增強[24,10]。即使飛行椅資料集相當大,我們發現使用增強對於避免過擬合至關重要。我們在網路訓練期間線上進行增強。我們使用的增強包括幾何變換:平移,旋轉和縮放,以及加性高斯噪聲和亮度,對比度,伽瑪和顏色的變化。為了相當快,所有這些操作都在GPU上處理。圖5給出了一些增強的例子。

由於我們不僅希望增加影象的多樣性,而且還希望增加流場的多樣性,我們對一對影象應用相同的強幾何變換,但另外在兩幅影象中進行相對較小的相對變換。通過將每個影象增強應用於來自任一側的流場,我們進行了流動。具體來說,我們從x和y的影象寬度的[-20%,20%]範圍內進行平移;從[-17°,17°]旋轉;從[0.9,2.0]縮放。高斯噪聲具有從[0,0.04]均勻取樣的西格瑪;對比度在[-0.8,0.4]範圍內取樣;乘法顏色從[0.5,2]變為每個影象的RGB通道;來自[0.7,1.5]和加性亮度的伽馬值使用高斯與西格瑪為0.2。

 

5.實驗

我們在Sintel,KITTI和Middlebury資料集以及合成飛行椅資料集上報告我們的網路結果。我們還嘗試對Sintel資料上的網路進行微調,並對預測的流場進行變分改造。此外,與其他方法相比,我們報告了網路的執行時間。

 

5.1 網路和訓練細節

我們訓練的網路的確切架構如圖2所示。總的來說,我們試圖保持不同網路的體系結構一致:它們有六個卷積層,其中六個是步長為2(最簡單的池化形式),每層之後有一個ReLU非線性。我們沒有任何全連線層,這允許網路將任意大小的影象作為輸入。卷積核尺寸朝向更深的網路層減小:第一層為7×7,後兩層為5×5,從第四層開始為3×3。特徵圖的數量在較深層中增加,在每個層之後大約加倍,步幅為2.對於FlowNetC中的相關層,我們選擇引數k = 0,d = 20,s1 = 1,s2 = 2。損耗我們使用端點誤差(EPE),這是光流估計的標準誤差測量。它是預測的流動向量和標籤之間的歐幾里德距離,在所有畫素上取平均值。

為了訓練CNN,我們使用caffe[20]框架的修改版本。我們選擇Adam[22]作為優化方法,因為對於我們的任務,它表現出比具有動量的標準隨機梯度下降更快的收斂。我們按照[22]中的建議來確定Adam的引數:β1= 0.9,β2= 0.999。從某種意義上說,因為每個畫素都是一個訓練樣本,我們使用相當小的8個影象對的小批量。我們從學習率λ= 1e-4開始,然後在第一個300k之後每100k次迭代除以2。使用FlowNetCorr,我們觀察到λ= 1e-4的爆炸梯度。為了解決這個問題,我們首先通過非常低的學習率λ= 1e-6進行訓練,在10k次迭代後緩慢增加它以達到λ= 1e-4,然後按照剛剛描述的時間表進行訓練。為了監控訓練和調整過程中的過度配置,我們將飛行椅資料集分為22,232個訓練樣本和640個測試樣本,並將Sintel訓練集分為908個訓練集和133個驗證對。我們發現在測試期間升級輸入影象可以提高效能。儘管最佳比例取決於特定資料集,但我們為所有任務確定了每個網路的比例。對於FlowNetS,我們沒有擴大尺度,對於FlowNetC,我們選擇了1.25的係數。

微調。使用的資料集在物件型別和它們包含的運動方面非常不同。標準解決方案是對目標資料集上的網路進行微調。KITTI資料集很小,只有稀疏的流標籤。因此,我們選擇對Sintel訓練集進行微調。我們一起使用來自Sintel的Clean和Final版本的影象,並使用低學習率λ= 1e-6進行數千次迭代的微調。 為了獲得最佳效能,在使用驗證集定義最佳迭代次數之後,我們然後在相同迭代次數的整個訓練集上進行調整。在表格中,我們用“+ ft”字尾表示微調網路。

 

5.2結果

表2顯示了我們網路的端點錯誤(EPE)以及公共資料集(Sintel,KITTI,Middlebury)以及我們的飛行椅資料集上的幾種表現良好的方法。另外,我們在Sintel上顯示了不同方法的執行時間。

僅在非現實飛行椅上訓練的網路在真實的光流資料集上表現非常好,例如擊敗了眾所周知的LDOF [6]方法。在對Sintel進行微調之後,我們的網路在Sintel Final和KITTI上的表現優於競爭對手的實時方法EPPM [3],同時速度提高了兩倍。

Sintel.從表2中可以看出,FlowNetC在Sintel Clean上優於FlowNetS,而在Sintel Final上,情況發生了變化。 在這個難以分析的資料集中,FlowNetS + ft + v甚至與DeepFlow相當。由於平均端點誤差通常有利於過度平滑的解決方案,因此有必要看到我們方法的定性結果。圖7顯示了與groundtruth和EpicFlow相比,兩個FlowNets預測的原始光流(沒有調整)的示例。圖中顯示了網路通常如何產生視覺上吸引人的結果,但在端點錯誤方面仍然更糟。仔細觀察發現,其中一個原因可能是網路的噪聲非光滑輸出,尤其是在大的平滑背景區域。 這可以通過變分改進來部分補償。

KITTI.KITTI資料集包含強大的投影變換,這與飛行椅訓練期間遇到的網路非常不同。儘管如此,原始網路輸出已經相當不錯,並且額外的微調和變分改進可以進一步提升。有趣的是,Sintel的微調改善了KITTI的結果,可能是因為Sintel中的影象和動作比飛行椅更自然。FlowNetS在此資料集上優於FlowNetC。

飛行椅.我們的網路在飛行椅上接受過訓練,因此預計在這些方面表現最佳。在訓練時,我們將一組由640個影象組成的測試集放在一邊。表2顯示了該測試集的各種方法,圖6顯示了一些示例預測。可以看出,FlowNetC優於FlowNetS,並且網路優於所有最先進的方法。另一個有趣的發現者認為,這種不變的改變並不能提高績效,但會使事情變得更糟。顯然,網路已經比變分改造做得更好。這表明,通過更加真實的訓練集,網路在其他資料上的表現也可能更好。

計時.在表2中,我們以秒為單位顯示了不同方法的每幀執行時間。不幸的是,許多方法僅在單個CPU上提供執行時,而我們的FlowNet使用僅在GPU上實現的層。雖然網路的錯誤率低於現有技術水平,但它們是實時方法中最好的。對於網路的訓練和測試,我們使用NVIDIA GTX Titan GPU。 DeepFlow和EpicFlow的CPU時序取自[30],而LDOF的時序是在單個2.66GHz核心上計算的。

 

5.3分析

訓練資料。為了檢查我們是否因使用飛行椅資料集而不是Sintel而受益,我們僅在Sintel上訓練了一個網路,除了驗證集以控制性能。由於積極的資料增加,即使是單獨的Sintel也足以相當好地學習光流。在Sintel上進行測試時,僅在Sintel上接受過訓練的網路的EPE比在飛行椅上訓練的網路高出約1個畫素,並在Sintel上進行了調整。飛行椅資料集相當大,資料增量仍然是必要的嗎?答案是肯定的:在飛行椅上訓練沒有資料增加的網路導致在Sintel上測試時EPE增加大約2個畫素。

比較架構。表2中的結果可以得出我們測試的兩種體系結構的優缺點的結論。首先,FlowNetS比FlowNetC更好地推廣到Sintel Final。另一方面,FlowNetC在飛行座椅和SintelClean上的效能優於FlowNetS。注意飛行椅不包括運動模糊或霧,如Sintel Final。這些結果共同表明,即使兩個網路的引數數量幾乎相同,FlowNetC也略微超過了訓練資料。這並不意味著網路會記住訓練樣本,但它會適應訓練期間呈現的資料型別。雖然在我們目前的設定中,這可以被視為一個弱點,如果有更好的訓練資料,它可能會成為一個優勢。

其次,FlowNetC似乎在較大位移方面存在更多問題。這可以從上面討論的KITTI的結果以及Sintel Final的詳細效能分析(未在表中示出)中看出。 FlowNetS + ft實現了s40 +誤差(位移至少為40畫素的畫素上的EPE)為43.3px,而FlowNetC + ft的值為48px。一種解釋是關聯的最大位移不允許預測非常大的運動。這個範圍可以以計算效率為代價增加。

 

6.結論

基於卷積網路架構設計的最新進展,我們已經表明,可以訓練網路直接預測來自兩個輸入影象的光流。有趣的是,訓練資料不一定是真實的。人工飛行椅資料集包括合成剛性物體的自然運動,足以預測自然場景中的光學流動,具有競爭力的準確性。這證明了所呈現的網路的泛化能力。在飛行座椅的測試裝置上,CNN甚至超越了DeepFlow和EpicFlow等最先進的方法。隨著更真實的訓練資料變得可用,將會看到未來網路的表現將會很有趣。

 

'FlowNet的補充材料:利用卷積網路學習光流

1.流場彩色編碼

為了視覺化流場,我們使用Sintel提供的工具[7]。流方向用顏色和幅度編碼,顏色強度。白色對應於沒有動作。圖1說明了流顏色編碼:每個畫素處的流動向量是從正方形中心到該畫素的向量。由於主紙中顯示的不同影象對中的流動幅度非常不同,我們獨立地將每個影象對的最大顏色強度標準化,但對於應用於一個影象對的不同方法也是如此。

2.生成飛行椅的詳細資訊

我們詳細解釋了產生飛行的過程椅子的資料集。我們使用964張解析度的影象作為背景1024*768畫素,從Flickr下載。作為前景我們使用了來自Aubry et al.[1]資料集的809個椅子模型,每個模型從62個角度呈現:31個方位角和2個仰角。為了在影象對中生成第一個影象,我們取一個背景影象,並在頂部隨機放置一組椅子。從[16;24],從整體影象上對椅子的型別和視點進行均勻取樣,對椅子的位置進行均勻取樣。椅子的尺寸(以畫素為單位)從平均200和標準偏差200的高斯取樣,然後夾在50和640之間。

在流場和流場中生成第二個影象,我們應用隨機轉換到椅子和背景。這些變換中的每一個都是縮放,旋轉和平移的組合。取樣的引數是高效的,旋轉角度和翻譯向量。我們的目標是粗略匹配Sintel的位移分佈,如圖2(左)所示。簡單地從高斯中取樣變換引數導致過少的小位移,因此我們使變換引數的分佈比零高於高斯。我們從中取樣引數的分佈族包含兩個分佈的混合:具有概率1-p的常數μ和具有概率p的高斯的冪。更確切地說,讓γ~N(μ,σ)為單變數高斯分佈。我們將其絕對值提高到功率k(保持符號)並鉗位到區間[a,b]。然後我們將值設定為μ,概率為1-p。總的來說,結果是:...

ξ = β ·max(min(sign(γ)·|γ|k,b),a) + (1−β)·µ,

其中β是伯努利隨機變數,等於1,概率為p,0為概率1-p。 我們用G(k,μ,σ,a,b,p)表示ξ的分佈。 所有轉換引數都是從該系列的分佈中取樣的,引數如表1所示。給定轉換引數,可以直接生成對中的第二個影象,以及流場和遮擋圖。 然後我們將每個影象切割成4個四分之一,產生4個影象對,每個影象對尺寸為512×384畫素。 飛行椅資料集的位移直方圖如圖2(右)所示。 我們沒有詳細研究資料集引數對FlowNet結果的影響。 然而,我們觀察到,採用更簡單的從高斯取樣所有變換引數的策略,網路仍然有效,但不如上述資料訓練的網路準確。

3.卷積濾波器

當仔細觀察FlowNets的過濾器時,可以看到下層過濾器的結構很少,而更高層的過濾器更結構化。圖3顯示了第一層濾波器如何沒有完全收斂,但粗糙的梯度是可見的。相反,應用於相關層輸出的濾波器具有非常明顯的結構,如圖5所示。不同的濾波器對不同的流向和大小具有選擇性。

4.視訊

在補充視訊中,我們使用帶有GeForce GTX 980M GPU的筆記本演示了FlowNets的實時操作。 使用網路攝像頭拍攝的影象解析度為640×480畫素。 我們展示了FlowNetSimple和FlowNetCorr為室內和室外場景製作的現實生活視訊中的示例流場。 該視訊可在http://goo.gl/YmMOkR上找到。 來自視訊的樣本幀可以在圖4中看到。