馬書浩,安居白,于 博
大連海事大學(xué) 信息科學(xué)技術(shù)學(xué)院,遼寧 大連 116026
自2015年全卷積神經(jīng)網(wǎng)絡(luò)[1](Fully Convolution Neural Network,F(xiàn)CNN)的提出,語(yǔ)義分割技術(shù)得到國(guó)內(nèi)外學(xué)者的廣泛研究[2-6],它在無(wú)人駕駛[7]領(lǐng)域有著非常重要的作用。目前,基于可見光的無(wú)人駕駛感知系統(tǒng)使用語(yǔ)義分割技術(shù)感知路面、車道線、行人、機(jī)動(dòng)車和建筑物等已成為大趨勢(shì),尤其是對(duì)路面的感知能力是目標(biāo)檢測(cè)技術(shù)很難達(dá)到的。由于硬件算力的限制,該領(lǐng)域?qū)Ω呔葘?shí)時(shí)語(yǔ)義分割算法的需求非常迫切。但是,當(dāng)前大多數(shù)語(yǔ)義分割算法的研究工作更關(guān)注提升精度而忽略算法分割速度,而現(xiàn)有的實(shí)時(shí)語(yǔ)義分割算法存在分割精度不足的問(wèn)題,針對(duì)這個(gè)問(wèn)題,本文提出了基于DeepLabv2改進(jìn)的實(shí)時(shí)語(yǔ)義分割算法。
在文獻(xiàn)[3]中提出Unet 分割算法,Unet 是對(duì)稱的U型神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),具有該結(jié)構(gòu)的算法在分割較少類別時(shí)速度較快、精度較高,但是當(dāng)類別較多時(shí),靠近神經(jīng)網(wǎng)絡(luò)輸出端的參數(shù)數(shù)量增加,導(dǎo)致大量參數(shù)與高分辨率特征做點(diǎn)積運(yùn)算,降低分割速度。文獻(xiàn)[8]中提出的PSPNet通過(guò)聚合多種尺度特征獲取多感受視野信息,提升了算法對(duì)場(chǎng)景解析和語(yǔ)義分割的能力,但存在下采樣丟失語(yǔ)義信息和空間信息的問(wèn)題。針對(duì)該問(wèn)題,文獻(xiàn)[9]中的DeepLabv2 算法提出使用空洞金字塔池化網(wǎng)絡(luò)避免下采樣并且獲得多感受視野信息,但是該算法分割速度低。文獻(xiàn)[10]提出空洞金字塔池化網(wǎng)絡(luò)存在網(wǎng)格問(wèn)題,針對(duì)網(wǎng)格問(wèn)題,Wang 等人提出了基于稠密上采樣的語(yǔ)義分割算法,該算法是在文獻(xiàn)[9]的基礎(chǔ)上做的進(jìn)一步研究工作,并未提升算法分割速度。在文獻(xiàn)[11]中提出使用循環(huán)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)條件隨機(jī)場(chǎng)進(jìn)而增強(qiáng)算法對(duì)圖像細(xì)節(jié)的分割能力,由于循環(huán)神經(jīng)網(wǎng)絡(luò)不利于并行計(jì)算,導(dǎo)致算法分割速度較低。上述算法在分割精度方面都取得很好的研究成果,但是無(wú)法被應(yīng)用于實(shí)時(shí)分割場(chǎng)景,實(shí)時(shí)是指算法每秒處理圖像25 幀以上。構(gòu)建實(shí)時(shí)語(yǔ)義分割算法不僅要考慮精度性能,還要考慮速度性能,因此難度較大,文獻(xiàn)[12]提出的SegNet 算法以最大池化索引指導(dǎo)上采樣可以減少神經(jīng)元權(quán)重與特征之間的點(diǎn)積運(yùn)算量,使算法達(dá)到實(shí)時(shí)分割速度,但是這種上采樣方式存在特征圖稀疏問(wèn)題,進(jìn)而導(dǎo)致算法分割精度低。在文獻(xiàn)[13]中提出的ENet 算法通過(guò)減少神經(jīng)元權(quán)重?cái)?shù)量使算法達(dá)到實(shí)時(shí)分割速度,但是算法的非線性程度低、擬合能力弱導(dǎo)致分割精度低。文獻(xiàn)[14]中提出基于SqueezeNet[15]的SQ 無(wú)人駕駛場(chǎng)景實(shí)時(shí)語(yǔ)義分割算法,但是由于SqueezeNet 編碼特征能力不足,導(dǎo)致該算法分割精度低。
本文認(rèn)為文獻(xiàn)[9]中的DeepLabv2 使用空洞金字塔池化網(wǎng)絡(luò)增加算法分割不同尺度目標(biāo)的能力進(jìn)而提升算法分割精度是該算法的優(yōu)點(diǎn)。但是該算法在分割速度方面存在不足,主要由以下原因?qū)е拢涸撍惴ㄊ褂肦esNet[16]中參數(shù)數(shù)量較多的ResNet101作為編碼器并且缺少解碼特征的階段,導(dǎo)致編碼器輸出的特征語(yǔ)義信息不準(zhǔn)確,為了彌補(bǔ)語(yǔ)義不準(zhǔn)確的問(wèn)題,該算法使用大量參數(shù)構(gòu)建空洞金字塔池化網(wǎng)絡(luò),導(dǎo)致空洞金字塔池化網(wǎng)絡(luò)參數(shù)過(guò)多且與編碼器輸出的高分辨率特征做點(diǎn)積運(yùn)算,增加了算法的點(diǎn)積運(yùn)算量,降低了算法分割速度。
基于以上分析,本文對(duì)DeepLabv2 做出以下改進(jìn):使用輕量卷積神經(jīng)網(wǎng)絡(luò)Xception[17]代替ResNet101作為特征編碼器并且增加解碼特征的階段以增加特征語(yǔ)義信息的準(zhǔn)確性進(jìn)而減少空洞金字塔池化網(wǎng)絡(luò)的參數(shù),提高了算法分割速度,使算法被應(yīng)用在實(shí)時(shí)分割場(chǎng)景中變的可行。除此之外,本文針對(duì)Focal Loss[18]損失函數(shù)在多分類任務(wù)中難以選擇合適的超參數(shù)問(wèn)題做出改進(jìn),并將其作為損失函數(shù)訓(xùn)練算法,進(jìn)一步提升分割精度。
首先介紹算法執(zhí)行流程。如圖1,算法的輸入數(shù)據(jù)是3×W×H像素大小的圖像,輸出是1×W×H大小的矩陣,矩陣中的每一個(gè)元素值都是整數(shù),且表示像素的類別。算法在執(zhí)行過(guò)程中,首先使用輕量卷積神經(jīng)網(wǎng)絡(luò)Xception 作為編碼器對(duì)輸入圖像提取特征,Xception 由深度可分離卷積[19]構(gòu)建而成,具有編碼特征語(yǔ)義信息準(zhǔn)確、計(jì)算量小的特點(diǎn),因此可減少算法在編碼特征階段的時(shí)間消耗;其次使用特征金字塔網(wǎng)絡(luò)(FPN)[20]作為解碼器解碼特征,增加解碼器雖然增加額外的少量參數(shù),但是解碼后的特征語(yǔ)義信息更準(zhǔn)確,可避免設(shè)計(jì)具有大量參數(shù)的空洞金字塔池化網(wǎng)絡(luò)(ASPP)與高分辨率特征做點(diǎn)積運(yùn)算而降低分割速度,這是本文算法對(duì)比DeepLabv2 可實(shí)時(shí)分割圖像且具有較高分割精度的重要原因;最后使用具有少量參數(shù)的空洞金字塔池化網(wǎng)絡(luò)(ASPP)獲取不同感受視野信息,增加算法分割不同尺度目標(biāo)的能力,另外,采用本文選擇超參數(shù)方法作為損失函數(shù)的Focal Loss 可進(jìn)一步提升算法分割精度。下面具體介紹編碼器、解碼器、空洞金字塔池化網(wǎng)絡(luò)的結(jié)構(gòu)和選擇超參數(shù)的方法。
圖1 算法執(zhí)行流程圖
文獻(xiàn)[17]在InceptionV3[21]的基礎(chǔ)上將Inception模塊替換為深度可分離卷積(圖2),然后結(jié)合ResNet的跳躍連接[16]提出了 Xception。諸如 ResNet、VGG[22]等網(wǎng)絡(luò)僅依靠堆疊卷積核對(duì)輸入數(shù)據(jù)采用滑動(dòng)窗口的方式進(jìn)行卷積運(yùn)算使網(wǎng)絡(luò)同時(shí)學(xué)習(xí)數(shù)據(jù)的空間相關(guān)性和通道相關(guān)性。而Xception 使用深度可分離卷積將兩種相關(guān)性顯示地分離學(xué)習(xí)。深度可分離卷積與普通卷積相比,在卷積運(yùn)算過(guò)程中,首先對(duì)特征的每個(gè)通道單獨(dú)學(xué)習(xí)空間相關(guān)性,然后使用1×1 的卷積學(xué)習(xí)通道相關(guān)性,此卷積方式與普通卷積相比所具有的優(yōu)點(diǎn)是可以使用更少的參數(shù)完成對(duì)特征的空間相關(guān)性和通道相關(guān)性的學(xué)習(xí)。具體來(lái)講,對(duì)于維度為N×M×M(N為通道數(shù))的特征,使用K1×K2大小卷積核輸出P個(gè)通道,在步長(zhǎng)為1且不考慮偏置項(xiàng)(bias)的情況下,標(biāo)準(zhǔn)卷積方式需要的參數(shù)數(shù)量為K1×K2×N×P,而深度可分離卷積需要的數(shù)量為K1×K2×N+N×P,后者參數(shù)數(shù)量是前者的1/P+1/(K1×K2)倍[23],由此可以看出,隨著卷積核尺度或輸出通道數(shù)的增加,深度可分離卷積參數(shù)少的優(yōu)勢(shì)越明顯,因此其計(jì)算量越少,速度越快。本文統(tǒng)計(jì),在Xception網(wǎng)絡(luò)中,深度可分離卷積層數(shù)占到了網(wǎng)絡(luò)總卷積層數(shù)的77.7%以上,由此可以看出Xception 使用大量深度可分離卷積減少了網(wǎng)絡(luò)計(jì)算量,但其提取特征的能力反而提高。Xception在公開大規(guī)模數(shù)據(jù)集Image-Net[24]上取得0.790的top-1正確率[17],超過(guò)ResNet、VGG網(wǎng)絡(luò),并且在谷歌內(nèi)部數(shù)據(jù)集JFT[25]上的分類正確率比Inception V3 提高 6.78 mAP(mean Average Precision)[17]。通俗地講,本文將深度可分離卷積與普通卷積的關(guān)系類比為普通卷積網(wǎng)絡(luò)與全連接網(wǎng)絡(luò)的關(guān)系,普通卷積利用圖像中的空間局部相關(guān)性進(jìn)而可以使用比全連接網(wǎng)絡(luò)更少的參數(shù)完成對(duì)特征的提取,而深度可分離卷積將空間相關(guān)性與通道相關(guān)性解耦,因此可以使用比普通卷積更少的參數(shù)完成對(duì)特征的兩種相關(guān)性的學(xué)習(xí)。綜上可以看出Xception 具有參數(shù)少、提取特征能力強(qiáng)的優(yōu)勢(shì),這也是本文選擇Xception作為編碼器的原因。
圖2 深度可分離卷積
2.1.2 特征金字塔網(wǎng)路
從廣義上講,特征金字塔網(wǎng)絡(luò)是一種融合不同層級(jí)特征的方式,并非特指某種具體網(wǎng)絡(luò)結(jié)構(gòu)。如圖3 所示,將深層特征上采樣與淺層特征以相加的方式融合即可作為特征金字塔網(wǎng)絡(luò)。此融合方式可有效恢復(fù)特征的空間信息和語(yǔ)義信息。當(dāng)前,基于全卷積神經(jīng)網(wǎng)絡(luò)的語(yǔ)義分割技術(shù)不僅需要準(zhǔn)確的語(yǔ)義信息還需要精確的空間信息。在編碼階段,輸入端圖像中豐富的語(yǔ)義信息和空間信息被編碼器編碼在淺層特征中[1]。為恢復(fù)這些信息,使用特征金字塔網(wǎng)絡(luò)作為解碼器解碼特征,在解碼時(shí)融合淺層特征與深層特征是首選,本文使用圖3方式解碼特征。與DeepLabv2相比,本文算法雖然增加解碼器導(dǎo)致增加了額外計(jì)算量,但是真正影響DeepLabv2分割速度的原因是空洞金字塔池化網(wǎng)絡(luò)中的多分枝并行卷積與高分辨率特征做點(diǎn)積運(yùn)算。壓縮空洞金字塔池化網(wǎng)絡(luò)參數(shù)數(shù)量可在很大程度上提升算法分割速度,而本文使用解碼器解碼后的特征具有語(yǔ)義信息準(zhǔn)確的優(yōu)點(diǎn),這為最大限度地壓縮空洞金字塔池化網(wǎng)絡(luò)參數(shù)數(shù)量提供了保證。
圖3 特征金字塔網(wǎng)絡(luò)
2.1.3 空洞金字塔池化網(wǎng)絡(luò)
空洞金字塔池化由多個(gè)卷積分支組成(圖4),不同分支中的卷積核膨脹率不同,同一分支中的卷積核膨脹率相同[9]。膨脹率大,卷積核尺度大,利于算法分割大目標(biāo);膨脹率小,卷積核尺度小,利于算法分割小目標(biāo)。鑒于上述特性,在本文算法中使用空洞金字塔池化網(wǎng)絡(luò)使算法具有多種尺度卷積核,進(jìn)而增加算法分割不同尺度目標(biāo)的能力。但空洞金字塔池化網(wǎng)絡(luò)參數(shù)數(shù)量不宜過(guò)多,因?yàn)檫^(guò)多的參數(shù)與高分辨率特征做點(diǎn)積運(yùn)算影響算法分割速度,在本文算法中的空洞金字塔池化網(wǎng)絡(luò)由膨脹率為1、3、6 共3 個(gè)并行卷積分支構(gòu)成,每個(gè)分支內(nèi)部?jī)H有2 層卷積且輸入輸出通道數(shù)只有128,但算法分割精度與DeepLabv2不相上下。
圖4 空洞金字塔池化網(wǎng)絡(luò)簡(jiǎn)圖
基于CNN 的算法需要大量數(shù)據(jù)訓(xùn)練算法參數(shù),但是由于收集數(shù)據(jù)存在困難、標(biāo)注數(shù)據(jù)代價(jià)高的原因?qū)е聰?shù)據(jù)中不同類別的樣本數(shù)量相差懸殊(類別不均衡),在語(yǔ)義分割數(shù)據(jù)集中此問(wèn)題更嚴(yán)重,這是因?yàn)檎Z(yǔ)義分割是像素級(jí)別的分類,對(duì)目標(biāo)的每個(gè)像素進(jìn)行類別標(biāo)注代價(jià)較高,而標(biāo)注小目標(biāo)、邊緣復(fù)雜的目標(biāo)代價(jià)更高,因此導(dǎo)致了語(yǔ)義分割數(shù)據(jù)集中出現(xiàn)嚴(yán)重的類別不均衡問(wèn)題,影響了算法對(duì)樣本較少的類別學(xué)習(xí)效果。在文獻(xiàn)[18]中提出Focal Loss 損失函數(shù)可以為每個(gè)樣本分配重要性權(quán)重進(jìn)而緩解正負(fù)樣本不均衡的問(wèn)題。式(1)為二分類的Focal Loss公式:
其中,y表示樣本類別標(biāo)簽,y′表示預(yù)測(cè)概率,α表示超參數(shù),用于平衡正負(fù)樣本的重要性。
兩臺(tái)相機(jī)都擁有強(qiáng)力的機(jī)身防抖系統(tǒng),并宣稱配合光學(xué)防抖鏡頭時(shí)可以達(dá)到最高6.5擋防抖的驚人效果。不過(guò)奧林巴斯的鏡頭群中擁有光學(xué)防抖的鏡頭并不多,相比之下松下在這方面優(yōu)勢(shì)明顯。
對(duì)于二分類任務(wù),使用手工調(diào)整2個(gè)超參數(shù)的方式是可行的,但是在語(yǔ)義分割中對(duì)多個(gè)類別分類導(dǎo)致手工調(diào)整超參數(shù)的方式變的不可行。在Cityscapes[26]和Pascal VOC2012[27]語(yǔ)義分割數(shù)據(jù)集中分別有19個(gè)類別和21個(gè)類別,使用Focal Loss作為損失函數(shù)則需要分別設(shè)置19個(gè)和21 個(gè)超參數(shù),這使得在實(shí)數(shù)空間范圍內(nèi)選擇一組合適的超參數(shù)在語(yǔ)義分割中變的非常困難。針對(duì)這個(gè)問(wèn)題,本文提出了一種基于數(shù)據(jù)統(tǒng)計(jì)的簡(jiǎn)單、直接的超參數(shù)選擇方法,使得Focal Loss在多類別分類中選擇合適的超參數(shù)變的可行。該方法對(duì)訓(xùn)練集中的數(shù)據(jù)統(tǒng)計(jì)每個(gè)類別的像素?cái)?shù)量在訓(xùn)練集中全部像素?cái)?shù)量的占比,以此占比作為超參數(shù)平衡每個(gè)類別重要性,比如Cityscapes有19個(gè)類別,將會(huì)通過(guò)數(shù)據(jù)集選出19個(gè)超參數(shù)。從式(1)分析可知,當(dāng)某一類別的像素?cái)?shù)量占比較高時(shí),使用本文方法選擇的超參數(shù)可將該類別樣本的重要性大幅度縮減,進(jìn)而降低該類別樣本的損失值。
本文實(shí)驗(yàn)選擇國(guó)際公開的Cityscapes 和Pascal VOC2012作為實(shí)驗(yàn)數(shù)據(jù)集。
Cityscapes 是大規(guī)模無(wú)人駕駛場(chǎng)景語(yǔ)義分割數(shù)據(jù)集,該數(shù)據(jù)集共包含來(lái)自50 個(gè)不同城市的街道場(chǎng)景中記錄的多種立體視頻序列,共有19 個(gè)語(yǔ)義分割類別,5 000 張精細(xì)標(biāo)注的圖像,其中訓(xùn)練集、驗(yàn)證集和測(cè)試集分別包含 2 975 張、500 張、1 525 張圖像,每張圖像大小是1 024×2 048像素。由于該圖像分辨率過(guò)高導(dǎo)致硬件無(wú)法進(jìn)行大批量訓(xùn)練,因此對(duì)圖像縮放和剪裁768×1 536像素大小。
Pascal VOC2012語(yǔ)義分割數(shù)據(jù)集共有21個(gè)語(yǔ)義分割類別,4 369 張精細(xì)標(biāo)注圖像,其中訓(xùn)練集、驗(yàn)證集和測(cè)試集分別包含1 464張、1 449張、1 456張圖像。由于該數(shù)據(jù)集每張圖像尺度大小不同,算法無(wú)法進(jìn)行批量訓(xùn)練,需要對(duì)圖像進(jìn)行預(yù)處理,本文使用0 像素值補(bǔ)齊的方式將所有輸入圖像固定在512×512像素大小,以方便算法批量訓(xùn)練。
本文實(shí)驗(yàn)的實(shí)驗(yàn)顯卡型號(hào)是GTX1080Ti。算法的編碼器使用Xception 在Image-Net 數(shù)據(jù)集上預(yù)訓(xùn)練模型,初始學(xué)習(xí)速率是0.005,學(xué)習(xí)速率調(diào)整策略為多項(xiàng)式衰減,權(quán)重衰減使用L2 正則化,衰減系數(shù)是0.000 5,動(dòng)量設(shè)置為0.9,深度學(xué)習(xí)框架為PyTorch。
本文使用平均交并比(mean Intersection over Union,mIoU)和每秒處理幀數(shù)(Frames Per Second,F(xiàn)PS)作為算法性能的評(píng)價(jià)指標(biāo)。
mIoU是真實(shí)值、預(yù)測(cè)值集合的交集和并集之比,用于評(píng)價(jià)算法精度。式(2)是mIoU 計(jì)算公式,其中,k表示類別數(shù)量,TP表示預(yù)測(cè)為真正數(shù)量,F(xiàn)N表示預(yù)測(cè)為假負(fù)數(shù)量,F(xiàn)P表示預(yù)測(cè)為假正數(shù)量。
FPS 用于評(píng)價(jià)算法速度,式(3)是本文計(jì)算FPS 公式,其中,N表示圖像數(shù)量,Tj表示算法處理第j張圖像的時(shí)間。
為驗(yàn)證本文算法的分割性能,選取3 種實(shí)時(shí)和3 種非實(shí)時(shí)語(yǔ)義分割算法與本文算法對(duì)比。
文獻(xiàn)[28]工作表明,深層網(wǎng)絡(luò)提取到的特征具有更強(qiáng)的平移、縮放、旋轉(zhuǎn)不變性,而文獻(xiàn)[29]和文獻(xiàn)[22]工作也表明,網(wǎng)絡(luò)層數(shù)對(duì)特征的表達(dá)能力是至關(guān)重要的。從表1 可以看出,由于ENet 和SQ 使用網(wǎng)絡(luò)層數(shù)較少的From Scratch和SqueezeNet[15]作為基礎(chǔ)網(wǎng)絡(luò)導(dǎo)致分割精度(mIoU)過(guò)低,雖然其分割速度比本文算法高,但是通過(guò)圖5可視化結(jié)果可以看出過(guò)低的mIoU導(dǎo)致分割效果混亂,難以被應(yīng)用于實(shí)際場(chǎng)景中。而另一個(gè)高速實(shí)時(shí)分割算法SegNet雖然采用參數(shù)稍多的VGG16[22]作為基礎(chǔ)網(wǎng)絡(luò),但是本文分析其使用最大池化索引的上采樣方式導(dǎo)致特征圖稀疏,進(jìn)而分割精度低,并且其分割速度也比本文算法低14 幀/s。文獻(xiàn)[1,4]中的工作表明,在CNN 網(wǎng)絡(luò)中,淺層特征保留著更多的細(xì)節(jié)信息和空間信息,利于算法分割目標(biāo)的邊緣。而Unet 充分地利用了淺層特征的細(xì)節(jié)信息使其分割精度高于ENet和SQ,但其使用VGG16 作為基礎(chǔ)網(wǎng)絡(luò)且缺少空洞金字塔池化網(wǎng)絡(luò)導(dǎo)致其精度低于本文算法。CRF-RNN 以RNN實(shí)現(xiàn)條件隨機(jī)場(chǎng)雖然可以對(duì)CNN 的粗分割結(jié)果進(jìn)一步精細(xì)化進(jìn)而提升算法分割精度,但RNN 不利于并行計(jì)算,因此在算法的實(shí)際運(yùn)行中分割速度較低。再對(duì)比DeepLabv2和本文算法,可以看出在精度方面本文算法只低1.09%,但是分割速度高出DeepLabv2 接近一倍的FPS(37 幀/s),而且從圖5可以看出,兩者算法在分割效果上無(wú)明顯不同。
圖5 不同算法分割效果
表1 算法在Pascal VOC2012數(shù)據(jù)集上的性能對(duì)比
接下來(lái)通過(guò)圖5進(jìn)一步分析算法的性能。從圖5中第二行和第三行可以看出SegNet、ENet和SQ算法對(duì)圖像中人和貓區(qū)域的分割結(jié)果出現(xiàn)較大斑塊狀分類錯(cuò)誤區(qū)域(藍(lán)顏色),并且將較大面積的背景誤分類為前景(藍(lán)顏色),而對(duì)于第一行圖像中目標(biāo)較小的水瓶沒(méi)有出現(xiàn)此分割現(xiàn)象,Unet 和CRF-RNN 對(duì)誤分類現(xiàn)象有明顯改善。而本文算法和DeepLabv2 中的空洞金字塔池化具有較大感受視野的卷積核,因此對(duì)三幅圖的分割結(jié)果均沒(méi)有產(chǎn)生斑塊狀區(qū)域。
首先與表2中前三種實(shí)時(shí)分割算法對(duì)比,從精度評(píng)價(jià)指標(biāo)(mIoU)來(lái)看,本文算法高出三種實(shí)時(shí)分割算法12.6%、10.4%和8.9%的mIoU,從速度評(píng)價(jià)指標(biāo)(FPS)可以看出本文算法分割速度高于SegNet,但略低于ENet和SQ。由此可以看出本文算法在處理高分辨率圖像方面依然具有高出三種實(shí)時(shí)分割算法約10%的mIoU精度優(yōu)勢(shì),而且分割速度與三種實(shí)時(shí)算法更加相近。與Unet和CRF-RNN 相比,本文算法在速度和精度兩方面均具有較高的優(yōu)勢(shì)。與DeepLabv2 相比,本文算法精度低1.3%的mIoU,但分割速度卻高出13 幀/s。
接下來(lái)通過(guò)圖6 中的可視化結(jié)果進(jìn)一步分析算法在Cityscapes 數(shù)據(jù)集上的性能。從圖6 可以看出,算法對(duì)路面、建筑、樹、汽車、天空分割效果較好,沒(méi)有產(chǎn)生斑塊狀的分類錯(cuò)誤區(qū)域,這五種類別在圖像中多數(shù)屬于大目標(biāo);從圖6中還能看出算法對(duì)桿狀物體和遠(yuǎn)處的行人分割效果良好,這兩種目標(biāo)在圖像中多數(shù)屬于小目標(biāo),由此可知算法對(duì)大目標(biāo)分割效果較好,對(duì)小目標(biāo)分割效果良好,這主要得益于空洞金字塔池化網(wǎng)絡(luò)中的不同尺度卷積核在進(jìn)行卷積運(yùn)算時(shí)所使用到信息不同,即多感受視野信息。在本文中算法中使用空洞金字塔池化網(wǎng)絡(luò)獲得多感受視野信息。
圖6 算法在Cityscapes數(shù)據(jù)集分割效果
綜合表1 和表2 數(shù)據(jù)可以看出本文算法處理Pascal VOC2012 和Cityscapes 數(shù)據(jù)集圖像均可達(dá)到實(shí)時(shí)分割速度,并且在處理具有較高分辨率圖像的Cityscapes 數(shù)據(jù)集時(shí),仍可在保持較高的分割精度前提下,其分割速度超過(guò)三種非實(shí)時(shí)語(yǔ)義分割算法和SegNet實(shí)時(shí)語(yǔ)義分割算法。本文分析認(rèn)為,當(dāng)特征的維度為C×M×N(C表示通道數(shù),M和N表示寬和高)且被2 倍上采樣T次時(shí),特征的信息量相比上采樣之前增加C×2T×M×2T×N-C×M×N,當(dāng)輸入圖像尺度較大時(shí),M和N較大,該差值更加明顯。而本文基于Xception作為編碼器和增加特征金字塔網(wǎng)絡(luò)的前提,綜合考慮算法的速度和精度,對(duì)特征上采樣三次,緩解了U 型網(wǎng)絡(luò)結(jié)構(gòu)或是對(duì)稱網(wǎng)絡(luò)結(jié)構(gòu)算法普遍采用的五次上采樣操作導(dǎo)致的神經(jīng)網(wǎng)絡(luò)參數(shù)與高分辨率特征做點(diǎn)積運(yùn)算進(jìn)而降低分割速度的問(wèn)題。
為驗(yàn)證本文算法采用Xception 作為編碼器的有效性,選取三種不同的基礎(chǔ)網(wǎng)絡(luò)移除全連接層作為編碼器在Pascal VOC2012 和Cityscapes 數(shù)據(jù)集上與Xception進(jìn)行對(duì)比。從表3 可以看出,當(dāng)使用ResNet152 作為編碼器時(shí),算法在兩個(gè)數(shù)據(jù)集上均取得最高的分割精度,但是分割速度低于25 幀/s,失去了實(shí)時(shí)分割的性能;算法使用ResNet101 作為編碼器在兩個(gè)數(shù)據(jù)集上所取得的分割速度和精度均比Xception低,這是因?yàn)镽esNet101編碼特征能力不如Xception[17],而且使用普通的1×1 和3×3卷積核構(gòu)建而成,缺少Xception中通道可分離卷積,導(dǎo)致網(wǎng)絡(luò)參數(shù)多,影響算法分割速度;使用VGG16作為編碼器所取得的分割速度比Xception略高,但是分割精度過(guò)低,這是因?yàn)閂GG16的卷積層參數(shù)少,非線性程度低,導(dǎo)致算法擬合能力不足。綜上可知,Xception 作為編碼器具有計(jì)算效率高、編碼特征能力強(qiáng)的優(yōu)勢(shì)。
表3 不同編碼器性能對(duì)比分析
在表4 實(shí)驗(yàn)中,本文選取以VGG 和ResNet 作為編碼器的算法與本文算法在整體網(wǎng)絡(luò)結(jié)構(gòu)方面對(duì)比。其中SegNet和Unet均以VGG16作為編碼器,SegNet的解碼器可以與編碼器完全對(duì)稱,但Unet 必須將不同層級(jí)特征在通道維度上拼接,因此其解碼器參數(shù)數(shù)量與編碼器稍有不同,這兩種算法與本文算法相比,雖然其編碼器參數(shù)少且沒(méi)有空洞金字塔池化網(wǎng)絡(luò),但這兩種算法的網(wǎng)絡(luò)結(jié)構(gòu)均為U型結(jié)構(gòu),U型結(jié)構(gòu)最大的特點(diǎn)是在解碼器端需將特征逐步上采樣至輸入圖像同樣尺度大小,因此存在解碼器參數(shù)與較高分辨率特征做點(diǎn)積運(yùn)算的問(wèn)題,增加算法的分割時(shí)間。而DeepLabv2 相比表4 中其他算法,使用169 MB的ResNet101作為編碼器,增加了算法的編碼特征的時(shí)間,而且其空洞金字塔池化網(wǎng)絡(luò)參數(shù)數(shù)量接近本文算法的7 倍,因此,與本文算法相比無(wú)論在編碼階段還是空洞金字塔池化階段,本文算法在分割速度方面均有優(yōu)勢(shì)。
表4 網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比 MB
在表5 實(shí)驗(yàn)中,對(duì)Pascal VOC2012 測(cè)試集圖像按{1.25,1,0.75}共三種比例縮放,然后剪裁至原圖像素大小測(cè)試算法分割精度以分析多感受視野分割不同尺度目標(biāo)的性能。算法在訓(xùn)練階段無(wú)圖像翻轉(zhuǎn)、Focal Loss、數(shù)據(jù)增強(qiáng)技術(shù)。從表5 中可看出使用空洞金字塔池化的算法在三種縮放比例的測(cè)試集上的分割精度均達(dá)到最高,尤其當(dāng)縮放比例為1.25 時(shí),高出3.3%的mIoU,這是因?yàn)榭斩唇鹱炙鼗休^大膨脹率的卷積核更具有分割大尺度目標(biāo)的能力。本文算法是基于數(shù)據(jù)驅(qū)動(dòng)的算法,其要求數(shù)據(jù)的訓(xùn)練集和測(cè)試集具有相同分布,如果測(cè)試集圖像被不同尺度縮放將會(huì)導(dǎo)致測(cè)試集的分布與訓(xùn)練集稍有不同,因此會(huì)影響算法的測(cè)試精度。而在本文實(shí)驗(yàn)中由于1.25 和0.75 的縮放比例導(dǎo)致測(cè)試集中目標(biāo)的尺度與訓(xùn)練集相比在分布上已發(fā)生變化,進(jìn)而導(dǎo)致其數(shù)據(jù)分布發(fā)生變化,算法的分割精度相比縮放比例為1(無(wú)縮放)時(shí)有明顯下降屬于正?,F(xiàn)象,該現(xiàn)象也普遍存在基于CNN的分類、目標(biāo)檢測(cè)等任務(wù)中。
表5 感受視野性能分析(mIoU) %
接下來(lái)在同一縮放比例的前提下分析不同類別的分割精度。表6為表5中縮放比例為1時(shí)算法對(duì)五種類別的分割精度。在Pascal VOC2012 數(shù)據(jù)集中,sofa 與chair兩個(gè)類別相似(圖7),因此sofa一部分像素容易被誤分類為chair,從表6 中可以看出,使用空洞金字塔池化算法將sofa 類別的分割精度提升了7.3%,但是chair只提升0.6%,這是因?yàn)閟ofa 類別中的多數(shù)目標(biāo)尺度大,但是邊緣不如chair 復(fù)雜,使用幾種較大膨脹率的卷積核可以提升算法對(duì)大尺度目標(biāo)的分割精度,而對(duì)于邊緣復(fù)雜的chair 類別的精度只是稍有提升。cow 的一部分像素容易被誤分類成horse、bus和train兩個(gè)類的像素容易被誤分類為彼此的類別,算法在使用空洞金字塔池化后對(duì)這幾種類別的分割精度均有提升。而對(duì)于表6 中未列出的其他類別,算法使用空洞金字塔池化后對(duì)其分割精度雖有提升,但是幅度不大,其原因在于這些類中多數(shù)大尺度目標(biāo)特征明顯,無(wú)其他相近類別干擾,因此,算法不使用空洞金字塔池化技術(shù)也可取得較高的分割精度。而對(duì)于小目標(biāo),因?yàn)槠淇臻g信息在下采樣過(guò)程中丟失,使用空洞金字塔池化只能小幅度提高其分割精度。綜合表5 和表6 分析可知,空洞金字塔池化的多感受視野最突出的性能既是提升算法對(duì)多種尺度目標(biāo)和存在類別干擾的目標(biāo)的分割精度。通俗地講,人類對(duì)于難以分辨的物體會(huì)通過(guò)不同距離、不同角度獲取更多信息去辨別,而算法通過(guò)多種尺度卷積核捕捉不同感受視野信息提升算法分割不同尺度、相近的類別的精度。
表6 Pascal VOC2012五種類別分割精度(mIoU)%
圖7 算法對(duì)Pascal VOC2012五種類別錯(cuò)誤分類展示
表7 和表8 數(shù)據(jù)分別是本文對(duì)Pascal VOC2012 和Cityscapes數(shù)據(jù)集中部分類別像素?cái)?shù)量的占比統(tǒng)計(jì)。從中可以看出這兩個(gè)數(shù)據(jù)集存在嚴(yán)重的像素類別不均衡問(wèn)題,Pascal VOC2012中background像素?cái)?shù)量是bus的139 倍,Cityscapes 中 road 像素?cái)?shù)量是 motorcycle 的 407倍,這些過(guò)多像素?cái)?shù)量的類別在訓(xùn)練過(guò)程中主導(dǎo)了梯度方向,影響算法對(duì)其他類別的學(xué)習(xí)。為驗(yàn)證本文選擇超參數(shù)的方法可有效緩解上述類別不均衡的問(wèn)題,提升算法分割精度,本文在Pascal VOC2012和Cityscapes數(shù)據(jù)集上進(jìn)行了對(duì)比實(shí)驗(yàn)。在實(shí)驗(yàn)中,采用兩種方法選擇超參數(shù)α,一種是使用本文提出的方法設(shè)置α值,由于難以為Focal Loss 在兩個(gè)數(shù)據(jù)集中手工選出合適的21 個(gè)和19 個(gè)α值,因此第二種超參數(shù)選擇方式將所有類別的α設(shè)置為0,即每個(gè)類別樣本的重要性均為1。具體實(shí)驗(yàn)結(jié)果在圖8 中展示。從圖8 中可以看出,算法使用本文選擇超參數(shù)的方法與第二種相比,Pascal VOC2012和Cityscape 數(shù)據(jù)集的絕大多數(shù)類別分割精度均有提升,但是第一個(gè)類別的分割精度有明顯下降,這兩個(gè)數(shù)據(jù)集上的第一個(gè)類別分別對(duì)應(yīng)表5和表6中的background和road,這兩個(gè)類別像素?cái)?shù)量占比最大,使用本文選擇超參數(shù)方法的Focal Loss 將這兩個(gè)類別樣本重要性大幅度降低,損失值縮減較多,進(jìn)而減少了算法對(duì)這兩個(gè)類別的學(xué)習(xí),相對(duì)而言,增加了其他類別的重要性,使算法加強(qiáng)對(duì)這些類別的學(xué)習(xí)。
表7 Pascal VOC2012部分類別像素?cái)?shù)量占比
表8 Cityscapes部分類別像素?cái)?shù)量占比
圖8 超參數(shù)選擇方法對(duì)比
為滿足實(shí)時(shí)語(yǔ)義分割任務(wù)的需求,本文使用輕量卷積神經(jīng)網(wǎng)絡(luò)Xception、特征金字塔網(wǎng)絡(luò)和空洞金字塔池化網(wǎng)絡(luò)構(gòu)建實(shí)時(shí)語(yǔ)義分割算法,并對(duì)Focal Loss提出改進(jìn)的選擇超參數(shù)方法。通過(guò)在Cityscapes 和Pascal VOC2012兩個(gè)數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果表明本文算法不僅在分割精度方面高于其他算法,在分割速度方面也具有很大優(yōu)勢(shì),并且本文提出的超參數(shù)選擇的方法可提升算法分割精度,并簡(jiǎn)化Focal Loss中超參數(shù)的選擇。
本文展示的不同類別像素占比可為后續(xù)的研究工作提供參考,并擴(kuò)展至其他數(shù)據(jù)集以做進(jìn)一步的研究。