霍智勇,喬璐
(南京郵電大學(xué)通信與信息工程學(xué)院 南京 210023)
從單目圖像中獲取深度信息是理解場景幾何關(guān)系的重要方法,也是三維重建[1]和視點合成[2-3]的關(guān)鍵性技術(shù)。傳統(tǒng)的基于光流或運動恢復(fù)結(jié)構(gòu)(structure from motion,SfM)[4]的算法可以獲取單目運動圖像序列或單目視頻的深度信息,卻無法預(yù)測單幀靜止圖像的深度。近年來,利用深度學(xué)習(xí)的方法預(yù)測單目靜止圖像的深度圖成為研究熱點。文獻(xiàn)[5]首次提出采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行單目深度估計,運用神經(jīng)網(wǎng)絡(luò)獲取全局粗略深度圖以及改善局部細(xì)節(jié)。文獻(xiàn)[6]提出了一種包含殘差網(wǎng)絡(luò)模塊的全卷積網(wǎng)絡(luò)對單目圖像和深度圖之間的模糊映射進(jìn)行建模的方法,為了提高輸出分辨率,再提出了特征上采樣的學(xué)習(xí)方法以及引入反向Huber 損失進(jìn)行優(yōu)化。文獻(xiàn)[7]對未作標(biāo)記的單目圖像序列,采用無監(jiān)督的方式實現(xiàn)對單目深度估計網(wǎng)絡(luò)和相機姿態(tài)估計網(wǎng)絡(luò)的訓(xùn)練。文獻(xiàn)[8]將卷積神經(jīng)網(wǎng)絡(luò)與連續(xù)條件隨機場相結(jié)合,估計單目圖像深度。文獻(xiàn)[9]提出了采用相對深度進(jìn)行深度預(yù)測的方法,即對輸入圖像中由人工標(biāo)注的相對深度注釋點對之間的相對關(guān)系進(jìn)行排序估計。之后,文獻(xiàn)[10]又通過采用質(zhì)量評價網(wǎng)絡(luò)識別出基于SfM 方法獲得的高質(zhì)量重構(gòu)圖像,作為監(jiān)督視圖以獲取估計深度。文獻(xiàn)[11]對由雙目圖像獲得的GT(ground-truth)深度圖和由深度卷積網(wǎng)絡(luò)生成的預(yù)測深度圖進(jìn)行隨機采樣,從而訓(xùn)練出相對深度預(yù)測網(wǎng)絡(luò)模型。上述提到的相對深度方法均采用排序損失,僅針對輸入圖像中的全局相對深度信息進(jìn)行訓(xùn)練,忽略了圖像中的幾何信息以及局部邊緣信息,在幾何形狀以及深度不連續(xù)處不能獲得準(zhǔn)確的預(yù)測結(jié)果。因此,本文提出了一種基于多尺度結(jié)構(gòu)相似度和梯度匹配的聯(lián)合損失函數(shù),對輸入的單目圖像獲得更準(zhǔn)確的深度預(yù)測,深度不連續(xù)處也更加清晰。
本文在訓(xùn)練中采用了基于文獻(xiàn)[12]的多尺度編碼器?解碼器神經(jīng)網(wǎng)絡(luò)架構(gòu),其網(wǎng)絡(luò)架構(gòu)如圖1所示。編碼器部分是在ResNet50 網(wǎng)絡(luò)基礎(chǔ)上,刪除了ResNet50 網(wǎng)絡(luò)的最后一個池化層、全連接層以及softmax 層,使編碼器更好地應(yīng)用于密集的每像素預(yù)測任務(wù);解碼器部分采用多尺度融合模塊,每個融合模塊由兩個殘差卷積塊和一個雙線性上采樣層組成;在解碼器的最后添加一個自適應(yīng)輸出模塊,該模塊由兩個卷積層和一個雙線性上采樣層組成。
圖1 深度估計網(wǎng)絡(luò)架構(gòu)
輸入圖像通過編碼器網(wǎng)絡(luò)生成一系列具有不同語義的特征圖,根據(jù)特征圖的分辨率將編碼器分為4 個不同的構(gòu)建模塊。由于ResNet 包含步長為2 的卷積序列和池化操作,因此增大了卷積的接受域以捕獲更多的上下文信息,但同時降低了輸出特征圖的分辨率。在解碼器部分,考慮到若直接使用簡單的上采樣和反卷積會生成粗略的預(yù)測圖像,若使用空洞卷積生成的深度圖會帶有棋盤偽影,所以為了獲取準(zhǔn)確的預(yù)測深度圖,本文采用多尺度特征融合模塊。
解碼器中特征融合部分的前向傳播過程為:首先對ResNet50 生成的最后一組特征圖進(jìn)行上采樣;然后將編碼器部分獲取到的特征圖與上層融合特征圖通過多尺度特征融合模塊得到下層融合特征圖,具體如圖2 所示:對由編碼器獲取到的特征圖使用一個殘差卷積塊,再將其與上層融合特征圖進(jìn)行合并,最后將合并的結(jié)果再通過一個殘差卷積塊以及上采樣,以生成與下一個輸入塊的分辨率相同的特征圖。為了生成最終的深度預(yù)測結(jié)果,將通過3 個特征融合模塊后的得到的特征結(jié)果輸入到自適應(yīng)輸出模塊,此模塊包括兩個3×3 卷積層和一個雙線性上采樣層,得到最終的深度預(yù)測圖像。
圖2 特征融合模塊
本文提出的聯(lián)合損失函數(shù)為:
式中,第一項損失Lrank為排序損失,用來訓(xùn)練圖像中的相對深度以及懲罰預(yù)測深度圖中像素對之間錯誤的排序關(guān)系;α、β為平衡因子。
對于每張輸入圖像I,隨機采樣N個相對深度點對(i,j),其中i和j分別代表點對中第一個和第二個點的位置,總排序損失Lrank可表示為:
深度點對(i,j)在相應(yīng)預(yù)測深度圖像上的深度值為(pi,pj),用?(pi,pj)表示預(yù)測深度中成對排序損失:
式中,lij為排序標(biāo)簽。為了獲取每對點對之間的排序標(biāo)簽,首先從GT 深度圖中獲取深度值,然后獲得GT 點對深度排序標(biāo)簽,有:
式中,τ為閾值。
聯(lián)合損失函數(shù)中第二項(Lms?ssim)為多尺度結(jié)構(gòu)相似度損失[13],是一種方便的融合不同分辨率圖像細(xì)節(jié)的損失。該損失在結(jié)合圖像分辨率和查看條件的變化方面比單尺度相似度損失提供了更大的靈活性。多尺度結(jié)構(gòu)相似度損失用于預(yù)測輸入圖像中的幾何形狀,從而提高深度估計的準(zhǔn)確度:
式中,cj(p,p?)、sj(p,p?)分別表示在尺度為j時,預(yù)測深度與GT 深度在對比度和結(jié)構(gòu)上的比較;lM(p,p?)表示僅在最高尺度M時在亮度上的對比;參數(shù) αM、βj、γj用于調(diào)整不同成分的相對重要性。為了簡化參數(shù)選擇,在尺度j的情況下,設(shè)置αj=βj=γj。
聯(lián)合損失函數(shù)中第三項(LMGM)為尺度不變梯度匹配損失,用于改善僅使用排序損失帶來的邊緣模糊問題,實現(xiàn)與GT 中的不連續(xù)處相一致以及梯度平滑,將梯度匹配項定義為[14]:
式中,M表示GT 深度圖的像素值;表示在不同尺度s下預(yù)測深度值p和GT 深度值p?之間的差值,s設(shè)置為4 個尺度。本文的訓(xùn)練實驗中設(shè)置α= β=0.5。
本文基于深度學(xué)習(xí)框架Pytorch,計算用CPU為NVIDIA GTX1080ti,操作系統(tǒng)為Centos7.0。實驗過程中,訓(xùn)練網(wǎng)絡(luò)參數(shù)采用隨機梯度下降(stochastic gradient descent,SGD)優(yōu)化算法。
本文在訓(xùn)練深度預(yù)測網(wǎng)絡(luò)時用高分辨率網(wǎng)絡(luò)雙目圖像(HR-WSI)數(shù)據(jù)集,這是從網(wǎng)上收集的高分辨率雙目圖像的多樣化集合。此數(shù)據(jù)集使用FlowNet2.0生成的視差圖作為數(shù)據(jù)集中g(shù)round-truth 部分,并且使用前后向流一致性屏蔽圖像中的異常值。此外,通過預(yù)訓(xùn)練的網(wǎng)絡(luò)計算高質(zhì)量的天空分割掩模,并將天空區(qū)域的視差設(shè)置為最小觀測值。通過手工剔除不良GT 數(shù)據(jù)后,此數(shù)據(jù)集包括20378 張圖像用于訓(xùn)練,400 張圖像用于驗證。
為了適應(yīng)深度估計網(wǎng)絡(luò)的輸入,將圖片尺寸隨意裁剪成為384×384,并且對裁剪后的圖片進(jìn)行歸一化處理。網(wǎng)絡(luò)訓(xùn)練時的批大小選為4,訓(xùn)練周期設(shè)為80。訓(xùn)練時編碼器部分的學(xué)習(xí)率設(shè)置為10?5,解碼器部分的初始學(xué)習(xí)率為10?4。
為了測試深度估計模型的準(zhǔn)確性與泛化能力,本文選擇了4 種數(shù)據(jù)集進(jìn)行測試:Ibims[15]、NYUDv2[16]、DIODE[17]、Sintel[18]。以下簡要概述這4 種數(shù)據(jù)集。
2.2.1 Ibims 數(shù)據(jù)集
Ibims 為一組室內(nèi)數(shù)據(jù)集,包含高分辨率和低分辨率的各種室內(nèi)場景的100 組RGB-D 圖像對。由數(shù)字單鏡頭反射相機和高精度激光掃描儀組成的定制采集,用于采集各種室內(nèi)場景的高分辨率圖像和高度精確的深度圖。與相關(guān)的RGB-D 數(shù)據(jù)集相比,Ibims 數(shù)據(jù)集具有噪聲非常低、ground-truth 深度清晰、無遮擋以及范圍廣等優(yōu)點。
2.2.2 NYU Depth 數(shù)據(jù)集
NYU Depth 數(shù)據(jù)集由來自各種室內(nèi)場景的視頻序列組成,這些視頻序列由來自Microsoft Kinect的RGB 和Depth 攝像機記錄。其中包含1449 個密集標(biāo)記的RGB 和深度圖像對,該數(shù)據(jù)集中被標(biāo)記的數(shù)據(jù)集為視頻數(shù)據(jù)的子集,并帶有密集的多類標(biāo)記。標(biāo)記數(shù)據(jù)集是原始NYU Depth 數(shù)據(jù)集的子集,由成對的RGB 幀和深度幀組成,并為每個圖像標(biāo)注了密集標(biāo)簽。
2.2.3 DIODE 數(shù)據(jù)集
DIODE 數(shù)據(jù)集為一組包含各種高分辨率彩色圖像的數(shù)據(jù)集,具有準(zhǔn)確、密集、遠(yuǎn)距離深度測量的特點,是第一個包含由一個傳感器組獲得的室內(nèi)和室外場景RGBD 圖像的公共數(shù)據(jù)集。
2.2.4 Sintel 數(shù)據(jù)集
由于ground-truth 光流很難以自然運動在真實場景中進(jìn)行測量,所以光流數(shù)據(jù)集在尺寸大小、復(fù)雜性和多樣性方面受到限制,使得光流算法難以在實際數(shù)據(jù)上進(jìn)行訓(xùn)練和測試。文獻(xiàn)[18]引入了一個新的光流數(shù)據(jù)集,該數(shù)據(jù)集來自開源3D 動畫短片Sintel,具有在流行的Middlebury 流評估中不具備的長序列、大運動、鏡面反射、運動模糊、散焦模糊和大氣影響等重要特征。由于生成電影的圖形數(shù)據(jù)是開源的,因此能夠在復(fù)雜度不同的情況下渲染場景,以評估現(xiàn)有流算法失敗的地方。
4 種數(shù)據(jù)集在數(shù)值比較實驗中采用了排序誤差[19]來評價深度預(yù)測的準(zhǔn)確性,深度邊界誤差(depth boundary error,DBE)[15]來評價預(yù)測深度圖的邊緣準(zhǔn)確性。
1)深度預(yù)測的準(zhǔn)確性對比
本文算法結(jié)果同ReDWeb、Youtube3D、HRWSI深度估計方法的結(jié)果進(jìn)行了對比試驗;同時,為了研究在不同損失函數(shù)下預(yù)測深度圖的準(zhǔn)確性,實驗也對Ours_MS-SSIM、Ours_MGM 和Ours_ALL方法進(jìn)行了數(shù)值比較。其中,Ours_MS-SSIM 采用HR-WSI 作為訓(xùn)練集,在排序損失上再添加一項多尺度結(jié)構(gòu)相似度損失;Ours_MGM 采用排序損失與多尺度尺度不變梯度匹配損失;Ours_ALL 采用本文提出的基于結(jié)構(gòu)化的聯(lián)合損失,將排序損失、多尺度結(jié)構(gòu)相似度損失以及梯度匹配損失相結(jié)合作為損失函數(shù)。
在4 個數(shù)據(jù)集下排序誤差的數(shù)值結(jié)果如表1 所示。算法對數(shù)據(jù)集中的每張圖像隨機采樣50000對相對深度點對來計算排序誤差,排序誤差的表達(dá)式為:
表1 4 種數(shù)據(jù)集下排序誤差數(shù)值比較 %
式中,ωi設(shè)置為1,并且使用式(2)獲得li和(p)之間的排序標(biāo)簽。
根據(jù)表1 中的實驗結(jié)果可以看出,在4 種測試集下本文算法的排序誤差均低于前3 種方法。①由于Ibims、NYUDv2 僅包含室內(nèi)場景數(shù)據(jù)集,場景中多為剛性物體,深度預(yù)測時對場景中物體的幾何形狀和邊緣要求都很高,由表中二、三列可以看出,本文采用的基于多尺度結(jié)構(gòu)相似度和梯度匹配的算法得到的排序誤差最小,能夠更準(zhǔn)確地預(yù)測幾何形狀以及深度不連續(xù)處,從而預(yù)測的準(zhǔn)確性最高;②數(shù)據(jù)集DIODE 主要包含以建筑物為主的室外靜態(tài)場景,所以在預(yù)測深度時更關(guān)注這些建筑物的幾何結(jié)構(gòu),所以表1 的第四列中使用Ours_MSSSIM 方法,在排序損失上僅添加結(jié)構(gòu)相似度損失,更準(zhǔn)確地預(yù)測圖像中的幾何形狀,從而得到最好的數(shù)值結(jié)果;③Sintel 為3D 動畫短片視頻幀數(shù)據(jù)集,這些視頻幀的前景大多為非剛性的運動的人物,對幾何形狀要求不高,更著重于深度點對的排序準(zhǔn)確性和深度不連續(xù)處的一致性,所以第五列中僅在排序損失上添加多尺度梯度匹配損失的Ours_MGM 方法獲得了最低的排序損失結(jié)果。
2)深度圖邊緣準(zhǔn)確性對比
為了評價預(yù)測深度圖的邊緣準(zhǔn)確性,本文采用了深度邊界誤差(DBE)[15]作為度量標(biāo)準(zhǔn),通過比較預(yù)測深度圖與GT 深度圖中的邊緣,檢查預(yù)測的深度圖是否能夠以準(zhǔn)確的方式表示所有相關(guān)的深度不連續(xù)性,在測試Ibims 數(shù)據(jù)集上分別計算了準(zhǔn)確誤差以及考慮缺失邊緣的完整誤差。兩種誤差公式分別為:
式中,ybin表示使用結(jié)構(gòu)化邊緣提取出的邊緣;表示通過二值邊緣圖像的截短倒角距離獲取的GT 邊緣。
根據(jù)表2 中的實驗結(jié)果可以看出,Ours_MGM和Ours_ALL 兩種方法得出的明顯小于其他方法。主要是由于這兩種方法均在損失函數(shù)中添加了一項尺度不變梯度匹配損失,提高了與GT 中不連續(xù)性處的一致性,從而改善僅使用排序損失帶來的邊緣模糊問題。
表2 Ibims 數(shù)據(jù)集下深度邊界誤差(DBE)數(shù)值比較
圖3~圖6 通過主觀比較更直觀地體現(xiàn)出不同單目深度估計方法下預(yù)測深度圖的結(jié)果。
圖3 是在數(shù)據(jù)集Ibims 上的對比,輸入圖像顯示走廊上方吊燈數(shù)為3 盞,圖3b、圖3c 只能預(yù)測出一盞燈的深度,圖3d 也只能隱約預(yù)測出第二盞燈,而圖3e、圖3g 可以在預(yù)測圖像上呈現(xiàn)3 盞燈的深度。由于Ours_MS-SSIM、Ours_ALL 方法的損失函數(shù)中均包含多尺度結(jié)構(gòu)相似度損失,所以可以更準(zhǔn)確地預(yù)測圖像中的幾何形狀。
圖3 Ibims 測試集上的主觀比較
圖4 是在室內(nèi)場景數(shù)據(jù)集NYUDv2 上的對比,相比于圖4b、圖4c、圖4d,使用本文算法預(yù)測出的圖4g 中,靠近沙發(fā)的桌子邊緣以及沙發(fā)自身邊緣都更加清晰。同樣的,圖5 為DIODE 測試集上的比較,圖5g 中欄桿的清晰程度優(yōu)于其他僅使用排序誤差的深度預(yù)測方法。由圖4 和圖5 可以得出:本文算法在訓(xùn)練函數(shù)中添加一項梯度匹配損失,可以改善圖像邊緣的清晰程度,使得深度不連續(xù)處與GT 圖像更加具有一致性。
圖4 NYUDv2 測試集上的主觀比較
圖5 DIODE 測試集_上的主觀比較
圖6 是在視頻幀Sintel 上的比較,左邊女孩和右邊男士的上身與下身的深度是一致的,表現(xiàn)在深度圖上應(yīng)該是深淺顏色幾近相同,圖6f、圖6g 符合這一要求,可以看出使用本文的算法可以提高深度預(yù)測的準(zhǔn)確性。
圖6 Sintel 測試集上的主觀比較
為了提高單目深度估計精度,本文提出了基于多尺度結(jié)構(gòu)相似度和梯度匹配的單目深度估計算法。針對圖像中幾何形狀無法準(zhǔn)確預(yù)測以及邊緣模糊的問題,在排序損失基礎(chǔ)上添加了多尺度結(jié)構(gòu)相似度和尺度不變梯度匹配損失,在單目深度估計過程中明顯降低了排序誤差和深度邊界誤差,有效提高了深度預(yù)測的準(zhǔn)確性。實驗對Ibims、NYUDv2、DIODE、Sintel4 個不同類型的數(shù)據(jù)集進(jìn)行了評估,數(shù)值實驗和主觀評測結(jié)果表明,本文方法在定量和定性上都取得了更優(yōu)的結(jié)果,并具有一定的泛化性能。