王懷章, 蔡立志, 張 娟
(1.上海工程技術大學 電子電氣工程學院,上海201620; 2.上海計算機軟件技術開發(fā)中心,上海 201112)
近年來,隨著私家車的普及,交通事故頻繁發(fā)生,因此駕駛安全問題變得尤為重要。隨著計算機視覺技術的不斷發(fā)展,自動駕駛技術引起廣泛關注。對于自動駕駛而言,最重要的就是找到道路區(qū)域,因此道路檢測技術顯得尤為重要。為了穩(wěn)定、準確地檢測道路區(qū)域,人們開發(fā)出許多使用附加傳感器進行道路檢測的算法[1],例如使用全球定位系統(tǒng)(GPS)獲取位置信息。但在現(xiàn)實生活中,人們可以通過眼睛獲得復雜的交通信息并安全駕駛。因此,本文的重點是挖掘更深層次的視覺信息。
隨著傳感器和計算機硬件的迅速發(fā)展,高精度檢測方法得以實現(xiàn)。Chen Z等人[2]在貝葉斯網(wǎng)絡框架內(nèi),提出了可以同時檢測道路和邊界的深度神經(jīng)網(wǎng)絡。Yuan Y等人[3]設計了一種在線架構學習的方法,可以從視頻序列中提取可行駛道路區(qū)域,該方法結合了密集尺度不變特征變換(scale-invariant feature transform,SIFT)、方向梯度直方圖(histogram of oriented gradient,HOG)和局部二值模式(local binary pattern,LBP)的特征,并且顯著增強了灰度變化和陰影的魯棒性。Zhang W[4]使用高斯差分濾波器將激光雷達掃描區(qū)域分為道路區(qū)域和非道路區(qū)域。
深度學習近年來在許多領域都取得了較好的成績,卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)也引起了學者的廣泛關注。Oliveira G L等人[5]提出了一種利用語義分割檢測道路區(qū)域并解決道路場景分割的方法。Long J等人[6]提出全卷積網(wǎng)絡(fully conwolutional network,FCN)后,許多研究人員開始使用具有相同的結構方法來進行道路檢測。Caltagirone L等人[7]將激光雷達(LiDAR)點云轉換為2D頂視圖圖像,并在分割道路時將2D頂視圖圖像作為FCN的輸入。最近,Asvadi A等人[8]開發(fā)了一種將激光雷達和彩色相機數(shù)據(jù)集成到深度學習框架中的車輛檢測系統(tǒng)。
此外,Bellone M等人在具有挑戰(zhàn)性場景的3D云數(shù)據(jù)道路檢測中使用了支持向量機(support vector machines,SVM)[9]。Zhou S等人[10]使用SVM來構建支持在線學習的道路檢測算法,這意味著該方法可以更新訓練數(shù)據(jù)并減少分類錯誤的可能性。另外,道路檢測的任務不僅限于傳統(tǒng)的道路場景,還涵蓋了一些復雜而嚴峻的場景,例如濕滑的道路和惡劣的天氣。
Goodfellow I等人提出的生成對抗網(wǎng)絡(generative adversarial network,GAN)[11]引起極大關注,并迅速應用于各個領域。GAN的核心是一種生成對抗性損失,它使生成的圖像盡可能與原始圖像相似。人們在GAN的基礎上提出了各種對抗網(wǎng)絡。Zhao J等人[12]提出一種雙判別器周期一致的GAN(double-discriminator cycle-GAN,DD-CycleGAN),將有霧圖像轉換為無霧圖像。
本文使用DD-CycleGAN作為全文的基礎框架網(wǎng)絡,學習原始圖像的道路區(qū)域與標注圖像的道路區(qū)域之間的映射函數(shù),實現(xiàn)對道路區(qū)域的檢測。接著,將殘差密集塊[13]以及空間CNN[14]添加到生成器中,利用殘差密集塊和空間CNN進一步增強生成器的特征提取能力。最后,本文提出一種自適應的優(yōu)化模型,對于轉換后存在小孔洞的圖片,使用膨脹與腐蝕算法自動檢測并填充孔洞。
本文使用的神經(jīng)網(wǎng)絡模型(如圖1所示)建立在DD-CycleGAN框架之上,該模型可以提取道路特征并完成道路檢測的任務。
本文實驗部分使用了2個生成器,每個生成器配備了2個具有相同結構的判別器。通過增加1個具有相同結構的判別器,模型可以更好地逼近最佳判別器,并減少原始CycleGAN對道路區(qū)域的誤判。向生成器添加空間CNN和殘差密集塊增強生成器提取特征的能力。
如圖1(a)所示,本文的網(wǎng)絡模型具有兩個映射功能:第一個是G映射,第二個是F映射。對于G映射,其映射過程可以表示為:G:X→Y,即G(x)=y。類似地,F(xiàn)映射的映射過程可以表示為:F:Y→X,即F(y)=x。判別器DX1和DX2的目的是找到X域中的圖像x與映射的圖像F(y)之間的差異。同樣,判別器DY1和DY2的目的是找出Y域中的圖像y與映射圖像G(x)之間的差異。
圖1(b)為網(wǎng)絡的正向訓練過程。生成器G生成圖像y時,輸入到生成器G中的圖像是X域中的圖像x。生成器F生成圖像x時的輸入圖像是生成器G的輸出圖像。最終輸出圖像要與輸入圖像難以區(qū)分開,即x→G(x)→F(G(x))≈x。
如圖1(c)所示的是網(wǎng)絡的反向訓練過程。生成器F生成圖像x時,輸入到生成器F中的圖像是Y域中的圖像y。生成器G生成圖像y時的輸入圖像是生成器F的輸出圖像。最終輸出圖像要與輸入圖像難以區(qū)分開,即y→F(y)→G(F(y))≈y。

圖1 整體網(wǎng)絡模型
Deepak P等人的研究[15]表明,提高網(wǎng)絡性能的有效方法之一是向網(wǎng)絡中添加損失函數(shù)。本文利用L1損失函數(shù)[16]測量循環(huán)一致性損失,循環(huán)一致性損失函數(shù)設置為
Lcyc(G,F)=Ex~pdta(x)[‖F(xiàn)(G(x))-x‖1]+
Ey~pdta(y)[‖G(F(y))-y‖1]
(1)
式中G和F為兩個映射函數(shù)。這兩個函數(shù)應滿足循環(huán)一致性:對于X域中的圖像x,在映射后仍可以映射回原始圖像。類似地,對于Y域中的圖像y,在映射后仍可以映射回原始圖像。
對于生成器G及其兩個判別器DY1和DY2,判別器DY1損失函數(shù)設置如下
LGAN(G,DY1,X,Y)=Ey~pdta(y)[logDY1(y)]+
Ex~pdta(x)[log(1-DY1(G(x)))]
(2)
映射函數(shù)G的目的是使生成的圖像G(x)與Y域中對應的圖像盡可能相似。同時,G期望最小化損失函數(shù)。類似地,判別器DY2的損失函數(shù)如下
LGAN(G,DY2,X,Y)=Ey~pdta(y)[logDY2(y)]+
Ex~pdta(x)[log(1-DY2(G(x)))]
(3)
生成器G的目標損失設置為
LGAN(G,DY1,DY2,X,Y)=λ1LGAN(G,DY1,X,Y)+
(1-λ1)LGAN(G,DY2,X,Y)
(4)
綜上,最終目標損失函數(shù)設定如下
L(G,F,DX1,DX2,DY1,DY2)=LGAN(G,DY1,DY2,X,Y)+LGAN(F,DX1,DX2,Y,X)+λ3Lcyc(G,F)
(5)
其中,λ1,λ2和λ3分別表示
LGAN(G,DY1,X,Y),LGAN(G,DX1,Y,X)和Lcyc(G,F)的權重。
本文的最終目標是

L(G,F,DX1,DX2,DY1,DY2)
(6)
式中 生成器G和F期望最終目標損失函數(shù)最小,判別器D期望損失函數(shù)最大。
1)生成器架構
生成器由三部分組成:編碼器,轉換器和解碼器。首先,編碼器對輸入圖像進行下采樣提取特征;然后,轉換器將輸入圖像的特征向量轉換為目標域的特征向量;最后,由解碼器進行上采樣從特征向量中獲得低層特征。網(wǎng)絡如圖2所示。

圖2 生成器結構
本文的生成器網(wǎng)絡與原始CycleGAN之間的區(qū)別在于:本文在編碼器后加入了空間CNN模塊,使得空間信息能在同層神經(jīng)元上傳遞,增強了空間信息的傳遞。在轉換器部分,使用殘差密集塊替代了原始的殘差塊,進一步提高生成器生成目標圖像的能力。
2)判別器架構
判別器使用的是70×70 的PatchGAN,其目的是,確定每個大小為70×70圖像補丁是否由生成器生成。與使用完整圖像的判別器相比,使用這種補丁級別的判別器參數(shù)更少,并且可以將其應用于任意大小的圖像做完全卷積。本文使用的雙分支判別器網(wǎng)絡如圖3所示。

圖3 判別器結構
3)優(yōu)化器
GAN生成的道路區(qū)域可能存在小孔洞或誤檢的問題,這會降低道路檢測的準確性。為了解決這個問題,提高道路檢測的精度,本文提出一種自適應的優(yōu)化方法來檢測和優(yōu)化GAN輸出的結果。具體過程如圖4所示。
自適應的優(yōu)化模型將自動檢測圖像中的道路區(qū)域是否存在孔洞,若檢測到孔洞存在,優(yōu)化模型會使用膨脹和腐蝕算法自動填充孔洞。解決孔洞問題后,自適應模型將繼續(xù)檢測圖像中是否存在誤檢的道路區(qū)域。誤檢的道路區(qū)域是指圖像中沒有道路被誤認為是道路的區(qū)域。檢測到誤檢的道路區(qū)域,自適應模型將使用連通域檢測方法[17,19]來優(yōu)化結果。道路區(qū)域誤檢的原因是因為周圍物體的顏色和紋理與道路區(qū)域相似,因此誤檢道路區(qū)域通常是連通且規(guī)則的。完成這些操作后,模型將生成最終結果。

圖4 優(yōu)化模型
本文使用KITTI道路基準數(shù)據(jù)集來評估所提出的道路檢測方法。該數(shù)據(jù)集包括289張帶標注圖像的訓練圖像以及290張測試圖像。此外,這些圖像的像素大小約為375×1 242。評估模型的性能使用以下標準
(7)
(8)
(9)
(10)
KITTI服務器根據(jù)指標maxF對提交的方法進行排名,其公式如下所示

(11)
式中τ為分類閾值,使用該閾值可最大化F(Fmeasure)。
實驗使用配備2.5 GHz,64核CPU,GTX 1080Ti GPU和128 GB內(nèi)存的服務器,訓練環(huán)境是TensorFlow 1.12.0,Python3.6.0。全文實驗過程中,設置λ1=0.5,λ2=0.5,λ3=10。本文選用批量大小為1的Adam優(yōu)化器,設置學習率為0.000 2。
最終的實驗結果提交給KITTI服務器,以便將本文最終的實驗結果與其他道路檢測的結果進行比較。在提交之前,需要將實驗結果轉換到BEV(bird’s eye view)空間,因為KITTI服務器評估實驗結果必須在BEV空間中進行。表1是近年來提交方法和本文方法的比較。

表1 方法比較 %
從表1中方法的比較可以發(fā)現(xiàn),雖然本文方法在評估指標AP上與Road Segmentation有一定差距,但在maxF,PRE(precision)和假真正類(FPR)三個主要指標上,本文方法都有較為顯著的提高。對于RD-CycleGAN,從表中可以看出,本文方法相較于RD-CycleGAN在各個指標上都有較為顯著的提升。此外,雖然mAP和Multi-task CNN在個別指標上略微領先本文方法,但是在其他幾個主要指標上,本文方法都有比較明顯的提升。
圖5為本文方法在KITTI基準服務器上的最終測試結果。從圖中可以看出,本文提出的模型可以較好地提取圖像中的道路區(qū)域,而且誤檢以及漏檢的區(qū)域也比較少。此外,在不同場景中本文提出的模型都可以有效地提取出道路區(qū)域,具有較強的泛化能力。綜上,本文的模型在大多數(shù)情況下都可以有效提取出圖像中的道路區(qū)域,所以本文方法具有一定的研究意義與應用價值。

圖5 KITTI基準服務器測試結果
本文提出一種結合深度學習算法和自適應算法的道路檢測方法。引入DD-CycleGAN作為全文的基礎框架網(wǎng)絡來完成道路檢測任務。DD-CycleGAN中的雙判別器共同作用,使輸出無限接近最優(yōu)解。為了增強生成器的特征提取能力,在生成器中添加了空間CNN以及殘差密集塊。GAN的輸出圖像存在一些小孔洞和誤檢區(qū)域,針對這些問題,本文設計了一種自適應優(yōu)化模型。該優(yōu)化模型使用傳統(tǒng)算法自動檢測和填充GAN輸出結果中的小孔洞,并去除誤檢道路區(qū)域。最終實驗結果提交給KITTL服務器,并在KITTI道路基準測試中取得了較好的成績。整體的最大F測度為90.46 %,精度為92.15 %。該數(shù)據(jù)說明本文方法明顯優(yōu)于傳統(tǒng)道路檢測算法,能夠較為準確有效地完成道路檢測任務,具有一定的研究和應用價值。