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