劉桂霞, 吳彥博, 李文輝, 王天昊
(1.吉林大學 計算機科學與技術(shù)學院,吉林 長春 130012; 2.哈爾濱工程大學 船舶工程學院,黑龍江 哈爾濱 150001)
實例分割是計算機視覺領(lǐng)域中一項應用廣泛而富有挑戰(zhàn)性的任務,是對圖像場景的深入理解。實例分割在語義分割對圖像中所有像素分配標簽的基礎上,進一步區(qū)分同一類的所有不同個體。實例分割廣泛應用于自動駕駛、水下視頻監(jiān)控、醫(yī)學圖像處理等領(lǐng)域。獲得一個簡單有效的實例分割框架對于提高圖像處理的精度和速度非常重要。
當前的實例分割框架,主要基于單階段檢測器和兩階段檢測器。單階段檢測器非常快,但不像兩階段檢測器那樣精確。本文使用了一個基于兩階段檢測器的實例分割框架。隨著深度學習的出現(xiàn),許多基于卷積神經(jīng)網(wǎng)絡的實例分割框架應運而生,如多任務級聯(lián)網(wǎng)絡(muti-task network cascades,MNC)[1]、全卷積實例感知語義分割(fully convolutional in stance-aware semantic, segmentation,FCIS)[2]和FCIS ++[2]。本文的研究是對Mask R-CNN[3]的改進。傳統(tǒng)的Mask R-CNN邊界框回歸損失采用SmoothL1Loss[4]。許多常用于目標檢測和分割的大型數(shù)據(jù)集,如ImageNet和MS-COCO (common objects in context)都力求準確地定義真值。但在真實的圖像場景中,當目標定位模糊或互相遮擋時,很難定義準確的真值框。SmoothL1Loss沒有考慮到這種情況的影響。
本文的目的是解決邊界框回歸定位不確定性的問題。本文的方法是基于KL loss[5]的改進。KL loss隨位置的變化而估計定位置信度,回歸過程不僅預測邊界框的位置,而且用高斯函數(shù)來預測邊界框的概率分布。KL loss定義了真值分布和預測分布的KL散度。然而,本文發(fā)現(xiàn)KL loss的4個坐標點是獨立運算的。實際上邊界框坐標之間存在一定的聯(lián)系。于是受IoU Loss[6]的啟發(fā),本文對KL loss進行改進,將獨立坐標計算轉(zhuǎn)換為面積差的形式,將新提出的邊界框回歸損失命名為KL-Area-Loss。在邊界框檢測和實例分割的評估實驗中,平均準確率(average precision,AP)優(yōu)于基線模型和KL Loss,對大目標和小目標的分割更準確。此外,本文的模型提高了訓練和評估過程的速度。
目標檢測是計算機視覺領(lǐng)域進行數(shù)字圖像識別的一種有效方法。目標檢測的任務不僅是對圖像目標進行分類,而且需要確定目標的位置。語義分割就是對每個像素進行標記,將屬于同一類別的對象從其他對象中分離出來。近年來,實例分割圖像識別技術(shù)應運而生。實例分割的任務是在不同的類對象中分別標記每個實例。從目標檢測到實例分割[7-11],對目標識別的準確度越來越高,實例分割成為計算機視覺領(lǐng)域的一個前沿且富有挑戰(zhàn)性的任務。
最初實例分割基于自底向上掩碼方案實現(xiàn)[12-13]。隨著深度學習的出現(xiàn),R-CNN[14]等高效技術(shù)取代了前者。Fast R-CNN[15]、Faster R-CNN[16]逐步改進了特征提取問題。如今流行的實例分割方法是先檢測后分割(如HTC、PANet、Mask R-CNN[3]、Mask Scoring R-CNN、MPN和YOLACT)。實現(xiàn)實例分割的方法還有很多,如先標記像素再聚類[17-18]、密集滑動窗口方法(DeepMask、InstanceFCN和TensorMask)。本文是對Mask R-CNN框架的改進,其他方法的原理將不再重復。
Mask R-CNN[3]是一個經(jīng)典、簡單且高效的實例分割框架。目標檢測部分基于Faster R-CNN[16]完成,掩碼由經(jīng)典的語義分割算法——FCN[19]生成。Mask R-CNN的結(jié)構(gòu)是為掩碼生成添加一個并行分支,該分支位于Faster R-CNN[16]框架的分類和回歸分支之下。
將經(jīng)過預處理的原始圖像輸入預先訓練好的神經(jīng)網(wǎng)絡,如ResNet-50[20]、ResNet-101[20]和 ResNeXt-101[21],得到相應的特征圖。然后,為特征圖中的每個點設置一個預定的候選框ROI,獲得多個候選ROI。將這些候選ROI輸入?yún)^(qū)域生成網(wǎng)絡 (region proposal network, RPN)進行二值分類(前景或背景)和邊界框回歸,初步過濾掉一部分ROI。對剩余的ROI進行ROIAlign操作,在N類分類、邊界框回歸、掩碼生成的同時得到最終的ROI。特征金字塔網(wǎng)絡 (feature pyramid network, FPN)[22]用于網(wǎng)絡特征的分段提取,以獲得更好的性能。
除實例分割外,Mask R-CNN[3]還廣泛應用于計算機視覺的其他領(lǐng)域,包括邊界框?qū)ο髾z測、人體關(guān)鍵點檢測等。因為Mask R-CNN的諸多優(yōu)點及廣泛的應用性,各種基于它的改進算法被提出,進一步提高了Mask R-CNN的性能。
L1Loss也稱為最小絕對偏差或最小絕對誤差,使目標Yi和估計值f(xi)的絕對差之和最小化,它的特征是強魯棒性和存在不穩(wěn)定的解(可能有多個解)。L2Loss也稱為最小二乘誤差,使目標Yi和估計值f(xi)差值的平方和最小化,它具有弱魯棒性和穩(wěn)定解(總是一個解)的特點。L1Loss和L2Loss的優(yōu)缺點是互補的。SmoothL1Loss結(jié)合了L1Loss和L2Loss 2種損失的功能,避免了L1Loss和L2Loss的缺點。它首先被應用于Fast R-CNN[15],在Mask R-CNN模型中得到延用。
本節(jié)將介紹KL Loss[5]和IoU Loss[6]的原理,以及本文提出改進Mask R-CNN的方法。本文提出了一種邊界框回歸損失,根據(jù)其特性命名為KL-Area-Loss(即為本文方法),網(wǎng)絡結(jié)構(gòu)如圖1所示。本文方法的網(wǎng)絡結(jié)構(gòu)用于改善Mask R-CNN的邊界框回歸損失。根據(jù)Mask R-CNN的結(jié)構(gòu),本文方法不改變分類和掩碼部分的損失,用于回歸的損失部分增加了一個概率分布box dis,以增強位置預測的置信度。本文方法提高了整個預測和分割的準確性和速度,并提高了邊界框的定位精度。
圖1 本文方法網(wǎng)絡結(jié)構(gòu)示意Fig.1 Network structure of the method in this paper
2.1.1 KL Loss算法
為了解決目標本身無法準確定位或物體間遮擋導致定位不準確的問題,KL Loss[5]算法用于學習邊界框回歸和位置不確定性,消除模糊或遮擋樣本對邊界框回歸損失的干擾。該算法預測坐標的偏移,假設預測值與標準值遵循概率分布,損失函數(shù)為2個分布之間的KL散度。
2.1.2 IoU Loss算法
Mask R-CNN模型原始采用的邊界框回歸損失是4個坐標點的獨立運算,然后求和得到最終的邊界框,而邊界框中的點實際上是相互關(guān)聯(lián)的。傳統(tǒng)方法缺乏坐標點間的完整性,在優(yōu)化過程中,有些變量優(yōu)化得好,有些則不好,這可能導致最終得到的結(jié)果不理想。IoU Loss[6]可以解決這個問題,不同的框可能有相同的SmoothL1Loss[4],但是它們可能有不同的IoU,其中一些有很大的差異。IoU Loss將框的4個點看作整體進行回歸。
對于每個像素(i,j),將xg=(yg1,xg1,yg2,xg2)轉(zhuǎn)換為真值框坐標xgi,j=(xgtij,xgbij,xglij,xgrij),其中xgt,xgb,xgl,xgr是真值框的上、下、左、右邊緣與當前像素之間的距離。同樣,本文將預測框的坐標x=(y1,x1,y2,x2)改為x=(xt,xb,xl,xr),得到2個框間的IoU。IoU Loss定義為liou=-ln(IoU)。目前有幾種基于IoU Loss開發(fā)的改進算法,如2019年提出的GIoU Loss,2020年提出的DIoU Loss和CIoU Loss。
本文方法將邊界框位置的預測轉(zhuǎn)化為邊界框位置變化概率分布的預測。實際分布可能是更復雜的多元高斯或混合高斯分布。本文假設坐標是獨立的,并使預測分布遵循單變量高斯分布,定義分布預測的結(jié)果為坐標4個點的高斯分布之和(遵循SmoothL1Loss的計算方式):
(1)
真值框也可以用高斯分布表示,xg是真值框的位置。當σ→0時,它用狄拉克函數(shù)表示為:
PD(x)=δ(x-xg)
(2)
KL Loss提出了多個樣本PD(x)與PB(x)之間KL散度最小化的方法。在本文中使用KL散度作為邊界框回歸的損失函數(shù):
(3)
如果要最小化Lbbox,在估計值不準確時,式(3)需要使σ盡可能大。由于方程中的后2項不影響KL散度的大小,本文將式(3)方程最后2項看為一個常數(shù)項λ。由于σ2是除數(shù),小的σ在訓練開始時可能會引起梯度爆炸,所以使ε=log(σ2),原方程變?yōu)?
(4)
(5)
圖2 面積差運算原理示意Fig.2 Schematic diagram of area difference operation
wh=rb-lt
(6)
本文方法需得到的是xg和xin之間的面積差:
(7)
(8)
(9)
本文提出的將獨立坐標計算轉(zhuǎn)化為面積差的方法也可以減少模型的計算量,提高網(wǎng)絡的速度。
本文采用的數(shù)據(jù)集是MS-COCO(common objects in context),使用train2017進行訓練,使用val2017進行測試。本文實驗的所有程序均由Python語言編寫,基于Keras和Tensorflow框架搭建,網(wǎng)絡骨干為ResNet 101-FPN,Mask R-CNN為基線模型。為了防止權(quán)重爆炸,本文將學習率設置為0.001,這與Mask R-CNN原文中設置的0.02不一致,可能是由于Caffe和TensorFlow計算梯度的方式不同。本文的評價指標包括AP、AP50、AP75、APS、APM、APL、AR1、AR10、AR100、ARS、ARM、ARL,分別評估邊界框和分割效果。本文實驗在2個GeForce RTX 2080 Ti GPU上運行。
本文將KL-area-Loss與基線模型和融合KL Loss的基線模型比較,用于MS-COCO數(shù)據(jù)集邊界框目標檢測。在這部分實驗中,本文訓練了整個Mask R-CNN模型,但只關(guān)注邊界框回歸分支的輸出,暫時忽略掩碼分支。Mask R-CNN多任務訓練的優(yōu)勢可以進一步改善邊界框檢測結(jié)果。
表1 使用ResNet 101-FPN骨干的邊界框檢測AP對比Table 1 Bounding box detection AP comparison with ResNet 101-FPN %
表2 使用ResNet 101-FPN骨干的邊界框檢測AR對比Table 2 Bounding box detection AR comparison with ResNet 101-FPN %
在目標檢測過程中,KL-area-loss通過改變邊界框回歸分支的損失函數(shù),基于KL loss進一步改進基線模型Mask R-CNN,達到了較好的效果。
為了研究KL-area-Loss對實例分割的影響,本文將KL-Area-Loss和基線模型Mask R-CNN及融合KL Loss的基線模型對MS-COCO分割的影響進行比較。
對于實例分割,本文也進行了精度對比實驗,如表3所示。KL-Area-Loss的AP比基線模型高0.1%,比KL Loss高0.3%。AP50和AP75比基線模型高0.2%和0.5%。本文方法將APS和APL分別提高了0.6%和0.5%,提升了小目標和大目標的精度。
表3 使用ResNet 101-FPN骨干的分割AP對比Table 3 Segmentation AP comparison with ResNet 101-FPN %
在表4所示的實例分割召回率實驗中,ARS和ARM分別比基線模型高0.8%和0.3%。其他指標與基線模型基本持平。
表4 使用ResNet 101-FPN骨干的分割AR對比Table 4 Segmentation AR comparison with ResNet 101-FPN %
本文方法是基于KL Loss對Mask R-CNN進行改進的。從本文的分割評估來看,融合KL Loss的基線模型結(jié)果一般都低于基線Mask R-CNN,這說明KL Loss可以比基線更準確地定位邊界框,但會影響實例分割的準確性。本文方法不僅能準確定位邊界框,而且提升了Mask R-CNN的分割效果,說明算法在目標檢測和實例分割方向都是可行的。本文獲得了實例分割可視化由圖3所示,各列由左至右依次為原圖、Mask R-CNN[3]、Mask R-CNN+KL Loss[3,5]、Mask R-CNN+ KL-Area-Loss在MS-COCO數(shù)據(jù)集圖像上的測試結(jié)果。每一行按照原始圖像、Mask R-CNN、Mask R-CNN +KL Loss、Mask R-CNN+KL-Area-Loss的順序從左到右排列?;赗esNet 101-FPN,這些結(jié)果顯示了邊界框、類別(類名)和置信度分數(shù),掩碼以不同的顏色顯示。本文方法分割小目標比基線模型更準確,而融合KL Loss的基線模型表現(xiàn)并不好。此外,本文方法可以對Mask R-CNN無法識別的一些對象進行分割,進一步證明了本文方法在實例分割中的實用性。
本文方法在訓練和評估實驗中,花費時間較其他方法更短。本文在2個GeForce RTX 2080 Ti GPU上使用ResNet 101-FPN骨干,在MS-COCO trainval35k上訓練Mask R-CNN需要31.05 h,訓練融合KL Loss的基線模型需要30.75 h,訓練KL-Area-Loss需要30.45 h。本文在2個GeForce RTX 2080 Ti GPU上使用ResNet 101-FPN對MS-COCO val2017進行評估。限定在500張圖像上,對3個模型運行邊界框和分割的MS-COCO評估,如表5所示(為了防止其他因素的干擾,本文對每個模型進行3次評估,分別選擇其平均值)。結(jié)果表明,該方法比其他2方法具有更短的預測時間。
表5 MS-COCO上的測試時間對比Table 5 Prediction time comparison on MS-COCO s
實驗結(jié)果如預期的那樣,KL-Area-Loss將4個獨立的坐標計算轉(zhuǎn)換為面積差運算,可以減少邊界框回歸損失的計算負荷,提高模型訓練和評估的速度。
1)本文提出的基于深度學習的實例分割邊界框回歸方法KL-Area-Loss,是為了解決現(xiàn)有目標檢測和分割數(shù)據(jù)集中,由于對象邊緣模糊或相互遮擋等導致目標定位不準確的問題。本文提出的方法受到KL Loss和IoU Loss的啟發(fā),將簡單的邊界框位置預測轉(zhuǎn)化為定位置信度隨位置變化的概率分布估計,并將邊界框4個獨立坐標的計算轉(zhuǎn)化為面積差的計算。KL-Area-Loss的目的是替代檢測器原來的回歸分支損失函數(shù),使邊界框定位更加準確。
2)為了研究本文方法在先檢測后分割的實例分割模型中是否有效,本文的基線模型采用ResNet 101-FPN的Mask R-CNN網(wǎng)絡。本文方法在邊界框檢測、實例分割及運行時間上做了對比試驗,在MS-COCO上均得到了優(yōu)于其他方法的結(jié)果,證實了KL-Area-Loss在Mask R-CNN實例分割模型上的有效性。
3)本文提出的方法是針對邊界框回歸分支損失函數(shù)的改進算法。為了進一步提升模型的精度,可以嘗試繼續(xù)研究掩碼分支的改進算法,進一步提升實例分割的精度;本文實驗使用的是MS-COCO數(shù)據(jù)集,接下來可以嘗試使用其他數(shù)據(jù)集驗證本文方法在各領(lǐng)域上的通用性。