蔡 凱,李新福,田學東
(河北大學 網絡空間安全與計算機學院,河北 保定 071000)
目前,以3D技術為基礎的3D電影[1]、立體醫學影像[2-3]、虛擬現實(Virtual Reality,VR)[4]等應用在人們的日常生活中占據重要地位,這些應用所需的顯示設備可能需要場景中的多個臨近視角[5],不同于立體顯示設備中僅需2個視角。雖然可以通過多個相機同步拍攝得到視圖,但事實證明,這種方法既繁瑣又耗時。因此,越來越多的人使用基于深度圖的2D-3D轉換技術來獲得視圖。深度圖由深度線索構成,深度線索是人類用來感知真實三維世界的最重要的信息。基于深度圖的方法一般由3個步驟組成,首先通過計算或者深度傳感器得到深度圖,然后利用深度圖和原圖像合成新視圖,最后將新視圖與原圖像相結合得到最終的3D圖像。由于新視圖與原圖像存在視差,因此最終合成的3D圖像能夠在視覺上給予觀察者以立體感。
目前,研究人員提出多種基于深度圖的3D內容生成方法,這些方法大致可以分為三類,即純人工轉換方法、人工輔助轉換(半自動轉換)方法和全自動轉換方法。純人工轉換方法將視頻的每一幀進行區域/目標分割,然后再由“深度專家”將深度值分配給每一個分割出的區域/目標[6],這種方法可以產生高質量的深度圖,但是價格十分昂貴且非常費時。人工輔助轉換方法在將2D圖像轉換為3D圖像的過程中進行人工“手動”修正,雖然這種方法可以降低時間消耗,但是仍然需要大量的人工成本[7-9]。為了將2D-3D轉換技術在商業中進行更廣泛的推廣,需要其他方法來解決時間和人工成本問題。全自動轉換方法先使用單幅圖像生成深度圖,然后再將2D圖像轉換為3D圖像,全程無需人工干預。
一幅圖像的顯著性區域是人們在該圖像中注意到的最重要的部分,因此,使顯著性物體靠近人眼的同時將人們不感興趣的目標遠離人眼合乎情理。文獻[10]通過視覺注意力分析進行2D-3D轉換,并且證明了這種方法的可行性,但是,由于其使用低級別手工方式提取特征,因此所生成的顯著圖較為粗糙。本文使用顯著圖代替深度圖生成3D內容,通過全卷積網絡(Fully Convolutional Network,FCN)[11]估算粗糙的顯著圖并用條件隨機場(Conditional Random Field,CRF)[12]進行優化,這種FCN+CRF的方法可以適用于大部分設備,包括個人計算機、智能手機等。
文獻[13]將視覺注意力問題用計算模型進行表達。在此之后,顯著性檢測領域出現了越來越多的新算法,這些算法可以分為兩大類:基于任務驅動的自頂向下的算法[14-16]和由數據驅動的自底向上的算法[17-19]。自底向上的算法多數都將研究重點集中在低等級視覺特征上,例如中心偏移量[20]、對比度[17]和邊緣[21]等。在顯著性檢測領域,從傳統方法發展到深度學習方法之前,文獻[22]對非深度學習方法做了充分的總結,一些表現良好的方法[20]在此階段得到廣泛應用。
隨著深度學習技術的快速發展,越來越多的研究人員開始使用卷積神經網絡(Convolutional Neural Network,CNN)進行顯著性檢測。近幾年,人們更加傾向于使用端到端(end-to-end)的網絡,這是因為由文獻[11]提出的FCN可以接收各種尺寸的輸入圖像,縮短了人工預處理和后續處理的時間,給予模型更多的自動調節空間。為了使算法可以更充分地應用于人們的生產生活中,本文算法并未使用結構復雜的網絡模型,而是使用對硬件要求相對較低的FCN+CRF檢測模型。
在現實世界中,人類從外界接收到各種各樣的深度線索,并利用深度線索來感知三維世界,這些深度線索可以分為兩類:雙目深度線索和單目深度線索。雙目深度線索通過雙眼對場景中感知到的2幅圖像的差別來提供深度信息,單目深度線索通過用一只眼睛觀察場景來提供深度信息。
單目深度線索又可分為圖繪深度線索和運動深度線索。圖繪深度線索是人類從2D圖像中感知深度的最基本的線索,這些線索包括相對高度或尺寸、光線與遮蔽、大氣散射、紋理梯度、對焦/去對焦等。在實踐中,主要通過2種方法來從對焦/去對焦中提取深度:
1)從具有不同焦距特征的多個圖像中提取模糊變化,這些變化可以轉換為深度[23]。
2)通過測量每個相關像素的模糊量來從單個圖像中提取模糊信息,然后將模糊量映射為該像素的深度[24-25]。
幾何學相關的繪圖深度線索包括相對高度或尺寸、紋理梯度等,但是,其中有些深度線索很難應用到實際中[26]。從顏色和亮度線索中提取的深度體現在顏色和亮度的變化上,這些深度線索包括大氣散射、光線與遮蔽、局部對比度等。與繪圖深度線索不同的是,視頻序列提供運動視差作為額外的深度線索。
近年來,研究人員在使用深度學習技術進行深度圖生成方面投入了大量精力,他們將一幅2D圖像作為輸入并學習如何預測出一幅與之相對應的深度圖。但是,上述研究在收集高質量的圖像-深度圖對上遇到了很大困難,因此,數據集的缺失限制了深度圖生成算法的發展。
文獻[10]通過視覺注意力分析得到顯著圖,用顯著圖代替深度圖來生成3D圖像,這種方法可以取得較好的效果[25]。但是該方法中使用的是低等級視覺特征,使得算法性能十分依賴于所選取特征的優劣,因此,在大部分情況下無法獲得較高的精度。為解決上述問題,本文使用FCN進行顯著性檢測,以提高檢測精度并得到效果更好的3D圖像。
雖然本文方法與傳統方法[5,8,24]在細節上有些差異,但是在整體流程(見圖1)上并沒有太大的差別。因此,本節主要討論本文方法與傳統方法不同的部分(顯著圖生成階段),視差計算與圖像繪制部分可以參考文獻[26]。

圖1 基于深度圖的2D-3D轉換流程Fig.1 2D to 3D conversion procedure based on depth map
FCN是一種卷積神經網絡,其通過一系列卷積層提取特征并使用池化層減少過擬合現象。FCN將原始卷積網絡中的全連接層直接替換為卷積層,從而使運算更便捷。最后一個卷積層的輸出被稱作熱圖,FCN通過反卷積使熱圖恢復到與輸入圖像相同的尺寸,從而對每個像素都產生一個預測。如果只使用由熱圖反卷積而來的圖像進行預測,得到的結果往往比較粗糙,FCN通過定義跳躍結構來解決該問題。FCN的整體結構如圖2所示,卷積網絡每一層的輸入數據都是三維張量,尺寸為h×w×d,其中,h和w為數據的空間維度,d為數據的特征或者通道維度。FCN的第一層為輸入層,用來接收輸入圖像,輸入圖像的尺寸為h×w,d為圖像的顏色通道。在CNN中,決定某一層輸出結果中一個元素所對應輸入層的區域大小被稱作感受野。

圖2 FCN結構框架Fig.2 FCN framework
卷積網以平移不變性為基礎,構成卷積網的組成部分(卷積、池化和激活函數)在對局部輸入區域進行操作時僅與相對空間坐標有關。令xij為某一層中的數據向量,該向量位于坐標(i,j)處,yij為下一層中的數據向量,則yij的計算公式為:
yij=fks({xsi+δi,sj+δj}0≤δi,δj≤k)
(1)
其中,k為算子尺寸,s被稱作步長或下采樣算子,函數fks取決于該層類型。算子尺寸和步長遵循的變換規則如式(2)所示:
fks°gk′s′=(f°g)k′+(k-1)s′,ss′
(2)
隨著卷積和池化操作次數的增多,圖像的尺寸變得越來越小,此時可以通過反卷積操作對特征圖進行尺寸還原。因此,FCN可以利用反卷積對任意尺寸的輸入進行操作,然后計算一個相應尺寸的輸出。
一些常見的CNN只接收固定尺寸的輸入圖像,并且在輸出中不包含空間信息,造成這種情況的原因在于網絡中應用了全連接層,全連接層不能接收尺寸不同的輸入張量,這也會導致空間信息丟失。然而,任何一個全連接層都可以被替換為卷積層,它們之間唯一的不同在于卷積層中的神經單元只與輸入數據中的局部區域相連接,并且處在同一列卷積的神經單元共享參數。這種方法不僅可以使網絡接收任意尺寸的輸入,在計算的過程中保留空間信息,還可以提高前向傳播的效率[11]。一種將傳統卷積網絡變換為全卷積網絡的方法是:將原始卷積網絡中的全連接層直接替換為卷積層,這時網絡中只存在卷積層,全卷積網絡的名稱即由此得來。
經過多次卷積和池化操作之后,輸入數據的空間尺寸會越來越小,當尺寸在網絡中達到最小時,可將該圖像稱為熱圖,熱圖表示輸入數據的高位特征。為了將熱圖恢復到與輸入數據相同的尺寸,需要對熱圖進行上采樣。FCN通常使用一系列反卷積層和激活函數進行上采樣,這是因為在網絡學習的過程中,使用反卷積和激活函數的速度快、效率高[11]。
如果單獨對熱圖進行上采樣,得到的輸出預測圖會顯得過于粗糙,一些細節無法恢復。隨著層數越來越高,得到的特征會越來越抽象,細節丟失會越來越嚴重。FCN使用跳躍結構對低層中的輸出進行上采樣并與最高層中的預測圖相連接,這樣可以兼顧局部和全局信息。需要注意的是,雖然使用跳躍結構可以得到更精細的預測圖,但是所產生的開銷會增加。
本文將FCN應用于顯著性檢測以生成顯著圖,但是得到的顯著圖精度并非很高,因此,需要使用CRF對結果進行優化。
本節主要對CRF在圖像標注任務中的應用進行概述。在像素級標簽預測問題中,令輸入圖像為全局觀測I,CRF將像素標簽作為隨機變量,如果像素標簽在全局觀測的條件下可以構成馬爾科夫隨機場,則CRF將對像素標簽進行建模。
令隨機變量Xi是圖像中像素i的標簽,L為預定義的標簽集合,L={l1,l2,…,lk},k為標簽數。變量X由隨機變量X1,X2,…,XN組成,其中,N為圖像中像素的總個數。條件隨機場符合吉布斯分布:
(3)
其中,E(x)為x∈LN的能量函數,Z(I)為規范化因子。為了方便起見,下文討論中省略全局觀測I。在全連接條件隨機場中,E(x)的表達式為:
(4)
其中,一元勢函數Ψc(xi)測量將像素i標注為xi的代價,即為上一小節中FCN的輸出預測圖。二元勢函數Ψd(xi,xj)同時將像素i,j標注為xi,xj的代價,用來描述像素點之間的關系,鼓勵相似的像素分配相同的標簽,差別較大的像素分屬于不同的類別。二元勢函數Ψd(xi,xj)的表達式為:
(5)

只需最小化CRF的能量函數E(x)便可得到輸入圖像的最優預測圖。因為直接最小化能量函數時計算量會非常大,所以本文使用平均近似方法[12]推斷結果。
在進行視差計算時,本文方法與傳統方法差別不大。令圖中像素點(x,y)處的視差值為R(x,y),則有:
(6)

本文方法在進行2D-3D轉換時除了將深度圖替換為顯著圖以外,在其他步驟上與DIBR方法無太大差別,且本文模型對硬件的要求較低,這2個優點有助于本文方法的推廣。
根據本文的網絡結構,需要找到合適的基網絡并添加一些預訓練層來構成FCN。因此,實驗的第一步為找到合適的網絡模型進行微調。目前,在數量龐雜的網絡模型中,有多種卷積網絡可供選擇,比較流行的卷積網絡有AlexNet[27]、VGG16[28]、GoogLeNet[29]、InceptionV3[30]等。本文對改造后的VGG16、AlexNet、GoogLeNet進行了對比,使用的度量標準為:
(7)
其中,k+1為類別總數,pij為本應預測為i類但預測為j類的像素個數(即預測錯誤的像素總數),pii為預測正確的像素總數。3種網絡對比結果如表1所示。

表1 3種網絡的meanIU與運行時間對比Table 1 Comaprison of meanIU and runtime of three networks
根據表1的結果,本文使用VGG16作為基網絡,并利用目前較流行的Keras搭建顯著性檢測網絡模型,Keras是一種開源的深度學習框架。FCN前5層的參數通過VGGNet初始化,其他層的參數通過標準差為0.01、偏置為0的零均值高斯分布初始化。在訓練開始之前,本文算法使用SGD(Stochastic Gradient Descent)作為優化器,超參數的設置分別為:學習率10-8,權重衰減5-4,沖量0.9。FCN訓練時的最大迭代次數為100 000,每批次大小為1,這是為了避免內存不足從而引發錯誤。

本文采用平均近似方法[12]優化CRF,通過PyDenseCRF(https://github.com/lucasb-eyer/pydensecrf)來實現。
為了更好地驗證本文模型的性能并與已有方法進行對比,本文使用ECSSD[31]、PASCALS[32]和DUT-OMRON[33]3種數據集對網絡模型進行訓練與測試,這些數據集在顯著性檢測領域應用廣泛,且每一個數據集都包含了大量的圖像。ECSSD擁有1 000張圖像,其中多數圖像具有豐富的語義并且結構復雜。PASCALS中的圖像全部是從PASCAL VOC 2010數據集中精心挑選而出。DUT-OMRON數據集包含5 000張圖像,用于進行大規模模型比較。為了保證對比的公平性,本文使用相同的訓練集對所有對比模型進行訓練,并且應用相同測試集進行測試。
在顯著性檢測領域,有3種被廣泛認可的度量標準,分別是精度-召回率(Precision-Recall,PR)曲線、F度量(F-measure)和平均絕對誤差(Mean Absolute Error,MAE)。精度和召回率是由二值顯著圖和真值圖做比較計算而出,假設顯著圖為S,將S進行二值化后得到二值掩模M,將M與真值G作比較得出:
(8)
F度量可以測量模型的整體性能,其定義為精度和召回率的加權平均值:
(9)
本文將β2設置為0.3,這樣可以提升精度在測量中的重要性。MAE表示顯著圖與真值中每個像素之間的絕對誤差,計算公式為:
(10)

本文將文獻[10]方法、RC方法[17]、DRFI方法[20]作為對比方法。文獻[10]方法使用基于對比度的方法進行顯著性檢測。作為傳統顯著性檢測方法中的代表,DRFI方法在各個數據集上都有較好的性能表現,其將顯著性檢測看作一個回歸問題,通過監督學習的方法對圖像進行分割,然后再將分割得到的區域特征進行整合得到最終的顯著圖。RC結合了空間關系來獲取顯著圖,但是其相比于文獻[10]方法而言計算量更高。4種方法的Fβ和MAE對比結果如表2所示,其中,最優結果用加粗字體標出。

表2 4種方法在3個數據集上的性能對比結果Table 2 Performance comparison results of four methods on three datasets
從表2可以看出,本文深度學習方法在F-measure和MAE上的表現明顯優于傳統方法,主要原因在于深度學習方法強大的特征提取能力和抽象能力。本文選取了各模型在DUT-OMRON上的精度-召回率來繪制PR曲線,結果如圖3所示,從圖3可以看出,本文深度學習方法性能同樣優于傳統學習方法。

圖3 4種方法在DUT-OMRON數據集上的PR曲線Fig.3 PR curves of four algorithms on DUT-OMRONdataset
圖4所示為深度學習方法與傳統方法的視覺效果對比,從圖4可以看出,無論是在簡單場景還是復雜場景下,深度學習方法所生成的顯著圖都要優于其他傳統方法,這是因為無論在哪種場景下,手工選取的顯著性特征都具有一定的局限性,而深度學習方法則可以通過自我選取特征和高度抽象特征的能力對場景進行分析,從而預測出更為精確的顯著圖。

圖4 不同顯著性檢測方法的視覺效果對比Fig.4 Visual effect comparison of different saliencydetection algorithms
對于所生成的3D內容而言,最重要的就是給予觀察者舒適的視覺體驗,因此,本文采用文獻[34]中的立體圖像質量評價方法對本文模型進行評估,該評價方法通過提取感興趣區域的視差圖,綜合多種影響視覺舒適度的因素,建立一個多維度的3D內容視覺舒適度評價系統。評價的滿分為5分,代表“舒適”,4分表示“較舒適”,3分為“效果一般”,2分為“稍有不適”,1分為“難以忍受”。本次實驗選用文獻[7]方法作為對比對象,該方法借助L1范數對異常數據的抵制,在一個統一框架下實現結構相關、具有容錯能力的稀疏深度稠密插值。本文取NJUD[35]數據集中的15種場景圖像作為實驗測試集,實驗結果如圖5所示。

圖5 2種3D內容生成方法在測試集上的圖像質量評分Fig.5 Score of map quality of two 3D content generationmethods on testing set
由圖5可知,本文方法在15張圖像中的平均評分為4.348,高于文獻[7]方法(4.272),主要原因在于,如果希望觀察者得到滿意的3D效果,那么將場景中最令人感興趣的目標置于人眼舒適區至關重要[36],本文方法正是利用這一立體感知原理來生成3D內容。實驗結果也證明了顯著性檢測方法可以給予觀察者良好的立體感受。
圖6所示為本文方法生成的3D視覺效果圖。從中可以看出,本文方法在顯著性較高的區域/物體上能取得良好的3D視覺效果,也論證了使用視覺注意力分析生成3D內容的可行性。

圖6 本文方法的3D視覺效果Fig.6 3D visutal effect of the proposed method
顯著圖通過高效的深度學習方法進行預測,并且對硬件要求較低,因此,本文使用顯著圖代替深度圖進行2D-3D轉換,提出一種基于視覺注意力分析的3D內容生成方法。實驗結果表明,該方法在生成3D內容時能夠取得良好的視覺效果。但是,本文方法在處理視頻序列時仍然具有局限性,下一步考慮將時間序列信息融入到網絡模型中,以提升該方法的實用性。