鄒承明 ,胡佑璞
1.武漢理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢 430000
2.交通物聯(lián)網(wǎng)技術(shù)湖北省重點(diǎn)實(shí)驗(yàn)室,武漢 430000
3.鵬城實(shí)驗(yàn)室,廣東 深圳 518055
單目深度估計(jì)任務(wù)針對(duì)輸入的單張彩色圖像,要求估計(jì)出圖像中每個(gè)像素對(duì)應(yīng)的深度信息,屬于計(jì)算機(jī)視覺(jué)領(lǐng)域研究的熱點(diǎn)問(wèn)題之一。在許多其他領(lǐng)域有著廣泛的運(yùn)用,例如:目標(biāo)檢測(cè)[1]、三維重建[2]、無(wú)人駕駛[3]、姿態(tài)估計(jì)[4]等。
由于圖像的空間信息屬于三維信息,通過(guò)單張二維RGB圖像獲取每個(gè)像素的深度信息是困難的。目前可以通過(guò)硬件設(shè)備直接獲取深度信息,如微軟的Kinect相機(jī)可以搜集室內(nèi)的近距離場(chǎng)景的深度信息,激光測(cè)距儀可以獲取室外場(chǎng)景的深度。然而,設(shè)備的價(jià)格十分昂貴,并且在復(fù)雜的場(chǎng)景中,深度估計(jì)仍然是不明確的病態(tài)問(wèn)題,面臨著許多挑戰(zhàn)。
在單目場(chǎng)景深度估計(jì)中,一般利用物體的外觀、場(chǎng)景的幾何運(yùn)動(dòng)、物體語(yǔ)義等特征實(shí)現(xiàn)對(duì)深度的約束。單目深度估計(jì)的方法大致分為兩類(lèi):有監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督和半監(jiān)督學(xué)習(xí)。
有監(jiān)督學(xué)習(xí)方面,基于外觀特征差異與場(chǎng)景深度的不連續(xù)性具有對(duì)應(yīng)關(guān)系這一假設(shè),深度估計(jì)被視為連續(xù)的回歸問(wèn)題。Eigen 等人[5]首次提出使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)解決單目深度估計(jì)問(wèn)題。整個(gè)網(wǎng)絡(luò)框架由一個(gè)全局的粗糙網(wǎng)絡(luò)與一個(gè)局部的精細(xì)網(wǎng)絡(luò)堆疊組成。全局網(wǎng)絡(luò)以AlexNet 為基礎(chǔ),提取粗糙的全局深度信息。局部網(wǎng)絡(luò)結(jié)合原圖信息進(jìn)一步優(yōu)化全局網(wǎng)絡(luò)的深度圖,獲得了不錯(cuò)的效果。Cao 等人[6]將深度估計(jì)視為像素的分類(lèi)問(wèn)題,離散化深度值,使用殘差網(wǎng)絡(luò)預(yù)測(cè)每一個(gè)像素的對(duì)應(yīng)分類(lèi)的類(lèi)別,使用條件隨機(jī)場(chǎng)優(yōu)化細(xì)節(jié)。Liu等人[7]提出的方法學(xué)習(xí)從單個(gè)RGB圖像中推斷出一組平面參數(shù)和相應(yīng)的平面分割掩模。其中定義的損失函數(shù)與平面的順序無(wú)關(guān)。此外,這個(gè)網(wǎng)絡(luò)可以在一個(gè)非平面的表面上進(jìn)行深度圖的推斷,其損失函數(shù)為了允許反向傳播,采用了概率分割掩模,最終推測(cè)出圖像的深度。Li等人[8]使用單目攝像頭,估計(jì)場(chǎng)景中的人在自由移動(dòng)的情況下的密集深度。首先從模仿人體模特的網(wǎng)絡(luò)視頻中學(xué)習(xí)人類(lèi)的深度,再利用場(chǎng)景靜態(tài)區(qū)域的運(yùn)動(dòng)視差線(xiàn)索來(lái)指導(dǎo)深度預(yù)測(cè)。
無(wú)監(jiān)督和半監(jiān)督學(xué)習(xí)方面,Godard等人[9]利用左右視圖的一致性進(jìn)行無(wú)監(jiān)督的深度估計(jì)預(yù)測(cè),通過(guò)對(duì)幾何約束輸出視差圖,利用左右視差一致性?xún)?yōu)化性能,提高了魯棒性。Kuznietsov等人[10]提出了稀疏深度圖像作為標(biāo)簽的半監(jiān)督學(xué)習(xí)方法,提高性能。Mahjourian 等人[11]根據(jù)視頻中的兩個(gè)連續(xù)幀產(chǎn)生單視圖深度估計(jì)。從單個(gè)攝像頭拍攝的視頻中進(jìn)行深度無(wú)監(jiān)督學(xué)習(xí)和自我運(yùn)動(dòng)(Ego-Motion)的方法。它考慮了推斷出的整個(gè)場(chǎng)景的3D幾何形狀,并在連續(xù)的幀之間增強(qiáng)了估計(jì)的3D點(diǎn)云和自我運(yùn)動(dòng)的一致性。Bian 等人[12]使用幾何一致性約束來(lái)實(shí)現(xiàn)相鄰幀之間的尺度一致性,并且利用尺度一致性檢測(cè)并剔除動(dòng)態(tài)物體和遮掩區(qū)域。性能超過(guò)之前在雙目視頻上訓(xùn)練的算法。Casser等人[13]提出的模型以RGB 圖像序列作為輸入,由預(yù)先計(jì)算的實(shí)例分割掩模作為補(bǔ)充。運(yùn)動(dòng)模型的工作就是學(xué)習(xí)預(yù)測(cè)3D空間中每個(gè)被攝物體的變換向量,這將能夠在相應(yīng)的目標(biāo)幀中創(chuàng)建觀察到的被攝物體的深度值。Casser等人[14]還提出另外一種方法,能夠通過(guò)對(duì)被攝物體運(yùn)動(dòng)進(jìn)行建模來(lái)對(duì)動(dòng)態(tài)場(chǎng)景進(jìn)行建模,并且還可以適應(yīng)可選的在線(xiàn)優(yōu)化技術(shù)。對(duì)單個(gè)被攝物體運(yùn)動(dòng)的建模使這種方法能夠處理高度動(dòng)態(tài)的場(chǎng)景。最后的變形結(jié)果是運(yùn)動(dòng)被攝物體的個(gè)體變形與自我運(yùn)動(dòng)的結(jié)合。其中自我運(yùn)動(dòng)則是先掩蓋圖像中的對(duì)象運(yùn)動(dòng)計(jì)算得來(lái)的。但是,這類(lèi)方法仍然存在著深度估計(jì)精度不高,訓(xùn)練不穩(wěn)定的問(wèn)題。
本文提出一種改進(jìn)的基于循環(huán)生成對(duì)抗網(wǎng)絡(luò)(Cycle Generative Adversarial Network,CycleGAN)的單目深度估計(jì)方法。該算法通過(guò)堆疊兩個(gè)CycleGAN網(wǎng)絡(luò),采用分階段的方式進(jìn)行逐步的訓(xùn)練。此外,本文在原有的損失函數(shù)中引入L1 距離函數(shù),進(jìn)行有監(jiān)督的訓(xùn)練,使得網(wǎng)絡(luò)學(xué)習(xí)到了像素到像素的映射關(guān)系,提高了深度估計(jì)的精確率。
最近幾年,生成對(duì)抗網(wǎng)絡(luò)受到了越來(lái)越多的關(guān)注,已經(jīng)成為了概率分布學(xué)習(xí)領(lǐng)域的主流方法。
生成對(duì)抗網(wǎng)絡(luò)[15]屬于無(wú)監(jiān)督方法,包含了兩個(gè)網(wǎng)絡(luò)模型,分別是生成器G和判別器D。生成器G需要生成和真實(shí)數(shù)據(jù)分布pdata足夠近似的樣本來(lái)欺騙判別器D,使得判別器D無(wú)法正確地區(qū)分樣本數(shù)據(jù)來(lái)自真實(shí)數(shù)據(jù)pdata還是生成器G。判別器D的目的則是盡可能地區(qū)分?jǐn)?shù)據(jù)來(lái)自真實(shí)數(shù)據(jù)pdata還是生成器G。對(duì)于來(lái)自pdata的真實(shí)數(shù)據(jù),判別器D的目標(biāo)輸出概率D(x)≈1。對(duì)于來(lái)自G的偽造數(shù)據(jù),判別器D的目標(biāo)輸出概率D(G(z))≈0。生成器G和判別器D進(jìn)行著一個(gè)極小極大的博弈對(duì)抗,在反復(fù)的迭代訓(xùn)練中優(yōu)化著自己的參數(shù),最終到達(dá)納什均衡,期望pdata=pg,其中pg是生成器G生成的樣本數(shù)據(jù)分布。代價(jià)函數(shù)為V(D,G):
其中,z表示輸入生成器G的隨機(jī)噪聲,G(z)表示G生成的樣本。y表示真實(shí)的數(shù)據(jù),D(y)表示判別器D判斷樣本是真實(shí)的概率。E為數(shù)學(xué)期望。D(G(z))是D判斷G生成圖片來(lái)自真實(shí)數(shù)據(jù)pdata的概率。G希望D(G(z)) 盡可能大,這時(shí)V(D,G) 會(huì)變小。D希望D(y)越大,D(G(z))越小,這時(shí)V(D,G)會(huì)變大。作為無(wú)監(jiān)督學(xué)習(xí),該方法無(wú)法實(shí)現(xiàn)像素到像素的轉(zhuǎn)換。
此外,本文在原有的損失函數(shù)中引入L1距離函數(shù),進(jìn)行有監(jiān)督的訓(xùn)練,使得網(wǎng)絡(luò)學(xué)習(xí)到了像素到像素的映射關(guān)系。
傳統(tǒng)的GAN是單向生成樣本,而CycleGAN[16]是雙向生成樣本,本質(zhì)上是兩個(gè)鏡像對(duì)稱(chēng)的GAN,整個(gè)網(wǎng)絡(luò)可以看作環(huán)形結(jié)構(gòu),可以學(xué)習(xí)到兩個(gè)域之間的映射關(guān)系。CycleGAN依賴(lài)循環(huán)一致性損失(Cycle Consistency Loss)進(jìn)行訓(xùn)練,采用非成對(duì)的數(shù)據(jù)集。循環(huán)生成對(duì)抗網(wǎng)絡(luò)學(xué)習(xí)兩個(gè)映射。正向映射G:X→Y,以及反向映射F:Y→X,并且要求F(G(x))≈x,G(F(y))≈y。網(wǎng)絡(luò)可以學(xué)習(xí)到X與Y的互相轉(zhuǎn)換關(guān)系。循環(huán)一致性損失定義為:
再引入原始GAN 的對(duì)抗損失。正向映射G:X→Y,對(duì)應(yīng)判別器為DY,則損失函數(shù)LGAN(G,DY,X,Y)為:
反向映射F:Y→X,并,對(duì)應(yīng)判別器為DX,由此同樣的定義損失函數(shù)LGAN(G,DX,X,Y)。最終損失函數(shù)包含三個(gè)部分:
本章詳細(xì)介紹基于循環(huán)生成對(duì)抗網(wǎng)絡(luò)[16]提出的單目深度估計(jì)算法。通過(guò)堆疊兩個(gè)CycleGAN,將原有的RGB到深度圖的映射過(guò)程拆分為兩個(gè)階段CycleGAN-I和CycleGAN-II,逐步訓(xùn)練。網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。CycleGAN-I作用是獲取原始RGB的初步空間特征與幾何關(guān)系,輸出精度較低的粗糙深度圖像。CycleGAN-II作用修正第一階段的深度圖像,使網(wǎng)絡(luò)進(jìn)一步訓(xùn)練,讓物體邊緣更加清晰,輸出精度高的深度圖像。此外,由于CycleGAN屬于無(wú)監(jiān)督模型,無(wú)法實(shí)現(xiàn)像素到像素的映射關(guān)系,對(duì)于物體的細(xì)節(jié)深度還原不準(zhǔn)確。針對(duì)這個(gè)問(wèn)題,本文在損失函數(shù)中引入了L1距離,使得網(wǎng)絡(luò)可以學(xué)習(xí)從RGB到深度圖像的像素級(jí)映射關(guān)系。
如圖1所示,本文的訓(xùn)練分為兩個(gè)階段進(jìn)行。第一階段為CycleGAN-I,輸出粗糙精度下的深度圖像。首先利用生成器G,將原始RGB 圖像轉(zhuǎn)換為對(duì)應(yīng)的深度圖像Depth-I。再將Depth-I輸入至判別器DY和生成器F,讓深度圖像Depth-I 還原為RGB-I。再利用GAN 損失函數(shù)LGAN與循環(huán)一致?lián)p失函數(shù)Lcyc進(jìn)行參數(shù)更新。最終網(wǎng)絡(luò)可以學(xué)習(xí)到RGB圖像和深度圖像兩個(gè)域之間的聯(lián)系。
但是,CycleGAN屬于無(wú)監(jiān)督學(xué)習(xí),利用非成對(duì)的數(shù)據(jù)集訓(xùn)練。而且,損失函數(shù)只限制了生成結(jié)果屬于深度圖像域,而無(wú)法限制和原有對(duì)應(yīng)輸入圖像的相似性,也無(wú)法實(shí)現(xiàn)像素到像素的映射。然而,深度估計(jì)任務(wù)中,輸出的深度圖像與原始對(duì)應(yīng)輸入圖像具有緊密的聯(lián)系,需要共享大量的空間與幾何信息,屬于有監(jiān)督的信息。為了更好地讓CycleGAN 網(wǎng)絡(luò)利用這種成對(duì)數(shù)據(jù)的有監(jiān)督信息,從損失函數(shù)方面進(jìn)行改進(jìn),在損失函數(shù)中引入L1 距離函數(shù),方便直接實(shí)現(xiàn)成對(duì)數(shù)據(jù)的像素級(jí)約束。引入L1函數(shù)后的性能提升如表1所示。
表1 堆疊CycleGAN對(duì)深度估計(jì)的影響
圖1 堆疊CycleGAN網(wǎng)絡(luò)結(jié)構(gòu)
相比于L2距離函數(shù),在深度估計(jì)和圖像領(lǐng)域,L1函數(shù)更加的常用。因?yàn)長(zhǎng)2 函數(shù)相對(duì)于L1 函數(shù)更容易引起圖像的模糊[17]?;贑GAN(Conditional GAN)網(wǎng)絡(luò)的Pix2Pix模型,在處理圖像到圖像的轉(zhuǎn)換的問(wèn)題時(shí),因?yàn)長(zhǎng)2導(dǎo)致輸出圖像的模糊,選擇了L1距離函數(shù)。L1距離函數(shù)為:
其中,x表示原始的RGB圖像,y表示x對(duì)應(yīng)的深度圖像。G(x)表示初步的深度圖像Depth-1,F(xiàn)(y)表示根據(jù)Depth-1 還原的 RGB-I 圖像。最終,CycleGAN-I 階段的損失函數(shù)變?yōu)椋?/p>
為了進(jìn)一步減少L1 距離引起的圖像模糊化[17],本文引入了超參數(shù)λ進(jìn)行控制,這樣可以讓輸出深度圖像在更高的分辨率下表現(xiàn)更好。超參數(shù)的選取會(huì)較大地影響到最終結(jié)果的精確度,根據(jù)實(shí)驗(yàn),設(shè)置超參數(shù)λ=100 較為合理。最終目標(biāo)函數(shù)變換為:
在第一階段CycleGAN-I 訓(xùn)練收斂后,此時(shí)得到的初步深度圖像Depth-I的精確度還較低。因?yàn)殡S著訓(xùn)練的進(jìn)行,判別器DY識(shí)別真實(shí)圖像與偽造圖像的能力越來(lái)越強(qiáng),同時(shí)給生成器反饋的梯度也越來(lái)越小。訓(xùn)練到接近收斂時(shí),判別器DY幾乎無(wú)法提供梯度去更新參數(shù),導(dǎo)致模型訓(xùn)練停滯[15]。造成了CycleGAN-I 輸出的初步深度圖像精度還不高,準(zhǔn)確率比較低。為了提高深度估計(jì)精度,網(wǎng)絡(luò)還需要進(jìn)一步的訓(xùn)練。通過(guò)堆疊CycleGAN-II的方式來(lái)解決該問(wèn)題。
LAPGAN[18]與StackGAN[19]均采用了堆疊的方法來(lái)提高輸出圖像的分辨率與精細(xì)度。其中LAPGAN采用了拉普拉斯金字塔(Laplacian Pyramid)的方式進(jìn)行堆疊,StackGAN 直接堆疊兩個(gè)CGAN 網(wǎng)絡(luò)。由于網(wǎng)絡(luò)需要學(xué)習(xí)的映射關(guān)系較為復(fù)雜,這也是許多高性能的深度網(wǎng)絡(luò)都面臨著這樣的問(wèn)題。然而,通過(guò)堆疊的方式降低單個(gè)階段網(wǎng)絡(luò)所需學(xué)習(xí)到映射的難度,通過(guò)逐步逼近的方式進(jìn)行訓(xùn)練,可以有效地減少每次GAN 需要學(xué)習(xí)到的內(nèi)容,從而增大了最終的輸出圖像的精細(xì)度。
由于Depth-I 已經(jīng)保留了原始圖像的空間特征信息,但是精度低仍然較低,主要表現(xiàn)在對(duì)于物體的邊界劃定不準(zhǔn)確,細(xì)節(jié)不夠好。針對(duì)這個(gè)問(wèn)題,本文采用堆疊[18-19]的方法,引入第二階段CycleGAN-II,用來(lái)增大判別器反饋的梯度,以得到精細(xì)尺度下的深度圖像。在第一階段的基礎(chǔ)上,利用生成器G,將RGB-I映射為深度圖像Depth-II。然后再利用生成器F,將Depth-II 映射回RGB-II。在CycleGAN-II 的訓(xùn)練階段,原有的LGAN項(xiàng)、LL1項(xiàng)、Lcyc項(xiàng)分別變?yōu)椋?/p>
其中,r=F(G(x)),表示RGB-I。d=G(F(y))表示Depth-I的近似值。經(jīng)過(guò)兩個(gè)階段的訓(xùn)練,從RGB到Depth-I,再到Depth-II,經(jīng)歷了兩次生成器G的映射。判別器DY也更加難以辨別出Depth-II 與原始深度圖像的區(qū)別。因此提高了DY反饋的梯度,使得網(wǎng)絡(luò)進(jìn)一步地優(yōu)化參數(shù),提高了深度估計(jì)的精度。所以CycleGAN-II實(shí)質(zhì)上是通過(guò)進(jìn)一步的訓(xùn)練,通過(guò)再次映射Depth-I,增大判別器DY反饋的梯度的方式,使得網(wǎng)絡(luò)可以輸出質(zhì)量更高的深度圖像。最終,CycleGAN-II階段的損失函數(shù)、目標(biāo)函數(shù)變?yōu)椋?/p>
其中,λ和μ都是超參數(shù)。λ用于控制L1距離權(quán)重,設(shè)置為100。μ用于控制CycleGAN-II階段的參數(shù)更新權(quán)重,設(shè)置為50。
生成器G、F的網(wǎng)絡(luò)結(jié)構(gòu)基本一致,僅僅在輸入和輸出的圖像通道數(shù)有所調(diào)整。生成器G作用是單張彩色圖像映射到深度圖像,生成器F相反,從深度圖像映射到彩色圖像。以生成器G舉例,網(wǎng)絡(luò)由三個(gè)部分組成:編碼器、轉(zhuǎn)換器和解碼器。如圖2 所示。編碼器輸入的原始RGB圖像尺寸為256×256×3,第一步是利用卷積網(wǎng)絡(luò)從輸入圖像中提取特征,圖像尺寸越來(lái)越小。在卷積網(wǎng)絡(luò)中,不同大小的卷積核能在輸入圖像上移動(dòng)并提取特征,步幅大小能決定在圖像中卷積核窗口的數(shù)量。所以編碼器的第1層采用7×7卷積核,步幅為1,濾波器個(gè)數(shù)64;第2、3 層采用3×3 卷積核,步幅為2,濾波器個(gè)數(shù)分別是64、128。原始圖像經(jīng)過(guò)編碼器后尺寸變?yōu)?4×64×256。
轉(zhuǎn)換器包含9 個(gè)殘差模塊。由兩個(gè)卷積層組成的神經(jīng)網(wǎng)絡(luò)層,其中輸入數(shù)據(jù)直接添加到輸出。這樣做是為了確保先前網(wǎng)絡(luò)層的輸入數(shù)據(jù)信息直接作用于后面的網(wǎng)絡(luò)層,使得相應(yīng)輸出與原始輸入的偏差縮小,否則原始圖像的特征將不會(huì)保留在輸出中且輸出結(jié)果會(huì)偏離目標(biāo)輪廓。卷積模塊采用3×3卷積核,步幅為1,濾波器為64。目的是保持輸入的尺寸不變,并將RGB 的特征轉(zhuǎn)換到深度圖像中。圖像尺寸經(jīng)過(guò)轉(zhuǎn)換器后依然保持不變。
圖2 生成器G 網(wǎng)絡(luò)結(jié)構(gòu)
解碼器與編碼器的作用完全相反,利用反卷積層,從特征向量中還原出低級(jí)特征。解碼器分別利用兩個(gè)卷積核為3×3,步幅為0.5的反卷積層,一個(gè)卷積核為7×7,步幅為1的卷積核。得到256×256×1的深度圖像。
判別器網(wǎng)絡(luò)用于鑒別輸入圖像來(lái)自真實(shí)的數(shù)據(jù)或者來(lái)自生成器所偽造的圖像。判別器DX與DY結(jié)構(gòu)上基本一致。DX輸入3 通道RGB 圖像,DY輸入1 通道深度圖像。如圖3所示,判別器采用全域卷積減小圖像的尺寸。采用卷積核為4×4,步幅為2。
在生成器與判別器的每個(gè)卷積與反卷積操作后面都會(huì)進(jìn)行Instance Normalization規(guī)范化與Relu或Leaky-Relu 激活操作。其中Instance Normalization 作用是讓每一層數(shù)據(jù)歸一化到一定范圍內(nèi),減小數(shù)據(jù)的大幅度波動(dòng)來(lái)加快訓(xùn)練速度,增加網(wǎng)絡(luò)泛化能力。
圖3 判別器網(wǎng)絡(luò)結(jié)構(gòu)
本章詳細(xì)介紹所提出方法的實(shí)驗(yàn)過(guò)程以及數(shù)據(jù)分析。在標(biāo)準(zhǔn)室外場(chǎng)景公開(kāi)數(shù)據(jù)集Make3D 上將本文的方法與目前其他具有代表性的主流方法作對(duì)比,以驗(yàn)證本文的方法的有效性。
Make3D 是深度估計(jì)的公開(kāi)數(shù)據(jù)集,由康奈爾大學(xué)的Ashutosh和Andrew所發(fā)起的項(xiàng)目。數(shù)據(jù)集包含了一系列的非結(jié)構(gòu)化的戶(hù)外場(chǎng)景,包括樹(shù)木、建筑物、人等物體。通過(guò)三維激光掃描儀收集大量的RGB圖像與對(duì)應(yīng)的深度圖像。訓(xùn)練集包含400組室外圖像,測(cè)試集包含134 組圖像。每組數(shù)據(jù)都包含一張?jiān)糝GB 圖像與對(duì)應(yīng)的深度圖像。采集的RGB 圖像分辨率為2 272×1 704,深度圖像分辨率為55×305。為了擴(kuò)充數(shù)據(jù)集數(shù)量,本文將圖像分辨率變換為512×512,再?gòu)闹薪厝〈笮?56×256的圖像及其對(duì)應(yīng)深度圖像區(qū)域,作為訓(xùn)練輸入數(shù)據(jù),最終產(chǎn)生了15 000組數(shù)據(jù)對(duì)。
實(shí)驗(yàn)基于TensorFlow 框架實(shí)現(xiàn),在單塊型號(hào)為GTX1080Ti的GPU上運(yùn)行。初始化學(xué)習(xí)率lr=0.000 2,訓(xùn)練時(shí)使用Adam優(yōu)化算法(β1=0.5、β2=0.999、ε=10-8),每一層后面進(jìn)行InstanceNormalization 歸一化,減少每層之間的依賴(lài)性,提高了網(wǎng)絡(luò)層之間的獨(dú)立性。在網(wǎng)絡(luò)的參數(shù)量與復(fù)雜度方面,生成器G的編碼器參數(shù)量為97 088,轉(zhuǎn)換器參數(shù)量為265 6512,解碼器參數(shù)量為420 352。生成器的總參數(shù)量為3 173 952,轉(zhuǎn)換器參數(shù)占總參數(shù)量約84%,因?yàn)檗D(zhuǎn)換器負(fù)責(zé)將RGB 圖像的空間特征轉(zhuǎn)換為深度信息特征,在深度估計(jì)任務(wù)重起到關(guān)鍵作用。判別器D的參數(shù)量為1 552 384。訓(xùn)練分為兩個(gè)階段,其中 CycleGAN-I 訓(xùn)練 250 個(gè) epoch,用時(shí)大約13 h。CycleGAN-II 訓(xùn)練 150 個(gè) epoch,用時(shí)大約 7 h。batchSize均設(shè)置為1。整個(gè)訓(xùn)練在Make3D數(shù)據(jù)集上進(jìn)行。
本文使用的評(píng)價(jià)指標(biāo)有平均相對(duì)誤差Rel、均方根誤差RMSE和對(duì)數(shù)平均誤差A(yù)le。和傳統(tǒng)的有代表性的方法進(jìn)行對(duì)比。
(1)平均相對(duì)誤差
(2)均方根誤差
(3)對(duì)數(shù)平均誤差
N表示圖像中像素點(diǎn)的個(gè)數(shù),Di表示像素點(diǎn)i的真實(shí)深度值,Di表示像素點(diǎn)i處的估計(jì)深度值。
本文基于CycleGAN 網(wǎng)絡(luò)和室外場(chǎng)景的深度估計(jì)背景,提出了兩個(gè)改進(jìn)方向。(1)將RGB 到深度圖像的映射分解為 2 個(gè)子階段:CycleGAN-I、CycleGAN-II,在粗糙與精細(xì)兩個(gè)尺度下優(yōu)化深度估計(jì)的效果。(2)為了解決CycleGAN無(wú)法實(shí)現(xiàn)像素到像素映射關(guān)系的問(wèn)題,在損失函數(shù)中引入了L1距離。實(shí)現(xiàn)了像素級(jí)的映射關(guān)系。為了證明本文方法改進(jìn)的有效性,與原始CycleGAN方法進(jìn)行對(duì)比。其中GroundTruth為真實(shí)的深度圖像。
從圖4對(duì)比中可以看出,本文提出的模型給深度估計(jì)帶來(lái)了更好的效果。室外場(chǎng)景的特點(diǎn)是遠(yuǎn)處的物體較多,并且包含了天空、樹(shù)木、建筑等物體。原始Cycle-GAN方法進(jìn)行深度估計(jì)時(shí),由于是非監(jiān)督方法,無(wú)法很好利用深度信息。導(dǎo)致在物體邊緣處比較模糊,該處的深度值發(fā)生了較大變化。在圖4的第一行場(chǎng)景中,原始CycleGAN在房屋的邊緣較為模糊。本文方法對(duì)于遠(yuǎn)處物體識(shí)別效果更好。
在表1中列出了原始CycleGAN與本文提出方法的評(píng)價(jià)指標(biāo)結(jié)果。其中C1誤差僅計(jì)算了真實(shí)深度值低于70 m 的圖像區(qū)域,C2 誤差將全部圖像區(qū)域用于誤差計(jì)算。對(duì)于表1 中的數(shù)據(jù)分析來(lái)看,堆疊CycleGAN 模型效果優(yōu)于原始的CycleGAN模型,且生成的深度圖像在物體邊界更加清晰。引入L1 函數(shù)后,各個(gè)誤差項(xiàng)均有所下降,這是因?yàn)槟P透玫乩昧擞斜O(jiān)督的信息,使得像素到像素的轉(zhuǎn)換更加準(zhǔn)確。實(shí)驗(yàn)證明本文提出的方法確實(shí)可以提高深度估計(jì)的效果。
圖4 堆疊CycleGAN對(duì)深度估計(jì)的影響
本文通過(guò)疊加2層的CycleGAN網(wǎng)絡(luò)提高了深度估計(jì)的效果。此外,還探究了堆疊更多層次的CycleGAN所產(chǎn)生的不同效果。如圖5所示,當(dāng)堆疊2層CycleGAN時(shí),深度估計(jì)的效果最好,各項(xiàng)評(píng)價(jià)指標(biāo)均達(dá)到最優(yōu)。CycleGAN 基于重構(gòu)的思想實(shí)現(xiàn)不同域之間數(shù)據(jù)的轉(zhuǎn)換,生成器G首先在編碼器過(guò)程中學(xué)習(xí)原圖像的空間特征表示,然后在轉(zhuǎn)換器過(guò)程將特征轉(zhuǎn)換為另外一個(gè)域的特征表示,期間會(huì)丟棄原有圖像的無(wú)關(guān)特征,最后在解碼器過(guò)程中,將特征還原為目標(biāo)域的數(shù)據(jù)[16]。當(dāng)堆疊層數(shù)為2 時(shí),通過(guò)分階段的訓(xùn)練,網(wǎng)絡(luò)可以在粗糙和精細(xì)的尺度下訓(xùn)練較好[18-19];然而,隨著層數(shù)的不斷增加,轉(zhuǎn)換器丟棄的數(shù)據(jù)過(guò)多,影響了最終輸出圖像的質(zhì)量,因此誤差反而增大,如圖5 所示。所以本文選擇2 層網(wǎng)絡(luò)的疊加,效果達(dá)到最優(yōu)。
圖5 堆疊層數(shù)對(duì)深度估計(jì)的影響
本節(jié)對(duì)比了當(dāng)今主流的深度估計(jì)算法。與Luo等人[20]、Nath等人[21]的工作進(jìn)行了對(duì)比。Luo等人工作與本文較為類(lèi)似,是一種采用兩個(gè)階段逐步提取圖像深度值的單目深度估計(jì)算法;Nath 等人使用對(duì)抗學(xué)習(xí)方法,通過(guò)解決圖像合成與匹配兩個(gè)子問(wèn)題,提出一種單目深度估計(jì)算法。從圖6 的實(shí)驗(yàn)結(jié)果可以看出,整體上看Luo的方法對(duì)于遠(yuǎn)景圖像表現(xiàn)較好,但是對(duì)于近景的建筑的效果較差,特別是在沒(méi)有參考物情況下,整體精度表現(xiàn)不高。Nath的方法可以較好地估計(jì)出近處的深度值,但是對(duì)于遠(yuǎn)處物體誤差較大。Luo 等人通過(guò)將原圖左移的方式得到一張新的圖像,再利用對(duì)極幾何進(jìn)行深度估計(jì)。然而左移會(huì)導(dǎo)致物體定位發(fā)生偏移,從而邊緣較模糊[20]。Nath等人通過(guò)合成深度圖像,從整體上匹配真實(shí)深度,因此對(duì)于物體細(xì)節(jié)上難以匹配[21]。與其他文獻(xiàn)不同,本文根據(jù)原圖進(jìn)行重構(gòu),從而更方便保留原有圖像的空間特征。使用分階段訓(xùn)練來(lái)提高精度,并且通過(guò)L1距離,對(duì)輸出深度圖進(jìn)行像素級(jí)的限制,因此在細(xì)節(jié)質(zhì)量更好,對(duì)于物體的邊界更加清晰。通過(guò)圖6 中第1行對(duì)比可以看出,本文方法在樹(shù)和路面交匯處的分界線(xiàn)更加清晰。從圖6 第3 行對(duì)比看出,本文方法的深度圖整體精度表現(xiàn)較好。
圖6 各方法深度估計(jì)結(jié)果對(duì)比
通過(guò)表2可以看出,本文方法在各項(xiàng)指標(biāo)上均有了較大的提升。在C1 誤差下,相比于Luo 的工作,Rel 與RMSE指標(biāo)分別降低了17%、11%;相比于Nath的工作,Rel 與RMSE 指標(biāo)分別降低了4%、14%;可以證明本文方法的有效性。但是在Ale 指標(biāo)上,本方法表現(xiàn)一般。原因在于本文建立在重構(gòu)與分階段訓(xùn)練的思想之上,導(dǎo)致深度估計(jì)結(jié)果的均值較小,但方差較大。而Ale對(duì)于小范圍的誤差更加敏感。但從深度估計(jì)整體效果以及數(shù)據(jù)上看,本文方法依然在細(xì)節(jié)與準(zhǔn)確率上更具有優(yōu)勢(shì)。
表2 不同方法實(shí)驗(yàn)結(jié)果對(duì)比
本文基于CycleGAN網(wǎng)絡(luò)提出了一種新的模型,來(lái)解決室外場(chǎng)景的深度估計(jì)問(wèn)題。通過(guò)將RGB到深度圖像的映射過(guò)程,拆分為兩個(gè)階段。分別在粗糙和精細(xì)的兩個(gè)尺度進(jìn)行深度估計(jì),得到準(zhǔn)確率更高的結(jié)果。為了解決CycleGAN無(wú)法實(shí)現(xiàn)像素到像素的映射問(wèn)題,本文在損失函數(shù)中引入了L1 距離,讓模型能更加充分地利用有監(jiān)督的信息。與常見(jiàn)的深度估計(jì)算法相比,本文方法在Rel與RMSE指標(biāo)上均有更好的表現(xiàn)。但是模型對(duì)于Ale指標(biāo)效果一般。下一步將繼續(xù)提升模型在Ale上的表現(xiàn),利用更多的先驗(yàn)信息,提高準(zhǔn)確率。