周 萌,黃章進
(中國科學技術大學 計算機科學與技術學院,合肥 230027)
在計算機視覺領域,從機器人到虛擬現(xiàn)實、從三維重建到自動駕駛,深度信息在各自的任務中都扮演著重要的角色。最近,隨著手持式便攜設備的普及,越來越多的圖像應用不再滿足于簡單的色相、對比度、亮度的調整,先拍照后對焦的功能極大地依賴于場景深度。因此,高效地獲取高質量的深度具有重要的現(xiàn)實意義。
近年來,基于學習的單目深度估計取得了很大進展,能直接從單幅圖像中預測深度[1-4],但是該方法需要大量數(shù)據(jù)進行訓練,并且嚴重依賴圖像的語義信息。因此當圖像中出現(xiàn)鏡子等反光物體時,不能很好地估計深度。雙目以及多目深度估計[5-7]利用一組圖片以及相機位置,將像素從相機空間投影到帶有約束的世界空間以獲取深度信息。相較于單目估計,雙目以及多目估計的深度準確率更高,但是硬件成本也更高。無監(jiān)督單目深度估計[8-11]則利用視頻流信息,將相鄰的多個數(shù)據(jù)幀看作不同相機視角下拍攝的圖像,然后利用像素點之間的視差獲取深度,它的預測深度與有監(jiān)督的方法相比還有一定的差距。雖然可以用具有特殊傳感器的硬件設備(如Kinect 深度相機)直接獲取較精確的場景深度,但是這類方法也存在運算較慢、受場景限制大、成本高等問題。
相比結合語義的深度估計技術的蓬勃發(fā)展,利用焦點堆棧來探索失焦模糊和深度之間關聯(lián)性的研究則相對較少。焦點堆棧是利用透鏡成像原理在不同對焦距離下拍攝的一組照片,顯式地編碼了物體距離與深度之間的關系,圖1 展示了物體距離和模糊圓半徑的關系:當相機的對焦距離一定時,物體距離相機越遠,所成的像越模糊;近距離也是如此,只有當物體恰好位于對焦距離時,所成的像最清晰。物體到相機距離的遠近可以很直觀地體現(xiàn)在所成像的模糊程度上,因此能通過圖像的模糊程度來估計深度。由于模糊信息與語義無關,這意味著該類方法訓練所需的數(shù)據(jù)量與基于語義的方法相比要小得多。Suwajanakorn 等[12]證明僅使用手機就可獲取訓練所需要的數(shù)據(jù)。
圖1 失焦模糊示意圖Fig.1 Schematic diagram of defocus blur
對于焦點堆棧深度估計,傳統(tǒng)的解析方法可以直接計算像素點的清晰程度來判斷物體的“最佳對焦”位置,然后根據(jù)位置估計深度。焦點堆棧是從有限的對焦距離中采樣獲得,如果數(shù)量較少的話,“最佳對焦”的定位會出現(xiàn)較大的離散誤差,導致深度估計不準確。基于解析的方法一般要求焦點堆棧有足夠的圖片數(shù)量(通常大于20);同時圖像清晰程度通常是紋理敏感的,因此該方法也無法準確估計無紋理區(qū)域的深度。而基于學習的方法則可以很好地緩解上述問題。Maximov 等[13]將焦點堆棧中的5 張圖片分別輸入不同的網(wǎng)絡分支獲取失焦程度,然后利用失焦程度預測深度;但是網(wǎng)絡各分支僅關注單張圖片,依靠全局池化獲取全局信息,無法很好地利用深度方向的特征變化。Wang 等[14]設計了一個使用注意力機制的類U-Net 來同時預測全對焦圖片和深度圖;這種較大的模型提高了精度,但也降低了推理速度。Fujimura 等[15]借鑒傳統(tǒng)的解析式方法,利用梯度信息構建焦點體預測深度,然而引入較多的透鏡成像先驗知識會造成焦點體的構建相對復雜,并且沒有充分利用焦點堆棧的空間特性。
針對上述問題,本文提出一種基于學習的DFD(Depth From Defocus)模型。不同于使用多分支二維卷積網(wǎng)絡的模型[13],DFD 模型使用簡單的三維感知架構沿三個維度同時捕捉焦點堆棧的特征,模型更輕量,擴展性也更好。受基于學習的焦點堆棧深度估計工作[16]的啟發(fā),本文模型在利用焦點體的基礎上考慮了焦點堆棧的模糊歧義性,將焦點堆棧模糊歧義性和焦點體相結合,使焦點體通過一個多尺度卷積網(wǎng)絡預測分層深度概率,與分層深度加權后得到深度圖。
基于對焦的方法需要掃描不同的焦點平面以獲取一系列圖片,然后找到每一個小塊圖像的“最佳對焦”位置,從對焦距離中恢復出深度。然而DFF(Depth From Focus)是一個不適定的問題,因為它并沒有包含所有的情況。對于一些紋理比較少的區(qū)域,在焦點堆棧中可能呈現(xiàn)出相同的清晰度,實踐上通常使用較強的正則化緩解這樣的情況,但是會造成估計的深度過度平滑。Hazirbas 等[17]首次將卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)強大的特征提取能力運用到焦點堆棧深度估計中,利用經(jīng)典的編碼器-解碼器結構直接預測深度,取得了不錯的效果。受此啟發(fā),Ceruso 等[18]結合孿生網(wǎng)絡[19]和多尺度卷積網(wǎng)絡預測相對深度;Yang等[16]將焦點堆棧和對焦距離嵌入可微的焦點體中,實現(xiàn)了更好的性能;Wang 等[14]利用自注意力機制[20]同時預測深度圖和全對焦圖像。雖然深度學習的發(fā)展使基于DFF 的網(wǎng)絡模型不斷更新,預測精度也有了很大進步,但是大多數(shù)的方法仍然使用基于語義的特征提取方式,沒有考慮焦點堆棧自身的空間特性。
相較于利用焦點堆棧的清晰度這種直接的方式,從失焦圖片中獲得深度更復雜。失焦模型建立在高斯成像公式上,當傳感器配置給定時,物體成像的模糊性會隨著物距的變化而改變,所以深度估計問題轉化為對圖像各像素模糊量的判定,這也是一個有挑戰(zhàn)性的問題。Nayar 等[21]假設模糊量符合高斯分布,將具有紋理的光源照射到實際物體,然后利用定制的相機在兩個光路分別進行對焦,將獲得的具有不同模糊程度的失焦圖轉換到頻域后獲得了像素的深度,該方法雖然能到達實時的效果,但是成本較高,并且無法消除高頻噪聲,所以很難實際應用;Srinivasan 等[22]使用失焦模糊訓練了一個專門用于單目深度估計的網(wǎng)絡;Carvalho 等[23]將室內失焦深度估計拓展到自然條件下;Maximov 等[13]先在合成數(shù)據(jù)上訓練,然后在真實數(shù)據(jù)集上微調,縮小了數(shù)據(jù)集之間的領域差異,但是模型的可擴展性較弱;Galetto 等[24]訓練了一個兩階段模型,首先利用一個簡單的網(wǎng)絡訓練出圖塊模糊程度分類器,然后利用迭代式引導濾波預測出失焦圖;Fujimura等[15]將失焦模型融入焦點體(Focus Volume),利用多尺度卷積預測深度,取得了很好的效果,但是模型構建比較耗時。
本文方法將輕量化的3D 感知網(wǎng)絡與失焦模糊的非線性特征相結合,同時利用分層的概率值來預測高質量的深度,圖2 展示了焦點堆棧深度預測的總體框架。
圖2 本文方法的總體框架Fig.2 Overview framework of the proposed method
從失焦圖片中估計深度建立在有效判斷圖像塊的模糊程度上。度量模糊程度常用的方式是將點擴散函數(shù)建模成圓形的高斯模糊,不同的模糊核的大小代表了不同的模糊程度。從高斯薄透鏡成像公式以及相似關系(見圖1),可以推導出模糊半徑b和物體距離do之間的關系:
其中:D為光圈直徑;ds為鏡頭到傳感器的距離;f為焦距;p為像素大小。
圖3 直觀地展示了模糊半徑與物體距離之間的關系。在不同的對焦距離df下,模糊半徑隨著物體距離的增加呈現(xiàn)出先減小后增加的趨勢。當物體距離較小時,物體距離在模糊半徑的影響因素中占主導;當物體距離比較大時,物體距離的影響會逐漸減弱直至消失,此時的模糊半徑會趨近于常數(shù)b*:
圖3 不同對焦距離下模糊半徑與物體距離的關系Fig.3 Relationship between blur radius and object distance under different focus distance
可以推導出模糊半徑變化| Δb|與物體距離do間的關系:
當對焦距離df=0.3 m,物體距離增量Δdo=0.1 m 時,模糊半徑的變化僅與物體距離有關。焦點堆棧在對焦距離附近會出現(xiàn)強烈模糊的變化,直觀上往往表現(xiàn)出一定范圍的景深,當物體超過了景深范圍,它的模糊程度的變化幾乎是肉眼不可見的,如圖4 所示。
圖4 模糊變化和物體距離間的關系Fig.4 Relationship between blur variation and object distance
與模糊梯度在深度s方向上的劇烈變化不同,語義梯度在平面xy方向上的變化更穩(wěn)定。以DefocusNet 數(shù)據(jù)集[13]中某一場景為例,焦點堆棧沿x、y、s方向的平均梯度如圖5 所示。xy方向上的梯度幾乎不隨對焦距離增加而變化;而s方向上的梯度隨著對焦距離的增加急劇下降,并且在大小上與xy梯度相差超過3 個數(shù)量級。焦點堆棧模糊梯度和語義梯度的顯著差異使模糊特征提取部分需要更精細地設計。
圖5 焦點堆棧沿不同方向的每個像素的平均梯度Fig.5 Average gradient of each pixel with different directions of focal stack
傳統(tǒng)的Inception 網(wǎng)絡[25]在多個不同的尺度下對輸入特征進行提取,在計算量和有效性上得到了比較好的平衡。本文基于以下考慮將Inception 網(wǎng)絡擴展到了三維:和沿圖像的平面維度進行特征提取不同,焦點堆棧的特征提取會多一個維度,焦點堆棧本身的特性決定了它在深度維度上的模糊變化不是簡單的線性疊加(如圖5 中s方向),所以無法用2D 卷積刻畫這種非線性特點。而從局部上來看,模糊變化又是線性的,所以更適合用卷積核深度尺寸可變的3D 卷積捕捉相應的特征。另一點是,因為模糊變化相比平面語義變化要小得多,直接將2D 卷積應用到焦點堆棧上進行特征提取無法很好地區(qū)分語義特征和失焦模糊特征,所以層與層之間模糊特征提取也應該被細粒度地考慮。綜合以上兩點,將3D 感知應用到焦點堆棧時,卷積核使用了較小的深度偏移量,目的是捕捉微小的模糊量變化。
本文設計的三維(3D)感知模塊使用了一個4 層的網(wǎng)絡來完成焦點堆棧的高頻噪聲過濾和初步特征提取,如圖6 所示。3D 感知模塊僅保留局部池化而拋棄了全局池化層,因為本文方法重點關注模糊程度的變化而不是圖像的語義信息,全局池化層的引入可能會丟失這些細微的差別,而這對于那些變化很小的焦點堆棧而言至關重要。為了讓網(wǎng)絡能夠學到這一點,在后續(xù)的整個網(wǎng)絡設計中都遵從了這一原則。需要注意的是,除了模型輕量化以及噪聲過濾,采用比較少的網(wǎng)絡層數(shù)提取特征是為了讓模型能盡可能保留原始的RGB 特征。3D 感知模塊的特征提取網(wǎng)絡簡單但是有效,消融實驗證實了這一點。
圖6 3D感知模塊Fig.6 3D perception module
由3D 感知模塊提取的模糊特征可以直接預測深度。然而,對于透鏡成像系統(tǒng),深度到模糊量是多對一的映射,無法依據(jù)模糊程度來判斷對象與焦點平面的前后關系。圖7(a)為真實場景下焦點平面B 以及附近具有相同模糊程度的平面A 和平面C;圖7(b)是對應的模糊半徑和物體距離的關系曲線,A、B、C 分別為對應平面的局部放大圖。由于模糊半徑和物體距離之間的非線性關系,在焦點平面B 的近端和遠端會引入歧義,兩個不同距離的平面A 和C 存在相同的模糊半徑。直接使用原始的模糊特征不一定會帶來良好的性能,如果不對特征加以區(qū)分,焦點平面一側的模糊程度容易被錯誤地解釋到另一側,使模型無法學習到對應深度的模糊特征。
圖7 焦點平面附近的模糊歧義性Fig.7 Blur ambiguity near focal plane
從3D 感知模塊得到的模糊特征在預測深度時具有二義性,這對于網(wǎng)絡的學習是不利的。Kashiwagi 等[26]在真實數(shù)據(jù)集上做了大量關于點擴散函數(shù)畸變的實驗,即使是相同的模糊量,RGB 強度對深度的響應也不一樣,近端按B-G-R 強度依次減弱,且中間的強度會小于兩端的強度;遠端按B-RG 依次減弱,中間的強度則會比兩端大。這一特點使利用RGB 三通道不同的差分值來判斷深度成為可能。
常規(guī)的差分特征構建方式是沿平面x、y方向以及深度s三個方向進行差分然后級聯(lián)(Diff-sxy),目的是提取不同方向上的特征差異。本文為了獲得焦點平面兩端不同的強度變化模式,直接對RGB 通道中的其中兩個求差分然后進行級聯(lián)(Diff-RGB)。具體的構建細節(jié)見圖8,首先使用一個簡單3D 卷積網(wǎng)絡對焦點堆棧進行過濾,然后利用式(4)提取RGB通道的差分信息,最后經(jīng)過一個下采樣層得到最后的RGB差分特征。
圖8 通道差分模塊Fig.8 Channel difference module
其中:IRGB表示融合后的RGB 通道差分;Featurei代表輸入特征的不同顏色維度。
焦點體的主要作用如下:1)保留焦點堆棧各層次間細微的模糊變化差異,即模糊量特征;2)在相同的模糊量下顯式編碼RGB 通道對深度的響應。因此,本文設計了一個RGB通道模式融合的焦點體用來有效地捕捉肉眼不可見的特征差異,具體是將通道差分模塊提取的RGB 差分特征與3D 感知模塊提取的模糊特征進行融合,即構建出編碼了焦點堆棧模糊歧義性的焦點體。
在使用焦點體進行深度預測時,采用一種分層的策略以減少深度預測過程中的不確定性。這一策略是受焦點堆棧本身對焦距離分層的特性的啟發(fā),在焦點堆棧中,每一張圖片都在固定的對焦距離下拍攝,隱含了對應的深度信息。單通道深度同樣也可以按深度分層,這樣就轉變?yōu)閷Χ嗌疃韧ǖ栏怕实念A測。
預測網(wǎng)絡首先對焦點體分別進行2、4、8、16、32 倍的下采樣;然后利用3D 卷積獲得了5 個不同分辨率下的特征圖;之后使用轉置卷積進行上采樣,除了第一層,其余的轉置卷積層的輸入都級聯(lián)了來自上一層的特征圖;最后輸出各深度層的概率。具體的編碼器-解碼器網(wǎng)絡見圖9。
圖9 編碼器-解碼器網(wǎng)絡Fig.9 Encoder-decoder network
整個網(wǎng)絡預測的深度圖depth是由各深度層的概率值layeri與對應的深度層di進行加權求和得到:
其中:深度分層的層數(shù)N=30;深度層di=i。
本文使用PyTorch 1.10.2 實現(xiàn)所提出模型,并在10 GB顯存的NVIDIA 3080 上使用Adam 優(yōu)化器(學習率lr=0.000 1,β1=0.9,β2=0.999)以及L1 損失對模型進行優(yōu)化。使用隨機裁剪、隨機旋轉、隨機水平翻轉以及隨機亮度對比度伽馬值變換進行數(shù)據(jù)增強,避免過擬合。所有實驗都采用了固定的隨機種子,訓練500 輪。
本文使用兩個有標注的數(shù)據(jù)集DefocusNet[13]和NYU Depth V2[23]作定量比較,使用一個沒有標注的數(shù)據(jù)集Mobile Depth[12]作定性分析,隨后在DefocusNet[13]上對模型的重要模塊進行消融實驗。
實驗采用7 個廣泛使用的評估指標以及2 個尺度無關評估指標:平均絕對誤差(Mean Absolute Error,MAE)、平均平方誤差(Mean Square Error,MSE)、均方根誤差(Root Mean Square error,RMS)、對數(shù)均方根誤差(logarithmic Root Mean Square error,logRMS)、絕對相對誤差(absolute Relative error,absRel)、平方相對誤差(square Relative error,sqrRel)、推理時間、尺度不變誤差(scale-invariant error,sc-inv)和仿射縮放平移不變誤差(affine(scale and shift)-invariant error,ssitrim)。
DefocusNet[13]合成數(shù)據(jù)集:包含400 個訓練樣本和100 個測試樣本,每個樣本包含一組已知對焦距離的5 張圖片的焦點堆棧以及對應的深度圖,圖像的分辨率為256×256,深度范圍是0~3 m。
NYU Depth V2[23]真實數(shù)據(jù)集:官方劃分包含795 對訓練樣本和654 對測試樣本,圖像分辨率為640×480,深度范圍0~10 m。利用Carvalho[23]提供的分層重建方法對樣本重對焦,對焦距離分別為2、4、8 m,每個樣本隨機裁剪出10 張256×256 大小的圖片,生成7 950 和6 540 個訓練樣本、測試樣本。
Mobile Depth[12]:真實數(shù)據(jù)集,包含鍵盤、瓶子、水果等13個場景,相應的焦點堆棧均使用手機拍攝后期對齊的方式獲得,由于沒有真實的深度值,此數(shù)據(jù)集僅用于定性評估。
將本文方法與較新的方法DefocusNet[13]、AiFDepthNet(All in Focus Depth Network)[14]、文獻[15-27]方法進行比較,它們的結果均是在同樣的預處理條件下通過重新運行公開的代碼生成。
1)性能指標對比。文獻[27]方法為兩階段方法,本文僅采用它的深度估計部分進行訓練。如表1 所示,本文方法在DefocusNet 數(shù)據(jù)集的7 個深度預測指標上均優(yōu)于對比方法;在NYU Depth V2 數(shù)據(jù)集上,4 個指標取得了最優(yōu),有3 項指標稍弱于DefocusNet 方法。主要原因是當合成的焦點堆棧數(shù)量較少時,相機配置更重要,而本文方法并沒有使用對焦距離等相機參數(shù)??傮w上看,本文方法在兩個不同類型的數(shù)據(jù)集的多個指標上均取得最優(yōu)或次優(yōu)的結果,這得益于特征粗提取模塊和焦點體構建模塊的設計,它們使焦點堆棧特征表示更有效,模型預測更準確;同時,輕量化的設計使本文方法在兩個數(shù)據(jù)集上的推理時間縮短了43.92%~70.20%和47.91%~77.01%。
表1 不同方法在兩個數(shù)據(jù)集上的結果Tab.1 Results of different methods on two datasets
2)泛化性能對比。表2 列出了在DefocusNet 數(shù)據(jù)集上訓練,在NYU Depth V2 數(shù)據(jù)集上測試的結果,對比的數(shù)據(jù)直接從文獻[15]中獲取。按照文獻[15]中的實驗設置,訓練集采用了DefocusNet 的子集,并且對訓練集和測試集的真實深度進行了縮放。本文方法在MAE、RMS 和sc-inv 上取得了最優(yōu)。由于sc-inv 是縮放無關的,在這一項指標上的顯著優(yōu)勢表明本方法能夠有效預測不同深度范圍的對象。
表2 不同方法在DefocusNet數(shù)據(jù)集上訓練,在NYU Depth V2數(shù)據(jù)集上測試的結果Tab.2 Results of different methods training on DefocusNet dataset and testing on NYU Depth V2 dataset
3)參數(shù)量以及速度對比。與AiFDepthNet[14]的16 MB 參數(shù)量相比,本文的輕量化模型僅有3.3 MB。即使堆棧數(shù)量變大,模型也并不會像DefocusNet[13]一樣同步增加模型參數(shù)和計算成本,僅僅只是計算量上的變化,在骨干網(wǎng)絡的設計上是很大的改進。由于網(wǎng)絡模型的輕量化,本文方法在推理速度上占據(jù)更大的優(yōu)勢。如表1 所示,在DefocusNet 數(shù)據(jù)集上,本文方法的推理時間相較于AiFDepthNet、DefocusNet 以及文獻[27]方法分別減少了70.3%、65.8%和43.9%;在NYU Depth V2 數(shù)據(jù)集上則分別減少了77.0%、64.9% 和47.9%,能夠滿足實時性要求。
4)定性比較。將本文方法在Mobile Depth 數(shù)據(jù)集[12]上和AiFDepthNet、DefocusNet 以及文獻[27]方法進行定性比較,結果如圖10 所示。可以看出,AiFDepthNet 預測的深度顏色變化不明顯,說明它預測的深度值普遍較小;文獻[27]方法相比AiFDepthNet 在中等距離預測更準確,但是在部分遠距離區(qū)域會出現(xiàn)嚴重誤差;和DefocusNet 相比,本文方法在深度預測的平滑性上更好,出現(xiàn)深度值突變的情況要少得多,這一點在圖像1 中的小球附近表現(xiàn)得尤其明顯。定性比較表明,本文方法預測的深度層次感更強,更加準確。
圖10 Mobile Depth數(shù)據(jù)集上的深度預測可視化比較Fig.10 Visual comparison of depth predictions on Mobile Depth dataset
分別對焦點堆棧的層數(shù)、特征提取網(wǎng)絡的架構、焦點體的構建模式以及深度預測的輸出方法進行消融實驗來評估它們對模型的貢獻。實驗結果如表3 所示。
表3 在DefocusNet數(shù)據(jù)集上的消融實驗結果Tab.3 Results of ablation experiments on DefocusNet dataset
1)焦點堆棧層數(shù)的影響。圖11 顯示了本文方法在Mobile Depth 數(shù)據(jù)集上不同焦點堆棧層數(shù)的性能評估結果。由于沒有真實深度值,所有用于評估的深度來自文獻[12]中的模型的估計值。當焦點堆棧層數(shù)較少時,性能迅速下降;而在層數(shù)較多時,性能影響并不明顯。這說明本文方法在焦點堆棧數(shù)量足夠時,能有效提取到模糊變化特征;而在圖片數(shù)量較少時,僅依靠圖像語義信息無法有效估計圖像深度。
圖11 在Mobile Depth數(shù)據(jù)集上的焦點堆棧層數(shù)性能評估Fig.11 Performance evaluation of focal stack layers on Mobile Depth dataset
2)特征提取架構的影響。在實驗1、2 中比較了不同的特征提取模塊,一個是共享權重的孿生網(wǎng)絡[19],使用2D 卷積;另一個是本文設計的輕量3D 感知網(wǎng)絡。與本文網(wǎng)絡相比,使用孿生網(wǎng)絡時性能出現(xiàn)了下降,說明3D 卷積能更細粒度地提取焦點堆棧的特征。
3)焦點體構建模式的影響。在實驗2、4、5 中,使用3 個不同的焦點堆棧構建模式:Naive 代表上一模塊輸出的原始特征;Diff-sxy代表原始特征和沿深度s、x、y三個方向的差分特征的結合;Diff-RGB 代表原始特征與編碼了模糊歧義性RGB 特征模式的差分特征的結合。以Naive 的方法作為基線,使用常規(guī)的三通道差分Diff-sxy時預測的深度值得到了改進;使用本文的Diff-RGB 方法來構建焦點體時,性能得到大幅提升,說明本文方法確實能夠辨別焦點堆棧的模糊歧義性,從而提升深度估計性能。
4)深度預測輸出方法的影響。在實驗3 中,DO(Direct Output)代表將編碼器-解碼器模塊預測的分層概率經(jīng)過一個全連接層后直接輸出預測深度。實驗2 中,Layered 表示對分層概率layeri與對應的深度層di進行加權求和得到預測的深度圖。相較于直接輸出深度的實驗3,采用Layered 的實驗2 的MAE 減少了63.3%,這說明對深度預測進行分層適應了焦點堆棧本身的分層特性,有利于提升模型性能。
本文針對模糊變化量小以及模糊歧義性的問題,提出了一個新的網(wǎng)絡架構來預測焦點堆棧的深度,主要利用焦點堆棧本身的空間特性,通過3D 感知細粒度提取模糊特征;焦點體融合RGB 深度響應模式;多尺度編解碼器輸出分層概率。實驗結果表明,本文方法不僅能預測有競爭力的深度,同時推理速度上也有顯著提升,而且模型還相對輕量。在未來的工作中,計劃將工作擴展到無監(jiān)督領域。