梁 博,于 蕾,李 爽
(1.哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150001;2.衛星導航系統與裝備技術國家重點實驗室,河北 石家莊 050081)
近年來,科學技術的迅猛發展帶來了圖像數據的爆炸性增長,如何在圖像分類、物體檢測及語義分割等方面取得突破是計算機視覺領域目前最關注的話題。圖像語義分割作為其中一個重要的研究方向,融合了物體識別和圖像分割,不同于傳統的物體分類,它是基于像素級別的分類,通過一定的方法將圖像中的每個像素分為不同的語義類別,最終得到不同的像素分割區域,并識別出每個區域的類別。目前,圖像語義分割在很多領域都得到了廣泛應用,例如,在自動駕駛領域,通過對車體前方場景的語義分割,可以分析道路、交通信號燈、來往車輛和行人等的精確語義信息,從而提升自動駕駛的安全性;對商場、飛機場及醫院等大型室內公共場所的語義地圖構建進而實現定位和導航,還有時尚服裝搭配等,逐漸應用于人們的生活當中。
圖像語義分割相較于傳統的物體檢測,目標識別更復雜。主要挑戰在于目標物體方面,包括圖像的明亮程度、模糊程度、圖像中物體的大小和方向等很多因素。傳統的語義分割方法在不同類物體差異較大,物體之間邊緣界限較明確的簡單場景下能夠取得很好的效果。但在室內場景中環境比較復雜、物體類別層次模糊、尺度差異較大、不同目標邊界不清晰,以及同一物種的不同類別相互遮擋的情況下,給語義分割帶來了很大的干擾。針對這類場景,在不同物體邊界處,尤其小目標等,使用傳統分割方法往往達不到很好的效果。
近年來,隨著深度卷積神經網絡的發展,計算機視覺的許多問題都有了很大的突破,由于卷積神經網絡可以從大量樣本數據中提取出圖像的特征,在圖像分類和物體檢測等研究方向上都取得了飛速發展。物體檢測方面自2014年的R-CNN之后,Ross Girshick[1]在15年推出Fast R-CNN再到Faster R-CNN[2],逐步實現了端對端的訓練,進一步簡化了網絡、提高了檢測速度、提升了算法性能。傳統的圖像分割方法包括閾值分割方法、基于區域的分割方法及基于邊緣的分割方法等,這些方法大多是基于對圖像進行人工的特征提取,如顏色、紋理信息等[3]。但是人工設計的特征往往是淺層的,這就使得傳統方法具有很大的局限性,性能提高的空間非常有限[4]。Long J[5]等提出了全卷積神經網絡(FCN),把傳統的圖像分類網絡直接變成了像素分類網絡,實現了端對端的圖像語義分割,使得圖像分割技術進入了一個新的階段。Deeplab[6]引入了孔算法,解決了原始FCN網絡的輸出低分辨率問題,再通過全連接CRF對粗分割的結果進行迭代精細化分割,精確邊界。H Zhao等人構造了金字塔池化模塊,基于不同區域的上下文聚合,結合上下文信息,有效提高了場景解析任務的質量。
本文引入了一種將目標檢測[7]與語義分割結合的多任務分割技術[8],分為2個并行分支,將目標檢測與分割并行計算,共用前面的特征提取網絡。檢測網絡能夠先快速確定圖像中的目標位置,經網絡訓練選取出區域建議框,然后在此基礎上進行像素級別的分割,提高了網絡的速度和性能。
全卷積神經網絡是區別于卷積神經網絡的結構,輸入一張圖片,輸出也是一張圖片,實現像素到像素的映射。卷積神經網絡的最后3層是全連接層,都是一維向量,計算方式不再采用卷積,所以丟失了二維信息。全卷積神經網絡中前面部分仍采用常用的卷積神經網絡VGG等[9],在最后3層全部轉化為1×1的卷積核所對應的等同向量長度的多通道卷積層,進行上采樣操作,使用轉置卷積[10]計算,也就是整個模型中全部都是卷積層,沒有向量,網絡結構如圖1所示。

圖1 全卷積神經網絡結構
語義分割[11]能夠為場景中的目標圖像中的每一像素都打上標簽,目的是對圖像進行像素級分類[12],實現從底層像素信息到高層語義信息的過度。對場景圖像的分割解析[13],比檢測理解更加直觀,包含更多的信息,包括標簽及物體形狀等。但圖像語義分割并沒有獲得場景圖片中所需要的全部抽象語義信息。語義分割能對檢測物體進行分割,但卻無法將屬于同類目標物體的個體分開,同時也不能獲得目標個體的具體數目信息。而作為場景理解重要分支的目標檢測算法,雖然可以確定單個目標的位置和具體數量,卻無法檢測天空、路面、草地等不具備具體形狀的物體區域,整體流程如圖2所示。

圖2 圖像分割流程
通過引入檢測與分割相融合的方法,添加了像素級的分割多任務語義分割技術,彌補了二者的缺點。在分割的同時能夠定位出目標物體的位置信息,克服了單任務的缺點,在物體差異較大及特殊小目標上都能取得較好的效果。
多任務分割(MDS-RCNN)算法的整體算法框架分為2部分,前面為基礎特征提取網絡,后面是在特征圖上進行目標物體的識別、位置回歸和分割,如圖3所示。主要模塊包括主干網絡、區域建議網絡、RoI Align和Head。輸入圖片經過深度卷積神經網絡提取圖片低層特征得到feature maps,網絡層越深提取的圖像特征越豐富,本文使用ResNet[14],它是在VGG網絡的基礎上添加了殘差模塊,使得網絡變得更深,提取特征的能力更強。由區域建議提取網絡計算得出RoI,映射到特征圖上,后面加入RoI Align操作,解決了輸入輸出像素不對齊的問題。對得到的特征圖上采樣操作,將全連接層變為卷積層,采用雙線性插值法獲得確定位置的像素,重構圖像的空間信息,輸出固定尺寸的特征圖,連接全連接網絡層進行分類和檢測回歸,另一分支經過FCN進行圖像像素級別的語義分割,最終實現多任務輸出。

圖3 MDS-RCNN算法流程
檢測網絡分支常用RoI Pool[15]對生成的每個RoI提取小特征的映射(例如7×7)。RoI Pool首先將浮點數RoI量化為特征映射的離散粒度,然后將該量化的RoI細分為自身量化的空間區間粒度,最后聚合每個區間覆蓋的特征值,在量化過程中將浮點數量化為整數如(7×7)輸出舍棄小數部分就會導致像素偏差。以步長32為例,特征圖上1個像素的偏差在原圖上就是32個像素的偏差,這對于小目標物體的檢測效果影響很大,而語義分割現實場景中的小目標要求較多。
RoI Align從RoI Pool的局限性源頭出發,取消嚴格量化操作,使用雙線性插值的方法獲得坐標為浮點數的像素點上的圖像數值,從而將整個特征聚集過程轉化為一個連續的操作,將提取的特征與輸入對齊,如圖4所示。

圖4 RoI Align原理
網格表示特征圖,黑線表示RoI(2×2),每個bin中有4個采樣點的點。RoI Align基于雙線性插值的方法通過特征圖上距離采樣點附近最近的4個像素得到其像素值,整個過程沒有對RoI均分,RoI產生的子區域bin和采樣點進行任何量化。每個bin中采集點的數目和位置存在一定的規則,若采樣點為1,則位于bin的中心位置;若采樣點數為4,則采樣點的位置就是均分bin為4個小矩形后各自的中心點。通常這些采樣點為浮點數,所以需要用插值的方法獲得其像素值。
梯度優化算法[16]能夠加快模型收斂的速度,甚至可以得到一個更好、更小的損失函數值,而梯度下降算法是目前最常用的優化神經網絡的方法。
隨機梯度下降算法(SGD)就是每一次迭代計算mini-batch的梯度,然后對參數進行更新,即
gt=θt-1f(θt-1),
(1)
Δθt=-η*gt,
(2)
式中,η為學習率;gt為梯度。
SGD完全依賴于當前batch的梯度,所以η可理解為允許當前batch的梯度多大影響參數更新。SGD收斂過程中的波動會幫助目標函數跳入另一個可能更小的極小值,同時減小了計算量,提升了速度。但也伴隨著一些缺點,選擇合適的learning rate比較困難,對所有的參數更新使用同樣的learning rate,在處理稀疏數據時,希望快速更新一些對于不經常出現的特征,對于常出現的特征更新慢一些,此時SGD無法滿足要求,另外在某些情況下可能被困在鞍點。
適應性動量估計(Adaptive Moment Estimation,Adam)法利用梯度的一階矩估計和二階矩估計動態調整每個參數的學習率。Adam的優點主要在于經過偏置校正后,每一次迭代學習率都有個確定范圍,使得參數比較平穩。公式如下:
mt=μ*mt-1+(1-μ)*gt,
(3)

(4)
(5)
(6)

(7)


Adam優化算法式針對不同的參數計算不同的自適應學習率,對內存需求較小,善于處理稀疏梯度和非平穩目標,適用于大多非凸優化、大數據集和高維空間。
整個任務包括識別、檢測和分割3個分支,因此損失函數包含分類誤差、檢測誤差和分割誤差,即
L=Lcls+Lbox+Ls,
(8)
式中,Lcls,Lbox和目標檢測算法Faster r-cnn一樣,分別表示分類損失和回歸損失,利用全連接預測出每個RoI的所屬類別及其矩形框在圖中的坐標位置。分割分支采用FCN對每個RoI有k*n*n(n表示RoI Align特征圖的大小,K表示類別數)維度的輸出,對每一個像素應用sigmoid,然后取RoI上所有像素的交叉熵的平均值作為Ls。
室內環境相對復雜,光線的明暗物體的位置、大小及空間的遮擋等都對分割有很大的影響,而訓練前數據集樣本的選取會使場景圖像特征提取不夠充分,直接影響算法的效果。因此,本實驗對訓練數據集進行預處理,包括水平豎直方向的反轉、大小調整及色彩調整等,可以提高模型的健壯性。為了突出模型在小目標上的性能優勢,實驗使用公共數據集MS COCO[17],是微軟團隊獲取的一個可以用來圖像recognition+segmentation+captioning數據集,共有91類目標,主要從復雜的日常場景中截取,圖像中的目標通過精確的segmentation進行位置的標定。
實驗環境:平臺:Linux;顯卡:GTX 1070;顯存:8 GB;深度學習框架:Tensor Flow,Pyhton3.5。
分別使用SGD和Adam兩種優化算法在數據集上訓練,隨著迭代次數的增加,損失逐漸遞減。通過對比發現,Adam算法相比SGD能夠更快速地收斂。
多任務分割算法(MDS-RCNN)在MS COCO數據集上的驗證結果如表1所示,最后使用mAP指標評價算法的性能。mAP指均值平均準確率,AP是對每個類上準確率的平均值,mAP是再對所有類別的AP值的平均。結果表明,對訓練數據集進行對折旋轉裁剪等方式處理增加后,再使用Adam優化算法優化,算法的效果比之前原始的增加了5.4%,另外,使用在ImageNet上預訓練的權重去初始化模型參數,結果提升了4.0%,用于特征提取的基礎網絡換為更深層的ResNet-101,增強了對圖像的特征提取能力,結果進一步增加了2.9%。
表1 MS COCO數據集結果

是否使用MDS-RCNN改進后的mAP指標數據增廣×○○○pretrained××○○Adam/SGD×○/○○○VGG/ResNet-101○/××××/○MS COCO mAP26.932.3/31.036.339.2
表2對比2個常用檢測框架和本文算法MDS-RCNN在MS COCO數據集上的對比結果,APbb表示多任務MDS-RCNN框架訓練在檢測支路上的準確率。對比結果表明,多任務聯合框架比單一的檢測任務準確率高2.0%。在訓練樣本時,底層提取圖像特征時多個任務共享基礎網絡,相互作用,訓練得到的特征更加全面,使得后面地預測更加準確。
表2 不同算法對比結果

MethoddataAPbbFast RCNN train32.9Faster RCNNtrain36.2MDS-RCNNtrainval35k38.2
為驗證本文算法模型的可靠性和有效性,對于現實應用場景是在室內環境下采集的,分為訓練集1 000張,驗證集600張,測試集400張。每張圖像的大小為1 024×640像素,圖像場景中包含road,table,person,chair,其他都視為background。該實驗為監督學習,需要對訓練集的圖片制作相應的標簽文件,這里使用比較常用的深度學習標注工具LabelMe,得到訓練所需的.json文件,將得到的16位標簽label.png轉化為opencv所需的8位即可,原始圖片、參考圖片如圖5和圖6所示。

圖5 原始圖片

圖6 參考圖片
通過在實驗數據集上訓練,然后測試模型,數據集較少,對于深層模型來說反復的訓練不足以學習透所有的神經元,不能得到很好的權重參數,因此采用了遷移學習的思想,在MS COCO數據集上訓練得到的權重去初始化模型,因為MS COCO中的圖片種類較多,相似的圖片模型開始學習的低層特征是相同的,因此在預訓練的特征基礎上訓練自己的數據集能夠縮短模型訓練時間,提供的特征更加完善。表3對比初始的多任務分割算法(Raw-MDS-RCNN)和使用表1的MDS-RCNN算法,結果表明,物體的平均均值準確率提高了5.9%,實現了效果可視化。
表3 改進算法前后實驗結果

MethoddataAPbbRaw-MDS-RCNNtrain67.5MDS-RCNNtrain 73.4
從可視化結果對比發現,對于室內復雜環境,初始的多任務分割算法在有桌子遮擋的光線較暗的地面時無法準確分割出來,在椅子、人等相對小目標上分割效果也較差,還會出現錯誤分割現象。改進后的算法明顯改善了分割效果,在有遮擋的地面,椅子尤其是對尺度較小的人都能夠準確分割,證明了算法的可靠性,分別如圖7、圖8和圖9所示。

圖7 Raw-MDS-RCNN

圖8 改進后MDS-RCNN

圖9 語義類別
通過在檢測框架上添加語義分割分支,實現了在實際場景中分割目標物體的同時又能夠定位出物體的位置信息,更能滿足實際工程需求。進一步在數據集、基礎網絡框架、模型優化算法以及遷移學習方面對算法進行改進優化,加快了網絡的收斂,最后通過多項對比實驗,結果表明有效提高了網絡的準確率和可靠性。另外,多任務組合分割網絡也高于單個檢測和分割網絡的準確率,但整體網絡參數過多導致收斂過慢,需要針對精簡網絡進行研究。