肖貴明,丁德銳,梁偉,魏國亮
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海 200093)
計算機視覺中,目標(biāo)檢測是最基礎(chǔ)的任務(wù)之一。近年來,目標(biāo)檢測發(fā)展迅速。形成兩階段目標(biāo)檢測和一階段目標(biāo)檢測兩種形式。兩階段目標(biāo)檢測中,RCNN[1]通過選擇搜索生成區(qū)域,并利用深度網(wǎng)絡(luò)提取特征。SPPNet[2]提出空間池化層對RCNN 進行加速;Fast-RCNN[3]提出RoI pooling 提升性能和速度;Faster-RCNN[4]提出RPN 生成RoI;R-FCN[5]提出position sensitive RoI pooling 進行處理位置變動問題;FPN[6]建立從下到上、從上到下、橫向連接的模塊形式;Mask-RCNN[7]提出RoIAlign。一階段目標(biāo)檢測中:SSD[8]和YOLO[9-11]直接預(yù)測對象類別和位置;Focal loss[12]針對一階段類別不平衡問題,并提出RetinaNet;Fcos等[13-16]使用anchor-free 的方式進行目標(biāo)檢測。
現(xiàn)下,目標(biāo)檢測網(wǎng)絡(luò)框架正陸續(xù)推出,學(xué)界對兩階段頭部網(wǎng)絡(luò)的研究是其重點之一。Cascade RCNN[17]根據(jù)不同的IoU,提出級聯(lián)的檢測頭;Mask RCNN 增加額外的語義分割網(wǎng)絡(luò)頭部,提升性能;IoU-Net[18]增加頭部分支來預(yù)測IoU;Double-Head[19]研究發(fā)現(xiàn)fc 層更有利于分類,使用雙頭網(wǎng)絡(luò)對物體進行檢測。近年來,一些兩階段網(wǎng)絡(luò)框架的網(wǎng)絡(luò)頭部變動如圖1 所示。圖1(a)使用全連接頭進行分類和定位;圖1(b)使用全卷積頭進行分類和定位;圖1(c)和圖1(d)是Double-Head 提出的使用卷積和全連接相互作用的雙頭網(wǎng)絡(luò)。
圖1 兩階段目標(biāo)檢測頭部變化圖Fig.1 Two-stage object detection head change figure
根據(jù)兩階段網(wǎng)絡(luò)Double-Head 的研究,fc層更加適合分類,主要由于分類具有空間敏感性。一階段網(wǎng)絡(luò)沒有兩階段網(wǎng)絡(luò)的RoIAlign模塊,前向網(wǎng)絡(luò)傳入的特征到網(wǎng)絡(luò)頭部時無法減少大量參數(shù),故一階段網(wǎng)絡(luò)分類頭部使用fc時會產(chǎn)生大量的參數(shù),極大地減少一階段網(wǎng)絡(luò)頭部改進的可能性。
再者,本文將一階段網(wǎng)絡(luò)RetinaNet 的網(wǎng)絡(luò)分類頭的熱力圖進行輸出,如圖2~圖4 所示。圖2~圖4中,左圖均為圖像剛進入網(wǎng)絡(luò)分類頭部的熱力圖輸出,右圖均為經(jīng)過網(wǎng)絡(luò)頭部后的熱力圖輸出??梢钥闯?,經(jīng)過網(wǎng)絡(luò)頭部后,使得關(guān)注點能較好地集中在其中的一部分。但也出現(xiàn)以下2 個問題。其一,經(jīng)過網(wǎng)絡(luò)頭部后,由于圖中識別的物體范圍太大、含有較多的背景,關(guān)注點無法集中在識別的物體上;其二,頭部網(wǎng)絡(luò)提取的特征反映在原圖中,有些物體識別不到或?qū)ξ矬w識別的信息較少。
圖2 網(wǎng)絡(luò)頭部熱力圖Fig.2 Network head heat map
圖3 網(wǎng)絡(luò)頭部熱力圖Fig.3 Network head heat map
圖4 網(wǎng)絡(luò)頭部熱力圖Fig.4 Network head heat map
綜上所述,本文針對一階段網(wǎng)絡(luò)RetinaNet 的分類頭部進行改進,提出雙分類頭,主要由2 個分類頭部組成:循環(huán)通道注意力模塊頭(Circulatory Channel Attention Module);多頭注意力機制模塊頭(Multihead attention mechanism module head)。其中,循環(huán)通道注意力模塊頭用于著重增強當(dāng)前提取特征,在進行分類時能夠?qū)ξ矬w進行準(zhǔn)確識別,在關(guān)注物體本身的同時減少對背景的關(guān)注。多頭注意力機制模塊頭具有fc的特性,同時又具有自注意力的性能,在獲得更大空間性的同時,加強對物體本身的關(guān)注與識別物體本身。本文有以下3 個創(chuàng)新點:
(1)一階段網(wǎng)絡(luò)頭部引入池化層模塊,以此減少參數(shù)量。
(2)使用雙分類頭,提出循環(huán)通道注意力模塊,將NLP 中的多頭注意力機制模塊有改進性地應(yīng)用到本文中。
(3)2 個網(wǎng)絡(luò)頭部進行自適應(yīng)權(quán)重分配,進行輸出。
本文采用的目標(biāo)檢測網(wǎng)絡(luò)框架是在RetinaNet基礎(chǔ)上加以改進的,如圖5 所示。整體來說,由主干網(wǎng)絡(luò)、特征金字塔(FPN)和網(wǎng)絡(luò)頭中的分類、定位兩個任務(wù)分支、三大模塊所組成。本次選取ResNet101為主干網(wǎng)絡(luò)。
圖5 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.5 Network structure
特征金字塔是從主干網(wǎng)絡(luò)P3到P6構(gòu)造得到的。研究中,l表示特征金字塔的層數(shù),第Pl層大小為該層輸入圖像分辨率倍,圖5 中只簡單地顯示了其中的3 層。特征金字塔的每一層都是用來檢測大小不同的物體,從P3到P6的金字塔中參考框的面積大小為322到2562,其中第l層參考框大小的面積為第l層采樣率2l乘4 的平方大小。這里將長寬比為{2∶1,1∶1,1:2}三種比率使用在每一層上,同時在同一層增加了三種參考框的面積大小,故每層一共A=9 種參考框。
網(wǎng)絡(luò)頭的分類和定位兩個分支是全卷積分支。定位分支是無關(guān)類別的,通過4個W?H?256 卷積層,具有W?H的空間位置數(shù),用來回歸A個邊界框的偏移量,其中每個框有4 個偏移量,分別表示左下、右上兩個點相對偏移量、或者中心點和長寬的相對偏移量,定位分支最后輸出大小為W?H?A?4。分類分支用來預(yù)測每張圖片的每個特定空間位置的類別,由圖5 可知,本文在分類分支上使用2 個分類頭并將2 部分進行自適應(yīng)權(quán)重加權(quán),得到的空間位置數(shù)為W?H,每個位置有A個邊界框,K個種類,預(yù)測該位置屬于某種類別的可能性,故分類分支大小為W?H?A?K。
圖6 為通道注意力模塊。通過將輸入的特征圖進行平均池化和最大池化,即使得輸入特征變成B?1?1?C,并通過Conv進行通道數(shù)的降維,減小參數(shù)量,在此基礎(chǔ)上將平均池化和最大池化得到的特征進行相加,再歸一化得到最終的結(jié)果。通過通道注意力模塊可以對得到的特征進行區(qū)分,使其重點關(guān)注某些特征,減小關(guān)注的特征范圍。
圖6 通道注意力模塊圖Fig.6 Channel attention module figure
圖7 為循環(huán)通道注意力模塊,選擇通道注意力模塊是由于該部分在網(wǎng)絡(luò)頭部,語義特征足夠強,只需要對提取得到特征的物體部分進行重點關(guān)注。循環(huán)通道注意力模塊中進行了以下3 點操作:
(1)引入恒等變換。圖7 中為輸出特征和通道注意力所得到的結(jié)果相乘后和輸出特征進行相加,恒等變換的使用是為了保持當(dāng)前性能的同時,盡可能地增強性能,同時保持網(wǎng)絡(luò)的穩(wěn)定性。
圖7 循環(huán)通道注意力模塊圖Fig.7 Circulation channel attention module figure
(2)通道注意力模塊使用的是未經(jīng)過Conv變換的輸入特征,由于輸入特征相比于輸出特征保留有更多的細(xì)節(jié),所以將通道注意力模塊使用在輸入特征上,可以對每個通道做更細(xì)致的分析,得到的結(jié)果更加地準(zhǔn)確。
(3)使用結(jié)構(gòu)循環(huán),為了通過多次操作對重點關(guān)注到的特征進一步加強,對不應(yīng)關(guān)注的特征進一步弱化,使得提取得到的特征更加地準(zhǔn)確。
多頭注意力機制如圖8 所示。圖8 中為多頭注意力模塊頭部為1 時的情況(self-attention)。多頭注意力是在NLP 的Transformer 中提出的,旨在解決RNN 中數(shù)據(jù)不能并行所帶來的運行速度較慢的問題。這里,xi表示輸入數(shù)據(jù),通過嵌入層進行embedding得到ai。由此推得的數(shù)學(xué)公式可寫為:
圖8 多頭注意力機制Fig.8 Multi-head attention mechanism
對輸入ai進行變換。相應(yīng)數(shù)學(xué)公式分別如下:
得到qi、ki、vi。將得到的3 個輸入進行向量點積,即:
計算得到aj,i后,對其進行歸一化,表示為:
如上計算后得到輸出bj。這種自注意力機制具有很好的空間性,同時對自身的重要部分、即該識別的物體進行了重點關(guān)注,能夠很好地滿足局部特征和全局特征的提取和使用。
圖9 為多頭注意力機制模塊頭。多頭注意力機制模塊頭總共由3 部分組成,分述如下:
圖9 多頭注意力機制模塊Fig.9 Multi-head attention mechanism module
(1)平均池化。由于一階段目標(biāo)檢測網(wǎng)絡(luò)不具有兩階段目標(biāo)檢測網(wǎng)絡(luò)的RoIAlign模塊,將傳入到網(wǎng)絡(luò)頭部的特征進行再提取,減少大量傳入頭部的特征,故無法直接使用fc層。研究中可將傳進網(wǎng)絡(luò)頭部的特征進行平均池化,從原先的W?H縮小到N?N,減小參數(shù)量。同時采用平均池化是由于到網(wǎng)絡(luò)頭部時,語義信息強,這時候使用平均池化能帶來更好的性能。
(2)使用多頭注意力機制,利用其本身具有良好的空間性和自注意力機制,能夠更好地識別到物體。其中,多頭注意力機制中的輸入query、key、value分別是輸入特征,大小為B?W?H?C,進行池化后的特征大小為B?N?N?C和D?N?N?C。輸入特征使用了恒等變換,保證性能的同時,加快收斂速度和網(wǎng)絡(luò)穩(wěn)定性。由于分類頭部對位置信息不敏感,所以在使用多頭注意力時并未使用位置信息。
(3)Layer Norm,通過多頭注意力輸出的特征為B?M?C,M為H?W,將C個通道作為一個樣本,對M個位置的C個通道進行歸一化,使得每一個位置不同的通道具有和為1 的權(quán)重,進一步加快訓(xùn)練速度。
本文中2 個網(wǎng)絡(luò)頭部的偏重點有所不同,循環(huán)通道注意力模塊頭更加偏向能準(zhǔn)確識別物體,減少背景混入;多頭注意力機制模塊頭偏向于通過更大的空間性和自注意力將物體識別出來。所以將2 個網(wǎng)絡(luò)分類頭部進行自適應(yīng)加權(quán)。通過對2 個頭部進行平均池化生成B?1?1?C的特征,進行合并,通過softmax進行歸一化,將得到的權(quán)重和各自的網(wǎng)絡(luò)頭部特征進行相乘,相加得到最終的分類輸出,讓網(wǎng)絡(luò)自身來決定該偏向于哪一部分,從而使性能更好。
PASCAL VOC 數(shù)據(jù)集,包含20 個類別,加上背景、共有21 個類別。其中,VOC2007 共包含了9 963張圖片:5 011 張為訓(xùn)練圖片,4 952 張為測試圖片。VOC2012 共包含了11 540 張訓(xùn)練圖片。本次實驗聯(lián)合VOC2007 和VOC2012 訓(xùn)練集進行訓(xùn)練,在VOC2007 測試集上進行測試。
MSCOCO 數(shù)據(jù)集總共有80類,本次實驗使用MSCOCO2017。其中,訓(xùn)練集有118 287 張圖片,驗證集有5 000 張圖片,測試集一共有40 670 張圖片。本次實驗通過將檢測結(jié)果上傳到評估服務(wù)器來報告測試結(jié)果。
本次實驗指標(biāo)使用的是mAP。通過計算召回率和精確率,并繪制成PR曲線進行統(tǒng)計。指標(biāo)的數(shù)學(xué)定義式可寫為:
其中,真陽性(Ture Positive,TP)表示正確識別為物體樣本;真陰性(True Negative,TN)表示正確識別為背景樣本;假陽性(False Positive,F(xiàn)P)表示背景樣本被識別為物體樣本;假陰性(False Negative,F(xiàn)N)表示物體樣本被識別為背景樣本。
本文實驗基于ubuntu18.04 系統(tǒng),采用Pytorch深度學(xué)習(xí)框架和Python 編程語言,硬件使用英偉達GeForce GTX 1080 顯卡。以ResNet 為主干網(wǎng)絡(luò),每個batch大小為2 張圖片,使用SGD 進行優(yōu)化,動量為0.9,初始學(xué)習(xí)率為0.002 5。VOC0712 運行12個epoch,MS COCO2017 運行24個epoch,第16個epoch和第22個epoch分別出現(xiàn)了學(xué)習(xí)率的下降,下降后的學(xué)習(xí)率為0.000 25和0.000 025。
本文對提出的雙分類頭進行了實驗驗證,表1為近年來一些網(wǎng)絡(luò)框架在VOC0712 中的實驗結(jié)果。由表1 可以看出,相比于作為baseline 的RetinaNet,本次研究提出的雙分類頭網(wǎng)絡(luò)構(gòu)架RetinaNet-DCH具有很高的網(wǎng)絡(luò)性能,mAP上達到了80.8,提高了3.5%。
表1 VOC0712 數(shù)據(jù)集實驗結(jié)果Tab.1 VOC0712 dataset experimental results
表2~表6 為本次雙分類頭的消融實驗。由表2 可知,雙分類頭權(quán)重自適應(yīng)相比于手動設(shè)置權(quán)重,能達到更好的效果。由表3 可知,循環(huán)通道注意力模塊頭循環(huán)次數(shù)為2 時效果最好。表4 的實驗結(jié)果表明多頭注意力機制模塊頭中使用單頭就能達到理想的效果。表5 中使用了不同大小的平均池化,當(dāng)使用16×16時,效果好、參數(shù)少。表6 分別對2 個頭部分開實驗,相比于循環(huán)通道注意力模塊頭而言,實驗表明多頭注意力機制模塊頭能帶來更好的實驗效果,2 個網(wǎng)絡(luò)頭部一起使用時性能最好。
表2 VOC0712 數(shù)據(jù)集權(quán)重分配實驗結(jié)果Tab.2 VOC0712 dataset weight distribution experimental results
表3 VOC0712 數(shù)據(jù)集循環(huán)次數(shù)實驗結(jié)果Tab.3 The experimental results of the number of cycles of the VOC0712 dataset
表4 VOC0712 數(shù)據(jù)集多頭實驗結(jié)果Tab.4 VOC0712 dataset multi-head experimental results
表5 VOC0712 數(shù)據(jù)集平均池化實驗結(jié)果Tab.5 Average pooling experimental results of VOC0712 dataset
表6 VOC0712 數(shù)據(jù)集頭部實驗結(jié)果Tab.6 Experimental results of the head of the VOC0712 dataset
表7 和表8 是運用MSCOCO2017 數(shù)據(jù)集后的實驗結(jié)果。表7 在ResNet50 上進行實驗,表8 在ResNet101 上進行實驗,表8 中RetinaNet-DCH-MS為增加了多尺度訓(xùn)練的結(jié)果。實驗表明本文提出的RetinaNet-DCH 網(wǎng)絡(luò)框架具有很高的性能。相比于兩階段網(wǎng)絡(luò)Double-Head-Ext,一階段網(wǎng)絡(luò)RetinaNet-DCH-MS 只相差了0.2%的mAP。
表7 MSCOCO2017 數(shù)據(jù)集實驗結(jié)果Tab.7 Experimental results on MSCOCO2017 dataset
表8 MSCOCO2017 數(shù)據(jù)集實驗結(jié)果Tab.8 Experimental results on MSCOCO2017 dataset
圖10~圖12 為在COCO 數(shù)據(jù)集上、RetinaNet網(wǎng)絡(luò)使用了雙分類頭后網(wǎng)絡(luò)頭部的熱力圖輸出,左圖為最初進入網(wǎng)絡(luò)頭部的熱力圖輸出,右圖為經(jīng)過網(wǎng)絡(luò)頭部后的熱力圖輸出??梢钥闯?,在經(jīng)過網(wǎng)絡(luò)頭部前的熱力圖相差不大,但在經(jīng)過網(wǎng)絡(luò)頭部后的熱力圖輸出相差很大。其中,2 個比較明顯的提升在于:相比于之前的網(wǎng)絡(luò)框架能更準(zhǔn)確地識別到物體本身;對于識別到的物體能夠更加地精準(zhǔn),不會有大量背景混入其中。
圖10 網(wǎng)絡(luò)頭部熱力圖Fig.10 Network head heat map
圖11 網(wǎng)絡(luò)頭部熱力圖Fig.11 Network head heat map
圖12 網(wǎng)絡(luò)頭部熱力圖Fig.12 Network head heat map
圖13 為在COCO 數(shù)據(jù)集上物體原圖的檢測輸出,圖13(a)為RetinaNet 網(wǎng)絡(luò)輸出,圖13(b)為RetinaNet-DCH 網(wǎng)絡(luò)輸出。從圖13 中可以明顯看出,改進后的網(wǎng)絡(luò)框架目標(biāo)定位和識別更加精準(zhǔn),識別到更多的物體的同時,分類的置信度也更高,特別對于小物體的識別準(zhǔn)確率提升明顯。
圖13 COCO2017 數(shù)據(jù)集上的結(jié)果圖Fig.13 The result graph on the COCO2017 dataset
本文對一階段目標(biāo)檢測網(wǎng)絡(luò)頭部輸出熱力圖,發(fā)現(xiàn)經(jīng)過網(wǎng)絡(luò)頭部后提取的特征存在著識別不到物體和識別物體時范圍太大兩個問題,同時結(jié)合現(xiàn)如今兩階段目標(biāo)檢測頭部研究成果,對一階段目標(biāo)檢測網(wǎng)絡(luò)頭部進行改進提出了雙分類頭:循環(huán)通道注意力模塊頭、多頭注意力機制模塊頭。其中,循環(huán)通道注意力模塊頭在識別物體時能夠減小識別范圍,準(zhǔn)確識別物體。多頭注意力機制模塊頭則通過利用多頭注意力機制能夠獲得更好的空間性和自注意力,更好地識別到物體。利用池化可減少參數(shù)量,滿足了可操作性。通過自適應(yīng)權(quán)重操作,網(wǎng)絡(luò)對2 個頭部獲得最佳的權(quán)重分配、結(jié)合。本文基于RetinaNet 在VOC0712 和COCO2017 數(shù)據(jù)集上進行實驗,在mAP上達到了80.8%和41.7%,分別提升了3.5%和2.4%。