劉曉晨,張 濤
(1. 東南大學儀器科學與工程學院,南京 210096;2.東南大學微慣性儀表與先進導航技術教育部重點實驗室,南京 210096)
光流作為一種描述物體運動的方法,受啟發(fā)于自然界。蜜蜂等昆蟲的導航與著陸等行為均依賴于其復眼中的光流。光流估計是計算機視覺研究中一項基礎且重要的任務,用于獲得連續(xù)兩幀圖像中對應物體的像素級別的移動。光流分為稠密光流和稀疏光流。稀疏光流只對每個感興趣點周圍小窗口內的局部信息進行光流求解,得到的光流數量遠小于圖像尺寸。而稠密光流則對圖像上每一個像素點進行一次光流解算,得到的光流數量等于圖像尺寸。因此,稠密光流包含了更多的信息,相較于稀疏光流有更好的適用性。目前,光流在導航、運動檢測和目標跟蹤等任務中擁有廣泛的應用場景。經典的光流估計方法大多通過最小化以亮度恒定和空間平滑假設為代表的能量函數來求解目標光流,如1981年B.Horn和B.G.Schunck提出的HS光流算法和B.D.Lucas和T.Kanade提出的LK光流算法。隨著這兩種光流算法的出現,同時面向無人機和無人車等設備的自主導航需求,越來越多的學者開始利用光流求解導航參數。唐大全等利用ORB(Oriented FAST and Rotated BRIEF)優(yōu)化LK光流算法,提升了無人機速度估計的精度。Yang J.等通過最小化一個包含分段常數模型假設和光流場連續(xù)性約束假設的全新能量函數,獲得了在復雜運動背景下的物體光流信息。閆寶龍等利用模糊核均值算法對金字塔LK算法得到的稀疏光流進行聚類,減少由于光照變化等不利條件對光流野值造成的影響,提升了載體速度的估計精度。雖然在很長的一段時間內,以HS和LK光流算法為代表的經典變分方法成為求解光流的主流方法,但其針對大位移、運動遮擋與光照變化等條件下的光流解算精度還需進一步提高;同時,由于存在大量的迭代計算,導致變分模型法實時性較差,進而限制了該方法的應用。
隨著高性能圖像處理單元(Graphics Proces-sing Unit,GPU)的快速發(fā)展,為基于深度學習的光流估計方法提供了硬件基礎。Flownet開創(chuàng)了利用有監(jiān)督卷積神經網絡(Convolutional Neural Networks,CNN)估計光流的先河,啟發(fā)了越來越多的研究者開展基于深度學習光流估計方法的研究。作為里程碑式的工作,Flownet2.0針對Flownet光流估計精度不高等問題,利用網絡堆疊實現了更加復雜的結構,將基于深度學習法的光流估計精度提升到了和經典變分法一致的水準,但也導致網絡的實時性較差。A.Ranjan等將空間金字塔模型和深度學習模型相結合,提出了一個名為Spynet的精簡化網絡,實現了光流由粗到精的估計。Zhai M.等利用空間金字塔中的兩種注意力模塊,自適應地對網絡中的通道和空間特征進行加權,提高了光流的估計精度。雖然目前利用有監(jiān)督學習估計的光流精度已超過變分方法,實時性也較變分方法有所提高,但大多數基于深度學習的光流估計方法都需要對應的逐像素的光流真值參與模型的訓練,而光流真值的獲取工作異常繁瑣,因此合成數據集成為訓練網絡所需樣本的主要來源。由于合成數據集與真實應用環(huán)境存在差異,利用合成數據集訓練出來的網絡在真實環(huán)境中的表現并不太理想。因此,無監(jiān)督學習的方法成為了光流估計領域的熱點。
基于無監(jiān)督學習的光流估計方法大多采用新的損失函數來指導網絡實現無監(jiān)督訓練。J.J.Yu等受經典變分理論的啟發(fā),在損失函數中引入亮度恒定和運動平滑項,使光流估計網絡實現了無監(jiān)督的訓練。Yang B.等基于前后向一致性檢驗和魯棒Census變換,設計了一個全新的損失函數,實現了光流的無監(jiān)督估計。Liu P.等基于知識蒸餾技術,提出了一種無監(jiān)督方案,利用教師網絡指導學生網絡學習光流估計。雖然無監(jiān)督學習方案無需光流真值參加網絡的訓練,且在某些特定場景中的性能可以超過有監(jiān)督學習(如簡單運動場景),但在稍微復雜環(huán)境或運動中無監(jiān)督方法的精度仍然不足。同時,僅僅利用改進的損失函數對網絡進行指導,對光流估計精度的提升是有限的,因此,一些研究人員將重點放在了生成對抗網絡(Ge-nerative Adversarial Networks,GAN)上。
在零和博弈思想的啟發(fā)下,GAN最初由I.Good-fellow于2014年提出,由生成器和判別器之間的對抗性訓練來實現。GAN在圖像生成、風格轉化和超分辨率生成等計算機視覺領域有著巨大的潛力。為了進一步提高光流估計的精度,一些工作從GAN中借鑒對抗機制以取代無監(jiān)督方法中的損失函數,取得了具有競爭意義的成果。R.K.Thakur等提出了一種基于條件生成對抗網絡的場景光流估計方案,該方案可以從立體圖像中獲取場景光流。為了降低無監(jiān)督方法中亮度恒定和空間平滑性先驗的局限性,文獻[18]采用對抗損失和GAN結構代替先驗假設估計光流。在此基礎上,Che T.等在GAN中嵌入一個倒置網絡,用于獲得對稱光流,進而提升光流估計的準確性。盡管其中一些方法是半監(jiān)督方法,但這些方法同樣需要光流真值來更新判別器,這依舊依賴于帶有真值的光流數據集。同時GAN的訓練不穩(wěn)定,容易陷入模式崩塌(Mode Collapse),導致訓練失敗。
為充分發(fā)揮GAN在光流估計中的優(yōu)點,并克服上述不足,本文提出了一種基于循環(huán)生成對抗網絡(Cycle-GAN)的無監(jiān)督光流估計方法。首先,利用循環(huán)對抗機制,在網絡訓練階段擺脫對光流真值的依賴,實現無監(jiān)督訓練。其次,為提升光流估計精度,提出了一種雙判別器機制(Dual Discrimina-tor Mechanism,DDM),對生成器生成的光流在底層和高層特征中分別進行鑒別,迫使生成器生成更加符合光流原始分布的數據。然后,為降低Cycle-GAN陷入模式崩塌的風險,本文將Spynet作為教師網絡,在Cycle-GAN訓練的前期,指引其訓練方向,提升訓練效率。最后,改進Cycle-GAN損失函數,利用光流一致性損失來進一步提高光流估計的精度,通過輪廓一致性損失來細化前景物體輪廓的光流信息。
GAN是一種借鑒零和博弈思想而產生的深度學習網絡。GAN中最核心的兩部分是生成器和判別器。生成器負責按照要求生成數據樣本,以期利用生成的樣本欺騙判別器。判別器則竭盡所能將生成器生成的樣本和真實樣本區(qū)分開。生成器和判別器以此種方式進行對抗訓練,當判別器無法準確區(qū)分數據來源時,即達到納什平衡,完成訓練。
為降低網絡在訓練階段對光流真值的依賴,本文利用改進Cycle-GAN進行運動物體的光流場的無監(jiān)督獲取。經典的Cycle-GAN在GAN的基礎上,引入了額外一條對稱的鏡像分支,兩條分支對同一任務進行循環(huán)求解,進而實現對網絡的無監(jiān)督訓練。本文提出的改進Cycle-GAN的整體框架如圖1所示。為方便網絡訓練,本文將兩張待求解光流的RGB圖片和在通道維度拼接后生成的6維張量直接作為生成器的輸入。如圖1所示,在Cycle-GAN中,Real_A與Real_B是無對應關系的兩類圖片,在本文中,Real_A為兩幀共6維待求解光流圖片,其包含了光流信息;Real_B為任意真實光流可視化圖,主要負責為網絡指明訓練的方向。循環(huán)生成對抗網絡由兩條完全對稱的分支組成,為簡化說明,只對Real_A到Rec_A進行解釋。首先,Real_A經過生成器生成一個二維的光流矩陣,而后經過光流可視化操作,將二維光流矩陣轉化為三維圖像,即Fake_B,也就是說,生成器負責由原始圖向光流矩陣進行轉換。而后將得到的Fake_B與Real_B同時輸入到雙判別器中,雙判別器同時對圖像來源進行判斷。若來自生成器,則盡可能將其標記為0,若來自Real_B,則盡可能將其標記為1。此后,將Fake_B接著輸入到生成器中,反向生成類似于Real_A的圖片Rec_A,即生成器負責將圖片由光流圖向原始圖轉換。同理,在另一條支路中,Real_B也經歷了兩個生成器的循環(huán)轉換,在此不再贅述。循環(huán)生成對抗網絡的這種循環(huán)生成機制,使其具有了無監(jiān)督學習的能力,不需要一一對應的樣本真值,大大降低了訓練樣本的獲取難度。
圖1 本文提出的用于光流估計的改進Cycle-GANFig.1 The improved Cycle-GAN for optical flow estimation
在GAN的訓練過程中,生成器極易產生單個或者有限個模式的圖片,使得不同的樣本輸入生成器得到的輸出是大致相同的,即產生了模式崩塌。為降低模式崩塌的風險,本文在Cycle-GAN的訓練過程中,引入事先訓練好的Spynet光流網絡作為教師網絡,在訓練初期指引生成器快速、高效地逼近目標域,在節(jié)省訓練時間的基礎上,增加模型的魯棒性,降低陷入模式崩塌的風險。具體細節(jié)將在后續(xù)介紹。
為提升生成器生成的光流精度,本文提出了雙判別器機制來迫使生成器生成更高質量的光流信息。雙判別器結構如圖2所示。判別器與判別器網絡結構大不相同,經過3層3×3卷積后,特征被提取到256維,而后利用1層3×3卷積對圖片的來源進行判斷,True代表圖像來源于Real_B,False則代表圖像來源于生成器生成的樣本Fake_B。判別器結構較為簡單,所提取的特征維度較低,只能感受到底層特征,因此被用來針對圖片的輪廓、線條以及顏色等底層特征進行圖像判別。相反,在判別器中,經過4層卷積后,特征被提取到了512維,而后經過6層殘差連接模塊進行特征的進一步提取與抽象,最后經過1層3×3卷積輸出一個判別結果。判別器結構較為復雜,能提取圖像中的高層特征,因此被用來針對圖像的語義特征進行鑒別。綜上,在網絡的訓練過程中,將生成器經圖像可視化得到的Fake_B和Real_B輸入給雙判別器,雙判別器中的和分別從底層特征和高層特征對圖像來源進行鑒別,如圖像來源于Real_B,則需要和同時輸出為True,否則為False。
圖2 本文提出的雙判別器機制Fig.2 The proposed dual discriminator mechanism
為提升雙判別器中對高層語義特征的判別能力,本文設計了一個殘差連接模塊,如圖3所示。輸入-1被分為2路,分支1為跳躍連接;分支2經過3×3卷積、歸一化和ReLU激活函數激活后,輸入到1個3×3卷積與歸一化層組成的模塊中,而后與分支1中的原始輸入-1相加,作為最終的輸出。采用殘差模塊的作用在于可以增加網絡深度的同時,使得網絡參數可以有效地進行傳播,進而減少梯度消失的風險。
圖3 殘差連接模塊Fig.3 The structure of Resnet-Block
如前所述,Rec_A是由Real_A經生成器和生成的,而Fake_B為所需光流圖,為保證Fake_B在語義上的正確性,需保證Rec_A與Real_A盡可能地相似,以和表示Real_A和Real_B,則有循環(huán)一致性損失如下
(1)
其中,代表數據的期望值,本文提出的雙判別器機制中,包含兩組4個判別器(,和,),以,為例,循環(huán)生成對抗網絡對抗損失函數如下
(,,,,)=~()[log()+
log()]+~()[log(1-(()))+
log(1-(()))]
(2)
從對抗損失中可以看出,雙判別器致力于最大化該損失,即將生成器生成的虛假圖像與真實圖像盡可能地分辨出來。而生成器則通過最小化對抗損失函數,以達到蒙騙判別器的目的。
圖4所示為用于表示光流大小與方向的色輪圖。該色輪基于HIS(Hue-Intensity-Saturation)顏色空間,沿切向旋轉時,代表了光流不同的方向;從色輪圓心沿徑向向外飽和度增加,則代表了光流的大小逐漸增加。因此,可以根據色輪一一確定光流圖中的運動方向與大小。光流的可視化轉換是以為基礎,將中物體的運動利用HIS顏色空間展現出來?;诖耍疚慕Y合光流的定義,引入光流一致性損失,具體定義如下
=((+,+)-(,))
(3)
其中,和代表網絡計算出的水平和垂直方向光流;和代表待求解光流的兩幅原始圖像;和分別為對應圖片中的坐標;()=(+0001)為Charbonnier懲罰函數,本文取05。光流的定義即為到中對應像素的移動,因此,可通過光流一致性損失來優(yōu)化光流的求取精度。
圖4 光流色輪圖Fig.4 The color wheel for optical flow estimation
其次,光流圖中的物體輪廓信息是基于中運動物體的位置生成的,因此,引入輪廓一致性損失函數來優(yōu)化生成的光流圖中的物體相較于中對應物體的輪廓細節(jié)。具體如下
=((()))-()
(4)
其中,代表對整幅圖進行二值輪廓提取操作;代表對光流進行可視化操作。
然后,本文引入Spynet作為教師網絡,對生成器生成的光流進行指導。由于本文中的教師網絡只負責對Cycle-GAN前期的訓練指明方向,后續(xù)通過對抗機制不斷優(yōu)化自身精度,因此無需追求高精度網絡作為教師網絡。Spynet作為一種簡單的光流估計網絡,參數量少,可以降低對設備的計算需求,比較適合作為本文提出的網絡的教師網絡。深度學習的訓練需要大量樣本數據,大量訓練數據的引入也導致了網絡訓練的速度變慢,教師網絡的引入可以降低循環(huán)生成對抗網絡對訓練樣本的依賴,提升訓練速度,同時也可減少網絡陷入模式崩塌的風險。本文采用端點誤差(Endpoint Error,EPE)損失作為教師網絡的損失。
(5)
最終,本文提出的優(yōu)化之后的Cycle-GAN損失函數如下。
=
++++
(6)
其中,~表示權重系數。
Flyingchairs作為一款合成數據集,擁有22872組光流原始圖片和其對應的真值數據,是基于深度學習估計光流的重要數據集。為減輕新樣本采集壓力,本文采用該數據集對提出的改進Cycle-GAN進行訓練。同時,本文選取隨機的22000組光流原始圖像和隨機的10000組光流真值作為訓練樣本,以此種方式打亂光流原始圖像和真值的對應關系,從而驗證網絡的無監(jiān)督訓練方式。特別地,詳細的訓練設備及參數信息如下:在訓練設備方面,本文采用的服務器CPU為2塊英特爾至強E5-2698 V4,GPU為2塊Nvidia RTX3090,顯存為24GB*2,整機內存為128GB,存儲為1TB SSD+4TB HDD;在訓練參數方面,共訓練1000個epoch,其中,前500個epoch為學習率固定,且大小為0.0002,后500個epoch學習率從0.0002不斷衰減,直到第1000個epoch時學習率衰減為0。損失函數中的權重為=4。同時,教師網絡Spynet在前200個epoch起作用,且=2,在后800個epoch中=0,在上述配置中訓練1個epoch時間大約為610s,batch size設為4,采用的深度學習框架為Pytorch。
在上述參數下完成訓練后,為驗證所提光流網絡的精度,本節(jié)引入額外五種SOTA(state-of-the-art)光流算法作為對比,其詳細信息如表1所示。利用Flyingchairs數據集、Sintel數據集以及KITTI-2012數據集進行測試。其中,Flyingch-airs數據集將椅子模型和真實場景進行結合,利用仿射變換得到椅子之間的光流真值,該數據集包含22232個用于訓練的圖片對和640個用于測試的圖片對。MPI Sintel數據集分為Clean和Final兩個版本,來源于一個全部開源的3D動畫電影,分別提供1041對訓練圖像和552對測試圖像。Clean版本包含的是只有光照變換的圖像,而Final版本則在Clean的基礎上添加了運動模糊和噪聲,因此,相對于Clean版本,Final版本更能驗證模型的魯棒性,這也是本文選擇Final版本作為測試集的主要原因。不同于前面2個合成數據集,KITTI-2012來源于真實世界,通過車載激光雷達獲取真實環(huán)境下的光流真值。該數據集的光流真值并不是逐像素的,而是通過采樣得到的半稠密光流。同時,該數據集體量也較小,只包含194對光流幀。在不同數據集下得到的光流可視化結果如圖5~圖7所示。
表1 用于對比的光流算法
圖5 Flyingchairs數據集下的光流可視化對比圖Fig.5 Comparison of optical flow visualization on Flyingchairs dataset
圖6 Sintel-Final數據集下的光流可視化對比圖Fig.6 Comparison of optical flow visualization on Sintel-Final dataset
圖7 KITTI-2012數據集下的光流可視化對比圖Fig.7 Comparison of optical flow visualization on KITTI-2012 dataset
從圖5可以看出,DDFlow作為一種無監(jiān)督光流估計方法,其精度是弱于有監(jiān)督方法的,具體表現在椅子靠背處的光流細節(jié)信息明顯產生了丟失現象。Spynet雖然在椅子靠背處細節(jié)信息有所保留,但圖片中間有一部分光流估計錯誤,導致可視化圖中的顏色與真值中相差較大。PWCnet和LiteFlownet3雖然精度弱于Flownet2.0,但其網絡參數明顯少于Flownet2.0,因此其精度也具有一定的競爭性。本文提出的方法由于引入了對抗機制和雙判別器機制,使得光流估計較為準確,同時由于損失函數的改進,使得細節(jié)信息保留得較為完好,與GT真值的差異最小。
從圖6所示的Sintel-Final數據集上的光流可視化對比結果中可以看到,相較于其他方法,本文的網絡有著更好的細節(jié)表現,具體可從人物的頭發(fā)紋理和左上角的木板細節(jié)中體現,這要歸功于雙判別器機制與改進的損失函數帶來的增益。在與教師網絡Spynet的對比中可以看出,所提出的網絡的結果已大幅優(yōu)于教師網絡,這說明生成器與判別器的對抗機制為光流估計精度的提升提供了前提。同樣的結論也可從KITTI-2012數據集中得出,如圖7所示,本文方法得到的前景光流更為突出,細節(jié)較為平滑,且光流方向與大小的精度也較高。為量化對比結果,本文利用EPE作為量化指標(EPE數值越小,算法精度越高),對以上幾種算法進行量化對比。與式(5)類似,EPE計算方法如下。
(7)
其中,和分別代表圖像的長和高;和分別代表求解出的水平和垂直方向上的光流;和則分別代表水平和垂直方向上的光流真值。所得幾種對比算法的EPE如表2所示。
表2 幾種算法在不同數據集上的EPE
為驗證本文提出的光流估計方法改進之處的有效性,本節(jié)開展了消融實驗。實驗內容分為以下四部分,原始Cycle-GAN(Original Cycle-GAN,OCG)、添加教師網絡的Cycle-GAN(Cycle-GAN with Teacher network,CG-T)、添加教師網絡和改進損失函數的Cycle-GAN(Cycle-GAN with Teacher network and improved Loss function,CG-T-L),以及在CG-T-L基礎上添加雙判別器機制的本文算法(Ours)。需要特別說明的是,由于教師網絡僅用于在初期為本文的Cycle-GAN光流估計網絡提供大致的訓練方向,因此對其精度要求不高,本文使用的Spynet未針對任何特定數據集進行微調與優(yōu)化,使用權重為在通用數據集上訓練完成的原始權重。消融實驗結果如圖8所示。
圖8 消融對比實驗結果Fig.8 Ablation comparison experiment results
從圖8可以看出,由于光流估計的復雜性,原始Cycle-GAN沒有很好地找到合適的映射關系,產生了模式崩塌現象,即無論每次輸入的圖片是否一樣,均產生圖6中類似馬賽克一樣的結果,無法分辨前景和背景光流信息,導致光流解算失敗。當引入教師網絡Spynet之后,在訓練初期對原始Cycle-GAN進行引導,此時雖然光流解算誤差較大,但已能大致區(qū)分前景和背景信息,說明教師網絡的引入有利于降低原始Cycle-GAN陷入模式崩塌的風險。然而,由于原始Cycle-GAN未對光流估計任務進行任何優(yōu)化與改進,使得光流求解精度較低,誤差較大。當在CG-T的基礎上引入本文所提的改進損失函數之后,光流估計精度進一步提升,在圖8中具體表現為,前景物體光流估計輪廓較為清晰,方向和大小較為準確,背景光流估計精度與CG-T相比也有一定的提升,說明損失函數的介入使得網絡更好地擬合了輸入圖片與輸出光流之間的映射關系。但由于沒有對網絡結構進行優(yōu)化,光流估計精度的提升有限,因此,CG-T-L的精度最終低于教師網絡Spynet的精度。當在CG-T-L的基礎上引入雙判別器機制后,光流估計精度進一步提升。在可視化圖中可以清晰地看出,所提出的方法精度已超過教師網絡,這是由于雙判別器機制在底層和高層水平特征上對生成器生成的數據進行鑒別,并迫使生成器提升自身的擬合精度。同時,由于對抗機制的引入,也使得生成器與雙判別器在不斷迭代更新中逐漸變強,最終實現優(yōu)于教師網絡的光流估計精度。同樣地,為量化消融實驗對比結果,表3給出了幾種對比算法的EPE。
表3 消融實驗EPE
本文基于循環(huán)生成對抗網絡,提出了一種以無監(jiān)督方式訓練的光流估計網絡。該方法在充分利用Cycle-GAN對抗機制的同時,對判別器與損失函數進行改進,使得光流估計精度大幅提升。同時,通過引入Spynet作為教師網絡,降低了模型陷入模式崩塌的風險。但本文提出的方法還有繼續(xù)優(yōu)化的空間,例如,降低網絡參數以實現更高的實時性能,以及利用優(yōu)化之后的生成器以期實現更高的光流估計精度,都是未來工作面臨的技術挑戰(zhàn)與研究方向。