當前位置:
首頁 > 最新 > 不定期更新的筆記

不定期更新的筆記

光流

光流估計,簡單來說就是利用圖像序列中像素在時間域上的變化以及相鄰幀之間的相關性來找到上一幀跟當前幀之間存在的對應關係,從而計算出相鄰幀之間物體的運動信息的一種方法。

光流估計實現的假設前提:

1.相鄰幀之間的亮度恆定。

2.相鄰視頻幀的取幀時間連續,或者,相鄰幀之間物體的運動比較「微小」。

3.保持空間一致性;即,同一子圖像的像素點具有相同的運動。

FlowNet (ICCV2015)

因為光流的預測涉及到每個像素點的精確的位置信息,這不僅涉及到圖像的特徵,還涉及到兩個圖片之間對應像素點的聯繫,所以用於光流預測的神經網路與之前的神經網路不同。整體架構如圖所示,先收縮,再放大。

收縮部分把一般的卷積神經網路去掉全連接層,修改成兩個網路,一個是全是卷積層的普通神經網路,另一個除了卷積層之外還包括一個特徵向量關聯層。

FlowNetSimple把輸入的圖片對疊加在一起,讓他們通過一個全卷積的網路結構,讓這個網路來決定如何從這一圖片對中提取出光流信息。這個網路有九個卷積層,其中的六個stride為2, 每一層後面還有一個非線性的relu操作,這一網路沒有全連接層,所以這個網路不能夠把任意大小的圖片作為輸入,卷積filter隨著卷積的深入遞減,第一個7*7,接下來兩個5*5,之後是3*3。

FlowNetCorr網路先獨立的提取倆圖片的特徵,再在高層次中把這些特徵進行匹配。在匹配中引入了一個「correlation layer」(關聯層),在兩個特徵圖中做乘法patch比較。給定兩個多通道的特徵圖f1、f2,關聯層就是讓網路比較f1中的每個patch和f2中的每個patch。

擴大部分主要是由上卷積層組成,上卷積層由unpooling(擴大featuremap,與pooling的步驟相反)和一個卷積組成,對feature maps使用上卷積,並且把它和收縮部分對應的feature map(灰色箭頭)以及一個上採樣的的光流預測(紅色)聯繫起來。這樣就能既保留coarser特徵圖的高層信息,又能保留低層特徵圖的好的局部信息。每一步提升兩倍的解析度,重複四次,預測出來的光流的解析度依然比輸入圖片的解析度要小四倍。

實驗結果顯示FlowNetCorr雖然加了關聯層,但與FlowNetSimple對比並沒有太大的改善,因為FlowNetSimple的正確率已經很不錯了,但如果使用更好的訓練數據集,FlowNetCorr網路會更有優勢。實驗結果也顯示,預測幀率為5~10FPS。

FlowNet 2.0 (CVPR2017)

FlowNet 2.0對FlowNet進行改進,設計了一種疊加架構,並引入一個專註小位移的子網路。最終的網路FlowNet2大大優於以前的FlowNet,能以非常高的細節水平估計大、小位移。FlowNet 2.0系列提供的速度從8到140fps不等,並且運動分割和動作識別的實驗表明,FlowNet 2的估計光流在各種場景和應用中是可靠的。

FlowNet2完整架構如圖所示:為了計算大位移光流, 堆疊多個FlowNets,用FlowNet2-CSS-ft-sd表示。 大括弧表示輸入的連接。 亮度誤差是用先前估計的流量變形的第一圖像和第二圖像之間的差異。 為了更好地處理小位移,引入更小的步長,微調FlowNetS架構(在上卷積間添加卷積以獲得更平滑的估計)得到FlowNet2-SD。 最後,創建FlowNet2-CSS-ft-sd和FlowNet2-SD的小型融合網路。 融合網路將解析度縮小兩倍,再擴展到全解析度,這會產生了清晰的運動邊界,並且在小的以及大的位移上表現良好。

設計堆疊網路時,考慮了堆疊2個網路(堆疊多個FlowNetC / S架構)和堆疊多個不同網路,堆疊2個網路的實驗表明,warp操作總是可以改善性能,同時通過保持第一網路固定並且僅在warp之後訓練第二網路能獲得最佳結果。

堆疊不同類型的網路(FlowNetC和FlowNetS)同時考慮減小單個網路的規模。稱第一個網路為bootstrap網路,第二個網路可能以循環的方式重複任意次數。最終的FlowNet2-CSS結果比單網FlowNet2-C提高了約30%,比原FlowNetC提高了約50%。一步步訓練較小的單元證明是有利的,並使得我們能夠訓練非常深的光流網路。 最後,FlowNet2-s提供了與原始FlowNet幾乎相同的精度,同時以每秒140幀的速度運行。

對於傳統方法來說,小位移動作更容易估計,但FlowNet網路不能可靠地估計小位移的運動,作者通過對整個網路堆棧進行進一步訓練,並對FlowNet2-CSS進行微調,實現更小的位移,得到FlowNet2-CSS-ft-sd。

LiteFlowNet (CVPR2018)

LiteFlowNet在Sintel final pass 和KITTI性能都優於FlowNet2,並且比FlowNet2模型小30倍和運行速度快1.36倍的速度。

改進FlowNet2和SPyNet的兩個原則:

1.金字塔特徵提取。LiteFlowNet,包括編碼器和解碼器,編碼器NetC是一個雙流網路,共享濾波器權重。它們中的每一個都用作特徵描述符,將圖像變換為多尺度高級特徵的金字塔。在每個金字塔層,解碼器通過選擇和使用特徵金字塔中相同解析度的特徵推斷光流。

2.特徵變形。為了促進大位移光流推斷,第二圖像的高級特徵通過每個金字塔等級上的特徵變形(f-warp)層向第一圖像的高級空間變形。這一步特徵變形過程減少了更具辨別性的特徵空間距離。

與現有方法的主要區別:

1.級聯流量推斷。在NetE的每個級別,高級特徵的逐像素匹配(M)產生粗略的流量估計。隨後對粗略流程的細化(S)進一步將其改進為亞像素精度。金字塔的每一層中圖片間的特徵空間距離因為特徵變形而減小,同時匹配只在採樣位置進行,可以減少計算損耗。

2.光流正則化。級聯流量推斷類似能量最小化的數據保真,如果單獨使用數據保真度,估計的流場可能邊界模糊同時會存在異常。NetE中的模塊R通過使用通過特徵驅動的本地卷積(f-lcon)層調整正則化核來調整流場,使光流正則化同時關注流和圖片。

LiteFlowNet由NetC和NetE組成。NetC將任何給定的圖像對變換成兩個多尺度高維特徵的金字塔。 NetE由級聯流量推斷和正則化模塊組成,用於估算粗 - 細流場。

LiteFlowNet的網路結構。 為了便於表達,僅顯示了3級設計。 給定一對圖像(I1和I2),NetC生成兩個高層特徵金字塔(粉紅色的Fk(I1)和紅色的Fk(I2),k∈[1,3])。 NetE產生多級流場,它們中的每一個包括級聯流動推斷模塊M:S(藍色,包括描述符匹配單元M和子像素細化單元S)和正則化模塊R(綠色)。 流量推理和正則化模塊分別對應於常規能量最小化方法中的數據保真和正則化。

編譯:北極魚

參考文獻:

[1]P. Fischer, A. Dosovitskiy, E. Ilg, P. H¨ausser, C. Hazirbas,V. Golkov, P. van der Smagt, D. Cremers, and T. Brox.FlowNet: Learning optical flow with convolutional networks.ICCV, pages 2758–2766, 2015.

[2] E. Ilg, N. Mayer, T. Saikia, M. Keuper, A. Dosovitskiy, andT. Brox. FlowNet2.0: Evolution of optical flow estimationwith deep networks. CVPR, pages 2462–2470, 2017.

[3] T.-W. Hui, X. Tang, C. C. Loy.LiteFlowNet: A Lightweight Convolutional Neural Networkfor Optical Flow Estimation. In CVPR. 2017

「一條固執的魚,

逆著洋流獨自游到北極「

公眾號ID:TheNorth007

歡迎關注

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 北極魚 的精彩文章:

TAG:北極魚 |