陳勁宏,陳 瑋,尹 鐘
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
在深度學(xué)習(xí)被應(yīng)用在語(yǔ)義分割領(lǐng)域之前,受當(dāng)時(shí)計(jì)算機(jī)硬件條件的限制,人們使用人工設(shè)計(jì)或者由數(shù)據(jù)統(tǒng)計(jì)得到的特征來解決分割問題。這種傳統(tǒng)方法不僅費(fèi)時(shí),而且在分割精度上也缺乏魯棒性。隨著應(yīng)用場(chǎng)景的變化,使用傳統(tǒng)方法得到的效果將會(huì)急劇下降。隨著計(jì)算機(jī)硬件設(shè)備的快速發(fā)展,基于深度學(xué)習(xí)的深度卷積神經(jīng)網(wǎng)絡(luò)逐漸在語(yǔ)義分割領(lǐng)域得到廣泛運(yùn)用。這種由數(shù)據(jù)驅(qū)動(dòng)的卷積網(wǎng)絡(luò)不論是從速度還是精度上來看,都明顯超過了傳統(tǒng)方法。
街景語(yǔ)義分割是計(jì)算機(jī)視覺分支中的一支。近年來,無人車駕駛技術(shù)的發(fā)展越發(fā)深入,對(duì)街景語(yǔ)義分割技術(shù)的要求也越來越高,該領(lǐng)域得到了快速發(fā)展。目前,語(yǔ)義分割已經(jīng)發(fā)展到像素級(jí)分割任務(wù)級(jí)別,它要求輸入圖像中的每個(gè)像素都盡可能被正確分類,這跟模型性能指標(biāo)優(yōu)劣有直接關(guān)系。
語(yǔ)義分割領(lǐng)域進(jìn)入端到端像素級(jí)預(yù)測(cè)階段是從卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolution Networks,F(xiàn)CN)[1]開始的。FCN首先將超分辨率測(cè)試序列(Visual Geometry Group,VGG16)[2]去掉全連接層,再把VGG16剩余部分作為它的下采樣模塊,然后再經(jīng)過反卷積上采樣模塊實(shí)現(xiàn)了端到端的像素級(jí)預(yù)測(cè)。FCN將分類網(wǎng)絡(luò)改編為全卷積神經(jīng)網(wǎng)絡(luò),使用跳躍結(jié)構(gòu)使得語(yǔ)義信息可以和表征信息相結(jié)合,產(chǎn)生準(zhǔn)確而精細(xì)的分割。文獻(xiàn)[3]提出的SegNet模型在進(jìn)行上采樣(解碼)的過程中直接利用編碼階段中經(jīng)過最大池化時(shí)保留的最大池化索引,達(dá)到非線性上采樣的目的,提高了目標(biāo)邊緣的平滑度。文獻(xiàn)[4]提出的UNet模型采用了U型結(jié)構(gòu)的編解碼結(jié)構(gòu),將編碼器和解碼器在特征圖層次上進(jìn)行融合,然后再輸入到下一個(gè)解碼器里。該網(wǎng)絡(luò)可以用較少的圖片進(jìn)行端到端訓(xùn)練,處理速度也較快,適用于數(shù)量少且分辨率高的數(shù)據(jù)集。文獻(xiàn)[5]提出了DeepLab V3模型,并在模型中使用了空洞金字塔池化模塊,從而能提取到不同尺度的語(yǔ)義信息,提升了整個(gè)模型的分割性能。該方法通過并行不同空洞率的帶孔卷積來提取不同尺度的特征,然后再進(jìn)行融合,推動(dòng)了語(yǔ)義分割的發(fā)展。文獻(xiàn)[6]提出的全局池化網(wǎng)絡(luò)(Golobal Convolution Network,GCN)模型繼AlexNet[7]、LeNet[8]之后可在可分離卷積的基礎(chǔ)上使用大卷積核,提高了感受野,抑制了深度堆疊卷積容易出現(xiàn)的不可控因素。文獻(xiàn)[9]提出的ExfuseNet模型延續(xù)了GCN的思想。不同的是,ExfuseNet模型加入了多監(jiān)督模塊進(jìn)行深度語(yǔ)義監(jiān)督,并通過語(yǔ)義嵌入模塊進(jìn)行特征互補(bǔ)融合,ExfuseNet模型則通過自身末尾的密集鄰域預(yù)測(cè)模塊(Densely Adjacent Prediction,DAP)來優(yōu)化自身的最終效果。
盡管上述模型能夠從不同角度出發(fā)來提升模型的最終分割性能,但是當(dāng)遇到面積占比低且低密度的感興趣目標(biāo)(例如Camvid中的Pole類)時(shí),上述模型將會(huì)錯(cuò)誤地把它們忽略從而導(dǎo)致錯(cuò)誤分類,并最終阻止模型性能進(jìn)一步提升。針對(duì)這類問題,本文提出了一種改進(jìn)的ExfuseNet模型:一方面,棄用基礎(chǔ)模型中的全局池化和全連接層,改用帶孔卷積來同時(shí)增大感受野并減少模型參數(shù);另一方面,在DAP模塊之后引入了通道和空間的注意力機(jī)制來進(jìn)一步提升對(duì)感興趣對(duì)象的捕捉效率。損失函數(shù)采用FocalLoss[10]函數(shù)和NLLLoss函數(shù)進(jìn)行加權(quán)相加,從而提高模型性能。
本文所使用的街景圖像來源于公開數(shù)據(jù)集Camvid,圖片是從駕駛汽車的角度拍攝的。該數(shù)據(jù)集的訓(xùn)練集由367張360×480像素的彩色圖片組成,驗(yàn)證集為101張360×480像素的彩色圖片。訓(xùn)練集的作用是更新模型參數(shù),驗(yàn)證集的功能為驗(yàn)證更新參數(shù)后模型的性能表現(xiàn),訓(xùn)練集和驗(yàn)證集之間沒有交集。該數(shù)據(jù)集提供12類 Ground Truth語(yǔ)義標(biāo)簽,將每個(gè)像素與語(yǔ)義類別之一相關(guān)聯(lián)。該數(shù)據(jù)庫(kù)解決了對(duì)實(shí)驗(yàn)數(shù)據(jù)的需求,以定量評(píng)估新興算法。
本文所用的模型參數(shù)盡管比ExfuseNet模型參數(shù)少,但其參數(shù)數(shù)量仍然較多。一個(gè)魯棒性高的模型需要大量的訓(xùn)練數(shù)據(jù)來訓(xùn)練模型參數(shù)。由于所用的訓(xùn)練集圖片數(shù)量偏少,所以在進(jìn)行模型訓(xùn)練前進(jìn)行了數(shù)據(jù)增強(qiáng)的操作。數(shù)據(jù)增強(qiáng)的部分結(jié)果如圖1所示:圖1(a)為中心裁剪后尺寸為352×480像素的原始圖;圖1(b)為圖1(a)的垂直翻轉(zhuǎn)圖;圖1(c)為圖1(a)的水平翻轉(zhuǎn)圖;圖1(d)為圖1(a)先做垂直翻轉(zhuǎn)然后再做水平翻轉(zhuǎn)后的結(jié)果圖。經(jīng)過這樣的操作,數(shù)據(jù)集的圖像數(shù)量擴(kuò)增了3倍,可提高模型的泛化力。
圖1 數(shù)據(jù)增強(qiáng)結(jié)果圖
在深度學(xué)習(xí)訓(xùn)練的反向傳播[11]過程中,采用梯度下降法。如果數(shù)據(jù)是經(jīng)過歸一化操作的話,梯度收斂的速度會(huì)被加快,因此在街景圖片輸入到模型之前還要進(jìn)行圖像歸一化,部分結(jié)果如圖2所示。圖2(b)為圖2(a)歸一化后的結(jié)果,圖2(d)為圖2(c)歸一化后的結(jié)果。圖像歸一化計(jì)算如式(1)和式(2)所示。
(1)
(2)
式中,x表示圖像矩陣;μ表示圖像的均值;δ表示標(biāo)準(zhǔn)方差;N表示圖像的像素?cái)?shù)量(168 960個(gè)像素值)。
圖2 圖像標(biāo)準(zhǔn)化結(jié)果圖
現(xiàn)有的ExfuseNet模型在實(shí)際使用中面臨著街景圖像背景復(fù)雜而造成的類不均衡的問題。該問題會(huì)導(dǎo)致面積占比低且分布密度小的感興趣目標(biāo)類無法被正確分類,最終導(dǎo)致模型性能降低。誘發(fā)該問題的主要原因?yàn)椋?1)ExfuseNet模型的多監(jiān)督模塊使得從編碼器出來的特征圖片的分辨率進(jìn)一步降低,導(dǎo)致小目標(biāo)邊界模糊乃至消失;(2)主輸出模塊特征融合后直接輸出,該步驟會(huì)導(dǎo)致模型在有限的計(jì)算資源下無法對(duì)感興趣目標(biāo)類的深度語(yǔ)義信息進(jìn)行高效率采樣;(3)ExfuseNet模型缺失了隨機(jī)丟棄層,可能會(huì)導(dǎo)致模型泛化力不足。以上不利因素阻止了ExfuseNet模型的進(jìn)一步提升。
為了解決這些問題,本文對(duì)ExfuseNet模型結(jié)構(gòu)進(jìn)行改進(jìn)。在細(xì)致解剖ExfuseNet模型結(jié)構(gòu)后發(fā)現(xiàn),原多監(jiān)督模塊不僅使用了全局池化層,還使用了全連接層,這將導(dǎo)致下采樣得到的特征圖分辨率進(jìn)一步下降,并大幅度增加模型的參數(shù)量。為了解決原多監(jiān)督模塊存在的弊端,本文在丟棄全局池化層和全連接層的基礎(chǔ)上,改用了不同卷積率的帶孔卷積,在保證分辨率的前提下增大了感受野,減少了模型參數(shù)量的引進(jìn),使得邊緣分割更加平滑。為了使主輸出部分和多監(jiān)督部分的權(quán)重之比為9∶1,本文中,多監(jiān)督模塊輸出的Pediction 0~3各占總預(yù)測(cè)的2.5%。實(shí)驗(yàn)中發(fā)現(xiàn),在語(yǔ)義嵌入模塊后的輸出張量擁有過多通道數(shù),若不降低通道數(shù),則會(huì)增加模型的計(jì)算負(fù)擔(dān)并降低模型的泛化力,于是在這些模塊后面加入了隨機(jī)丟棄層[12],這樣既降低了模型計(jì)算參數(shù),也提高了泛化力。此外,原主輸出模塊直接將特征融合后的結(jié)果進(jìn)行輸出的方法并不理想。本文實(shí)驗(yàn)中,在主輸出模塊后添加了由通道和空間串聯(lián)起來的注意力機(jī)制模塊[13],從而能夠更高效地對(duì)感興趣目標(biāo)類的深度語(yǔ)義信息進(jìn)行采樣提取。這里主輸出模塊的輸出占總預(yù)測(cè)的90%。改進(jìn)的ExfuseNet整體結(jié)構(gòu)如圖3所示。改進(jìn)的多監(jiān)督模塊(SS+)如圖4所示。
圖3 改進(jìn)的ExfuseNetFigure 3. The improved ExfuseNet
圖4 改進(jìn)的多監(jiān)督模塊(SS+)Figure 4. The improved multi-supervision module (SS+)
文獻(xiàn)[14]在下采樣操作之后(模塊頭部)使用全局注意力機(jī)制來消除圖像背景噪聲所產(chǎn)生的干擾,提高對(duì)邊緣的感知性能。改進(jìn)后的模型在模塊尾部采用CBAM注意力機(jī)制,更高效地采樣到感興趣目標(biāo)類的深度語(yǔ)義信息,提升了模型分類性能。卷積模塊的注意力機(jī)制模塊如圖5所示,是一種結(jié)合了空間和通道的注意力機(jī)制模塊。通道注意力機(jī)制模塊如圖6所示,將輸入特征圖分別輸入到基于寬度和長(zhǎng)度的全局最大池化層和全局平均池化層;然后再一起輸入到多層感知器里(Multilayer Perceptron,MLP),將MLP輸出的特征進(jìn)行基于逐個(gè)像素相加(Elementwise加法)操作,再經(jīng)過Sigmoid激活操作,生成通道注意力特征圖;最后將該通道注意力特征圖和輸入特征圖做Elementwise乘法操作,生成空間注意力模塊需要的輸入特征。圖7表示空間注意力機(jī)制模塊,本文將通道注意力模塊輸出的特征圖作為空間注意力模塊的輸入特征圖。首先做基于通道的全局最大池化和全局平均池化,然后將這兩個(gè)結(jié)果基于通道做Concat操作;然后經(jīng)過一個(gè)卷積操作,降維為1個(gè)通道,再經(jīng)過Sigmoid激活生成空間注意力特征圖;最后將該空間注意力特征圖和該模塊的輸入通道注意力特征圖做逐個(gè)像素相乘的操作(Elementwise乘法)。
圖5 卷環(huán)模塊的注意力機(jī)制模塊Figure 5. Convolutional bock attention module
圖6 通道注意力機(jī)制模塊Figure 6. Channel attention module
圖7 空間注意力機(jī)制模塊Figure 7. Spatial attention module
Focal Loss最初被應(yīng)用在目標(biāo)檢測(cè)任務(wù)上,目的是為了解決類之間不平衡問題。鑒于語(yǔ)義分割和目標(biāo)檢測(cè)任務(wù)有相似之處,因此,本文將該方法運(yùn)用到文中提出的模型中。Focal Loss的計(jì)算如式(3)所示
FL(pt)=-α(1-pt×pgroundtruth)γlog(pt)
(3)
式中,pt為該類在模型中的預(yù)測(cè)結(jié)果;pgroundtruth為該類的像素點(diǎn)總數(shù)與圖像中所有類像素點(diǎn)總數(shù)的比例;實(shí)驗(yàn)中α取0.25,γ取2。
從以往的經(jīng)典模型實(shí)驗(yàn)結(jié)果中可知,由于Pole類在Camvid數(shù)據(jù)集中面積占比小且密度低,故容易造成類不平衡,因此Pole類的分類準(zhǔn)確度最低。隨著Pole類分類準(zhǔn)確度提高,對(duì)應(yīng)模型的最終分割性能也會(huì)隨之提高。為了提高研究效率,本文實(shí)驗(yàn)中選取Camvid數(shù)據(jù)集中12個(gè)感興趣類中最難分割的Pole類作為重點(diǎn)關(guān)注對(duì)象來進(jìn)行研究。
本文提出的模型是在Pytorch1.7.0框架上搭建的,采用NVIDIA GeForce RTX3080(10 GB)、因特爾酷睿i7十代處理器、32 GB運(yùn)行內(nèi)存,操作系統(tǒng)為Windows 10,編程語(yǔ)言為Python3.6。優(yōu)化器使用的是Adam函數(shù),學(xué)習(xí)率為0.000 1,動(dòng)量參數(shù)為0.9,權(quán)值衰減系數(shù)為0.000 2,Batchsize設(shè)置為6,一共訓(xùn)練100個(gè)epoch,即迭代100次。一個(gè)epoch指代所有數(shù)據(jù)送入網(wǎng)絡(luò)后完成一次前向傳播及反向傳播的過程。
在進(jìn)行街景圖像分割時(shí),需將圖像中每一個(gè)像素逐個(gè)分類,再將模型得到的預(yù)測(cè)圖跟標(biāo)簽圖做像素級(jí)的對(duì)比計(jì)算。為了客觀地評(píng)價(jià)提出的模型的性能,采用兩個(gè)評(píng)價(jià)標(biāo)準(zhǔn)作為衡量模型性能的指標(biāo),分別為Pole類像素精度(Class_Pole _ACC)和均交并比(Mean Intersection Over Union,MIOU)。其中,均交并比是這類任務(wù)中最重要的指標(biāo),可以客觀地反映出模型的性能優(yōu)劣能。兩種指標(biāo)的計(jì)算式如式(4)和式(5)所示。
(4)
(5)
式中,在本實(shí)驗(yàn)重新制作的class_dict文件里,Pole屬于第3個(gè)類別,故式(4)中K取2;Pij表示本屬于類i但被預(yù)測(cè)為類j的像素?cái)?shù)量,即Pii表示真正的數(shù)量,而Pij和Pji則分別被解釋為假正或假負(fù);由于Camvid數(shù)據(jù)集共有12類,故在式(5)中K取11。
圖8展示了改進(jìn)模型與ExfuseNet模型的部分圖像的分割結(jié)果對(duì)比圖,其中圖8(a)為原始圖,圖8(b)為人工標(biāo)注的標(biāo)簽,圖8(c)為ExfuseNet模型分割結(jié)果圖,圖8(d)為改進(jìn)后模型的分割結(jié)果圖。在圖8中,改進(jìn)模型前后需要重點(diǎn)對(duì)比的區(qū)域已用不同形狀的外框進(jìn)行了突顯,可以很直觀地看到圖8(c)中矩形框內(nèi)Pole類區(qū)域預(yù)測(cè)結(jié)果并不精確,而圓框和三角框內(nèi)邊緣則不夠平滑。圖8(d)則顯示這些瑕疵得到了部分改善。上述結(jié)果表明:(1)本模型更容易學(xué)習(xí)到那些低面積占比且密度低的感興趣目標(biāo)的深度語(yǔ)義特征;(2)邊緣分割更加平滑;(3)本模型具備了一定的類平衡功能;(4)本模型對(duì)光線強(qiáng)度有一定的泛化能力。
(a) (b) (c) (d)圖8 分割結(jié)果對(duì)比圖(a)原始圖 (b)人工標(biāo)注圖 (c)ExfuseNet分割結(jié)果 (d)改進(jìn)后分割結(jié)果Figure 8. Comparison of segmentation results(a)Original image (b)Manually annotated image (c)Results of ExfuseNet (d)Segmentation results after improvement
表1展示了確定模型的過程,實(shí)驗(yàn)通過加減模塊來研究搭建出來的模型性能優(yōu)劣,一共有6個(gè)備選模型,從實(shí)驗(yàn)得出的性能指標(biāo)上來看的話,最終決定5號(hào)模型作為改進(jìn)模型。
為了客觀評(píng)價(jià)改進(jìn)的模型的性能,本文將改進(jìn)的模型與國(guó)內(nèi)外不同文獻(xiàn)的Pole類分類方法的準(zhǔn)確率、均交并比進(jìn)行了對(duì)比。圖9和圖10分別為改進(jìn)模型與外文文獻(xiàn)方法的對(duì)比結(jié)果,表2為改進(jìn)的模型與國(guó)內(nèi)文獻(xiàn)方法的對(duì)比。從圖9和圖10中可以看出,相較國(guó)外ExfuseNet、SegNet、VGG_UNet、FCN、GCN來說,改進(jìn)模型的收斂速度雖然較慢,但其Pole類分類準(zhǔn)確率比上述模型有明顯優(yōu)勢(shì)。通過圖10可知,相較于改進(jìn)前,改進(jìn)后模型的性能指標(biāo)得到了明顯提高。
圖9 Pole類準(zhǔn)確率對(duì)比圖Figure 9. Accuracy rate comparison chart of class Pole
圖10 均交并比對(duì)比圖Figure 10. The diagram of MIOU comparison
表1 搭建本文模型的過程
由圖9、圖10和表2還可以看出,改進(jìn)后的ExfuseNet模型在Pole類的分類準(zhǔn)確率領(lǐng)先現(xiàn)有的部分國(guó)內(nèi)外模型。因此,從Pole低面積占比且低密度分布(最難類)的分類準(zhǔn)確率可以判定模型在Camvid數(shù)據(jù)集中的整體表現(xiàn)優(yōu)劣。實(shí)驗(yàn)結(jié)果表明Pole類分類準(zhǔn)確率和模型最終的均交并比呈正相關(guān)關(guān)系,即在Pole類分類準(zhǔn)確率上做提升可以使算法整體性能提升。如表3所示,相較ExfuseNet模型,改進(jìn)后的模型的反應(yīng)速度提高了58%,表明模型改進(jìn)后參數(shù)量有所減少。
表2 本文模型與國(guó)內(nèi)模型性能數(shù)據(jù)對(duì)比
表3 反應(yīng)時(shí)間對(duì)比
為改善ExfuseNet模型對(duì)街景圖中面積占比和像素密度較低的類別的分割表現(xiàn),并對(duì)其中具有代表性的Pole類的類準(zhǔn)確率、分割平滑度、均交并比等分割指標(biāo)進(jìn)行提升。本文使用不同卷積率的帶孔卷積,在保證分辨率的前提下增大了感受野,提升了算法對(duì)于Pole類的定位能力以及對(duì)該類的邊緣處理能力;在主輸出后面加入了由通道和空間串聯(lián)起來的注意力機(jī)制模塊,從而更高效地采樣到Pole類的深度語(yǔ)義信息,提升了Pole類的分類能力;使用了Focal Loss類平衡函數(shù)改善數(shù)據(jù)集里Pole類不平衡的問題。實(shí)驗(yàn)結(jié)果證明了改進(jìn)后的模型的有效性。但從長(zhǎng)遠(yuǎn)發(fā)展來看,想要使自動(dòng)駕駛技術(shù)能夠?qū)嶋H落地應(yīng)用,在相關(guān)性能指標(biāo)上需要有更高的要求,對(duì)模型各方面的指標(biāo)要求也應(yīng)更加嚴(yán)格。這意味著仍需對(duì)未來提出的模型在整體分割性能上進(jìn)行提高。因此,從更有效的角度切入,并解決自動(dòng)駕駛技術(shù)實(shí)際落地應(yīng)用的問題是現(xiàn)代街景語(yǔ)義分割研究領(lǐng)域里的首要任務(wù)。