<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          光流估計——從傳統(tǒng)方法到深度學(xué)習(xí)

          共 6684字,需瀏覽 14分鐘

           ·

          2021-08-02 23:15

          點擊左上方藍(lán)字關(guān)注我們



          全網(wǎng)搜集目標(biāo)檢測相關(guān),人工篩選最優(yōu)價值內(nèi)容

          編者薦語
          光流估計是計算機(jī)視覺研究中的一個重要方向,然而,因為其不容易在應(yīng)用中“顯式”地呈現(xiàn),而未被大眾熟知。隨著計算機(jī)視覺學(xué)界從圖像理解轉(zhuǎn)向視頻理解,互聯(lián)網(wǎng)用戶從發(fā)布圖片朋友圈轉(zhuǎn)向發(fā)布短視頻,人們對視頻的研究和應(yīng)用的關(guān)注不斷增強(qiáng)。

          作者 | 肖澤東 Shon

          鏈接 | https://zhuanlan.zhihu.com/p/74460341


          1.摘要

          近年來,深度學(xué)習(xí)技術(shù),作為一把利劍,廣泛地應(yīng)用于計算機(jī)視覺等人工智能領(lǐng)域。如今時常見諸報端的“人工智能時代”,從技術(shù)角度看,是“深度學(xué)習(xí)時代”。光流估計是計算機(jī)視覺研究中的一個重要方向,然而,因為其不容易在應(yīng)用中“顯式”地呈現(xiàn),而未被大眾熟知。隨著計算機(jī)視覺學(xué)界從圖像理解轉(zhuǎn)向視頻理解,互聯(lián)網(wǎng)用戶從發(fā)布圖片朋友圈轉(zhuǎn)向發(fā)布短視頻,人們對視頻的研究和應(yīng)用的關(guān)注不斷增強(qiáng)。光流估計作為視頻理解的隱形戰(zhàn)士,等著我們?nèi)ふ移溘欅E。本文首先介紹了什么是視頻光流估計;再介紹光流估計的算法原理,包括最為經(jīng)典的Lucas-Kanade算法和深度學(xué)習(xí)時代光流估計算法代表FlowNet/FlowNet2;最后,介紹了視頻光流估計的若干應(yīng)用。希望對光流估計的算法和應(yīng)用有個較為全面的介紹。

          2.介紹

          光流,顧名思義,光的流動。比如人眼感受到的夜空中劃過的流星。在計算機(jī)視覺中,定義圖像中對象的移動,這個移動可以是相機(jī)移動或者物體移動引起的。具體是指,視頻圖像的一幀中的代表同一對象(物體)像素點移動到下一幀的移動量,使用二維向量表示。如圖2-1。


          圖2-1 光流示意圖


          根據(jù)是否選取圖像稀疏點進(jìn)行光流估計,可以將光流估計分為稀疏光流和稠密光流,如圖2,左圖選取了一些特征明顯(梯度較大)的點進(jìn)行光流估計和跟蹤,右圖為連續(xù)幀稠密光流示意圖。


          圖2-2 左圖 稀疏點光流,右圖 稠密光流


          稠密光流描述圖像每個像素向下一幀運(yùn)動的光流,為了方便表示,使用不同的顏色和亮度表示光流的大小和方向,如圖2-2右圖的不同顏色。圖2-3展示了一種光流和顏色的映射關(guān)系,使用顏色表示光流的方向,亮度表示光流的大小。


          圖2-3 稠密光流表示顏色空間


          3.算法

          最為常用的視覺算法庫OpenCV中,提供光流估計算法接口,包括稀疏光流估計算法cv2.calcOpticalFlowPyrLK(),和稠密光流估計cv2.calcOpticalFlowFarneback()。其中稀疏光流估計算法為Lucas-Kanade算法,該算法為1981年由Lucas和Kanade兩位科學(xué)家提出的,最為經(jīng)典也較容易理解的算法,下文將以此為例介紹傳統(tǒng)光流算法。對于最新的深度學(xué)習(xí)光流估計算法,F(xiàn)lowNet的作者于2015年首先使用CNN解決光流估計問題,取得了較好的結(jié)果,并且在CVPR2017上發(fā)表改進(jìn)版本FlowNet2.0,成為當(dāng)時State-of-the-art的方法。截止到現(xiàn)在,F(xiàn)lowNet和FlowNet2.0依然和深度學(xué)習(xí)光流估計算法中引用率最高的論文,分別引用790次和552次。因此,深度學(xué)習(xí)光流估計算法將以FlowNet/FlowNet2.0為例介紹。

          3.1 傳統(tǒng)算法 Lucas-Kanade

          為了將光流估計進(jìn)行建模,Lucas-Kanade做了兩個重要的假設(shè),分別是亮度不變假設(shè)和鄰域光流相似假設(shè)。

          3.1.1 亮度不變假設(shè)



          圖3-1-1 - Lucas-Kanade 亮度不變假設(shè)


          亮度不變假設(shè)如圖3-1-1,假設(shè)待估計光流的兩幀圖像的同一物體的亮度不變,這個假設(shè)通常是成立的,因為環(huán)境光照通常不會發(fā)生太大的變化。假設(shè)  時刻,位于  像素位置的物體,在  時刻位于  位置,基于亮度不變假設(shè),有:

            

          將等式右邊進(jìn)行一階泰勒展開得:

            

          即有:

            

          寫成矩陣形式有:

            

          其中,    分別為    像素點處圖像亮度在x方向和y方向的偏導(dǎo)數(shù),即圖像x和y方向的梯度。    為t時刻,    處像素亮度對時間的導(dǎo)數(shù),    即為兩圖之間的    坐標(biāo)位置的亮度差,表示為    。即:

            

          給定兩張圖像,   ,   均為已知量,    即為待求的光流。式(3-1-5)中建立了一個等式,存在兩個未知數(shù)(    ),無法得到唯一解。因此,需要借助鄰域光流相似假設(shè)。

          3.1.2 鄰域光流相似假設(shè)



          圖3-1-2 - 領(lǐng)域光流相似假設(shè)


          鄰域光流相似假設(shè)如圖3-1-2,以像素點    為中心,設(shè)定3x3的鄰域(以3x3舉例,也可以是其他的大?。?,假設(shè)該鄰域內(nèi)的所有像素點光流值一致,通常,一個小的圖像區(qū)域里像素移動方向和大小是基本一致的,因此,這個假設(shè)也是合理的。借助該假設(shè),領(lǐng)域內(nèi)的所有像素都有式(3-1-5),得:

            

          上式即為    的形式,可求得光流    的最小二乘解:

            

          其中,要求    可逆,如果    不可逆,式3-1-6將出現(xiàn)多解,即出現(xiàn)孔徑問題(Aperture Problem),如圖3-1-3,從圓孔中觀察三種移動的條紋的變化,是一致的,從而無法通過圓孔得到條紋的真實移動方向(光流方向)。因此,Lucas-Kanade方法將選取一些    可逆的像素點估計光流,這些點是一些亮度變化明顯的角點,知名的角點檢測算法Harris角點檢測算法正是借助了    可逆的相關(guān)性質(zhì)。


          圖3-1-3 光流求解的孔徑問題


          除了基于亮度不變假設(shè)和鄰域光流相似假設(shè),為了解決圖像偏移較大的情況,Lucas-Kanade算法還借助了圖像金字塔(Pyramid)的方式,在高層低分辨率圖像上,大的偏移將變?yōu)樾〉钠?。最終,Lucas-Kanade方法給出了一種求解稀疏(明顯特征的角點)光流的方法。

          3.2 深度學(xué)習(xí)算法 FlowNet/FlowNet2.0

          ICCV2015提出的FlowNet是最早使用深度學(xué)習(xí)CNN解決光流估計問題的方法,并且在CVPR2017,同一團(tuán)隊提出了改進(jìn)版本FlowNet2.0。FlowNet2.0 是2015年以來光流估計鄰域引用最高的論文。

          3.2.1 FlowNet

          作者嘗試使用深度學(xué)習(xí)End-to-End的網(wǎng)絡(luò)模型解決光流估計問題,如圖3-2-1,該模型的輸入為待估計光流的兩張圖像,輸出即為圖像每個像素點的光流。我們從Loss的設(shè)計,訓(xùn)練數(shù)據(jù)集和網(wǎng)絡(luò)設(shè)計來分析FlowNet。


          圖3-2-1 深度學(xué)習(xí)End-to-End 光流估計模型


          對于Loss的設(shè)計,如果給定每個像素groundtruth的光流,那么對于每個像素,loss可以定義為預(yù)測的光流(2維向量)和groundtruth之間的歐式距離,稱這種誤差為EPE(End-Point-Error),如圖


          圖3-2-2 End Point Error


          對于訓(xùn)練數(shù)據(jù)集,由于稠密光流的groundtruth為圖像每個像素的光流值,人工標(biāo)注光流值幾乎不可能。因此,作者設(shè)計了一種生成的方式,得到包括大量樣本的訓(xùn)練數(shù)據(jù)集FlyingChairs。其生成方式為對圖像做仿射變換生成對應(yīng)的圖像。為了模擬圖像中存在多種運(yùn)動,比如相機(jī)在移動,同時圖像中的人或物體也在移動。作者將虛擬的椅子疊加到背景圖像中,并且背景圖和椅子使用不同的仿射變換得到對應(yīng)的另一張圖,如圖3-2-3。


          圖3-2-3 FlyingChairs數(shù)據(jù)集生成


          對于深度網(wǎng)絡(luò)結(jié)構(gòu),該類網(wǎng)絡(luò)通常包括降維的encoder模塊和升維的decoder模塊。作者設(shè)計了兩種網(wǎng)絡(luò),FlowNetSimple和FlowNetCorr(Correlation)。這兩種網(wǎng)絡(luò)的Encoder模塊不同,Decoder模塊相同。


          圖3-2-4 FlowNetSimple
          圖3-2-5 FlowNetCoor


          FlowNetSimple簡單地將兩張圖排列到一起,即將兩張    圖,合并成    的Tensor,作為CNN encoder的輸入(如圖3-2-4),這是最為簡單的將兩張圖的信息整合到一起的方式,也因此命名為FlowNetSimple。FlowNetCoor則先對兩張圖像分別進(jìn)行卷積,獲得較為高層的feature后,再進(jìn)行相關(guān)運(yùn)算(引入人為定義的規(guī)則),將信息合并,如圖3-2-5。其中,相關(guān)運(yùn)算借鑒了傳統(tǒng)視覺算法中,找圖像匹配的思想。如圖3-2-6,為了尋找上圖紅框椅子角在下圖中對應(yīng)得位置,在下圖對應(yīng)像素位置周圍依次滑動,做相關(guān)運(yùn)算(即對應(yīng)位置像素相乘求和)。得到的值越大,代表越相關(guān),即圖像越接近。FlowNetCoor網(wǎng)絡(luò)中的相關(guān)運(yùn)算類似,不同點是其不在圖像本身做相關(guān),在卷積得到的FeatureMap上做相關(guān)運(yùn)算,圖3-2-6上圖FeatureMap與下圖FeatureMap對應(yīng)像素附近區(qū)域做相關(guān),上圖(u,v)坐標(biāo)圖塊與下圖對應(yīng)區(qū)域的鄰域內(nèi)(綠框)滑動做相關(guān)運(yùn)算,得到的值在輸出FeatureMap通道方向上依次排開,圖3-2-4中相關(guān)運(yùn)算的輸出通道數(shù)為441,即下圖做相關(guān)運(yùn)算的鄰域范圍為 21x21 。


          圖3-2-6 相關(guān)運(yùn)算示意圖


          兩種網(wǎng)絡(luò)的Decoder是一致的(見圖3-2-7),其通過反卷積進(jìn)行升維,各層反卷積運(yùn)算的輸入包括三個部分,第一部分是上一層的反卷積輸出deconv*(高層語義信息),第二部分來之Encoder相關(guān)層的FeatureMap conv*_1(低層局部信息),第三部分由前一層卷積的輸出coarse的光流flow*上采樣得到。從而融合了高層和低層的信息,也引入了coarse-to-fine(由粗到細(xì))的機(jī)制。


          圖3-2-7 Decoder網(wǎng)絡(luò)結(jié)構(gòu)


          基于上述網(wǎng)絡(luò)和訓(xùn)練集,作者基于深度學(xué)習(xí)設(shè)計的FlowNet在實時估計光流算法中取得了state-of-the-art的結(jié)果,但是依然比非實時的傳統(tǒng)方法效果要差。同時,作者對比了FlowNetS和FlowNetCoor,F(xiàn)lowNetCoor的效果更好,證實了人工加入的相關(guān)運(yùn)算是有效的,也符合預(yù)期。

          3.2.2 FlowNet2.0

          FlowNet2.0是FlowNet團(tuán)隊發(fā)表在CVPR2017的改進(jìn)方法,該方法達(dá)到了state-of-the-art效果(包括非實時的傳統(tǒng)方法),并且計算速度很快,達(dá)到實時的要求。FlowNet2.0的改進(jìn)主要體現(xiàn)在兩個方面,一方面是通過堆疊多個FlowNet網(wǎng)絡(luò),實現(xiàn)Coarse-to-Fine的效果;另一方面是解決FlowNet小偏移(Small Displacement)估計不準(zhǔn)確的問題。FlowNet2.0整體網(wǎng)絡(luò)結(jié)構(gòu)如圖3-2-8,圖上方依次堆疊了FlowNetCoor+FlowNetS+FlowNetS。值得注意的是,后續(xù)FlowNet的輸入不僅僅是兩張圖片(圖1和圖2),還包括前一個網(wǎng)絡(luò)輸入的光流估計Flow,和一張Warped圖,再加一張亮度誤差(Brightness Error)。其中Warped圖為將估計的光流作用在圖2上,即為使用估計的每個像素偏移,偏移圖2的每一個像素,使其與圖1對齊。雖然作用了光流偏移,由于光流估計的不夠準(zhǔn)確,Warped圖和圖1依然存在一定的偏差,圖1的亮度減去Warped圖的亮度,即可得到亮度誤差(BrightnessError)圖。最后,將所有的五項輸入堆疊成輸入的Tensor,輸入到后續(xù)的網(wǎng)絡(luò)中。小偏移即光流偏移較小的情形,作者設(shè)計了適合小偏移的FlowNet-SD(Small-Displacement),其修改FlowNet中卷積核和stride的大小,使其更適合小偏移。具體的變化為,將FlowNet中7x7和5x5的卷積和改為3x3的卷積核(更小的卷積和意味著更加精細(xì)的處理,因此更加適合小偏移估計的問題),并且將stride=2改為stride=1。


          圖3-2-8 FlowNet2.0 整體框圖


          作者給出的FlowNet2.0實驗結(jié)果如圖3-2-9,其中給出了5種版本的FlowNet2,FlowNet2、FN2-CSS-ft-sd/FN2-css-ft-sd、FN2-ss、FN2-s, c/C代表Coor網(wǎng)絡(luò),s/S代表Simple網(wǎng)絡(luò),小寫(s,c)代表網(wǎng)絡(luò)參數(shù)較少(縮小了卷積和數(shù)量)的版本。FlowNet2是指FlowNet2的完整網(wǎng)絡(luò)(如圖3-2-8),ft代表在真實數(shù)據(jù)集上進(jìn)行了fine-tune,sd代表包含small-displacement模塊。因此,實驗結(jié)果表明FlowNet2達(dá)到了所有方法State-of-the-are結(jié)果(包括非實時的傳統(tǒng)方法),計算效率要比最好的傳統(tǒng)方法快兩個數(shù)量級,達(dá)到了實時的要求。并且根據(jù)不同的應(yīng)用需求,不同速度和精度的要求,有不同的版本供選擇。


          圖3-2-9 FlowNet2.0 對比結(jié)果


          4. 應(yīng)用

          光流,從物理意義的角度看,描述了視頻中物體、對象在時間維度上的關(guān)聯(lián)性,從而建立了視頻中連續(xù)圖像之間的關(guān)聯(lián)關(guān)系。因此,最為直接而自然的應(yīng)用就是視頻中物體的跟蹤,在物體跟蹤領(lǐng)域知名的TLD算法便借助了光流估計,圖2中展示了在車輛上的特征點光流跟蹤的效果。在視覺里程計和SLAM同步定位與建圖領(lǐng)域,光流可以作為圖像特征點匹配的一種方式,比如知名的視覺慣性里程計開源算法VINS-Mono。英偉達(dá)也提供了基于其GPU的光流SDK,其中展示了利用光流進(jìn)行視頻動作識別(video action recognition)和視頻插幀的應(yīng)用,如圖4-1,4-2。


          圖4-1 光流應(yīng)用于動作識別
          圖4-2 光流應(yīng)用于視頻插幀


          5. 總結(jié)

          對于稀疏光流,本文提到的Lucas-Kanade是一種經(jīng)典且有效的算法,對于稠密光流估計,傳統(tǒng)方法需要在精度和速度上做出取舍,而最新基于深度學(xué)習(xí)的FlowNet2算法可以實時取得state-of-the-art的精度。

          參考文獻(xiàn)

          [1] Ilg, Eddy, et al. "Flownet 2.0: Evolution of optical flow estimation with deep networks."Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.

          [2] Dosovitskiy, Alexey, et al. "Flownet: Learning optical flow with convolutional networks."Proceedings of the IEEE international conference on computer vision. 2015.

          [3] NVIDIA Optical Flow SDK developer.nvidia.com/op , Accessed at 2019/7/20


          END



          雙一流大學(xué)研究生團(tuán)隊創(chuàng)建,專注于目標(biāo)檢測與深度學(xué)習(xí),希望可以將分享變成一種習(xí)慣!

          整理不易,點贊三連↓

          瀏覽 92
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国二区在线播放视频 | 九九综合 | 丁香五月天视频 | 日本黄色片免费 | 日韩精品毛片 |