阮曉鋼, 顏文靜, 黃 靜, 郭佩遠(yuǎn)
(1.北京工業(yè)大學(xué)信息學(xué)部, 北京 100124; 2.計(jì)算智能與智能系統(tǒng)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100124)
準(zhǔn)確的深度估計(jì)對(duì)于計(jì)算視覺(jué)任務(wù)有著重要的作用. 目前,自動(dòng)駕駛汽車通常采用昂貴的激光系統(tǒng)來(lái)獲得深度數(shù)據(jù),而使用相對(duì)便宜的攝像頭來(lái)獲得深度信息可有效地降低成本,這使得基于視覺(jué)的深度估計(jì)有著突出的應(yīng)用價(jià)值.
目前,大多數(shù)深度估計(jì)的方法通過(guò)從不同視角獲取的多幅圖像來(lái)推斷深度[1-4],這些基于幾何的方法能夠相當(dāng)準(zhǔn)確地估計(jì)深度信息. 然而,基于幾何的算法只考慮幾何差異,忽略了單目線索. 單目線索是單個(gè)相機(jī)(眼睛)用于判斷視覺(jué)信息的方式. 人類使用多個(gè)不同的單目線索來(lái)推斷3D位置,比如紋理(例如:當(dāng)近距離觀看草地時(shí)與在遠(yuǎn)處觀看時(shí),草地具有非常不同的紋理)和顏色(例如:綠色斑塊更可能是地面上的草地;藍(lán)色斑塊更可能是天空)等. 另一方面,計(jì)算時(shí)間和內(nèi)存需求也是其面臨的一個(gè)重要挑戰(zhàn).
單目深度估計(jì)方法克服了這些限制. 最近這一領(lǐng)域的工作利用基于深度學(xué)習(xí)的方法極大地提高了單目深度估計(jì)的性能. 早期的工作通過(guò)對(duì)帶有地面真實(shí)深度的圖像進(jìn)行訓(xùn)練,以有監(jiān)督的方法[5-7]解決了深度估計(jì)問(wèn)題. Saxena等[5]使用線性回歸和馬爾可夫隨機(jī)場(chǎng)預(yù)測(cè)一組圖像特征的深度,并將其擴(kuò)展到Make3D系統(tǒng)用于3D模型生成. 然而,該系統(tǒng)依賴于水平對(duì)齊的圖像,并且容易在較少控制的設(shè)置下受到影響. Eigen等[6]首先開(kāi)發(fā)了一個(gè)多尺度卷積神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)3種不同的任務(wù),任務(wù)之一是從一幅圖像中預(yù)測(cè)深度,該網(wǎng)絡(luò)從輸入的RGB圖像中回歸深度值. 有監(jiān)督方法雖然取得了巨大的成功,但收集大量帶有標(biāo)簽的數(shù)據(jù)是十分昂貴的. 基于自監(jiān)督學(xué)習(xí)的方法[8-10]通過(guò)將深度估計(jì)作為圖像重建來(lái)克服這一問(wèn)題. 該方法不僅不需要難以獲取的標(biāo)記數(shù)據(jù),效果上也超過(guò)了一些有監(jiān)督方法. 立體圖像對(duì)是基于自監(jiān)督方法的一種輸入形式. 文獻(xiàn)[8]針對(duì)新視圖合成問(wèn)題,提出了一種深度離散化的模型. 文獻(xiàn)[9]通過(guò)預(yù)測(cè)連續(xù)的視差值對(duì)該方法進(jìn)行了擴(kuò)展. 文獻(xiàn)[10]通過(guò)引入左右深度一致性項(xiàng)產(chǎn)生了良好的結(jié)果. 目前,基于立體的方法已經(jīng)擴(kuò)展出生成對(duì)抗網(wǎng)絡(luò)[11-12]、半監(jiān)督數(shù)據(jù)[13-14],并用于嵌入式系統(tǒng)[15-16]等.
生成對(duì)抗網(wǎng)絡(luò)(generative adversarial networks,GAN)是一種深度學(xué)習(xí)模型,是近年來(lái)復(fù)雜分布上無(wú)監(jiān)督學(xué)習(xí)最具前景的方法之一[17]. 該模型在博弈中不斷提高其建模能力,最終實(shí)現(xiàn)以假亂真的圖像生成,在許多圖像生成任務(wù)中都有較好的應(yīng)用,包括文本到圖像合成[18]、超分辨率[19]和圖像到圖像翻譯[20]等.
最近,受GAN在圖像重建和生成任務(wù)上取得的良好結(jié)果的啟發(fā),一些工作將GAN應(yīng)用到了單目深度估計(jì)任務(wù)中[21-24]. Aleotti等[12]提出在GAN范式下進(jìn)行無(wú)監(jiān)督單目深度估計(jì),其中,生成器網(wǎng)絡(luò)學(xué)習(xí)從參考圖像推斷深度以生成扭曲的目標(biāo)圖像,在訓(xùn)練時(shí),鑒別器網(wǎng)絡(luò)學(xué)習(xí)區(qū)分由生成器生成的假圖像和用立體裝置獲取的目標(biāo)幀,成功用GAN范式解決了單目深度估計(jì)問(wèn)題. Almalioglu等[11]提出了一個(gè)生成性無(wú)監(jiān)督學(xué)習(xí)框架,該框架利用深度卷積GAN從未標(biāo)記的RGB圖像序列中預(yù)測(cè)六自由度相機(jī)位姿和場(chǎng)景的單目深度圖,在位姿估計(jì)和深度恢復(fù)方面都有更好的效果. 此外,基于GAN的單目深度估計(jì)方法還探索了條件隨機(jī)場(chǎng)[21]及GAN的變體Vanilla GAN、WGAN[25]、Conditional GAN[23]等的應(yīng)用.
上述方法使用的是最原始的GAN,其中包括1個(gè)生成器和1個(gè)鑒別器. 在一些具體的問(wèn)題中,一些人將GAN擴(kuò)展為2個(gè)鑒別器或多個(gè)鑒別器,獲得了良好的效果. Li等[26]提出基于深度生成模型的人臉補(bǔ)全算法, 該模型由1個(gè)編解碼生成器和2個(gè)對(duì)抗性鑒別器組成,用于從隨機(jī)噪聲中合成丟失的內(nèi)容,能夠處理任意形狀的大面積缺失像素,并生成逼真的人臉補(bǔ)齊結(jié)果. Ma等[27]提出了雙鑒別器條件GAN,用于融合不同分辨率的紅外和可見(jiàn)光圖像. 該方法建立了1個(gè)生成器和2個(gè)鑒別器之間的對(duì)抗性博弈,在視覺(jué)效果和定量度量方面都優(yōu)于最先進(jìn)的圖像融合算法. Yang等[28]引入對(duì)抗性學(xué)習(xí)機(jī)制來(lái)同時(shí)訓(xùn)練單個(gè)生成器和多個(gè)并行鑒別器,從而得到平滑的連續(xù)人臉老化序列. 該模型生成的老化序列在視覺(jué)上更可信,老化趨勢(shì)更穩(wěn)定.
受上述工作啟發(fā),為了進(jìn)一步提高基于自監(jiān)督學(xué)習(xí)單目深度估計(jì)的精度,本文提出了一種基于雙鑒別器GAN的自監(jiān)督單目深度估計(jì)方法. GAN在合成視覺(jué)上可信的圖像方面具有優(yōu)勢(shì),本文方法利用了GAN的這個(gè)特點(diǎn),其中,雙鑒別器結(jié)構(gòu)使生成器得到更充分的訓(xùn)練以滿足更嚴(yán)格的要求,并避免由于只在左圖像或右圖像上引入鑒別器而造成的信息損失. 同時(shí),為了保持訓(xùn)練的穩(wěn)定性,使用GAN變體WGAN-GP的損失函數(shù). WGAN-GP即Wasserstein GAN + Gradient Penalty,它使用 Wasserstein 損失公式加上梯度范數(shù)懲罰來(lái)實(shí)現(xiàn)利普希茨連續(xù)性,增強(qiáng)了訓(xùn)練穩(wěn)定性,具有更好的圖像質(zhì)量和收斂性. 具體地說(shuō),該模型包含1個(gè)生成器和2個(gè)鑒別器. 其中,生成器用來(lái)生成視差圖,視差圖與真實(shí)圖像合成重建圖像. 重建的左右圖像與真實(shí)左右圖像分別作為鑒別器的輸入,由鑒別器來(lái)辨別輸入是真實(shí)圖像還是重建圖像. 交替訓(xùn)練生成器和2個(gè)鑒別器,直到鑒別器無(wú)法辨別真實(shí)圖像還是重建圖像. 此時(shí),說(shuō)明生成器生成了相當(dāng)準(zhǔn)確的視差,也就能得到相當(dāng)準(zhǔn)確的深度.
本文提出了一種基于雙鑒別器GAN的自監(jiān)督單目深度估計(jì)方法,其網(wǎng)絡(luò)包括1個(gè)生成器和2個(gè)鑒別器,框架如圖1所示. 該框架以Godard等[10]的方法為基線. 其中,生成器G生成了2個(gè)視差,獲得了2個(gè)重建圖像,這2個(gè)重建圖像在地位上是相同的. 因此,根據(jù)單目深度估計(jì)網(wǎng)絡(luò)有2個(gè)輸出的特點(diǎn),使用2個(gè)鑒別器D1和D2,可以便于利用重建后的左圖像和右圖像. 同時(shí),針對(duì)此模型的結(jié)構(gòu),設(shè)計(jì)了相應(yīng)的損失函數(shù).
圖1 模型框架
從單幅圖像估計(jì)深度的問(wèn)題可以表述為圖像重建任務(wù),因此,生成器網(wǎng)絡(luò)的任務(wù)是生成視差.原理如圖1所示,用橘色標(biāo)識(shí).已知一對(duì)雙目圖像,左圖像為IL,右圖像為IR.左圖像IL作為生成器網(wǎng)絡(luò)的輸入,網(wǎng)絡(luò)輸出為每個(gè)像素從左到右的視差dR和從右到左的視差dL.真實(shí)圖像與預(yù)測(cè)視差合成重建左圖像L和右圖像R.真實(shí)圖像與重建圖像之間的差距作為網(wǎng)絡(luò)的約束來(lái)評(píng)估通過(guò)左圖像回歸出來(lái)的左右視差圖的效果和質(zhì)量.因此,該網(wǎng)絡(luò)可以利用真實(shí)圖像與重建后的圖像對(duì)進(jìn)行訓(xùn)練,監(jiān)督信號(hào)來(lái)自數(shù)據(jù)本身,不需要地面真實(shí)深度.根據(jù)雙目立體視覺(jué)原理,給定攝像機(jī)之間的基線距離b和攝像機(jī)焦距f,就可以從預(yù)測(cè)的視差恢復(fù)每像素深度.它們之間的關(guān)系為
=bf/d
(1)
本文的網(wǎng)絡(luò)只有一個(gè)輸入,雖然在訓(xùn)練時(shí)需要一對(duì)匹配好的雙目圖像,但當(dāng)網(wǎng)絡(luò)完成訓(xùn)練之后進(jìn)行深度估計(jì)時(shí),只需要一張圖像;因此,該方法也是一種單目深度估計(jì)方法.
最原始的GAN包含1個(gè)生成器和1個(gè)鑒別器,但是,在基于圖像重建的自監(jiān)督單目深度估計(jì)方法中,生成器生成了2個(gè)重建圖像,這2個(gè)圖像在地位上是相同的.因此,為了充分利用重建圖像,本文使用2個(gè)并行鑒別器網(wǎng)絡(luò)來(lái)擴(kuò)展基線模型.如果生成器能同時(shí)欺騙2個(gè)鑒別器,可以認(rèn)為生成器的精度有所提高.鑒別器網(wǎng)絡(luò)的任務(wù)是辨別出真實(shí)圖像與重建圖像.原理如圖1所示,用綠色標(biāo)識(shí).事實(shí)上,若生成器估計(jì)的視差不準(zhǔn)確,則圖像重建過(guò)程將容易再現(xiàn)被鑒別器檢測(cè)到的失真圖像.另一方面,準(zhǔn)確的深度預(yù)測(cè)會(huì)導(dǎo)致重新投影的圖像更難從真實(shí)圖像中識(shí)別出來(lái).在訓(xùn)練時(shí),先固定生成器,訓(xùn)練鑒別器,目的是使鑒別器能夠成功地區(qū)分真實(shí)圖像與重建圖像.然后,再固定鑒別器,訓(xùn)練生成器,目的是迫使生成器生成盡可能逼真的圖像,從而達(dá)到迷惑鑒別器的目的.交替訓(xùn)練鑒別器與生成器,最終達(dá)到鑒別器無(wú)法分辨真實(shí)圖像與重建圖像的效果.此時(shí),說(shuō)明生成器生成了相當(dāng)準(zhǔn)確的視差,可以得到相當(dāng)準(zhǔn)確的深度.
1.3.1 圖像重建損失
一個(gè)好的生成器應(yīng)該使得重建圖像接近原始圖像,因此,本文用圖像重建損失來(lái)衡量這一點(diǎn),采用文獻(xiàn)[10]的損失函數(shù),因?yàn)槠渚哂休^強(qiáng)的魯棒性.該圖像重建損失函數(shù)在每個(gè)尺度s上計(jì)算損失,最終的損失是每個(gè)尺度的總和.每個(gè)尺度又包含3個(gè)損失項(xiàng).每個(gè)損失項(xiàng)對(duì)于整個(gè)優(yōu)化過(guò)程具有不同的特點(diǎn),公式為
(2)
第1個(gè)損失項(xiàng)Cap使得重建圖像盡可能接近真實(shí)圖像.該損失函數(shù)是單尺度SSIM函數(shù)和L1的加權(quán)和,L1是逐像素比較差異,SSIM函數(shù)考慮了人類的視覺(jué)感知.其中權(quán)值γ為0.84,使兩部分損失的貢獻(xiàn)大致相等,公式為
(3)
(4)
第3個(gè)損失項(xiàng)Cds表示左右一致?lián)p失,理想情況下,dL和dR之間也存在和原圖相同的視差關(guān)系.因此,當(dāng)預(yù)測(cè)深度達(dá)到最優(yōu)時(shí),以下?lián)p失函數(shù)達(dá)到最小值,公式為
(5)
1.3.2 對(duì)抗性損失
上述圖像重建損失衡量的是每像素之間的誤差,在損失公式中沒(méi)有考慮場(chǎng)景上下文的全局一致性.因此,本文采用對(duì)抗性損失來(lái)衡量這一點(diǎn).對(duì)抗性損失LGAN表示生成器G和鑒別器D之間的最小- 最大博弈, 為了保持訓(xùn)練的穩(wěn)定性,使用GAN變體WGAN-GP的損失函數(shù).以左圖像為例,公式為
(6)
式中:IL表示真實(shí)圖像;L表示重建圖像.在訓(xùn)練過(guò)程中,首先固定生成器,訓(xùn)練鑒別器.當(dāng)輸入是真實(shí)圖像時(shí),期望鑒別器輸出越大越好;當(dāng)輸入是重建圖像時(shí),期望鑒別器輸出越小越好.整體上,需要最大化該損失函數(shù),說(shuō)明此時(shí)訓(xùn)練的鑒別器能夠準(zhǔn)確地區(qū)分真實(shí)圖像和重建圖像.然后,固定鑒別器,訓(xùn)練生成器.此時(shí),當(dāng)輸入重建圖像時(shí),期望鑒別器輸出越大越好.整體上,需要最小化該損失函數(shù),說(shuō)明訓(xùn)練的生成器能夠迷惑鑒別器,生成了相當(dāng)準(zhǔn)確的視差.
1.3.3 總損失函數(shù)
綜上,為了保證像素的真實(shí)性與局部-全局內(nèi)容的一致性,本文采用圖像重建損失與2個(gè)對(duì)抗性損失相結(jié)合的方式進(jìn)行訓(xùn)練.因此,用于訓(xùn)練生成器的總的損失函數(shù)為
LG=CS-φG(E[D(L)]+E[D(R)])
(7)
其將重建損失CS與GAN損失的生成器部分相結(jié)合,使用φG=0.1進(jìn)行加權(quán).
用于訓(xùn)練鑒別器D1的損失函數(shù)為
LD1=E[D(L)-D(IL)]+λΩGP1
(8)
用于訓(xùn)練鑒別器D2的損失函數(shù)為
LD2=E[D(R)-D(IR)]+λΩGP2
(9)
式中ΩGP為來(lái)自WGAN-GP的λ=10的梯度懲罰.
2.1.1 數(shù)據(jù)集
本文使用KITTI[29]數(shù)據(jù)集,其中包含一輛汽車在從高速公路到市中心再到鄉(xiāng)村道路等各種環(huán)境下行駛的圖像對(duì).KITTI是針對(duì)自動(dòng)駕駛領(lǐng)域的圖像處理技術(shù)的數(shù)據(jù)集,是目前國(guó)際上最大的自動(dòng)駕駛場(chǎng)景下的計(jì)算機(jī)視覺(jué)算法評(píng)測(cè)數(shù)據(jù)集.本文遵循Eigen數(shù)據(jù)拆分方法[7]與現(xiàn)有的工作進(jìn)行比較.該方法使用22 600個(gè)訓(xùn)練圖像、888個(gè)驗(yàn)證圖像和697個(gè)測(cè)試圖像,這些圖像的大小被調(diào)整到256×512像素.在訓(xùn)練過(guò)程中,沒(méi)有使用深度地面實(shí)況,只使用可用的立體圖像對(duì).為了進(jìn)行評(píng)估,使用提供的Velodyne激光數(shù)據(jù).
2.1.2 實(shí)施詳情
本文方法在Pytorch中實(shí)現(xiàn).對(duì)于所有實(shí)驗(yàn),生成器使用經(jīng)過(guò)調(diào)整的VGG30型網(wǎng)絡(luò)架構(gòu),以便與其他方法進(jìn)行比較.所有模型都用亞當(dāng)優(yōu)化器[30]訓(xùn)練50次,每小批8個(gè).初始學(xué)習(xí)率設(shè)置為10-4,并使用常用的學(xué)習(xí)率調(diào)整策略plateau更新學(xué)習(xí)率.鑒別器采用簡(jiǎn)單的三層全連接網(wǎng)絡(luò).本文模型的訓(xùn)練過(guò)程如算法1所示.
--------------------------------------------
算法1本文模型訓(xùn)練過(guò)程
--------------------------------------------
參數(shù)描述:
wgan_critics_num: WGAN結(jié)構(gòu)的評(píng)估次數(shù).
1) 初始化D1的參數(shù)θD1,D2的參數(shù)θD2,以及G的參數(shù)θG;
2) 在一次迭代訓(xùn)練中:
3) 訓(xùn)練鑒別器D1和D2:
4) While wgan_critics_num > 0
③ 生成器數(shù)據(jù)與真實(shí)圖像數(shù)據(jù)合成重建圖像
④ 重建圖像分別輸入2個(gè)鑒別器
⑤ 通過(guò)隨機(jī)梯度下降(stochastic gradient descent,SGD)優(yōu)化器更新鑒別器參數(shù)θD1和θD2以最小化式(8)中的LD1和式(9)中的LD2;
⑥ end
5) 訓(xùn)練生成器G:
③ 通過(guò)Adam優(yōu)化器更新生成器參數(shù)以最小化式(7)中的LG;
--------------------------------------------
2.1.3 評(píng)估
在測(cè)試時(shí),視差被轉(zhuǎn)換到深度圖中,預(yù)測(cè)的深度為0~80 m,接近地面實(shí)況中的最大深度.與其他方法[9]類似,垂直居中裁剪圖像.對(duì)于定量評(píng)估,使用一組常用于評(píng)估單目深度估計(jì)模型性能的度量[6-10]:絕對(duì)相對(duì)距離(absolute relative error, AbsRel)、平方相對(duì)距離(square relative error, SqRel)、均方根誤差(root mean square error, RMSE)、對(duì)數(shù)均方誤差(root mean square logarithmic error, RMSLE)和閾值內(nèi)的準(zhǔn)確度.
為了與現(xiàn)有工作進(jìn)行比較,給出了KITTI數(shù)據(jù)集的結(jié)果.首先,對(duì)本文方法的不同變體進(jìn)行比較.其次,與其他單目深度估計(jì)方法進(jìn)行了比較.
2.2.1 模型變體的比較
本文在KITTI數(shù)據(jù)集上測(cè)試了只使用1個(gè)鑒別器D1[22]或D2的結(jié)果和同時(shí)使用2個(gè)鑒別器D1+D2的結(jié)果,如表1所示.把最佳結(jié)果使用黑體突出顯示.結(jié)果表明,使用2個(gè)鑒別器的效果在定量指標(biāo)中明顯優(yōu)于使用1個(gè)鑒別器.其中,僅使用鑒別器D1比僅使用鑒別器D2的結(jié)果稍好,因此,認(rèn)為這是初始化的結(jié)果,而不是模型設(shè)計(jì)和訓(xùn)練的結(jié)果,與GAN本身的不穩(wěn)定性也有一定的關(guān)系.使用鑒別器D1+D2與僅使用鑒別器D1在δ<1.25這項(xiàng)指標(biāo)中沒(méi)有改善,說(shuō)明更嚴(yán)格的對(duì)抗性約束雖然促進(jìn)了全局一致性,但犧牲了部分局部像素點(diǎn)的準(zhǔn)確性.這在深度圖中體現(xiàn)為物體的邊界更加平滑,但從范圍來(lái)看比較模糊.定性的實(shí)驗(yàn)結(jié)果如圖2所示.圖中展示了輸入圖像與從不同模型變體獲得的深度圖像.圖3展示了一些放大的比較,在紅框標(biāo)注的地方可以看到,使用2個(gè)鑒別器的模型在處理物體邊緣時(shí)更加清晰.這與文獻(xiàn)[28]得到的結(jié)論是一致的.
表1 不同模型變體在KITTI數(shù)據(jù)集上的結(jié)果
圖2 定性實(shí)驗(yàn)結(jié)果
圖3 細(xì)節(jié)圖
2.2.2 與其他方法的比較
對(duì)比了在KITTI數(shù)據(jù)集上本文方法與其他有監(jiān)督和無(wú)監(jiān)督單目深度估計(jì)方法,如表2所示.由表可知,本文的結(jié)果在6個(gè)定量指標(biāo)上優(yōu)于其他已知的方法,而僅使用單個(gè)鑒別器的結(jié)果比不使用對(duì)抗性訓(xùn)練的結(jié)果更差.可以得出結(jié)論,只要合理設(shè)計(jì)基于GAN的單目深度估計(jì)模型以及合理利用GAN變體,GAN有助于進(jìn)行單目深度估計(jì).但是,在δ<1.25這項(xiàng)指標(biāo)中,本文方法比僅使用基于像素的幾何損失的結(jié)果[10]稍差.這是由于GAN中的鑒別器是通過(guò)神經(jīng)網(wǎng)絡(luò)提取后的特征對(duì)數(shù)據(jù)進(jìn)行判別,更加具有全局性.
表2 與其他單目深度估計(jì)方法的比較
1) 本文使用2個(gè)鑒別器的方法在定量指標(biāo)中明顯優(yōu)于使用1個(gè)鑒別器,也優(yōu)于其他不使用對(duì)抗性訓(xùn)練的方法,因此,合理設(shè)計(jì)網(wǎng)絡(luò)結(jié)構(gòu)及使用合適的GAN變體,有助于提高單目深度估計(jì)的精度.
2) 定性實(shí)驗(yàn)結(jié)果表明,使用雙鑒別器模型得到的深度圖中的物體邊緣更平滑,在視覺(jué)上更可信.
3) 僅使用鑒別器D1比僅使用鑒別器D2的結(jié)果稍好,因此,這是初始化的結(jié)果,而不是模型設(shè)計(jì)和訓(xùn)練的結(jié)果,與GAN本身的不穩(wěn)定性也有一定的關(guān)系.