馬 宇,張麗果,杜慧敏,毛智禮
西安郵電大學(xué) 電子工程學(xué)院,西安710121
+通信作者E-mail:2395829744@qq.com
道路標(biāo)志是重要的交通安全設(shè)施,可以向駕駛員、行人等傳遞準(zhǔn)確的信息,指示有關(guān)情況,提出交通要求,公布交通規(guī)定等。然而,許多駕駛員可能因?yàn)楦鞣N原因并未及時(shí)留意到道路標(biāo)志信息而導(dǎo)致道路交通事故。因此,對(duì)道路交通標(biāo)志[1,2]進(jìn)行語義分割具有極高的研究和應(yīng)用價(jià)值。
交通標(biāo)志有顯著的顏色特征和幾何特征,傳統(tǒng)的交通標(biāo)志分割處理主要依據(jù)顏色和形狀信息。基于顏色分割方法主要是在單獨(dú)的彩色空間中利用最佳閾值,也有顏色聚類的方法尋找出相應(yīng)的顏色區(qū)域,但是在顏色分量中孤立的分割方法受環(huán)境影響較大,也很難判定最佳的閾值[3]?;谛螤畹姆指罘椒ㄖ饕遣捎肏ough 變換或邊緣檢測(cè)的算法來尋找圖像中的直線或曲線,再利用交通標(biāo)志圖像的輪廓特點(diǎn)用模板匹配的方法檢測(cè)分割,這類方法在復(fù)雜背景下的應(yīng)用也受到限制[4]。隨后出現(xiàn)了將顏色信息和形狀信息綜合應(yīng)用的綜合方法,提出了一種針對(duì)三角形標(biāo)志的智能檢測(cè)方法[5],利用HSV 顏色空間的H 分量提取標(biāo)志的顏色信息,再利用神經(jīng)網(wǎng)絡(luò)檢測(cè)三角形的三個(gè)頂點(diǎn),最終實(shí)現(xiàn)三角形標(biāo)志的檢測(cè)。以上傳統(tǒng)的方法對(duì)圖像特征的提取能力有限,不適用于大規(guī)模的交通標(biāo)志分割。
近年來,深度學(xué)習(xí)技術(shù)在計(jì)算機(jī)視覺領(lǐng)域的迅速發(fā)展為語義分割應(yīng)用于無人駕駛的道路場(chǎng)景識(shí)別提供了技術(shù)支持。2015 年Long 等提出了全卷積網(wǎng)絡(luò)(fully convolutional networks,F(xiàn)CN)[6],已經(jīng)成為語義圖像分割不可缺少的模型。許多成功的FCN 應(yīng)用都依賴于Dilated conv[7]和密集條件隨機(jī)場(chǎng)(conditional random field,CRF)[8]。最近的研究集中在基于編碼器-解碼器的模型上,該模型使用編碼器提取信息,其輸出被傳遞到解碼器網(wǎng)絡(luò),從而生成高分辨率的分割預(yù)測(cè)。SegNet[9]、U-Net[10]和RefineNet[11]是使用不同機(jī)制將信息從編碼器傳遞到解碼器模型的示例。另一種獲取上下文信息的方法是空間金字塔池化(spatial pyramid pooling,SPP)。ParseNet[12]將全局上下文特征加入到空間特征中,DeepLabv2[13]使用空洞空間金字塔池化(atrous spatial pyramid pooling,ASPP),PSPNet[14]在多個(gè)尺度上引入了空間金字塔池化(SPP)來解決分割問題,DeepLabv3+[15]用Xception 網(wǎng)絡(luò)取代了DeepLabv3[16]的主干,并使用簡(jiǎn)單的兩級(jí)解碼器將其堆疊,該解碼器使用了編碼器的較低分辨率特征圖。
對(duì)道路交通標(biāo)志進(jìn)行語義分割的挑戰(zhàn)性問題是在一幅道路場(chǎng)景圖中的交通標(biāo)志往往尺度極小。雖然FCN 利用跳層連接的方法可以更精確地定位目標(biāo),但該方法不能很好地解決小目標(biāo)難分割的問題。因?yàn)镕CN 進(jìn)行了多次降采樣操作,F(xiàn)CN 的輸出結(jié)構(gòu)往往丟失了較多的輪廓細(xì)節(jié)特征,使得邊緣過于平滑。SegNet 網(wǎng)絡(luò)在編碼器部分提取低分辨率的語義特征,然后利用編碼器中最大池化層的選定位置作為提示信息,在解碼器部分將特征恢復(fù)為高分辨率預(yù)測(cè)圖,通過解碼網(wǎng)絡(luò)的上采樣操作,將因編碼網(wǎng)絡(luò)降采樣而丟失的信息重新學(xué)習(xí)得到。不同于線性插值上采樣,由多層反卷積構(gòu)成的解碼網(wǎng)絡(luò)通過學(xué)習(xí)的方式能夠更有效地還原小目標(biāo)的特征。UNet網(wǎng)絡(luò)在編碼器-解碼器結(jié)構(gòu)的基礎(chǔ)上,將網(wǎng)絡(luò)形成一個(gè)U 型結(jié)構(gòu),每個(gè)解碼層的反卷積輸入由前一層的輸出與同一水平線上編碼層的部分輸出拼接而成,即用跳層連接的思想將淺層特征與深層特征圖相結(jié)合。實(shí)驗(yàn)結(jié)果驗(yàn)證,該方法在小目標(biāo)分割性能上優(yōu)于其他編碼-解碼結(jié)構(gòu)網(wǎng)絡(luò)。本文對(duì)U-Net 進(jìn)行改進(jìn),提出了針對(duì)交通標(biāo)志等小目標(biāo)的分割性能更優(yōu)且實(shí)時(shí)性更高的深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)D-Unet(“D”表示dilated convolution)。
Fig.1 U-Net network structure圖1 U-Net網(wǎng)絡(luò)結(jié)構(gòu)
U-Net 是一種輕量級(jí)的全卷積神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)如圖1 所示。它由收縮路徑(編碼器)和擴(kuò)張路徑(解碼器)兩部分組成,共包括23 個(gè)卷積層、4 個(gè)最大池化層和4 個(gè)反卷積層。其中,收縮路徑是典型的卷積網(wǎng)絡(luò)結(jié)構(gòu),在每?jī)蓚€(gè)3×3 的卷積層后是一個(gè)2×2 的最大池化層,其步長(zhǎng)為2。使用修正線性單元(rectified linear unit,ReLU)作為激活函數(shù),每經(jīng)過一次下采樣操作,特征通道加倍。擴(kuò)張路徑利用2×2 的卷積核對(duì)特征圖進(jìn)行上采樣,使特征通道數(shù)減半,將上采樣后的特征圖與來自收縮路徑的特征圖相結(jié)合,然后利用2次3×3 的卷積進(jìn)行卷積運(yùn)算,并同樣使用ReLU 作為激活函數(shù),最后利用1×1 的卷積核將每一個(gè)64 維的特征向量映射到網(wǎng)絡(luò)的輸出層,即得到類的數(shù)量。
大量研究表明,深度卷積神經(jīng)網(wǎng)絡(luò)在語義分割或其他像素級(jí)的預(yù)測(cè)任務(wù)中取得了很好的效果。但是,在這些網(wǎng)絡(luò)中,由于常規(guī)卷積操作的池化層和池化間隔的存在,雖然可以增大感受野,但是池化層也減小了特征圖的大小,導(dǎo)致了圖像分辨率的降低和部分信息的損失,而語義分割的任務(wù)需要得到與原始圖像相同分辨率大小的預(yù)測(cè)圖,因此在對(duì)經(jīng)過多個(gè)池化層得到的特征圖進(jìn)行上采樣使其恢復(fù)到原圖大小時(shí),便會(huì)影響到分割精度。因此本文采用擴(kuò)張卷積(dilated convolution)來代替常規(guī)卷積。該操作的優(yōu)點(diǎn)在于即使不做池化操作,也可以增大感受野,而增大感受野的目的在于能夠更好地學(xué)習(xí)圖像的全局信息。在一維中,擴(kuò)張卷積被定義為:
其中,f[i]是輸入信號(hào),g[i]是輸出信號(hào),h[l]表示長(zhǎng)度為l的卷積核,r對(duì)應(yīng)本文用來采樣f[i]的擴(kuò)張率(在標(biāo)準(zhǔn)卷積中,r=1)。在語義分割系統(tǒng)中,通過在卷積核中的每個(gè)像素之間插入“空洞”(零點(diǎn))來構(gòu)造二維擴(kuò)張卷積。擴(kuò)張卷積的卷積核以及卷積之后的特征圖的大小如下:
其中,k表示卷積核大??;p表示卷積核中的補(bǔ)零數(shù);s表示卷積步長(zhǎng);d為空洞卷積采樣率;i表示輸入特征圖的大??;n和o分別為空洞卷積之后的新的卷積核大小和輸出特征圖大小。
U-Net 網(wǎng)絡(luò)在醫(yī)學(xué)圖像分割和道路場(chǎng)景分割中均有良好表現(xiàn),并且在小目標(biāo)分割性能上優(yōu)于其他編碼-解碼結(jié)構(gòu)網(wǎng)絡(luò)。因此選擇U-Net 網(wǎng)絡(luò)對(duì)道路交通標(biāo)志進(jìn)行分割,道路交通標(biāo)志具有光照復(fù)雜、待識(shí)別目標(biāo)尺度不一等特點(diǎn)。U-Net 網(wǎng)絡(luò)對(duì)道路交通標(biāo)志中的小目標(biāo)分割不夠精細(xì),容易丟失細(xì)節(jié)信息。本文在U-Net 基礎(chǔ)上,針對(duì)小目標(biāo)難以準(zhǔn)確分割的問題,提出了D-Unet 網(wǎng)絡(luò)結(jié)構(gòu)。與U-Net 相比,D-Unet有以下兩個(gè)改進(jìn):
(1)利用擴(kuò)張卷積代替常規(guī)卷積操作以擴(kuò)大卷積感受野,并將擴(kuò)張卷積核進(jìn)行級(jí)聯(lián),每個(gè)卷積核有局部大小不同的作用域,利用擴(kuò)張較小的卷積核可以得到較小尺寸目標(biāo)的特征。
(2)與U-Net相比,D-Unet使用更少的池化層,減少了降采樣操作,淺層特征仍然保留了較多的小目標(biāo)信息,改善小目標(biāo)的分割結(jié)果。
D-Unet 網(wǎng)絡(luò)依舊采用編碼-解碼結(jié)構(gòu),并在解碼網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)編碼和解碼對(duì)應(yīng)層的特征融合,網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。它由收縮路徑和擴(kuò)張路徑組成,其中,收縮路徑是卷積網(wǎng)絡(luò)結(jié)構(gòu),它的架構(gòu)是一種重復(fù)的結(jié)構(gòu),每次重復(fù)中都包含2 個(gè)卷積層和一個(gè)pooling層;卷積層中卷積核的大小均為3×3,激活函數(shù)使用ReLU,兩個(gè)卷積層之后是一個(gè)2×2 的步長(zhǎng)為2 的max pooling 層。每一次下采樣都將特征通道數(shù)加倍。與U-Net 網(wǎng)絡(luò)相比,D-Unet 網(wǎng)絡(luò)結(jié)構(gòu)使用了更少的pooling 層,收縮路徑中只經(jīng)過了3 個(gè)pooling 層,得到了原圖1/8 大小的特征圖。過多的池化層雖然可以增加感受野,但也會(huì)導(dǎo)致部分信息的損失,因此本文只用到了3 個(gè)pooling 層,目的是保留更多的圖像信息。與此同時(shí),減少pooling 層雖然可以保留更多的圖像信息,卻造成感受野變小。本文采用3 個(gè)卷積核大小為3×3,擴(kuò)張率為2 的擴(kuò)張卷積來取代常規(guī)卷積以增加感受野的大小。第k層感受野大小計(jì)算公式如下:
其中,lk-1是第k-1 層的感受野大小,而fk是當(dāng)前層的卷積核大小,si是第i層的步長(zhǎng)。從式(4)可以看出,當(dāng)采用擴(kuò)張率大于1 的擴(kuò)張卷積時(shí),增加了fk的大小,增加了感受野的大小。D-Unet 最后一個(gè)擴(kuò)張卷積層的感受野大小為164×164,可以檢測(cè)到數(shù)據(jù)集中最小的目標(biāo)(16×16)。擴(kuò)張路徑中的每一步都首先使用反卷積(up-convolution),每次使用反卷積都將特征通道數(shù)量減半,特征圖的大小加倍。反卷積之后,將反卷積的結(jié)果與收縮路徑中對(duì)應(yīng)步驟的特征圖拼接起來,對(duì)拼接后的特征圖進(jìn)行2 次3×3 卷積。最后一層的卷積核大小為1×1,將32 通道的特征圖轉(zhuǎn)化為特定深度(分類數(shù))的結(jié)果。
本次實(shí)驗(yàn)使用的是GTSDB[17]數(shù)據(jù)庫(kù)。GTSDB整個(gè)數(shù)據(jù)庫(kù)包含900 張圖片,總共包含43 類交通標(biāo)志,每幅圖像像素為1 360×800,圖像格式為ppm,每張圖像包含0 到6 個(gè)交通標(biāo)志,這些交通標(biāo)志的大小從16×16 到128×128。
GTSDB 是用于目標(biāo)檢測(cè)的數(shù)據(jù)集,語義分割是對(duì)圖像中的每一個(gè)像素進(jìn)行分類,因此使用Photoshop軟件將GTSDB 數(shù)據(jù)的圖像格式從ppm 轉(zhuǎn)換成jpg 格式,并使用Labelme 工具對(duì)圖片進(jìn)行標(biāo)記,將這些圖片標(biāo)記成適用于語義分割網(wǎng)絡(luò)的數(shù)據(jù)集。
Fig.2 D-Unet convolutional neural network structure圖2 D-Unet卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
對(duì)于卷積神經(jīng)網(wǎng)絡(luò)而言,模型越復(fù)雜,特征表達(dá)能力越強(qiáng),分割的效果越好,但是卻容易犧牲對(duì)未知數(shù)據(jù)的解析能力而過分著重于訓(xùn)練數(shù)據(jù)。這種情況通常會(huì)導(dǎo)致訓(xùn)練數(shù)據(jù)非常好,但在測(cè)試數(shù)據(jù)集以及未知數(shù)據(jù)集上效果很差,這種現(xiàn)象被稱為過擬合。為了避免這種情況的發(fā)生,通常會(huì)擴(kuò)充數(shù)據(jù)集來適應(yīng)更復(fù)雜的神經(jīng)網(wǎng)絡(luò),同時(shí)保證模型在測(cè)試數(shù)據(jù)集上有好的表現(xiàn)。針對(duì)GTSDB 數(shù)據(jù)集,本文通過圖像的幾何變換來擴(kuò)充圖像的數(shù)據(jù)量。圖3 為部分?jǐn)?shù)據(jù)擴(kuò)充圖像,共形成2 000 幅圖像像素尺寸為1 360×800的圖像數(shù)據(jù)集。該圖像數(shù)據(jù)集(訓(xùn)練集1 284 幅,驗(yàn)證集433 幅,測(cè)試集283 幅)共包含43 類分割對(duì)象。數(shù)據(jù)增強(qiáng)主要采用以下幾種做法:
(1)翻轉(zhuǎn)變換,主要包括三種,分別是水平、垂直和水平垂直翻轉(zhuǎn)。
(2)噪聲擾動(dòng),對(duì)圖像的每個(gè)RGB 像素進(jìn)行隨機(jī)擾動(dòng),最常用的噪聲模式是高斯噪聲。
(3)隨機(jī)修剪。
軟件環(huán)境為Ubuntu16.04 操作系統(tǒng),深度學(xué)習(xí)軟件框架為Pytorch,硬件環(huán)境為Intel?Xeon?CPU E5-2630 v3 2.40 GHz 處理器,GPU 為Nvidia Tesla P40。表1 為各類目標(biāo)對(duì)應(yīng)的Ground Truth 像素值。圖4 所示為自制的道路標(biāo)志圖像分割數(shù)據(jù)集示例,數(shù)據(jù)集中的每幅圖包含0 到6 個(gè)交通標(biāo)志。
實(shí)驗(yàn)結(jié)果的評(píng)價(jià)采用平均交并比(mean intersection over union,MIoU)進(jìn)行評(píng)價(jià),其中IoU 表示預(yù)測(cè)結(jié)果與標(biāo)注信息的交集區(qū)域比上并集區(qū)域,而平均IoU 則為所有類IoU 值的平均值。假設(shè)共有k+1個(gè)類(其中包含一個(gè)空類或背景),pij表示本屬于i類但被預(yù)測(cè)為類j的像素?cái)?shù)量,pii表示預(yù)測(cè)正確真正的數(shù)量,pij和pji為假正和假負(fù),則:
Fig.3 Partial data augmented image圖3 部分?jǐn)?shù)據(jù)擴(kuò)充圖像
Table 1 GT pixel values corresponding to some road marking targets表1 道路標(biāo)志目標(biāo)對(duì)應(yīng)的GT 像素值
Fig.4 Experimental database images圖4 實(shí)驗(yàn)數(shù)據(jù)庫(kù)圖像
在本研究中,網(wǎng)絡(luò)模型的訓(xùn)練采用適應(yīng)性矩估計(jì)算法(adaptive moment estimation,ADAM)。初始學(xué)習(xí)率設(shè)置為0.001,迭代次數(shù)(epoch)固定在20 次,批處理大小分別設(shè)置為10、20、30、40 和50,實(shí)驗(yàn)結(jié)果如圖5 所示。3 層空洞卷積層分別采用了不同的擴(kuò)張系數(shù),以研究擴(kuò)張系數(shù)對(duì)模型分割性能的影響,第一層到第三層的擴(kuò)張系數(shù)共實(shí)驗(yàn)了以下幾種組合,分別是1-2-4,2-2-2,2-4-8,4-4-4,實(shí)驗(yàn)結(jié)果如圖6 所示。
Fig.5 Accuracy at different batch_sizes圖5 不同批輸入尺寸下的精度
Fig.6 Accuracy at different expansion rates圖6 不同擴(kuò)張率下的精度
在實(shí)驗(yàn)過程中,分別使用原來的U-Net 網(wǎng)絡(luò)模型結(jié)構(gòu)與本文提出的D-Unet 網(wǎng)絡(luò)模型結(jié)構(gòu)在上述數(shù)據(jù)集上進(jìn)行道路標(biāo)志分割,以平均交并比和參數(shù)量作為評(píng)價(jià)標(biāo)準(zhǔn)。實(shí)驗(yàn)結(jié)果見圖7 和表2。
Fig.7 Example of test set segmentation results圖7 測(cè)試集分割結(jié)果示例
Table 2 Comparison of experimental results of different algorithms表2 不同算法實(shí)驗(yàn)結(jié)果對(duì)比
由表2 可以看出,與U-Net 在數(shù)據(jù)集上的分割結(jié)果相比,本文算法可以將交通標(biāo)志分割的MIoU 提升約3.71 個(gè)百分點(diǎn),參數(shù)量減少到原來的85%。相比于U-Net,本文提出的D-Unet 結(jié)構(gòu)使用了更少的池化操作,將神經(jīng)網(wǎng)絡(luò)的輸出特征增加了一倍,保留了更多的圖像信息。同時(shí),用到的反卷積層也更少,這使得網(wǎng)絡(luò)的參數(shù)量更少。池化層的減少也意味著感受野的減少,D-Unet 使用空洞卷積代替常規(guī)卷積來增加感受野,讓每個(gè)卷積輸出都包含較大范圍的信息。不同擴(kuò)張系數(shù)組合得到的網(wǎng)絡(luò)分割結(jié)果也不同,當(dāng)空洞卷積的尺寸接近特征圖尺寸,即擴(kuò)張率接近特征映射大小,圖像邊界響應(yīng)無法捕捉遠(yuǎn)距離信息,而是退化為簡(jiǎn)單的1×1 卷積核,只有卷積核中心點(diǎn)的權(quán)重起了作用。故此,本次實(shí)驗(yàn)中采用的4 種不同的擴(kuò)張系數(shù)中,其中擴(kuò)張系數(shù)為2-2-2 相比于其他擴(kuò)張率得到的分割效果更好。
圖7 為神經(jīng)網(wǎng)絡(luò)在測(cè)試集上對(duì)道路交通標(biāo)志的分割結(jié)果。從圖7 可以看出,D-Unet可以檢測(cè)到數(shù)據(jù)集中最小的目標(biāo)(16×16)并進(jìn)行準(zhǔn)確的分割,同時(shí)路標(biāo)的邊框等能夠較好地保持其完整性,得到更好的分割效果。
本文為了解決道路路標(biāo)的語義分割問題,在UNet 網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上提出了D-Unet 網(wǎng)絡(luò)結(jié)構(gòu),減少了池化層,采用擴(kuò)張卷積代替常規(guī)卷積,增加感受野,減少了網(wǎng)絡(luò)模型的參數(shù)量并提高了分割的MIoU。實(shí)驗(yàn)結(jié)果表明,本文模型比U-Net 在測(cè)試集精度上提高了3.71 個(gè)百分點(diǎn),參數(shù)量減少到了U-Net 的85%,且對(duì)于小目標(biāo)和邊緣的分割更加精確,能夠滿足道路路標(biāo)的分割需求。但是在研究過程中還存在一些問題,就是對(duì)小目標(biāo)的分割不夠精細(xì),并且在光照條件復(fù)雜、天氣狀況不佳、交通標(biāo)志褪色變形等情況下,分割結(jié)果較差。因此,下一步工作重點(diǎn)是針對(duì)復(fù)雜場(chǎng)景下的交通標(biāo)志和小目標(biāo)交通標(biāo)志進(jìn)行分割。