孔慧芳,房 亮
(合肥工業(yè)大學(xué) 電氣與自動(dòng)化工程學(xué)院,安徽 合肥 230009)
圖像的深度包含了場(chǎng)景的三維結(jié)構(gòu)信息,能為語義分割[1]、目標(biāo)檢測(cè)[2]等計(jì)算機(jī)視覺任務(wù)提供重要的信息。而目前廣泛使用的嵌入式設(shè)備,例如手機(jī)、平板、微型機(jī)器人等大多采用單目攝像頭,因此,研究單目圖像的深度快速估計(jì)問題,具有重要的研究意義和廣闊的應(yīng)用前景[3-5]。
目前關(guān)于單目圖像深度估計(jì)的研究主要從深度圖的精度和網(wǎng)絡(luò)的推理速度2個(gè)方面進(jìn)行。在深度圖的精度方面,文獻(xiàn)[6]首次利用卷積神經(jīng)網(wǎng)絡(luò)提取的特征和雙尺度深度網(wǎng)絡(luò)擬合訓(xùn)練圖片與其對(duì)應(yīng)的深度值之間的關(guān)系;文獻(xiàn)[7]利用多尺度融合和同尺度內(nèi)部剔除圖像中的噪聲來提高深度圖的精度;文獻(xiàn)[8]受ResNet啟發(fā),設(shè)計(jì)了編碼器的多層級(jí)融合結(jié)構(gòu)來提升深度圖的細(xì)節(jié);文獻(xiàn)[9]考慮到圖像中不同物體的尺寸,使用尺度特征匯集策略來提升深度圖的精度。以上幾種方法使得深度圖精度有很大提高,但是也導(dǎo)致深度估計(jì)模型的參數(shù)量和計(jì)算量急劇增加,從而導(dǎo)致模型實(shí)時(shí)性差,難以應(yīng)用到實(shí)際中[3]。在網(wǎng)絡(luò)的推理速度方面,文獻(xiàn)[3]以MobileNet[10]為基礎(chǔ)提出了一種適合在嵌入式系統(tǒng)上使用的網(wǎng)絡(luò)FastDepth,大大提高圖像深度估計(jì)網(wǎng)絡(luò)毅力的速度,但是因?yàn)榻獯a模塊使用的是簡單的最鄰近插值,所以得到的深度圖細(xì)節(jié)不夠豐富[11]。
基于以上分析,本文設(shè)計(jì)了基于多尺度特征融合的快速單目圖像深度估計(jì)網(wǎng)絡(luò)。采用浮點(diǎn)運(yùn)算(floating point operations,FLOPs)更小的GhostNet[12]作為解碼網(wǎng)絡(luò)對(duì)RGB圖像進(jìn)行特征提取,加快網(wǎng)絡(luò)的編碼速度;采用反卷積和雙線性插值設(shè)計(jì)解碼模塊,通過跨層連接將編碼器和解碼器的同尺度特征融合;采用多尺度損失函數(shù),保護(hù)深度圖里物體的邊緣細(xì)節(jié)。
本文設(shè)計(jì)的基于多尺度特征融合的快速單目圖像深度估計(jì)網(wǎng)絡(luò)架構(gòu)如圖1所示。其中:Conv表示卷積;UP表示向上采樣。該網(wǎng)絡(luò)主要包含基于GhostNet的編碼網(wǎng)絡(luò)和多尺度特征融合的解碼網(wǎng)絡(luò)。本節(jié)將逐一介紹各模塊設(shè)計(jì)思路及方法,最后闡述網(wǎng)絡(luò)設(shè)計(jì)的細(xì)節(jié)。
為了能進(jìn)一步減小深度估計(jì)網(wǎng)絡(luò)的復(fù)雜度,本文使用選擇GhostNet作為編碼網(wǎng)絡(luò)。相較于MobileNet、ShuffleNet[13]等其他典型的輕量型網(wǎng)絡(luò),GhostNet采用一種新穎的Ghost模塊,可以使用更少的參數(shù)來生成更多的特征圖。Ghost模塊如圖2所示。
圖2 Ghost模塊
Ghost模塊利用一些線性操作,對(duì)卷積生成的原始特征圖y′進(jìn)行進(jìn)一步分解,并利用下式來產(chǎn)生更多本質(zhì)特征圖:
yi,j=φi,j(yi′),
?i=1,…,m;j=1,…,s
(1)
其中:yi′為原始特征圖的第i層;φi,j為產(chǎn)生第j層本質(zhì)特征圖yi,j的第j個(gè)線性操作。
每個(gè)原始特征圖yi′都可以產(chǎn)生1個(gè)甚至多個(gè)本質(zhì)特征圖yi,j(j=1,…,s),最后一個(gè)yi,s為原始特征圖。
假設(shè)有一系列RGB原始特征圖和m×(s-1)=(n/s)×(s-1)個(gè)線性操作,每個(gè)線性操作卷積核的平均尺寸為d×d,本文選用的均為3×3的線性卷積。因此,相對(duì)于傳統(tǒng)卷積,Ghost模塊的加速比為:
(2)
其中:d×d與k×k大小一致;s?c。本文將Ghost Net全連接層上一層的輸出作為解碼器的輸入。
1.2.1 解碼網(wǎng)絡(luò)模塊設(shè)計(jì)
根據(jù)Fast Depth[3]可知,解碼網(wǎng)絡(luò)推理時(shí)間占整個(gè)網(wǎng)絡(luò)推理的絕大部分時(shí)間,同時(shí)解碼網(wǎng)絡(luò)也是特征圖到深度圖的映射,因此,必須合理地設(shè)計(jì)解碼網(wǎng)絡(luò)。
為了彌補(bǔ)因卷積造成的圖像紋理的損失,同時(shí)盡可能地減小計(jì)算量,本文設(shè)計(jì)了一種基于反卷積和雙線性插值的解碼操作,相比于FastDepth使用的最鄰近插值,雙線性插值能更好地保留深度圖的細(xì)節(jié),具體操作可以寫為:
Dout=B(C(Din))
(3)
其中:Din、Dout分別表示上一尺度的深度圖和經(jīng)過操作之后的深度圖;C表示反卷積;B表示雙線性插值。
1.2.2 編碼和解碼網(wǎng)絡(luò)的多尺度特征融合
為了使輸出的深度圖更好地保留RGB圖像中物體的邊緣信息[8],本文通過跨層連接將編碼器的特征圖與同尺度的解碼器輸出整合后輸入到下一個(gè)解碼模塊,使特征圖與輸出的深度圖之間路徑變短,從而避免模型在訓(xùn)練時(shí)陷入局部最優(yōu)解[14],具體操作如下:
Dout=B(C(fen+fde))
(4)
其中,fen、fde分別表示編碼網(wǎng)絡(luò)和解碼網(wǎng)絡(luò)生成的同尺度特征圖。
為了加快網(wǎng)絡(luò)的收斂速度,分別在深度圖的最后4個(gè)尺度將解碼網(wǎng)絡(luò)中的輸出進(jìn)行關(guān)聯(lián),將上一層的輸出進(jìn)行卷積后生成本尺度深度圖,與下采樣后的同尺度真實(shí)深度值比較計(jì)算深度誤差,再將此深度圖進(jìn)行上采樣操作輸入到下一個(gè)解碼操作中去,加快下一個(gè)尺度深度圖的優(yōu)化。根據(jù)文獻(xiàn)[15-16]的研究,本文選用的多尺度損失函數(shù)如下:
Lj(d,d*)=
(5)
總的損失函數(shù)為:
(6)
本節(jié)中,將在NYU Depth V2室內(nèi)典型的深度數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),計(jì)算相應(yīng)的評(píng)價(jià)指標(biāo),并與現(xiàn)有的一些方法進(jìn)行對(duì)比。
本文的網(wǎng)絡(luò)結(jié)構(gòu)是通過PyTorch搭建的,訓(xùn)練和測(cè)試是在內(nèi)存10 GiB的NVIDIA GeForce GTX1080Ti顯卡上進(jìn)行的。根據(jù)本文設(shè)計(jì)的網(wǎng)絡(luò)模型結(jié)構(gòu)以及顯卡的性能,將batch size設(shè)置為8,初始學(xué)習(xí)率設(shè)置為0.000 1,權(quán)重衰減率為0.000 1, 網(wǎng)絡(luò)參數(shù)采用動(dòng)量為0.9的隨機(jī)梯度下降(stochastic gradient descent,SGD)方法優(yōu)化。實(shí)驗(yàn)所采用的是常用的室內(nèi)深度數(shù)據(jù)集NYU Depth V2,其原始數(shù)據(jù)集圖像尺寸均為640×480,涵蓋了464個(gè)場(chǎng)景,其中訓(xùn)練場(chǎng)景249個(gè),測(cè)試場(chǎng)景215個(gè),數(shù)據(jù)集中的深度圖是通過Microsoft Kinect深度相機(jī)采集到的。訓(xùn)練時(shí)對(duì)原始圖片所做的預(yù)處理包括左右反轉(zhuǎn)、顏射變換、尺度變換。
本文實(shí)驗(yàn)中閾值參數(shù)設(shè)置為:
δ1<1.25,δ2<1.252,δ3<1.253。
針對(duì)圖像深度估計(jì)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)一系列對(duì)比實(shí)驗(yàn),驗(yàn)證本文使用GhostNet作為編碼網(wǎng)絡(luò)的合理性以及本文多尺度特征融合解碼網(wǎng)絡(luò)的有效性。本節(jié)所有實(shí)驗(yàn)均在單卡GTX1080Ti GPU上進(jìn)行。
2.2.1GhostNet作為編碼網(wǎng)絡(luò)的消融實(shí)驗(yàn)分析
為了驗(yàn)證采用GhostNet作為編碼網(wǎng)絡(luò)對(duì)整個(gè)網(wǎng)絡(luò)推理速度提升的有效性,以GhostNet為編碼網(wǎng)絡(luò),以反卷積配合最鄰近插值為解碼網(wǎng)絡(luò),將利用單尺度損失函數(shù)進(jìn)行訓(xùn)練的本文網(wǎng)絡(luò)GDS與FastDepth進(jìn)行對(duì)比。
利用2.1節(jié)所列的評(píng)價(jià)指標(biāo)和網(wǎng)絡(luò)推理時(shí)間評(píng)價(jià)各網(wǎng)絡(luò),結(jié)果見表1所列。
表1 GhostNet作為編碼網(wǎng)絡(luò)的消融實(shí)驗(yàn)結(jié)果
從表1可以看出,相較于 文獻(xiàn)[3]的FastDepth,采用更少FLOPs的網(wǎng)絡(luò)GhostNet后,本文方法的網(wǎng)絡(luò)推理時(shí)間減少了7%,但圖像精度略有下降。
2.2.2 解碼網(wǎng)絡(luò)的消融實(shí)驗(yàn)分析
為了驗(yàn)證本文多尺度特征融合的解碼網(wǎng)絡(luò),以GhostNet為編碼網(wǎng)絡(luò),以反卷積配合雙線性插值作為模塊的解碼網(wǎng)絡(luò)為基礎(chǔ),利用多尺度損失函數(shù)網(wǎng)絡(luò)(GDMB)進(jìn)行實(shí)驗(yàn)。解碼網(wǎng)絡(luò)的消融實(shí)驗(yàn)結(jié)果見表2所列。
由表2可知,采用本文設(shè)計(jì)的多尺度特征融合后解碼網(wǎng)絡(luò)后,深度圖精度有所提升。
表2 解碼網(wǎng)絡(luò)的消融實(shí)驗(yàn)
NYU Depth V2數(shù)據(jù)集上各方法得到的深度圖如圖3所示。
從圖3可以看出,本文設(shè)計(jì)的網(wǎng)絡(luò)得到的深度圖細(xì)節(jié)更加豐富。但由于解碼網(wǎng)絡(luò)使用了計(jì)算量更大的雙線性插值后,網(wǎng)絡(luò)的推理時(shí)間相對(duì)于FastDepth增加了80%。
圖3 NYU Depth V2數(shù)據(jù)集上得到的深度圖
本節(jié)中,將本文所設(shè)計(jì)的網(wǎng)絡(luò)與其他主流方法進(jìn)行對(duì)比,以NYU Depth V2標(biāo)準(zhǔn)數(shù)據(jù)集為參
照,從2.1節(jié)所列的評(píng)價(jià)指標(biāo)和推理時(shí)間上進(jìn)行比較。
本文網(wǎng)絡(luò)與其他網(wǎng)絡(luò)實(shí)驗(yàn)結(jié)果的對(duì)比見表3所列。
從表3可以看出:本文設(shè)計(jì)的基于多尺度特征融合的快速單目圖像深度估計(jì)網(wǎng)絡(luò)得到的深度圖精度高于FastDepth,但推理時(shí)間相對(duì)于FastDepth增加80%;相較于文獻(xiàn)[8]和文獻(xiàn)[16]的方法,本文方法深度圖精度有所下降,但是推理時(shí)間分別減少了40%和28%。
表3 本文網(wǎng)絡(luò)與其他網(wǎng)絡(luò)實(shí)驗(yàn)結(jié)果的對(duì)比
分析主要原因可知,雖然GhostNet提高了網(wǎng)絡(luò)的編碼速度,但是提取的特征不如ResNet等經(jīng)典網(wǎng)絡(luò)豐富,因此得到的深度圖精度不如其他主流方法;同時(shí)由于解碼模塊采用了雙線性插值,增大了解碼網(wǎng)絡(luò)的計(jì)算量,降低了網(wǎng)絡(luò)的推理速度。
本文選擇快速編碼網(wǎng)絡(luò)GhostNet作為編碼器,加快了對(duì)圖像特征的提取;采用反卷積和雙線性插值設(shè)計(jì)構(gòu)成的解碼模塊設(shè)計(jì)解碼網(wǎng)絡(luò),同時(shí)通過跨層連接將編碼網(wǎng)絡(luò)的特征與解碼網(wǎng)絡(luò)的特征融合,保護(hù)深度圖里物體的邊緣細(xì)節(jié)。
在公用數(shù)據(jù)集上的測(cè)試結(jié)果表明,本文設(shè)計(jì)的基于多尺度特征融合的快速單目圖像深度估計(jì)網(wǎng)絡(luò)相對(duì)于FastDepth有實(shí)質(zhì)性進(jìn)步。雖然本文網(wǎng)絡(luò)最終得到的深度精度與其他優(yōu)秀算法相比仍有一定的差距,但是網(wǎng)絡(luò)的推理速度快,因此仍具有重要的研究意義和較廣闊的應(yīng)用前景。