<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>

          光流估計(jì)綜述:從傳統(tǒng)方法到深度學(xué)習(xí)

          共 5967字,需瀏覽 12分鐘

           ·

          2020-09-20 10:51

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

          重磅干貨,第一時(shí)間送達(dá)

          本文轉(zhuǎn)載自知乎肖澤東,只是介紹方法,綜述二字不敢當(dāng)

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


          ???1.摘要

          近年來,深度學(xué)習(xí)技術(shù),作為一把利劍,廣泛地應(yīng)用于計(jì)算機(jī)視覺等人工智能領(lǐng)域。如今時(shí)常見諸報(bào)端的“人工智能時(shí)代”,從技術(shù)角度看,是“深度學(xué)習(xí)時(shí)代”。

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

          光流估計(jì)作為視頻理解的隱形戰(zhàn)士,等著我們?nèi)ふ移溘欅E。

          本文首先介紹了什么是視頻光流估計(jì);再介紹光流估計(jì)的算法原理,包括最為經(jīng)典的Lucas-Kanade算法和深度學(xué)習(xí)時(shí)代光流估計(jì)算法代表FlowNet/FlowNet2;

          最后,介紹了視頻光流估計(jì)的若干應(yīng)用。希望對(duì)光流估計(jì)的算法和應(yīng)用有個(gè)較為全面的介紹。


          ?? 2.介紹

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

          圖2-1 光流示意圖

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

          圖2-2 左圖 稀疏點(diǎn)光流,右圖 稠密光流

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

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


          ???3.算法

          最為常用的視覺算法庫OpenCV中,提供光流估計(jì)算法接口,包括稀疏光流估計(jì)算法cv2.calcOpticalFlowPyrLK(),和稠密光流估計(jì)cv2.calcOpticalFlowFarneback()。

          其中稀疏光流估計(jì)算法為L(zhǎng)ucas-Kanade算法,該算法為1981年由Lucas和Kanade兩位科學(xué)家提出的,最為經(jīng)典也較容易理解的算法,下文將以此為例介紹傳統(tǒng)光流算法。

          對(duì)于最新的深度學(xué)習(xí)光流估計(jì)算法,F(xiàn)lowNet的作者于2015年首先使用CNN解決光流估計(jì)問題,取得了較好的結(jié)果,并且在CVPR2017上發(fā)表改進(jìn)版本FlowNet2.0,成為當(dāng)時(shí)State-of-the-art的方法。

          截止到現(xiàn)在,F(xiàn)lowNet和FlowNet2.0依然和深度學(xué)習(xí)光流估計(jì)算法中引用率最高的論文,分別引用790次和552次。因此,深度學(xué)習(xí)光流估計(jì)算法將以FlowNet/FlowNet2.0為例介紹。

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

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

          3.1.1 亮度不變假設(shè)


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

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

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

          即有:

          寫成矩陣形式有:

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

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

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


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

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

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

          其中,要求??可逆,如果??不可逆,式3-1-6將出現(xiàn)多解,即出現(xiàn)孔徑問題(Aperture Problem),如圖3-1-3,從圓孔中觀察三種移動(dòng)的條紋的變化,是一致的,從而無法通過圓孔得到條紋的真實(shí)移動(dòng)方向(光流方向)。

          因此,Lucas-Kanade方法將選取一些??可逆的像素點(diǎn)估計(jì)光流,這些點(diǎn)是一些亮度變化明顯的角點(diǎn),知名的角點(diǎn)檢測(cè)算法Harris角點(diǎn)檢測(cè)算法正是借助了??可逆的相關(guān)性質(zhì)。


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

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

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

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

          3.2.1 FlowNet

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

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

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

          圖3-2-2 End Point Error

          對(duì)于訓(xùn)練數(shù)據(jù)集,由于稠密光流的groundtruth為圖像每個(gè)像素的光流值,人工標(biāo)注光流值幾乎不可能。

          因此,作者設(shè)計(jì)了一種生成的方式,得到包括大量樣本的訓(xùn)練數(shù)據(jù)集FlyingChairs。其生成方式為對(duì)圖像做仿射變換生成對(duì)應(yīng)的圖像。為了模擬圖像中存在多種運(yùn)動(dòng),比如相機(jī)在移動(dòng),同時(shí)圖像中的人或物體也在移動(dòng)。作者將虛擬的椅子疊加到背景圖像中,并且背景圖和椅子使用不同的仿射變換得到對(duì)應(yīng)的另一張圖,如圖3-2-3。

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

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

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

          FlowNetSimple簡(jiǎn)單地將兩張圖排列到一起,即將兩張??圖,合并成??的Tensor,作為CNN encoder的輸入(如圖3-2-4),這是最為簡(jiǎn)單的將兩張圖的信息整合到一起的方式,也因此命名為FlowNetSimple。FlowNetCoor則先對(duì)兩張圖像分別進(jìn)行卷積,獲得較為高層的feature后,再進(jìn)行相關(guān)運(yùn)算(引入人為定義的規(guī)則),將信息合并,如圖3-2-5。

          其中,相關(guān)運(yùn)算借鑒了傳統(tǒng)視覺算法中,找圖像匹配的思想。如圖3-2-6,為了尋找上圖紅框椅子角在下圖中對(duì)應(yīng)得位置,在下圖對(duì)應(yīng)像素位置周圍依次滑動(dòng),做相關(guān)運(yùn)算(即對(duì)應(yīng)位置像素相乘求和)。得到的值越大,代表越相關(guān),即圖像越接近。

          FlowNetCoor網(wǎng)絡(luò)中的相關(guān)運(yùn)算類似,不同點(diǎn)是其不在圖像本身做相關(guān),在卷積得到的FeatureMap上做相關(guān)運(yùn)算,圖3-2-6上圖FeatureMap與下圖FeatureMap對(duì)應(yīng)像素附近區(qū)域做相關(guān),上圖(u,v)坐標(biāo)圖塊與下圖對(duì)應(yīng)區(qū)域的鄰域內(nèi)(綠框)滑動(dòng)做相關(guān)運(yùn)算,得到的值在輸出FeatureMap通道方向上依次排開,圖3-2-4中相關(guān)運(yùn)算的輸出通道數(shù)為441,即下圖做相關(guān)運(yùn)算的鄰域范圍為??。

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

          兩種網(wǎng)絡(luò)的Decoder是一致的(見圖3-2-7),其通過反卷積進(jìn)行升維,各層反卷積運(yùn)算的輸入包括三個(gè)部分,第一部分是上一層的反卷積輸出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è)計(jì)的FlowNet在實(shí)時(shí)估計(jì)光流算法中取得了state-of-the-art的結(jié)果,但是依然比非實(shí)時(shí)的傳統(tǒng)方法效果要差。同時(shí),作者對(duì)比了FlowNetS和FlowNetCoor,F(xiàn)lowNetCoor的效果更好,證實(shí)了人工加入的相關(guān)運(yùn)算是有效的,也符合預(yù)期。

          3.2.2 FlowNet2.0

          FlowNet2.0是FlowNet團(tuán)隊(duì)發(fā)表在CVPR2017的改進(jìn)方法,該方法達(dá)到了state-of-the-art效果(包括非實(shí)時(shí)的傳統(tǒng)方法),并且計(jì)算速度很快,達(dá)到實(shí)時(shí)的要求。FlowNet2.0的改進(jìn)主要體現(xiàn)在兩個(gè)方面,一方面是通過堆疊多個(gè)FlowNet網(wǎng)絡(luò),實(shí)現(xiàn)Coarse-to-Fine的效果;另一方面是解決FlowNet小偏移(Small Displacement)估計(jì)不準(zhǔn)確的問題。FlowNet2.0整體網(wǎng)絡(luò)結(jié)構(gòu)如圖3-2-8,圖上方依次堆疊了FlowNetCoor+FlowNetS+FlowNetS。

          值得注意的是,后續(xù)FlowNet的輸入不僅僅是兩張圖片(圖1和圖2),還包括前一個(gè)網(wǎng)絡(luò)輸入的光流估計(jì)Flow,和一張Warped圖,再加一張亮度誤差(Brightness Error)。

          其中Warped圖為將估計(jì)的光流作用在圖2上,即為使用估計(jì)的每個(gè)像素偏移,偏移圖2的每一個(gè)像素,使其與圖1對(duì)齊。雖然作用了光流偏移,由于光流估計(jì)的不夠準(zhǔn)確,Warped圖和圖1依然存在一定的偏差,圖1的亮度減去Warped圖的亮度,即可得到亮度誤差(BrightnessError)圖。

          最后,將所有的五項(xiàng)輸入堆疊成輸入的Tensor,輸入到后續(xù)的網(wǎng)絡(luò)中。小偏移即光流偏移較小的情形,作者設(shè)計(jì)了適合小偏移的FlowNet-SD(Small-Displacement),其修改FlowNet中卷積核和stride的大小,使其更適合小偏移。具體的變化為,將FlowNet中7x7和5x5的卷積和改為3x3的卷積核(更小的卷積和意味著更加精細(xì)的處理,因此更加適合小偏移估計(jì)的問題),并且將stride=2改為stride=1。

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

          作者給出的FlowNet2.0實(shí)驗(yàn)結(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í)數(shù)據(jù)集上進(jìn)行了fine-tune,sd代表包含small-displacement模塊。

          因此,實(shí)驗(yàn)結(jié)果表明FlowNet2達(dá)到了所有方法State-of-the-are結(jié)果(包括非實(shí)時(shí)的傳統(tǒng)方法),計(jì)算效率要比最好的傳統(tǒng)方法快兩個(gè)數(shù)量級(jí),達(dá)到了實(shí)時(shí)的要求。并且根據(jù)不同的應(yīng)用需求,不同速度和精度的要求,有不同的版本供選擇。

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

          ???4.應(yīng)用

          光流,從物理意義的角度看,描述了視頻中物體、對(duì)象在時(shí)間維度上的關(guān)聯(lián)性,從而建立了視頻中連續(xù)圖像之間的關(guān)聯(lián)關(guān)系。

          因此,最為直接而自然的應(yīng)用就是視頻中物體的跟蹤,在物體跟蹤領(lǐng)域知名的TLD算法便借助了光流估計(jì),圖2中展示了在車輛上的特征點(diǎn)光流跟蹤的效果。在視覺里程計(jì)和SLAM同步定位與建圖領(lǐng)域,光流可以作為圖像特征點(diǎn)匹配的一種方式,比如知名的視覺慣性里程計(jì)開源算法VINS-Mono。英偉達(dá)也提供了基于其GPU的光流SDK,其中展示了利用光流進(jìn)行視頻動(dòng)作識(shí)別(video action recognition)和視頻插幀的應(yīng)用,如圖4-1,4-2。

          圖4-1 光流應(yīng)用于動(dòng)作識(shí)別

          圖4-2 光流應(yīng)用于視頻插幀

          ???5.總結(jié)

          對(duì)于稀疏光流,本文提到的Lucas-Kanade是一種經(jīng)典且有效的算法,對(duì)于稠密光流估計(jì),傳統(tǒng)方法需要在精度和速度上做出取舍,而基于深度學(xué)習(xí)的FlowNet2算法可以實(shí)時(shí)取得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

          瀏覽 68
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  肏屄视频观看 | 成人黄片视频在线 | 成人无码操屄AV大片 | 日韩一级电影观看 | www.日本一级在线 |