姜世浩,齊蘇敏,王來花,賈 惠
(曲阜師范大學 軟件學院,山東 曲阜 273165)
實例分割[1-2]是指給定一個圖像,在正確檢測出圖像中所有目標的同時對每一個目標進行分類以及像素級別的分割,是一項具有挑戰(zhàn)性的計算機視覺任務,與計算機視覺中的兩個經(jīng)典任務—目標檢測[3-5]與語義分割[6-9]密切相關。實例分割的結果中包含非常豐富的信息,在自動駕駛、智能監(jiān)控、生物醫(yī)療、人機交互等領域有著極大的利用價值。
2014年Hariharan等人提出了SDS[10]模型,該模型使用多尺度可結合組(MCG)提取建議區(qū)域,對于每個區(qū)域,使用卷積神經(jīng)網(wǎng)絡(CNN)來提取前景特征,再對每個區(qū)域使用支持向量機(SVM)在CNN頂層特征上進行分類。2015年Pinheiro等人提出了基于單個卷積網(wǎng)絡的DeepMask[11]模型。給定一個圖像塊作為輸入,輸出一個與類別無關的掩模和該圖像塊完全包含一個物體的概率。同年,Dai等人提出了多任務網(wǎng)絡層級模型(MNC)[12]。該模型分為實例區(qū)分,掩模估計,目標分類三個子任務,在共享特征的基礎上,形成層級的多任務結構。2016年Pinheiro等人又提出了SharpMask[13]模型,該模型利用底層信息優(yōu)化了DeepMask的輸出,產(chǎn)生具有更高保真度的掩模。上述方法中,分割先于識別,分割結果與目標類別無關,導致結果精度較低。2017年,Y Li等人基于全卷積網(wǎng)絡(FCN)[14]提出了一種可用于實例分割的端到端模型FCIS[15],該模型是首個全卷積、端到端的實例分割解決方案。2018年,He等人提出了一種簡單通用且性能強大的實例分割模型Mask R-CNN[16]。該模型在Faster R-CNN[17]的基礎上加入了一個基于全卷積網(wǎng)絡(FCN)的掩模預測分支,并應用了先進的骨干網(wǎng)絡—深度殘差網(wǎng)絡(Resnet)[18]與特征金字塔(FPN)[19]。此外,提出ROIAlign代替了ROIPooling操作,解決了ROIPooling產(chǎn)生的對齊問題,使該模型能夠更好地適應像素級別的分割任務。
Mask R-CNN雖然采用特征金字塔(FPN)結構提取了多層次的豐富特征,但對各層信息尤其是邊緣細節(jié)信息與空間位置信息的利用仍不充分。文中在Mask R-CNN的基礎上提出了多特征融合的實例分割方法。首先,在Mask R-CNN結構中加入一條基于HED[20]的邊緣檢測分支以及一條基于FCN的語義分割分支,分別提供邊緣細節(jié)信息與空間位置信息;其次,原始特征圖在進行ROIAlign時將ROI映射到原先分配的特征層及其相鄰層,以充分利用特征金字塔的各層信息;最后,將各分支得到的特征圖進行融合,融合得到的新特征中既包含了豐富的邊緣信息,能夠提升分割結果的邊緣精度以及使檢測器更好的區(qū)分鄰接或交錯的物體,還包含了目標的空間位置信息,能夠?qū)⒛繕饲熬芭c自然界復雜的背景進行有效的區(qū)分。實驗結果表明,該模型與Mask R-CNN相比檢測和分割精度都得到了提升。
文中提出的網(wǎng)絡結構分為三個部分:特征提取網(wǎng)絡、區(qū)域建議網(wǎng)絡以及檢測分割網(wǎng)絡,整體結構如圖1所示。其中,特征提取網(wǎng)絡在原有骨干網(wǎng)絡(Resnet-FPN)的基礎上增加了邊緣檢測分支與語義分割分支。新增的分支在骨干網(wǎng)絡的結果之上進行構建,與原網(wǎng)絡聯(lián)合訓練,以重用骨干特征減少額外的參數(shù),如圖1左側(cè)虛線框所示。區(qū)域建議網(wǎng)絡和檢測分割網(wǎng)絡與Mask R-CNN相同。此外在ROIAlign操作之后加入了特征融合操作,如圖1右側(cè)虛線框中所示。
Mask R-CNN模型在Faster R-CNN模型的基礎上添加了一個基于FCN的掩模預測分支用于實例分割。如圖1所示,輸入圖像首先通過骨干網(wǎng)絡(Resnet-FPN)進行特征提取得到特征圖,再通過區(qū)域建議網(wǎng)絡(RPN)在特征圖上生成感興趣區(qū)域(ROI),并將感興趣區(qū)域?qū)恢玫奶卣鞒鼗癁楣潭ǔ叽绲奶卣鳎詈笥蓹z測分支進行目標框的分類和回歸,由掩模預測分支對目標進行像素級別的分割。
圖1 網(wǎng)絡結構
在Faster R-CNN中,感興趣區(qū)域進行池化(ROIPooling)時對區(qū)域劃分坐標進行了取整操作,在結果中引入了量化誤差,對像素級別的分割任務影響較大。針對該問題,Mask R-CNN作者提出了ROIAlign,保留了浮點數(shù)坐標并通過雙線性插值求得各個坐標點的值。
Mask R-CNN對于每一個ROI的損失函數(shù)定義為:
LMaskR-CNN=Lcls+Lbox+Lmask
(1)
式(1)中的Lcls為分類損失函數(shù):
Lcls=-logpu
(2)
其中,pu為目標正確類別u的預測概率。
式(1)中的Lbox為邊框回歸損失函數(shù):
(3)
(4)
式(1)中的Lmask為分割損失:
(5)
logxi+(1-yi)·log(1-xi)
(6)
整體嵌套邊緣檢測(HED)是一種基于深度學習的邊緣檢測算法[21-22]。該模型是一種端到端的邊緣檢測模型,應用了多層級,多尺度預測的思想,將網(wǎng)絡的不同層級的結果側(cè)向輸出并分別應用損失函數(shù)進行監(jiān)督,最后用反卷積將高層輸出上采樣到原圖大小并通過一個可訓練的權重將各層的結果融合得到最終輸出。
文中模型的邊緣檢測分支基于HED多層級預測的思想構建,以特征金字塔的輸出結果作為輸入,其結構如圖2所示。由于特征金字塔的最高層(第五層)分辨率過低,通過反卷積操作上采樣得到的結果過于模糊,對檢測準確性的提升沒有幫助,故舍棄該層,以前四層的輸出結果作為輸入。首先,每一層通過兩個3×3的卷積層提取各層的邊緣信息,并經(jīng)過一個1×1的卷積層生成各自的邊緣預測結果。然后將各層的預測結果上采樣到最底層的大小,并通過一組可訓練的權重將各層結果對應元素相加得到最終的邊緣預測結果用于該分支的訓練。最后,通過一個1×1的卷積層將該結果映射到原始特征的特征空間得到邊緣特征圖。
圖2 邊緣檢測分支
在HED模型中,對每個側(cè)邊輸出都應用單獨的損失函數(shù)進行監(jiān)督,使得邊緣檢測網(wǎng)絡更容易響應物體內(nèi)部的邊緣紋理。而文中的邊緣檢測分支主要任務是識別物體的輪廓邊緣,物體內(nèi)部的邊緣紋理反而會對目標檢測任務造成干擾。因此,文中僅對邊緣檢測分支的最終的融合結果進行監(jiān)督,其損失函數(shù)表示為:
(7)
(8)
語義分割分支同樣以特征金字塔的各層輸出結果為輸入,其結構如圖3所示。首先將每一層特征圖分別通過一個1×1的卷積層使得各層映射到相同的表示空間中,然后以第二層為基準,將高層特征圖上采樣,低層特征圖下采樣到第二層大小,并將各層特征圖通過對應元素相加進行融合以結合低層特征的定位信息與高層特征的語義信息用于像素級別的語義分割。權衡分割精度與額外參數(shù)開銷,以第二層為基準是最合適的。最后,將融合得到的特征通過四個3×3的卷積層進一步獲取語義信息,并分別通過兩個1×1的卷積層輸出,其中一個輸出語義分割的預測結果用于該分支的訓練,另一個輸出最終的語義特征圖用于后續(xù)的特征融合。
圖3 語義分割分支
文中模型的語義分割分支損失函數(shù)表示為逐像素的交叉熵損失:
(9)
在Mask R-CNN中,特征金字塔在進行ROIAlign操作時,根據(jù)ROI的大小對ROI進行分配,較大的ROI分配到低層,較小的ROI分配到高層。在此基礎上,文中將ROI同時分配給相鄰層進行ROIAlign操作,得到多個特征圖,以充分利用特征金字塔的特征信息。最后,將前述分支得到的邊緣和語義特征圖經(jīng)過ROIAlign操作,并將所有特征圖通過元素相加進行融合,生成信息更加豐富的邊框特征和掩模特征,用于后續(xù)的檢測和分割任務。此外,將所有ROI特征圖的分辨率提升到28×28以適應邊緣和語義分割的細粒度特征。
整個模型以端到端的方式進行訓練,損失函數(shù)在原Mask R-CNN的損失函數(shù)的基礎上增加了邊緣損失與分割損失用來監(jiān)督邊緣檢測分支與語義分割分支的輸出結果。整體的損失函數(shù)如下:
L=LMaskR-CNN+αLedge+βLseg
(10)
其中,LMaskR-CNN為Mask R-CNN的損失函數(shù),如式(1)所示;Ledge為邊緣檢測分支的損失函數(shù),如式(7)所示;Lseg為語義分割分支的損失函數(shù),如式(9)所示。參數(shù)α和β分別表示邊緣誤差和語義分割誤差在整體誤差中的權重系數(shù),通過實驗得出,預測精確度對α和β的變動并不敏感,故這里將α和β默認設置為0.5。
文中在COCO數(shù)據(jù)集上對模型進行訓練與測試。首先,利用COCO2017train對模型進行訓練,然后使用COCO2017test和COCO2017val對提出的模型進行測試和驗證。對于語義分割分支,文中使用COCO stuff數(shù)據(jù)集中的訓練標簽進行訓練。由于COCO數(shù)據(jù)集中并不包含邊緣檢測的標簽信息,所以需要通過COCO數(shù)據(jù)集中的分割標簽生成邊緣標簽。對于每一張圖片,首先遍歷該圖片中所有目標的掩模標簽,并將每個掩模賦予不同的非零值后合并成與原圖像大小相同的掩模圖,未被掩模標記的部分值為0。然后,基于掩模圖判斷圖中的每個像素是否為邊緣,若一個像素相鄰的四個像素(上,下,左,右)不為同一個值,則將該像素記為邊緣。對數(shù)據(jù)的其他處理與Mask R-CNN模型相同。文中以不同的IOU閾值(0.50~0.95,步長為0.05)及不同大小目標的平均精度(mAP)作為評價標準。
使用2個Tesla P100 GPU進行實驗,實驗模型使用Pytorch進行搭建。訓練時使用隨機梯度下降(SGD)對模型進行優(yōu)化,初始學習率設置為0.005,動量設置為0.9,權重衰減系數(shù)設置為0.000 1,共迭代12次,學習率在第8和第11次迭代時降低為原來的0.1倍。用于對照的基線模型使用官方開源代碼在相同的實驗環(huán)境下運行,訓練參數(shù)與官方代碼相同。文中模型與Mask R-CNN在實驗中均使用Resnet-50-FPN作為骨干網(wǎng)絡。
為了進一步驗證文中提出模型的有效性,將其與Mask R-CNN模型進行了比較,圖4展示了文中方法與Mask R-CNN分割效果的對比。可以看出,文中方法的分割結果邊緣上與目標更加貼合,缺失和冗余更少,例如在對照組(a)中,與文中模型的長頸鹿分割結果相比,Mask R-CNN的長頸鹿分割結果在足部邊緣處有多處明顯的缺失,且脖頸處有較明顯的冗余。此外,文中模型的分割結果對相鄰目標的邊界區(qū)分更加清晰,例如在對照組(d)中,Mask R-CNN的分割結果與文中模型相比,在左邊人物的肩膀和右邊人物手臂的交界處,兩個目標的像素出現(xiàn)了嚴重的重疊,無法辨別出明顯的邊界。
圖4 Mask R-CNN(上)與文中模型(下)的分割效果對比
Mask R-CNN與文中模型檢測與分割的評價結果分別如表1和表2所示。可以看出,文中模型相比Mask R-CNN在檢測和分割的精度上都得到了提升,bbox與mask的mAP分別提升了1.2%與1.0%。其中對于大物體的分割精度提升最為顯著,mAPL與Mask R-CNN相比提升了1.6%,但對于小物體的檢測與分割精度提升較低。對該現(xiàn)象進行了分析,認為大物體所包含的邊緣輪廓特征較為豐富,且COCO數(shù)據(jù)集中大物體的分割標簽在邊緣細節(jié)上刻畫得比較細致,因此邊緣檢測分支更容易在大物體中提取到豐富的邊緣信息,從而能夠在大物體的分割任務上取得較大的提升。而小物體的邊緣輪廓較為模糊,且COCO數(shù)據(jù)集中小物體的分割標簽與大物體相比較為粗糙,因此邊緣檢測分支和語義分割分支在小物體上無法提取到更多的特征,故模型在小物體上的表現(xiàn)與原Mask R-CNN相比提升較小。
表1 COCO2017檢測結果比較
表2 COCO2017分割結果比較
基于Mask R-CNN提出了一種多特征融合的實例分割方案。該方法在Mask R-CNN的基礎上加入了邊緣檢測和語義分割分支,分別用于提取帶有更豐富邊緣信息和語義信息的特征圖,并融合特征金字塔的多級特征得到包含更多信息的新特征用于檢測和分割任務,提高了檢測和分割的精度。實驗結果表明,在COCO數(shù)據(jù)集上,與Mask R-CNN相比文中模型的box AP提升了1.2%,mask AP提升了1.0%。該模型對小目標的檢測和分割精度提升較小,在今后的工作中將繼續(xù)探究并加以改進。