羅 燦,李學華
(北京信息科技大學 信息與通信工程學院,北京 100101)
光場成像通過標準全光相機來獲取子孔徑圖像,這些圖像代表了同一場景不同視角的視圖。子孔徑圖像能用以進行光場的深度信息估計,獲得的深度信息可以進行數字重聚焦、3D重建以及超分辨率等應用[1]。
傳統的深度信息估計方法以基于立體匹配[2,3]的方式和基于EPI的斜率計算方式[4-6]為主,但是估計效果欠佳。目前機器學習技術在計算機視覺領域發展迅速,部分學者將其應用在EPI結構的學習理解上來估計深度信息并得到了優良的結果:Johannsen等[7]提出一種學習光場字典的方法,學習視點與差異值的映射關系,具有一定的估計效果;Hebe等[8]提出基于卷積神經網絡的方法,學習水平及垂直EPI結構的特征,提升了估計精度;Luo等[9]提出的方法同樣基于卷積神經網絡,并且進行了基于能量函數的平滑優化處理,提升了估計平滑度。文獻算法[7-9]的整體表現相較于傳統方法有提升,這些算法都是以傳統EPI結構作為網絡學習對象,然而傳統EPI存在兩個問題:包含的像素極線信息少,執行效率低;不包含物體邊緣部分信息,差異圖邊緣處估計精度低。
針對現有方法存在的問題,本文提出融合邊緣特征的高效深度信息估計算法:設計IEPI結構改進傳統EPI包含像素極線信息少的問題,設計邊緣圖改進傳統EPI中未體現邊緣信息的問題;相較于傳統CNN,網絡設計為深度多流全卷積神經網絡(deep multi-stream fully-convolutional neural network,DM-FCNN)對IEPI結構及邊緣圖進行像素級的特征學習,由于IEPI及邊緣圖為網絡提供了完整的像素極線信息及邊緣信息,并且網絡具有強學習能力,網絡可以通過一次前向傳播得到高精度的整體差異圖。實驗結果表明,本文算法相較于現有算法提高了算法執行效率和估計精度。
將光場函數記為L(s,t,u,v), 其中 (s,t) 為空間坐標、 (u,v) 為角度坐標,記光場中心視角的坐標為 (u,v)=(0,0)。 傳統的EPI結構通過固定一個空間坐標和一個角度坐標得到,記為m或者Lu′,s′(v,t), 從位置關系上看,兩者稱為水平EPI和垂直EPI。一般地,中心視角作為深度信息的參考視角,因此EPI記為Lv=0,t′(u,s) 或Lu=0,s′(v,t), 其可視化的圖形結構如圖1所示。

圖1 傳統EPI結構
EPI結構中極線的斜率可以計算該極線對應像素點的深度,關系式為
(1)
式中:Δu為基線長,f為焦距,Δs為差異值,由于基線長以及焦距由光場相機的參數確定,因此算法需要估計的是EPI中的差異值。
觀察傳統EPI結構,可以分析其缺點:①以水平EPI結構Lv=0,t′(u,s) 為例,其中只包含了{(s,t′)|s=0,1,2,…,n} 像素點的極線信息,缺少完整的像素極線信息;②由于EPI中像素點以極線形式呈現,完全失去了原物體的邊緣輪廓描述,邊緣信息完全丟失。
由于傳統EPI結構的缺點,導致了以傳統EPI結構作為學習對象的基于機器學習的算法執行效率低、邊緣部分估計精度差,對此,本文提出融合邊緣特征的高效深度信息估計算法。
現有的基于機器學習的算法[7-9]以水平及垂直方向的傳統EPI結構作為輸入來估計兩者相同像素點處 (s′,t′) 的差異值,因此這些算法需要重復執行網絡前向傳播才能得到整體差異圖。假設需要估計的圖像分辨率為n×n, 那么這些算法(忽略其后處理)的時間復雜度為O(n2), 可見這些算法的計算效率低下。
造成上述問題的根本原因是傳統EPI結構只包含部分像素極線信息,本文設計的IEPI包含了整個圖像的像素極線信息。IEPI結構記為

(2)
觀察式(2),可以看出,IEPI結構通過只固定一個角度坐標獲得,以水平方向的IEPI結構Lv=0(s,t,u) 為例,其可視化的圖形結構如圖2所示。

圖2 IEPI結構
比較傳統EPI結構和本文的IEPI結構,可以發現,IEPI結構包含了所有的傳統EPI結構,因此式(2)可以寫為

(3)
基于IEPI結構的特點,本文算法的網絡模型可以通過一次前向傳播得到整個中心視角Lu=0,v=0(s,t) 的整體差異圖。由此,可以降低算法時間復雜度為O(1), 提高了算法執行效率。
場景中物體的邊緣部分存在跳變,體現在深度圖中就是不連續變化,無論是傳統EPI還是本文的IEPI,由于像素以極線形式表示,邊緣部分的跳變未能體現出來,這導致了估計的深度圖在邊緣部分估計精度低。文獻[10]提出了一種針對EPI結構的邊緣約束優化,但該約束方法十分復雜,且精度有限。本文算法設計的網絡模型基于卷積神經網絡,該網絡最大優勢在于圖像理解十分突出,因此本文設計增加IEPI對應的邊緣圖作為網絡輸入,邊緣圖標注了邊緣跳變處的像素點,利用卷積神經網絡本身的理解能力來理解邊緣圖標注的邊緣信息,提高邊緣部分的估計精度,避免復雜的約束優化后處理。
首先,需要將圖像的邊緣信息檢測出來,本文使用Canny邊緣檢測算法檢測邊緣,該算法的相較于其它的邊緣檢測算法有3個優勢:①良好的信噪比,將非邊緣點錯誤檢測為邊緣點的概率低;②定位精確,檢測的邊緣點位置與實際邊緣點中心十分相近;③響應唯一,對于單個邊緣只產生單個邊緣點的響應,對其它虛假響應進行了非極大值抑制。由Canny算法得出的檢測結果如圖3所示。

圖3 Canny邊緣檢測算法結果
然后,觀察檢測出的邊緣圖,可以發現,其中包含背景中由紋理以及文字帶來的邊緣,而本文算法只需要處理場景中物體的邊緣跳變,所以需要對邊緣圖做進一步濾波處理,濾除背景中冗余的邊緣信息。
對于邊緣圖的濾波,本文設計基于最大類間方差法的邊緣信息濾波,通過對圖像中的像素點進行前景與背景的分類,判別屬于背景中的冗余邊緣信息并將其濾除:假設圖像包含N個像素點, {0,1,2,…,L} 表示圖像中像素點的灰度等級,ni表示灰度等級為i的像素點個數,則有式(4)所示關系

(4)
按照灰度等級閾值t劃分所有像素為目標類C0(灰度等級為 {0,1,…,t}) 和背景類C1(灰度等級為 {t+1,…,L}), 則兩類的所占比例w0,w1及灰度均值μ0,μ1分別為

(5)
整個圖像的灰度均值為

(6)
由此,定義背景類和目標類的類間方差為
(7)
遍歷t并最大化式(7)所表示的類間方差,可以得到最優的目標類和背景類的分類閾值t=T, 大于該閾值的像素點為背景類,由此,定義濾波矩陣Ef為

(8)
其中,i(x,y) 表示原圖像中像素點的灰度等級,像素歸屬于背景則濾波矩陣中對應元素為0,否則為1,得到的濾波矩陣與邊緣圖對應元素相乘即可濾除背景中的文字和紋理帶來的邊緣,記原邊緣圖為B,則濾波后的邊緣圖為
B′=Ef*B
(9)
圖4表示基于最大類間方差法的邊緣信息濾波后的結果。

圖4 濾波后的邊緣信息
最后,使用處理好的邊緣圖構成EPI結構如圖5所示,由圖可知,邊緣圖構成的EPI結構中標注了物體邊緣像素點的極線,提供了場景中物體的邊緣信息。

圖5 邊緣圖構成的EPI結構
將光場數據處理為IEPI以及對應邊緣圖后,本文提出DM-FCNN學習二者的像素極線特征得到差異圖估計,設計DM-FCNN的意義在于其具有較強的特征學習能力,能夠進行像素級的特征學習,保證高精度的差異圖估計。
DM-FCNN模型整體結構如圖6所示,網絡架構以全卷積神經網絡[11]為基礎,從網絡模型上看,不同于經典卷積神經網絡在若干卷積層后使用全連接層得到輸出,全卷積網絡的隱藏層單元只包含卷積層。全卷積網絡架構的優點:①結構化輸出,本文算法實現端到端的深度信息估計,配合IEPI結構,網絡執行一次前向傳播就能得到整個中心視角的差異圖,因此需要網絡可以維持輸出的3維結構,而全卷積操作可以實現這個目的;②不限制輸入圖片尺寸,不同的全光相機其分辨率不一致,若網絡只接受固定大小的圖片輸入,則網絡的普適性很差,全卷積網絡基于卷積操作稀疏連接的特點,實現了接受任意尺寸輸入的目的;③深度網絡,卷積層具有參數共享的特點,這允許了網絡即使構建比較深,也不會出現參數爆炸的現象,而更深層的網絡可以獲得更好的泛化性能。
網絡的整體結構:網絡具有4部分的輸入,因此設計網絡前部分為4流分別對IEPI及對應邊緣圖進行低階特征提取,提取的低階特征需要作信息綜合,因此設計網絡后部分為單流,將4部分的低階特征按通道方向進行級聯形成綜合信息輸入到單流中,綜合信息在單流中被語義化最終得到差異圖。
網絡層級結構設計:根據全卷積網絡的設計理念,網絡中只包含有卷積層和規范層,本文以“卷積層-規范層-ReLU”為基本模塊構建網絡(除輸出層部分為“卷積層-ReLU-卷積層”),下一小節介紹網絡中卷積層具體的參數設計。

圖6 DM-FCNN模型結構
2.3.1 卷積層
卷積層基本工作原理為:卷積層包含多個卷積核,卷積核是一個包含權重系數的矩陣,卷積核的大小可以理解為“感受野”,卷積核執行計算時,會規律地掃描輸入特征,對感受野內的特征作矩陣元素乘法并求和,計算式為

(10)
式中:Zl,Zl+1分別代表輸入和輸出特征, (i,j)∈{0,1,…,Ll+1} 代表輸出像素的坐標位置,wl+1為卷積核,卷積核的相關參數:卷積核尺寸為f(默認長寬相同),步長為s, 填充層數為p。
假設輸入特征尺寸長寬相同為Ll,那么輸出特征的長寬為
(11)
若卷積層包含N個卷積核,則輸出特征的通道數為N, 即輸出特征的尺寸為Ll+1×Ll+1×N。
如圖6所示,本文設計所有卷積層的卷積核尺寸為2,步長為1,不帶有填充,卷積核的數量多流部分統一為90,單流部分除輸出層為1(差異圖是單通道圖像)以外其余統一為360。參數的設計基于兩點考慮:①網絡需要學習的是IEPI中像素在不同視角的差異值,而全光相機短基線的特點導致了差異是像素級甚至是亞像素級的,為了實現像素級的特征學習,設計卷積核大小為2,步長為1;②卷積操作中填充會引入與圖像數據無關的冗余信息,這會導致填充部分估計的差異值誤差大,因此卷積操作中不帶有填充。
經典卷積神經網絡都會帶有池化層,主流的池化為最大池化和均值池化,其表達式為

(12)
分析式(12),池化工作原理是在池化的“感受野”內對特征矩陣進行取最大值或取均值的操作,但這兩種操作都會造成特征矩陣的信息缺失,本文算法需要估計出所有像素點的差異值,信息缺失會帶來很大的誤差,因此本文網絡模型中不采用池化層。
對于卷積層的激活函數,本文選擇整流線性單元,其表達式為
g(z)=max{0,z}
(13)
式中:z為卷積層的輸出,整流線性單元雖然用以產生非線性變換來滿足整個網絡函數的非線性性質,但是該函數幾乎接近線性,從某種意義上說它是分段線性函數,因此使用該函數可以保留網絡部分優良的線性性質:①易于進行基于梯度下降的優化;②保留了線性模型的良好泛化性能。
2.3.2 規范層
如圖6所示,由于本文算法網絡的層數較深,深層的網絡會導致過擬合以及梯度爆炸的問題,所以本文采用規范層處理該問題。規范層對隱藏層輸出進行標準化,設H為需要規范的輸出,將其替換為
(14)
式中:μ為輸出的均值,σ為輸出的標準差,標準化隱藏層輸出可以解除隱藏層之間的強耦合關系,令每層隱藏層輸出的分布保持單位高斯,使得網絡更易于學習,解決了梯度爆炸問題,也起到了正則化的作用。對于本文基于全卷積神經網絡的網絡模型,因為卷積操作是對不同的感受野區域進行的,使用規范層標準化不同感受野區域的輸出,使得特征映射的統計量在不同感受野區域保持相同可以有效降低泛化誤差。
DM-FCNN需要在數據的驅動下正確地更新參數,以達到將IEPI及邊緣圖中的像素極線信息正確地語義化為差異圖的目的,而損失函數指導了參數更新的方向,因此設計正確的損失函數尤為重要,本文設計基于尺度不變誤差的損失函數。
首先定義尺度不變誤差
(15)

(16)
將式(16)的尺度系數定義代入式(15),有

(17)
由式(17)的推導結果來看,相較于傳統的均方誤差,該誤差不僅衡量了估計值與真實值之間的距離,還衡量了兩者之間的尺度一致性。
對式(17)進行繼續推導,定義基于尺度不變誤差的損失函數

(18)
在該損失函數的指導下訓練網絡,即基于尺度不變特性更新網絡參數,可以使網絡估計的差異圖更平滑,誤差更小。
本文實驗環境所用的GPU為NVIDIA Titan X,操作系統為Ubuntu 16.04,深度學習框架為Tensorflow作為后端的Keras框架。
實驗的訓練數據和測試數據來自HCI光場數據集[12],該數據集包含有20組不同場景的光場圖像,光場圖像的空間分辨率為512×512,視角分辨率為9×9,意味著每組光場圖像有81張子孔徑圖像,并且提供了中心視角的真實差異圖作為標簽,本文按照場景的復雜度劃分16組光場場景為訓練集、4組場景為測試集。由于訓練集的數據量太小,因此需要進行數據增強處理,在不破壞IEPI中像素位置關系的前提下,本文選用的數據增強方式為旋轉、翻轉、灰度化、調整對比度、縮放、切割,訓練時使用小批量梯度下降方式,每個批次的數據進行數據增強的參數都是隨機的,最終的訓練數據約為原來的500倍。訓練前需要對網絡進行參數初始化,本文對截斷的高斯正態分布進行抽樣初始化網絡參數。訓練時優化器選擇的是Rmsprop,該優化器作為自適應學習率下降算法可以根據歷史梯度值自適應調整學習速率,在非凸優化問題中有良好的表現,設置初始學習速率為10-5。網絡在訓練約7天后收斂。
由于圖像的像素點過多,所以算法的差異值估計結果以差異圖的形式表示,差異圖中像素點顏色的深淺代表了對應差異值的大小。
本文算法在測試集上的差異圖估計如圖7所示(圖中的場景命名從左至右:Cotton、Dino、Sideboard、Boxes),直接觀察算法結果,可以看到本文算法估計差異圖的大體輪廓、形狀、強弱與真實差異圖有部分出入,但沒有明顯的缺失、噪點和變形,說明了本文算法的有效性。

圖7 算法結果
實驗在均方誤差(MSE)、壞像素率(BadPix)和執行時間3個評價指標上分別評估算法的估計平滑度、估計精度以及算法執行效率,其中MSE以及BadPix的定義如下
(19)
(20)
式中:d(x) 代表估計值,gt(x) 代表真實值。3個指標的值越小說明算法性能越好,下面通過與現有方法的對比實驗結果說明本文算法的性能。
本文與文獻[7-9]算法進行比較,分別為EPIdictionary[7]、Conv5[8]、Conv8+EF[9],各指標比較結果見表1、2。

表1 算法比較實驗結果
表1列舉了本文算法與文獻算法整體差異圖估計的MSE和BadPix,可以看出,本文算法的估計平滑度和估計精度普遍高于文獻算法。與文獻算法中結果最好的Conv8+EF[9]算法比較,平均所有場景下的MSE值和BadPix值,本文算法的估計平滑度和估計精度分別提升約15.9%和2.1%,其中估計平滑度的提升較大,而估計精度的提升不太大。實驗結果說明本文算法的網絡在基于尺度不變誤差的代價函數的訓練下獲得了較強的平滑估計性能;而本文算法設計的DM-FCNN相較于Conv8+EF[9]算法的經典卷積神經網絡,其特征學習能力略強于后者。
表2列舉了本文算法與文獻算法執行整個差異圖估計(包括后處理)的執行時間,由表可知,本文算法的執行效率遠高于文獻算法,尤其與文獻算法中估計結果最好的Conv8+EF[9]算法比較,本文算法的執行時間下降約98.6%,說明了算法得益于IEPI結構的優點,提升了執行效率。

表2 算法執行時間/s
為了說明邊緣圖優化邊緣部分估計精度的有效性,本文設計了不加入邊緣圖的模型與原模型進行對比實驗,比較二者在cotton場景的差異圖估計,實驗計算二者在每個像素點的BadPix值,結果如圖8所示,由圖可知,加入了邊緣圖優化后,邊緣部分像素點的估計精度明顯提升,說明了邊緣圖所強調的邊緣信息能被網絡理解學習,優化邊緣估計。同時,實驗比較了本文算法和文獻算法在邊緣部分像素點的估計精度,結果如圖9所示,由圖可知,本文在邊緣部分的估計精度相較于其它算法有較大提升,進一步說明了本文邊緣圖優化邊緣估計精度的性能。

圖8 邊緣優化前后對比

圖9 算法邊緣部分估計結果比較
本文對目前基于機器學習的光場深度信息估計方法所存在的問題進行了討論,針對傳統EPI結構缺少完整像素極線信息以及邊緣信息的不足,本文提出了融合邊緣特征的高效光場深度信息估計方法。該方法設計了包含完整像素極線信息的IEPI結構及對應包含邊緣信息的邊緣圖,并且設計了多流全卷積神經網絡對二者進行像素級的特征學習,結合IEPI和邊緣圖的優點,網絡可以高效率地得到高精度的差異圖估計。通過實驗與現有算法的比較,驗證了本文算法的高估計精度和高執行效率的性能。今后的工作中,將面向包含更復雜場景更大規模的數據集進行研究,嘗試設計其它的神經網絡架構,進一步提高估計的精度和效率。