王 梅,李東旭,陳琳琳,范思萌,許傳海,楊二龍
(1.東北石油大學(xué)計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江 大慶 163318;2東北石油大學(xué)石油工程學(xué)院,黑龍江 大慶 163318)
大數(shù)據(jù)的蓬勃發(fā)展,推動(dòng)了無(wú)人駕駛、圖像搜索以及室內(nèi)檢測(cè)等檢測(cè)領(lǐng)域的快速發(fā)展[1 - 5]。但是,大數(shù)據(jù)也給檢測(cè)領(lǐng)域帶來(lái)了新的挑戰(zhàn),其中包括室內(nèi)人員的目標(biāo)檢測(cè)。在室內(nèi)人員的檢測(cè)中數(shù)據(jù)常常會(huì)存在姿態(tài)、背景和遮擋等不確定性問(wèn)題,這些都會(huì)對(duì)檢測(cè)精度產(chǎn)生巨大影響,因此提高目標(biāo)檢測(cè)精度一直受到極大的關(guān)注[6 - 10]。
Figure 1 Mask RCNN structure圖1 Mask RCNN結(jié)構(gòu)
目標(biāo)檢測(cè)主要分為2種,一種是單階段檢測(cè)方法,其檢測(cè)速度快,但是檢測(cè)精度不高,主要有YOLO(You Only Look Once)[11]、SSD(Single Shot MultiBox Detector)[12]、CornerNet[13]和ExtremeNet[14]等方法;另一種是兩階段檢測(cè)方法,主要是通過(guò)區(qū)域建議網(wǎng)絡(luò)RPN(Region Proposal Network)生成候選目標(biāo),再對(duì)目標(biāo)進(jìn)行識(shí)別及定位,主要有RCNN[15]、Fast RCNN[16]和Faster RCNN[17]等方法。為滿足實(shí)際分割需求,He等人[18]通過(guò)在Faster RCNN基礎(chǔ)上添加實(shí)例分割分支和ROI Align,提出了Mask RCNN算法。
Mask RCNN算法使用非極大值抑制NMS(Non-Maximum Suppression)算法進(jìn)行候選框?yàn)V除,其思想是“非黑即白”,只選取分類目標(biāo)得分最高的候選框,因?yàn)殚撝倒潭ú蛔儯欢ǔ潭壬咸岣吡四繕?biāo)在高度重疊時(shí)被漏檢的風(fēng)險(xiǎn)。在此基礎(chǔ)上,soft-NMS算法[19]采用“權(quán)值懲罰”來(lái)解決該問(wèn)題,但soft-NMS算法會(huì)增加候選框數(shù)量,從而出現(xiàn)了同一目標(biāo)被重復(fù)檢測(cè)的新問(wèn)題。通常,研究人員通過(guò)多次實(shí)驗(yàn)選取最優(yōu)結(jié)果的固定閾值,但閾值過(guò)大,容易出現(xiàn)目標(biāo)漏檢問(wèn)題;閾值過(guò)小,又容易出現(xiàn)重復(fù)檢測(cè)問(wèn)題。
針對(duì)以上問(wèn)題,本文基于自適應(yīng)閾值-非極大值抑制AT-NMS(Adaptive Threshold Non- Maximum Suppression)算法提出了Mask RCNNAT-NMS算法。本文主要工作如下:(1)針對(duì)目標(biāo)特征提取問(wèn)題,在Mask RCNN中加入可變形卷積增強(qiáng)目標(biāo)特征提取能力;(2)在NMS閾值設(shè)定時(shí),利用區(qū)間離散二階差分方程計(jì)算合理閾值,降低漏檢概率。
Mask RCNN是基于候選區(qū)域的目標(biāo)檢測(cè)算法,如圖1所示,首先通過(guò)ResNet(Residual Network)[20]對(duì)圖像進(jìn)行特征提取并通過(guò)全卷積網(wǎng)絡(luò)構(gòu)成特征金字塔網(wǎng)絡(luò)FPN(Feature Pyramid Network);然后通過(guò)RPN對(duì)提取到的卷積特征生成候選區(qū)域;最后利用Mask RCNN的3個(gè)分支對(duì)目標(biāo)進(jìn)行識(shí)別與分割,其中2個(gè)分支分別是全連接層(進(jìn)行分類)和邊框(回歸),另一個(gè)分支經(jīng)過(guò)全卷積網(wǎng)絡(luò)進(jìn)行上采樣得到分割圖像。
Mask RCNN定義一個(gè)如式(1)所示的多任務(wù)的損失函數(shù):
L=Lcls+Lreg+Lmask
(1)
其中,Lcls是RPN網(wǎng)絡(luò)中分類損失,采用的是二分類交叉熵?fù)p失,如式(2)所示:
(2)
Lreg是RPN邊界框回歸計(jì)算的正則化L1損失,如式(3)所示:
(3)
Lmask是采用對(duì)預(yù)測(cè)掩膜(mask)的每個(gè)像素點(diǎn)求Sigmoid函數(shù)均值,定義為平均二值交叉熵?fù)p失函數(shù),如式(4)所示,此函數(shù)僅在第k個(gè)類別上有定義,其它的k個(gè)mask輸出對(duì)損失沒(méi)有貢獻(xiàn):
(4)
RPN網(wǎng)絡(luò)是Mask RCNN中至關(guān)重要的一部分,RPN的關(guān)鍵在于錨點(diǎn)機(jī)制,如圖2所示。首先用滑動(dòng)窗口在特征圖像上進(jìn)行遍歷,以錨點(diǎn)為中心選定9種錨箱,其中滑窗滑動(dòng)一次會(huì)預(yù)測(cè)k個(gè)區(qū)域建議,回歸層需要預(yù)測(cè)出錨箱的寬、高和中心坐標(biāo),分類層需要區(qū)分是前景還是背景的概率,因此回歸層需要輸出4k個(gè)坐標(biāo),分類層需要輸出2k個(gè)得分。
Figure 2 RPN anchor mechanism圖2 RPN錨點(diǎn)機(jī)制
RPN網(wǎng)絡(luò)可以針對(duì)生成檢測(cè)建議框的任務(wù)進(jìn)行端到端的訓(xùn)練,同時(shí)預(yù)測(cè)出圖像中每個(gè)目標(biāo)的類別分?jǐn)?shù)和邊界。RPN中采用smoothL1損失函數(shù),相比L1損失函數(shù)在離群點(diǎn)、異常值不敏感等問(wèn)題上有更好的表現(xiàn),并且魯棒性更好,在訓(xùn)練的過(guò)程中比較穩(wěn)定。其中損失函數(shù)smoothL1如式(5)所示:
(5)
Figure 3 Improved Mask RCNN圖3 改進(jìn)后的 Mask RCNN
改進(jìn)的Mask RCNN的結(jié)構(gòu)如圖3所示,在原始網(wǎng)絡(luò)的ResNet階段中加入可變形卷積核[21],在原有卷積核的基礎(chǔ)上增加了模塊對(duì)空間采樣的位置信息,在RPN階段加入自適應(yīng)閾值-非極大值抑制算法計(jì)算合理閾值;然后經(jīng)過(guò)ROI Align 2次量化處理;最后經(jīng)過(guò)Mask branch、Box regression和classification 3個(gè)分支得到最后結(jié)果。
本文算法中,可變形卷積模塊以大小為3*3的卷積核為例,標(biāo)準(zhǔn)的方塊卷積核落在圖像上表示為M,用于該區(qū)域的特征提取。區(qū)域M可以表示為:
M={(-1,-1),(-1,0),…,(0,1),(1,1)}
(6)
對(duì)于在輸出結(jié)果Y上的每個(gè)位置z0,通過(guò)式(7)進(jìn)行計(jì)算:
(7)
其中,x()表示輸入特征映射,w()表示采樣點(diǎn)的權(quán)重,zi是特征圖上點(diǎn)的位置,Δzi是zi的偏移變量。可變形卷積可以根據(jù)圖像中物體的形狀特征進(jìn)行自適應(yīng)調(diào)整,可以靈活地提取不同的形態(tài)特征。
由于采樣在不規(guī)則區(qū)域中進(jìn)行,會(huì)導(dǎo)致偏離層特征點(diǎn)位置不連續(xù),因此采用雙線性插值的方法把任意的輸出轉(zhuǎn)化為連續(xù)的。對(duì)式(7)使用雙線性插值得到式(8):
(8)
其中,G(·,·)是雙線性插值函數(shù),p表示離散的采樣點(diǎn),q表示雙線性插值之后的連續(xù)點(diǎn)集。
3.3.1 算法流程
在目標(biāo)檢測(cè)中采用NMS算法選取候選框,并計(jì)算出該候選框的最終得分sf,如式(9)所示:
(9)
其中,si為候選框的原始得分,C為得分最高的候選框,bi為待檢測(cè)框,UIOU(C,bi)為待檢測(cè)框bi和C的交并比,Nt為固定閾值。
本文針對(duì)Nt提出Mask RCNNAT-NMS算法,計(jì)算最終得分sf,如式(10)所示:
(10)
其中,NAT是將每個(gè)目標(biāo)的置信度最高得分進(jìn)行歸一化后作為區(qū)間數(shù),然后使用二階差分公式計(jì)算出的閾值,其中區(qū)間數(shù)定義如下:
k=2,3,…,n-1
(11)
即在此時(shí)設(shè)定的閾值,使得目標(biāo)置信度得分區(qū)別較大,可以在一定程度上減少目標(biāo)漏檢和重復(fù)檢測(cè)。
3.3.2 收斂性分析
Mask RCNNAT-NMS是在Mask RCNN算法的基礎(chǔ)上采用離散二階差分計(jì)算閾值,因此在Mask RCNN停止時(shí)算法終止,只需證明Mask RCNN的收斂性。
Lcls和Lreg分別是分類損失和邊框回歸損失,其中分類損失采用的是二分類交叉熵?fù)p失,回歸損失采用smoothL1損失。Lmask是采用平均二值交叉熵?fù)p失,已知3個(gè)損失是可以收斂的,本文不再證明。因此,本文算法也是收斂的。
綜合上述對(duì)Mask RCNNAT-NMS算法關(guān)鍵部分的描述,本文算法的具體檢測(cè)步驟如算法1所示。
算法1一種基于AT-NMS的Mask RCNN改進(jìn)算法Mask RCNNAT-NMS
輸入:圖像數(shù)據(jù)。
輸出:帶有類標(biāo)簽、掩膜和目標(biāo)邊框的圖像數(shù)據(jù)。
步驟1通過(guò)加入可變形卷積的ResNet網(wǎng)絡(luò)提取特征,得到輸入圖像的特征圖;
步驟2在RPN網(wǎng)絡(luò)中使用AT-NMS算法獲取特征圖的建議信息;
步驟3將建議信息的深層信息映射回特征圖;
步驟4采用ROI Align對(duì)特征圖上不同大小的建議信息進(jìn)行量化處理,以固定到一個(gè)統(tǒng)一的大??;
步驟5通過(guò)Mask branch中的全卷積網(wǎng)絡(luò)輸出實(shí)例分割圖像;
步驟6通過(guò)全連接層輸出目標(biāo)的類標(biāo)簽和目標(biāo)位置信息。
本文實(shí)驗(yàn)數(shù)據(jù)集采用PASCAL-VOC2012[23]和Indoor CVPR_09[24]。PASCAL-VOC2012數(shù)據(jù)集包含了擁有標(biāo)簽的trainval(11 540幅圖像)和沒(méi)有標(biāo)簽的test(10 991幅圖像),提取數(shù)據(jù)集中10 000幅不同的person圖像。隨機(jī)抽取8 000幅圖像作為訓(xùn)練集,1 000幅圖像作為驗(yàn)證集,1 000幅圖像作為測(cè)試集。Indoor CVPR_09數(shù)據(jù)集包含67個(gè)室內(nèi)類別,總共15 620幅圖像,挑選出帶有people的圖像4 000幅,隨機(jī)抽取2 500幅圖像作為訓(xùn)練集,500幅圖像作為驗(yàn)證集,1 000幅圖像作為測(cè)試集,在對(duì)應(yīng)的測(cè)試集上進(jìn)行實(shí)驗(yàn)結(jié)果測(cè)試,使用精確度、目標(biāo)漏檢率和重復(fù)檢測(cè)率作為性能評(píng)測(cè)指標(biāo)。本實(shí)驗(yàn)所用框架為Keras和TensorFlow,處理器為AMD R5 2600,內(nèi)存32 GB,顯卡為NVIDIA 1080Ti。
本文選取目標(biāo)檢測(cè)中重要的評(píng)價(jià)指標(biāo)之一精確度P,其主要表示正確識(shí)別目標(biāo)個(gè)數(shù)與總識(shí)別目標(biāo)個(gè)數(shù)之比,其計(jì)算公式如式(12)所示:
(12)
其中,XTP是正確識(shí)別目標(biāo)的個(gè)數(shù),XNP是識(shí)別目標(biāo)個(gè)數(shù)總和。
為了對(duì)比Mask RCNNAT-NMS在目標(biāo)重復(fù)檢測(cè)和漏檢等問(wèn)題上的可靠性,另外選擇重復(fù)檢測(cè)率和目標(biāo)漏檢率作為衡量標(biāo)準(zhǔn),其計(jì)算公式如式(13)和式(14)所示:
(13)
(14)
其中,Rt表示重復(fù)檢測(cè)次數(shù)總和,Rr表示重復(fù)檢測(cè)率,Cer為目標(biāo)漏檢概率,Ce為漏檢目標(biāo)總和。
為驗(yàn)證Mask RCNNAT-NMS的檢測(cè)性能,在數(shù)據(jù)集PASCAL-VOC2012和Indoor CVPR_09中選取生活的場(chǎng)景圖進(jìn)行實(shí)驗(yàn),將Mask RCNNAT-NMS算法的檢測(cè)結(jié)果與Mask RCNN算法的檢測(cè)結(jié)果進(jìn)行對(duì)比。本文進(jìn)行了大量實(shí)驗(yàn),并隨機(jī)選取實(shí)驗(yàn)結(jié)果圖像進(jìn)行對(duì)比,選取的實(shí)驗(yàn)結(jié)果如圖4和圖5所示。
由圖4可知,在圖4a中包含8個(gè)目標(biāo),Mask RCNN算法只檢測(cè)出5個(gè)目標(biāo),左側(cè)目標(biāo)、右上側(cè)目標(biāo)和右側(cè)目標(biāo)因遮擋而漏檢;Mask RCNNAT-NMS算法檢測(cè)出6個(gè)目標(biāo),左上側(cè)漏檢1個(gè)目標(biāo),右側(cè)漏檢1個(gè)目標(biāo)。在圖4d中包含10個(gè)目標(biāo),MaskRCNN算法檢測(cè)出9個(gè)目標(biāo),左下角的1個(gè)目標(biāo)漏檢,右下角漏檢1個(gè)目標(biāo),右下角重復(fù)檢測(cè)1個(gè)目標(biāo);Mask RCNNAT-NMS算法檢測(cè)出10個(gè)目標(biāo),無(wú)漏檢。
由圖5可知,在圖5a中包含5個(gè)檢測(cè)目標(biāo),Mask RCNN算法檢測(cè)出6個(gè)目標(biāo),重復(fù)檢測(cè)1個(gè)目標(biāo);Mask RCNNAT-NMS算法檢測(cè)出5個(gè)目標(biāo),無(wú)重復(fù),其中Mask RCNNAT-NMS算法檢測(cè)精確度相對(duì)Mask RCNN有所提升。在圖5d中包含12個(gè)目標(biāo),Mask RCNN算法左側(cè)漏檢1個(gè)目標(biāo),共檢測(cè)出11個(gè)目標(biāo);Mask RCNNAT-NMS算法左側(cè)漏檢1個(gè)目標(biāo),共檢測(cè)出11個(gè)目標(biāo)。
為了進(jìn)一步分析算法的性能,在PASCAL-VOC2012和Indoor CVPR_09 2個(gè)數(shù)據(jù)集上分別對(duì)Mask RCNN和Mask RCNNAT-NMS進(jìn)行多次實(shí)驗(yàn),并對(duì)結(jié)果進(jìn)行分析其目標(biāo)漏檢率和重復(fù)檢測(cè)率如表1和表2所示,檢測(cè)精確度如表3所示。
Figure 4 Comparison of experiment results between Mask RCNNAT-NMS and Mask RCNN on the Indoor CVPR_09 dataset圖4 Mask RCNNAT-NMS與Mask RCNN在Indoor CVPR_09數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果對(duì)比
Figure 5 Comparison of experiment results between Mask RCNNAT-NMS and Mask RCNN on the PASCAL-VOC2012 dataset圖5 Mask RCNNAT-NMS與Mask RCNN在PASCAL-VOC2012數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果對(duì)比
Table 1 Comparison of detection results between Mask RCNNAT-NMS and Mask RCNN on the PASCAL-VOC2012 dataset
由表1可知,在PASCAL-VOC2012數(shù)據(jù)集上,Mask RCNNAT-NMS算法的重復(fù)檢測(cè)率為8.7%,漏檢率為7.3%;Mask RCNN算法的重復(fù)檢測(cè)率為10.2%,漏檢率為8.5%。相比于Mask RCNN算法,Mask RCNNAT-NMS算法的重復(fù)檢測(cè)率降低了1.5%,漏檢率降低了1.2%。
Table 2 Comparison of detection results between Mask RCNNAT-NMS and Mask RCNN on the Indoor CVPR_09 dataset
由表2可知,在 Indoor CVPR_09 數(shù)據(jù)集上,Mask RCNNAT-NMS算法的重復(fù)檢測(cè)率為11.9%,漏檢率為9.3%;Mask RCNN算法的重復(fù)檢測(cè)率為12.7%,漏檢率為10.4%。相比于Mask RCNN算法,Mask RCNNAT-NMS算法重復(fù)檢測(cè)率降低了1.2%,漏檢率降低了1.1%。
Table 3 Comparison of detection accuracy between Mask RCNNAT-NMS and Mask RCNN on different datasets
由表3可知,在PASCAL-VOC2012數(shù)據(jù)集上,Mask RCNN選取閾值為AP50的檢測(cè)精確度是78.8%,Mask RCNNAT-NMS的檢測(cè)精確度是80.2%,精確度提升1.4%。在Indoor CVPR_09數(shù)據(jù)集上,Mask RCNN選取閾值為AP50的檢測(cè)精確度是80.6%,Mask RCNNAT-NMS算法的檢測(cè)精確度是81.1%,精確度提升0.5%。
綜上所述,在多種場(chǎng)景的室內(nèi)人員檢測(cè)中出現(xiàn)人員重疊、遮擋時(shí),本文提出的Mask RCNNAT-NMS算法都比Mask RCNN算法的檢測(cè)效果好。具體如下:
(1)本文算法能夠在一定程度上檢測(cè)出2個(gè)目標(biāo)疊加而導(dǎo)致的漏檢目標(biāo);
(2)對(duì)同樣的目標(biāo),本文算法的檢測(cè)精確度更高。
本文提出了一種基于AT-NMS的Mask RCNN改進(jìn)算法Mask RCNNAT-NMS,根據(jù)自適應(yīng)調(diào)整閾值的方法有效地平衡因固定閾值帶來(lái)的目標(biāo)漏檢和目標(biāo)重復(fù)檢測(cè)問(wèn)題。在PASCAL-VOC2012數(shù)據(jù)集和Indoor CVPR_09數(shù)據(jù)集上,將本文算法與Mask RCNN算法進(jìn)行了對(duì)比分析,相比于Mask RCNN算法,在2個(gè)數(shù)據(jù)集上,本文算法重復(fù)檢測(cè)率分別降低了1.5%和1.2%,目標(biāo)漏檢率分別降低了1.2%和1.1%,精確度提升了1.4%和0.5%。實(shí)驗(yàn)結(jié)果表明,本文算法能在一定程度上降低目標(biāo)漏檢和重復(fù)檢測(cè)概率,并在檢測(cè)精確度上也有著良好表現(xiàn)。但是,在測(cè)試的過(guò)程中發(fā)現(xiàn),目標(biāo)實(shí)例的邊緣、輪廓等方面的分割精度并不是很好,仍然存在較大的誤差,這也是接下來(lái)的工作中需要解決的問(wèn)題。