張海燕,付應娜,丁桂江,孟慶巖
(1.合肥工業大學計算機與信息學院,安徽 合肥 231009; 2.三維醫療科技股份有限公司,江蘇 徐州 221000)
隨著人工智能技術的不斷發展,目標檢測作為一項基礎且富有挑戰性的計算機視覺任務,具有極其廣泛的應用[1,2]。對于任意圖像,目標檢測的任務就是利用一套算法來判別圖像中是否存在目標,如果存在,則預測目標的位置和類別。所有當前主流的檢測算法,諸如更快的基于區域的卷積神經網絡Faster R-CNN(Faster Region-based Convolutional Neural Networks)算法[3]、單階段目標檢測SSD(Single Shot MultiBox Detector)算法[4]、特征金字塔網絡FPN(Feature Pyramid Networks)算法[5]和用于密集目標物體檢測的RetinaNet(Focal loss for dense object)算法[6]等,一直被認為是目標檢測成功的關鍵。然而,這些算法都是建立在錨框的基礎上,即特征圖上的每個像素點都需要預先設置固定尺寸和長寬比的邊界框。顯然,這種基于錨框的方法不僅需要人為地設置大量超參數,還會引起正負樣本的不平衡,這會在很大程度上影響算法的檢測精度。此外,由于計算量較大,還將耗費大量的內存。
目前,全卷積網絡FCN(Fully Convolutional Network)算法[7]在深度估計、語義分割和關鍵點檢測等計算機視覺任務中都已獲得了巨大的成功,這帶來了一定的啟發:能否像語義分割中的FCN[7]那樣,通過簡單的像素級預測來進行目標檢測?
因此,不少研究人員都嘗試利用這一想法來構造類似于FCN的框架,如統一的標定位端到端的目標檢測算法DenseBox[8]、一種先進的目標檢測算法UnitBox[9]。與以前的SSD等檢測算法不同,DenseBox采用統一端到端的全卷積網絡框架,直接預測邊界框。UnitBox則摒棄了均方誤差損失(L2Loss),利用交并比損失IOU Loss(Intersection Over Union Loss)進行回歸。總的來說,這些基于FCN的模型直接在特征圖的每個空間位置上預測1個4維向量和1個類別,某種程度上可以有效地避免上述問題,但是很難處理不同尺寸的物體。此外,這些模型主要用于一些特定場景的檢測,比如場景文字檢測和人臉檢測等。由于邊界框高度重疊,所以并不適用于通用目標檢測,尤其在預測時,物體之間的高度重疊會帶來定位模糊的現象。考慮到這個問題,許多算法通過借鑒FPN多尺度的思想在很大程度上減弱了這種不確定性。目前,大多數無錨框算法框架都采用FPN的網絡結構。其中,基于全卷積網絡的單階段目標檢測FCOS (Fully Convolutional One-Stage object detection) 算法[10]和超越有錨框目標檢測FoveaBox算法[11]預測每個正區域內的點到其邊界之間的偏移量,避免了直接預測目標區域造成的尺度變化過大而難以訓練的問題。無錨框在線選擇特征FSAF (Feature Selective Anchor-Free) 算法[12]利用錨框分支直接預測目標位置,同時結合基于錨框的檢測算法使得不同層的目標可以覆蓋更廣的范圍。顯然,相比于基于錨框的檢測算法,無錨框檢測算法不用再設置與錨框相關的超參數,其框架設計更加簡單靈活,而且精度更高。但是,無錨框檢測算法仍然存在一些不足:(1)獲取圖像的全局信息能力較弱。(2) 無法很好地檢測重疊的物體,尤其重疊區域較大的物體。(3) 由于使用了殘差網絡ResNet(Residual Network),很容易產生感受野不匹配的現象。因此,本文的目的是讓網絡擁有全局信息,緩解感受野不匹配的現象,從而提高檢測精度。
本文使用FCOS作為基本架構,并在此基礎上提出了一種新的特征融合方法,以提供全局信息,提高特征表達能力。此外,本文還將矩形感受野引入框架中,同時加入了自注意力機制,以獲取更多的信息,減少無關噪聲的干擾。
本文在PASCAL VOC數據集[13]上進行了實驗并進一步設計了消融實驗驗證本文算法的有效性。此外,為了與其它先進算法進行比較,本文也在MS COCO數據集[14]上進行了一些實驗。
絕大多數目標檢測算法都是基于錨框的,根據是否有產生候選區域的機制一般分為2大類:單階段檢測算法和雙階段檢測算法。最流行的雙階段檢測算法是Faster R-CNN,它首先采用候選區域生成網絡RPN(Region Proposals Network)粗略地生成候選區域,同時利用卷積神經網絡提取特征,然后再進一步改進。與雙階段檢測算法的第1階段類似,單階段檢測算法直接在輸入圖像上生成邊界框并進行回歸。經典的單階段檢測算法有SSD和實時目標檢測算法YOLO(You Only Look Once)[15]等。YOLO直接預測對象實例類別和位置;SSD則基于VGG-16網絡,采用多尺度特征圖進行檢測。雙階段檢測算法在精度上有更大的優勢,而單階段檢測算法速度更快。考慮到實時性的要求,單階段檢測算法現已成為主流的研究趨勢。FPN、單階段特征融合目標檢測Feature-fused SSD (Feature-fused Single Shot Detector) 算法[16]和單階段反卷積目標檢測DSSD (Deconvolutional Single Shot Detector) 算法[17]采用單階段的結構,利用高層語義信息改善低層的特征表達,保證了良好的檢測性能;RetinaNet則采用新的損失函數focal loss來解決類別不平衡問題。
無錨框并不是一個新概念,最早可追溯到DenseBox。具體地,它應用了類似于FCN的理念,即在每個特征圖上逐像素地預測實例。針對不同尺寸的物體,它需要利用圖像金字塔來訓練網絡,這勢必會占用大量的內存空間。因此,現在大多數無錨框檢測算法都借助于特征金字塔,比如FSAF、FCOS等。FSAF采用特征選擇策略為每個實例分配最佳的特征層,FCOS試圖借鑒FPN多尺度的思想,同時利用中心度分支來抑制低質量框。
另一類無錨框檢測算法主要依賴于關鍵點。其中,對角點目標檢測算法CornerNet`[18]的核心是通過角點池化操作檢測出邊界框的一對角點,然后對其進行分組,最后經過復雜的后處理得到最終檢測結果。
在傳統的卷積神經網絡中,感受野是影響檢測性能的重要因素之一。直觀地說,感受野是特征圖上的一個點對應于輸入圖像上的一個區域。顯然,感受野與特征信息的獲得密切相關。在保證參數量不變的情況下,不少研究都采用空洞卷積來擴大感受野。Li等[19]在三叉級目標檢測算法TridentNet中應用空洞卷積(擴張率不同)構造了一個具有不同感受野的平行多分支結構。Li等[20]在全新骨干網絡的目標檢測DetNet中設計了一種新穎的主干網絡以保持空間分辨率,并利用空洞卷積來增大感受野。盡管已經取得了成功,但空洞卷積的使用在某種程度上還是會使網絡速度變慢,同時會丟失一些局部細節信息。此外,這種情況下感受野仍舊極為單一。故本文對感受野進行多樣化設計,同時使用全局池化操作替代空洞卷積,以獲得更豐富的信息。

Figure 1 Structure of FCOS圖1 FCOS結構
由于高層細節信息和低層語義信息的不足,特征融合一直是研究人員關注的焦點。針對上述特征信息不足的問題,FPN、DSSD和Feature-fused SSD等被提出,它們通過引入更高層的語義信息來增強較低層的特征。然而,太多的語義信息會掩沒低層的細節信息,而語義信息太少又會削弱檢測算法的性能,故這種方法并不能使網絡得到最優的特征。Tian等[21]在DF2S2(Detection with Feature Fusion and Segmentation Supervision)中利用逐元素相乘的操作,使得低層特征圖擁有高層特征圖上的語義信息,而又不至于掩沒細節信息。信息路徑聚合網絡PANet (Path Aggregation Network)[22]同樣通過多個并行分支來挖掘特征信息。毫無疑問,這些算法會帶來太多的計算負擔。此外,還有些算法在融合時會添加注意力機制及一些先進的模塊,這也是一種很好的方法。本文旨在以較少的計算量獲得更優的特征。
本節對無錨框目標檢測算法FCOS進行了改進。圖1展示了本文算法的整體網絡結構圖,圖中C3、C4和C5表示骨干網絡的特征圖,H和W分別為特征圖的高和寬。輸入一幅圖像,通過FCOS的骨干網絡(即ResNet)得到金字塔特征(由特征圖C3、C4和C5構成);之后,再使用多樣性感受野注意力機制作用于其特征金字塔最后一層(即C5),并將所得的結果特征圖與前面卷積得到的特征圖(即C3和C4)自上而下相互融合,從而得到新的金字塔特征。這里,特征圖之間的融合方式為全局信息指導特征融合GCF(Global Context-guided feature Fusion),其最終結果P3、P4、P5與P6、P7一起參與檢測。
如圖1 所示,FCOS在RetinaNet的基礎上又在每個金字塔層上附加了2個額外層來負責逐像素預測。由于特征圖中越靠近所預測目標框中心的點越有可能產生高質量的檢測,故FCOS又提出中心度(Center-ness)分支去抑制低質量的點,從而達到更好的檢測效果。其損失函數如式(1)所示:
(1)

從人類視覺角度來看,人眼所感知的區域應該有不同的形狀和大小,這與決策信息的生成有很大關系。目前,絕大多數網絡的感受野都是方形的,這會帶來一個弊端,即對于不同尺度的目標(特別是過大或過小的目標),大范圍的變化會使檢測受到很大程度的影響。為了解決這個問題,最直觀的方法就是使用大的卷積核來擴大感受野,但這會產生較大的計算量。同樣,空洞卷積也可以實現感受野的擴張,然而此時網絡的速度會受到一定的影響,并且局部信息也會出現丟失的情況。更重要的是,所得特征圖的感受野仍然和之前一樣。
本文提出了一種簡單且有效的方法——多樣性感受野注意力機制DRAM(Diverse Receptive fields Attention Mechanism)來克服這些局限性。多樣性感受野模塊如圖 2所示,采用1×k,k×k,k×1的卷積核生成具有不同感受野的特征圖,之后將所得特征圖相加并融合從而使特征圖擁有多樣性的感受野。

Figure 2 Diverse recptive fields module圖2 多樣性感受野模塊
如圖3所示,為了保留空間注意力,將原始特征圖通過1×1的卷積操作后與上述得到的特征圖逐像素相乘。此外,由于全局上下文很容易擴大感受野和增強像素級分類的一致性,本文又引入了全局平均池化,即輸入特征圖池化后經過上采樣與多樣性感受野注意特征相加融合,從而使最終的特征圖能夠擁有與大感受野同樣豐富的上下文語義信息。

Figure 3 Illustration of the diverse receptive field attention mechanism圖3 多樣性感受野注意力機制
最常見的特征融合是高低層特征圖的簡單拼接或融合,例如FPN和DSSD,但是這并不能保證得到的特征最優。本文認為特征提取能力的提高對于目標物體檢測性能的改善仍有相當大的幫助。PANet利用低層次的精確定位信息,縮短信息量的傳輸路徑,增強特征金字塔的特征表達能力。DF2S2采用逐元素相乘的操作,使得低層特征圖具有高層特征圖中的語義信息。但是,這些改進會造成計算資源的浪費。研究表明,全局池化可以有效地增加感受野,提高像素級分類的一致性;另一方面,更高層的特征圖擁有更豐富的語義信息。
因此,本文將全局池化操作作為輔助模塊附加到高層次中并同時將其輸出用于指導低層,以便選擇有判別性的多分辨率特征表達。具體地,首先獲得高層的全局上下文信息,再與高層原始特征相乘,之后對其進行歸一化并通過ReLu激活函數后與低層特征相乘以達到高層指導低層的作用,最后將加權后的低層特征與高層特征疊加。池化操作是獲取全局上下文信息的傳統方法,但是這種加權方式是線性的,常需要利用1×1卷積來增加非線性,以提高模型的檢測能力。為此,本文還設計了一種新的語義模塊,即步長為2的1×1卷積和歸一化指數函數(softmax)的組合,以保證模型的非線性能力,之后再將其與原始的高層特征圖進行相乘。相對于池化操作而言,該模塊不再需要額外的卷積運算來保證非線性且可以更好地挑選出重要特征。同時,基于模塊的多級結構,歸一化操作不再使用批歸一化,而是選擇層歸一化[23],以加速損失函數的收斂速度。除此之外,該模塊又在低層使用了3×3卷積,以幫助獲得來自高層的豐富信息和更好的指導,如圖4所示。

Figure 4 Illustration of the Global context-guided feature fusion圖4 全局信息指導特征融合
本文的實驗基于深度學習框架PyTorch實現,所用數據集為PASCAL VOC和COCO,分別包含20個和80個類。為了評估每個模塊的有效性,本文在PASCAL VOC數據集上設計了消融實驗。
本節研究了DRAM在不同特征層上的影響,以更好地確定其作用,結果如表1所示。表1中,骨干網絡為ResNet-50時,原始網絡FCOS的檢測精度為79.0%,本文方法的檢測精度為80.2%,提升了1.2%,這表明DRAM對于目標物體的檢測是十分有用的。當DRAM作用于C3和C4層時,兩者檢測精度幾近相同,較FCOS檢測精度只有0.5%的提升;當僅作用于C5層時,DRAM將檢測性能提高到了80.1%,其結果與3層共同作用所獲得的最高精度大體相近,但參數更少。由此可知:DRAM模塊更適合于高層次的特征圖。
此外,本節還比較了所提方法與FCOS,結果如表2所示。從表2可以看出,DRAM將檢測性能提升至了一個新的水平,mAP達到了80.1%(僅在C5層)。相比FCOS,mAP提高了1.1%。使用另一模塊GCF后,mAP比FCOS的高了0.7%,在性能檢測方面的提升也尤為明顯。當FCOS檢測算法中同時使用DRAM和GCF時,mAP可達80.4%。

Table 1 Results of DRAM on different layers表1 DRAM在不同層上的實驗結果

Table 2 Results of different methods
圖5為本文方法與FCOS進行物體檢測的可視化對比圖。第1行為FCOS的檢測結果圖,第2行為本文改進方法的檢測結果圖。
從圖5中可以看出,相比FCOS而言,本文所提方法能夠檢測出更多的物體。此外,自左向右3幅圖像中,目標物體間均存在不同程度的重疊(大致為1/5,2/3和2/5的重疊區域),本文方法在一定程度上能夠將其檢測出。由此可見,較于FCOS,本文方法優勢明顯。

Figure 5 Comparison of detection results圖5 檢測結果比較
在實驗中,本文將采用PASCAL VOC2007 和 PASCAL VOC2012作為訓練集,共22 136幅圖像。同時,在PASCAL VOC2007測試集上評估結果并使用mAP@0.5作為評判標準。批量大小設置為14,動量參數設置為0.9,權重衰減因子為0.000 1。訓練時,使用“預熱” 策略,逐步將學習率從0提高到0.01;在迭代次數達到32 000和44 000次時,學習率下調0.1。此外,實驗中還使用了SSD的數據增強策略,以創建更多可供訓練的小樣本。
表3為在PASCAL VOC2007測試集上本文算法與一些先進算法的實驗結果比較。為了公平起見,本文盡量使用同一骨干網絡。在相同骨干網絡的條件下,本文算法的mAP比FCOS的提高了1.4%。當骨干網絡為ResNet-101時,本文算法可以實現81%的mAP。與單階段檢測器SSD、DSSD及RFBNet等相比,本文算法檢測效果更好,其結果甚至可以與一些雙階段檢測算法相媲美。

Table 3 Experimental results comparision with other state-of-the-art two-stage or one-stage algorithms on PASCAL VOC dataset
為了全面驗證所提模型的有效性,本文在MS COCO數據集上也進行了相關實驗,實驗結果如表4所示。與FCOS相同,本文使用trainval35kset(train set+val35k set)訓練模型,訓練時仍然采用“預熱”技術,前500次迭代學習率從0逐漸提高到0.01,之后在120 000次和160 000次后以10倍的倍數降低,直到180 000次。網絡的初始化與在PASCAL VOC數據集上的步驟一致,在訓練前加載ImageNet上預訓練的權重。從表4可以看出,相同骨干網絡條件下,本文在MS COCO測試集上的mAP達到了42.8%,超過FCOS的檢測精度,且有明顯差距。當IOU大于0.5和0.7時,AP值分別為63.3%和46.3%。同時,小、中、大目標物體的檢測精度分別為24.6%、46.7%和54.2%,提高了0.6%、3.6%和3.2%。顯然,對于尺度較大物體的檢測,本文算法優勢明顯。在小目標物體的檢測上,提升較少;與一些經典的雙階段算法相比,其在物體檢測方面也有著很好的效果。此外,本文算法也優于許多單階段檢測算法。特別地,其精度明顯高于最新的無錨框目標檢測算法FSAF、FoveaBox和CornerNet 等。為進一步展示本文算法的優勢,本節還比較了該算法與其他一些目標檢測算法的檢測速度結果如表5所示。表5中,骨干網絡為ResNet-101時,本文算法模型的FPS可以達到15.1,稍低于FCOS的FPS,但精度提升較大。此外,其檢測速度明顯快于其他一些無錨框的目標檢測算法模型且物體的位置回歸與分類效果更好。較于一些一階段的模型檢測算法,本文算法雖然檢測速度較低,但在精度方面卻有著更佳的表現且基本滿足實時需求。

Table 4 Experimental results comparison with other state-of-the-art two-stage or one-stage algorithms on MS COCO dataset

Table 5 Speed comparison other state-of-the-art two-stage or one-stage detectors on MS COCO
本文從感受野和特征融合2個角度,基于FCOS提出了2種改進方法:多感受野注意力機制DRAM和全局信息指導融合GCF。實驗表明,DRAM更適合于較高層次,這可能與高層擁有更豐富的語義信息有關;GCF使得網絡獲得了更多有用的判別性特征。與許多最先進的檢測算法相比,本文算法具有明顯的優勢。然而,本文方法對重疊物體的檢測性能提升有限,此外,較于單階段目標檢測算法,其速度只能基本滿足實時性要求。因此,今后的研究工作將會基于此而展開。