張 政,禹素萍,許武軍,范 紅
(東華大學信息科學與技術學院,上海 201600)
近年來,隨著深度學習技術的快速發(fā)展和GPU 計算能力的不斷提高,深度學習相關的技術已經(jīng)應用到了很多領域,如圖像分類、目標檢測和跟蹤、語義分割等。如今,圖像的語義分割已是計算機視覺領域不可或缺的一部分,并且已經(jīng)在諸多方面體現(xiàn)出其應用價值,如自動駕駛、醫(yī)療診斷、娛樂應用等。
圖像的語義分割被定義為對圖像進行逐像素的分類,具有圖形分類和目標檢測兩者的特性。隨著將深度學習在圖像語義分割領域的應用,越來越多的算法在近幾年不斷涌現(xiàn),不斷刷新這個領域的最高精度。這一切的起點便是2015 年Long 等發(fā)布的全卷積神經(jīng)網(wǎng)絡(FCN),將最后的全連接層替換成卷積層,并且在編碼器和解碼器結構中引入了跳躍連接,為此后的研究標定了新的起點。
在語義分割的領域需要考慮兩個問題:分割精度和分割時間。因此劃分出了兩種不同風格的語義分割網(wǎng)絡,第一種是以分割精度為目標的Deeplab 系列語義分割網(wǎng)絡,其中最新的Deeplab v3+網(wǎng)絡在沿用了之前版本中的空洞空間金字塔池化(atrous spatial pyramid pooling,ASPP)結構的基礎上進行改進,添加了解碼器模塊,并且改進了Xception 模型,使Deeplab v3+ 在cityscapes 數(shù)據(jù)集上的平均交并比(MIoU)達到了82.1%。但是算法模型大,推理時間長的缺點讓Deeplab v3+在考慮實時性的領域難以應用。第二種是以犧牲部分精度換取分割時間的,以提高分割實時性的網(wǎng)絡,如ENet,ERFNet,ESPNet等。大多數(shù)實時語義分割網(wǎng)絡使用了Resnet,Mobilenet v2等輕量級的骨干網(wǎng)絡,采用高效的特征融合方式,做到了語義分割領域中分割實時性的突破。
為了解決上述分割精度和分割實時性不可兼得的問題,本文構建了基于沙漏結構的實時語義分割網(wǎng)絡,使用沙漏結構搭建骨干網(wǎng)絡,相比倒置殘差結構,在僅僅增加少量計算量的情況下,達到更高的精度。借鑒了Deeplab v3+中空洞空間金字塔池化模塊并加以改進,使用深度可分離卷積替換原有的普通卷積,在降低計算量的同時保證語義特征的提取,加快推理時間,提高實時性。并且將經(jīng)過不同空洞卷積所得到的特征圖進行逐層特征疊加,進一步抑制空洞卷積產(chǎn)生的網(wǎng)格現(xiàn)象,針對不同維度的特征,使用注意力機制進行引導,設計了特征融合模塊,提高語義分割的精準度。
近年來,為了構建輕量的骨干網(wǎng)絡,出現(xiàn)了瓶頸結構、倒置殘差結構和本文中的沙漏結構。如圖1(a)所示,瓶頸結構先使用1 × 1 的卷積降維,以減小通道數(shù),再使用普通卷積進行特征提取,最后使用1 × 1 的卷積升維。瓶頸結構不僅降低了計算量,而且加深了網(wǎng)絡層數(shù),便于訓練。如圖1(b)所示,倒置殘差結構是MoblieNet V2提出的,它提高了移動網(wǎng)絡在多類型任務分類中的性能。倒置殘差結構中首先使用1 × 1 的卷積進行通道數(shù)的上升,用來獲得更多的圖像特征,之后使用大小為3 × 3 的卷積核提取特征,最后再使用1 × 1 的卷積核進行降維處理。由于特征維數(shù)的縮小,容易導致傳播中的梯度混淆,從而削減梯度跨層傳播的能力,進而影響訓練過程中的收斂和模型的性能。因此,沙漏結構應運而生。如圖1(c)所示,與倒置殘差結構相比,沙漏結構在線性高維之間創(chuàng)建跳躍連接,能夠傳輸網(wǎng)絡結構中的更多信息,并且將深度卷積應用在高維空間中,以學習更具表現(xiàn)力的特征。
基于對上述模塊的研究,本文構建了融合空洞卷積的沙漏模塊,作為骨干網(wǎng)絡提取特征。如圖1(d)所示,將原始沙漏結構中的深度卷積,修改為空洞深度卷積(DDwise)用來拓展感受野,進而獲取更多的上下文信息。
圖1 輕量級網(wǎng)絡結構
空洞空間金字塔池化模塊利用不同空洞率的空洞卷積對骨干網(wǎng)絡輸出的特征圖進行并行的多尺度特征提取,并將提取出的特征圖使用堆疊的方式進行融合。
為了減少算法網(wǎng)絡的參數(shù),提高網(wǎng)絡的實時性,并且保證模型精度。本文在ASPP 模塊中引入了深度可分離卷積,用來替換原有的普通卷積。如圖2所示,深度可分離卷積可以分為兩部分:逐通道卷積、逐點卷積。如圖2(a)所示,首先逐通道卷積在二維平面上進行,卷積核的數(shù)量為輸入的特征的通道數(shù)。如圖2(b)所示,逐點卷積核的大小是1 × 1 ×,表示輸入的通道數(shù),逐點卷積通過將輸入的特征圖在通道方向上進行加權組合,得到輸出的特征圖。
圖2 深度可分離卷積
雖然ASPP 模塊為特征提取網(wǎng)絡提供了較大的感受野,但同時疊加了由不同空洞率而得到的特征圖,導致出現(xiàn)網(wǎng)格現(xiàn)象。為解決這一問題,本文借鑒了ESPNet 中分層特征融合的思想,在所有特征圖進行融合之前,將使用不同空洞率所得到的特征圖進行逐元素相加。這個方法不僅簡單有效,而且不會增加模型的復雜度。
改進后的ASPP 模塊如圖3 所示,將ASPP模塊中卷積后的特征圖相加有利于在同一維度下增加其中的信息量,提高最終的分割精度。
圖3 改進的ASPP模塊
在實時語義分割算法中,通常使用以下方法來提高模型的前向傳播速度:①通過裁剪輸入圖像的尺寸,降低計算量;②縮短網(wǎng)絡的通道數(shù)來縮短前向推理時間,同時也會丟失部分特征信息。這些方法有效,可以顯著提升網(wǎng)絡模型的實時性,但同時也會丟失部分空間細節(jié),物體邊界分割不連貫,甚至產(chǎn)生誤分割現(xiàn)象。
為了解決上述問題,研究人員通常使用跳躍連接,融合骨干網(wǎng)絡中不同層次的特征圖,來補充下采樣過程中空間細節(jié)的損失。但是這種方法也存在一定的缺陷,通過骨干網(wǎng)絡提取出來的高維度特征圖丟失的空間細節(jié)信息,并不能夠直接通過融合低維度特征的方式直接恢復。因此本文使用了特征融合模塊對低維度層特征和高維度特征進行融合,進一步補充因為多次下采樣導致的空間信息損失。本文中特征融合模塊的設計借鑒了CBAM注意力模型中的通道注意力機制,如圖4所示。
圖4 通道注意力模塊
首先對輸入的特征F(××)進行全局最大池化和全局平均池化,得到兩個1 × 1 ×的特征圖。接著對得到的兩個特征圖分別使用兩個卷積層提取特征和一層激活函數(shù),第一層使用1 × 1 的卷積特征提取,同時進行降維,緊接著的激活函數(shù)是Relu,第二個卷積層使用1 ×1的卷積進行升維。最后將輸出的兩個特征圖進行相加,經(jīng)過Sigmoid 激活函數(shù)后,生成最終的通道注意力特征,即每個通道對應特征值的權重。
特征融合模塊如圖5 所示,其中Attention module 為上一節(jié)中的通道注意力模塊。首先將低維度特征圖和高維度特征圖進行疊加,再使1 × 1 的卷積進行降維,接著將輸出的特征圖傳入通道注意力機制模塊,將得到的通道權重和第一步得到的特征圖進行相乘,最后將相乘后的特征圖和降維后的特征圖相加,至此特征融合結束。
圖5 特征融合模塊
本文的網(wǎng)絡結構是非對稱的編解碼器結構,即編碼器模型遠大于解碼器模型。編碼器由下采樣模塊、普通沙漏模塊、空洞沙漏模塊、改進的ASPP 模塊組成,解碼器由上采樣模塊和普通的沙漏模塊組成。在分割任務中,輸入的圖像一般比較大,其中包含了豐富的信息。此時優(yōu)先使用下采樣模塊可以有效縮小圖片的尺寸,縮短后續(xù)的處理時間。之后使用沙漏模塊提取語義特征,并在更深的維度使用空洞沙漏模塊,增大感受野,獲取更多的上下文信息。由于在下采樣過程中特征圖變小,我們需要圖像恢復到輸入圖像的尺寸用來計算最終的精確度,進而引入了上采樣模塊。通常的上采樣方式有以下幾種:雙線性插值,反卷積,反池化,本文采用反卷積構建上采樣模塊進行上采樣。
本文的網(wǎng)絡結構如圖6 所示,其中downsampler 表示的下采樣模塊,借鑒的是ENet 中的下采樣模塊,采用雙路分支,主分支使用卷積提取特征,拓展分支使用最大池化提取特征,最后在拼接后使用批歸一化和Relu 激活函數(shù),輸出的特征圖是輸入原圖尺寸的1/2。sgblock 即上文所述的沙漏模塊,dsgblock 即融合了空洞卷積的沙漏模塊,ASPP 模塊采用的是改進后的ASPP 模塊,上采樣模塊使用的是反卷積,批歸一化和Relu 激活函數(shù)的組合,upsampler1 采用了四倍上采樣后使用沙漏模塊細化特征,再和低維度的特征圖進行特征融合,F(xiàn)FM 模塊即上文所述的特征融合模塊,upsampler2使用的是雙倍上采樣,恢復到輸入原圖的大小。
圖6 整體網(wǎng)絡結構
本文使用的是CamVid(cambridge-driving labeled video database)數(shù)據(jù)集,是由劍橋大學發(fā)布的像素級別標注的公開數(shù)據(jù)集,總共有11 個語義類別,主要應用于語義分割領域,尤其是道路交通的分割。在CamVid 中總共有701 張城市的街景圖像,訓練集中的圖片有367張,驗證集中的圖片有101 張,剩下的233 張圖片作為測試集使用,部分標注圖片如圖7所示。
圖7 CamVid數(shù)據(jù)集
本文使用的準確度評估指標是語義分割中的平均交并比(mean Intersection over Union,MIoU),推理速度評估指標是幀速率(frames per second,F(xiàn)PS)。
平均交并比():計算的是真實值和預測值兩個集合之間交集和并集的比值,是圖像語義分割中評價準確度的常用指標。計算公式表示為:
其中+1表示的是類別的總數(shù),p表示的是實際類別是,并且正確預測是類別的像素的數(shù)目,p表示的是實際類別是,被判斷為類別的像素數(shù)目。
幀速率():是指每秒鐘刷新圖片的次數(shù)。計算公式表示為:
指標越高,則表示算法的實時性越好,主觀感受越流暢。
本文的模型使用的硬件平臺是Intel i7-11700,內(nèi)存為64 G,使用的顯卡為RTX 2080Ti,軟件環(huán)境是Ubuntu 18.04 操作系統(tǒng),使用的深度學習框架是Pytorch。
訓練時使用的批量大小為10,使用Adam優(yōu)化方法,初始的學習率是0.0005,L2 正則化系數(shù)是0.0002,學習率衰減策略為固定步長衰減,步長為90,衰減率為0.1。
本文對改進的ASPP模塊和FFM 模塊進行了消融實驗,來驗證兩個模塊對最終結果的影響,在CamVid數(shù)據(jù)集上的結果如表1所示。
表1 消融實驗結果
分割結果如圖8所示,與其他語義分割算法對比見表2。
表2 本文算法與其他語義分割算法在CamVid數(shù)據(jù)集的對比結果
將本文中使用dsgblock構建的骨干網(wǎng)絡定義為baseline,將添加改進ASPP 模塊和特征融合模塊后的網(wǎng)絡定義為DSGNet。由表1 所知,本文基于沙漏結構創(chuàng)建的語義分割網(wǎng)絡在CamVid數(shù)據(jù)集上以159.7FPS 的速度達到了54.58%MIoU的精確度。在只加入改進的ASPP 模塊后平均交并比提升了2.33 個百分點,同時FPS 下降到153.1。在只使用特征融合模塊FFM 的情況下,比原始網(wǎng)絡的MioU 提升了0.73 個百分點,同時FPS下降了3.9。最終,將改進的ASPP模塊和特征融合模塊都加入原始網(wǎng)絡后,MIoU 有顯著提升,達到了57.33%,同時FPS也達到了147.3。
圖8 展示了CamVid 數(shù)據(jù)集中原始的輸入圖像和標簽圖,baseline 對于原圖的分割存在以下幾個問題:①對于建筑物和樹相連的部分存在誤分割現(xiàn)象;②對于小物體的分割效果不夠理想;③對于物體的邊緣分割效果不夠精細。在加入改進的ASPP 模塊后,提升了模型整體的感受野,能夠更多地獲取上下文信息,特征融合模塊也可以更好地將高低維度的特征信息進行融合。因此DSGNet 相對于baseline,建筑物和樹木之間的誤分割現(xiàn)象明顯減少,路面和建筑物的邊緣能夠較好地還原,細小物體的分割效果明顯增強,如廣告牌,電線桿等。
圖8 分割效果可視化對比
由表2可知,本文提出的基于沙漏結構的語義分割網(wǎng)絡與其他語義分割網(wǎng)絡相比各有優(yōu)劣。與表中實時性較高的ENet 相比,本文網(wǎng)絡的FPS 指標略低,但是平均交并比顯著高于ENet。和SQ 相比,在平均交并比相似的情況下,實時性顯著高于SQ。本文網(wǎng)絡在CamVid數(shù)據(jù)集上的表現(xiàn),均略高于ESPNet。
為解決語義分割中實時性和精確度不能兼顧的問題,本文提出了基于沙漏結構的實時語義分割網(wǎng)絡。將深度可分離卷積和ASPP 模塊結合可降低參數(shù)量,同時提高了推理速度。針對ASPP 模塊中空洞卷積產(chǎn)生網(wǎng)格現(xiàn)象的問題,將不同空洞率提取出的特征圖進行有效堆疊,從而抑制網(wǎng)格現(xiàn)象。為了將不同維度的特征圖進行有效的融合,基于注意力機制提出特征融合模塊。實驗結果表明,改進的ASPP 模塊和特征融合模塊在基于沙漏結構的語義分割網(wǎng)絡中有效地減少了誤分割的現(xiàn)象。
由最終分割結果可知,本文提出的算法仍然存在部分場景中邊緣分割不夠精細的問題。針對上述問題,如何設計更加高效的骨干網(wǎng)絡,如何精確提取邊緣語義信息將是今后研究的重點。