賀宇哲,何 寧,張 人,梁煜博,劉曉曉
1.北京聯(lián)合大學 北京市信息服務工程重點實驗室,北京 100101
2.北京聯(lián)合大學 智慧城市學院,北京 100101
本文針對基于深度學習的目標檢測模型在訓練過程中存在的不平衡問題進行了研究。目標檢測作為人工智能領域的一個重要分支,廣泛應用于機器人導航、智能視頻監(jiān)控、工業(yè)檢測等領域[1]。隨著深度學習技術的迅速發(fā)展,目標檢測模型層出不窮,如YOLO[2]、Faster R-CNN[3]、Mask R-CNN[4]等。雖然它們的模型架構各不相同,但訓練基本遵從區(qū)域采樣、提取特征、根據(jù)目標函數(shù)進行分類和回歸的過程。但在此訓練過程中存在不平衡問題導致模型不能達到最佳效果[5]。這種不平衡問題其中包括兩個方面:特征圖層次的不平衡和目標函數(shù)層次的不平衡,而引起這兩方面不平衡的原因分別是提取的特征沒有被充分利用;目標函數(shù)并不是最佳。
特征圖層次的不平衡:在網(wǎng)絡中,high-level特征中語義信息比較豐富,但是目標位置比較粗略,而lowlevel特征中語義信息比較少,但是目標位置準確。Lin等人[6]提出Feature Pyramid networks利用同一張圖片相鄰層級之間的特征進行融合,得到的feature maps供給下個階段進行預測以得到更好的結果,但是只限于相鄰層級。Pang等人[7]提出Balanced Feature Pyramid在Feature Pyramid networks進行了改進,以實現(xiàn)對于不相鄰層級的特征也能進行關聯(lián),達到對特征的充分利用。
目標函數(shù)層次的不平衡:檢測器需要執(zhí)行分類和回歸兩個任務,因此,在目標函數(shù)中也包括了這兩項。如果它們沒有有效地進行平衡,或者其中一個出現(xiàn)偏差,則會導致整個檢測性能的降低[8]。因此,要重新對分類和回歸這兩項進行平衡,以實現(xiàn)目標函數(shù)的最佳收斂。
為了有效地改進如上所述模型訓練中的不平衡問題,利用Pang等人[7]提出Libra R-CNN的Balanced Feature Pyramid改進FPN以得到更好的特征圖,用來解決特征圖層次的不平衡。利用Balanced L1Loss[7]作為回歸損失,有效調節(jié)目標函數(shù)層次的不平衡。為了解決Faster R-CNN在訓練過程中存在的不平衡問題,本文將上述兩個模塊加入基于FPN的Faster R-CNN模型中,達到AP是38.5%的結果,并進行了消融實驗,同時對各模塊逐一進行驗證。
基于深度學習的目標檢測方法根據(jù)模型訓練方式可分為兩種類型:One stage目標檢測算法和Two stage目標檢測算法。Two stage首次由Girshick等人[9]所提出的R-CNN引入,之后He等人[10]在R-CNN的基礎上提出SSP-NET。由于R-CNN在候選區(qū)域上進行特征提取時存在大量重復性計算,為了解決這個問題,Girshick等人[11]提出了Fast R-CNN。SSP-NET和Fast R-CNN都需要單獨生成候選區(qū)域,該步驟的計算量非常大,并且難以用GPU進行加速。針對這個問題,2015年,Ren等人[3]在Fast R-CNN的基礎上提出了Faster R-CNN。之后在Faster R-CNN加入了FPN[6],使得相鄰層級之間的特征進行融合。
Faster R-CNN分為四個部分:首先通過CNN[12]提取原始圖片的feature maps,供之后的RPN和全連接層使用。其次,RPN網(wǎng)絡通過softmax判斷錨點屬于物體還是背景,再通過bounding box regression重新調整錨點以獲得更加準確的proposals。再次,Roi Pooling通過前面提供的feature maps和proposals,提取proposal feature maps,輸入全連接層。最后,利用proposal feature maps判定所屬類別,并再次通過bounding box regression獲得最終的檢測框位置。
相比于Fast R-CNN,F(xiàn)aster R-CNN的所有任務都統(tǒng)一在單一的深度學習框架之下,計算速度大幅度提升。
解決目標檢測訓練過程中的不平衡問題對于實現(xiàn)最佳訓練并充分利用模型架構的潛力至關重要[7]。對于特征圖層次的不平衡問題,F(xiàn)PN通過提出橫向連接的理念,與相鄰層級的特征圖進行融合,從而可以豐富low-level的語義信息。之后,Liu等人[13]在FPN的基礎上提出了PANet,通過自下而上的方式,從而實現(xiàn)highlevel中能夠擁有更加豐富的low-level語義信息。Kong等人[14]提出了一種基于SSD的新型高效金字塔,在當前的主流特征金字塔方法上將特征金字塔轉為特征的重組合,通過高度非線性結構使high-level和low-level特征進行融合。Pang等人[7]提出Libra R-CNN的Balanced Feature Pyramid與上述方法觀念均不相同,而是利用集成的平衡語義特征來增強原始特征。通過這種方式,金字塔中的每個層級都可以獲得來自不同層級的等量語義信息,以此來平衡信息使特征更具區(qū)分性。
對于目標函數(shù)層次的不平衡問題,Kendall等人[15]已經(jīng)證明,在基于多任務學習模型中,各個任務的相對權重,對模型的性能產生很大影響。以前的大部分方法注重的是如何提高模型的目標識別能力。而Libra RCNN提出的Balanced L1Loss[7]通過對各個任務進行平衡實現(xiàn)更好的結果。
由于Faster R-CNN模型在訓練過程中會存在明顯的不平衡問題,導致目標檢測器無法被充分利用。本文主要解決模型在訓練過程中的特征圖層次不平衡和目標函數(shù)層次不平衡。通過Balanced Feature Pyramid進行特征的融合和增強解決特征圖層次的不平衡,再通過Balanced L1Loss平衡各任務的損失解決目標函數(shù)層次的不平衡。Faster R-CNN[3]在目標檢測任務時被廣泛應用,并達到了非常好的性能。因此,本文選用Faster R-CNN作為基礎檢測網(wǎng)絡。ResNet網(wǎng)絡通過殘差塊解決網(wǎng)絡退化和梯度爆炸問題,如圖1所示,首先選用ResNet50作為模型的backbone用來提取圖片的feature maps,其中ResNet50結構如表1所示。

表1 ResNet50網(wǎng)絡結構Table 1 ResNet50 network structure
首先通過7×7步長為2的卷積和3×3步長為2的最大池化,這一步極大減小了存儲所需大小。之后經(jīng)過個數(shù)分別為3、4、6、3的殘差塊堆疊,其中1×1卷積對通道數(shù)進行降維和復原,有效降低運算復雜度。得到通道數(shù)分別為256、512、1 024、2 048,之后接到FPN[6]生成多維度特征表達,輸出特征層數(shù)為5,通道數(shù)為256,但其只在相鄰層級上進行特征融合,所以在FPN后接入Balanced Feature Pyramid,如圖1(a)所示,通過集成平衡語義使金字塔各層級都可以獲得來自不同層級的等量語義信息,從而解決特征圖層次的不平衡問題。接著進入RPN網(wǎng)絡通過3×3的滑框在特征圖上滑動生成由面積128×128、256×256、512×512和長寬比為2∶1、1∶1、1∶2組合成的9個錨框,在5個特征層上的步長分別為4、8、16、32、64。再通過兩個全連接層后利用softmax判斷錨點屬于物體還是背景后,利用bounding box regression重新調整錨點以獲得更加準確的proposals。然后進行RoIAlign,輸出尺寸為7,通道數(shù)為256;最后進入Box Head進行分類和邊界框回歸,全連接層數(shù)為2,輸出結果為1×1×1 024;通過softmax計算分類損失,分類器類別數(shù)量設置為81,對應COCO數(shù)據(jù)集的80個類別和背景;將Faster R-CNN中的SmoothL1Loss替換為BalancedL1Loss用來進行回歸損失,如圖1(b)所示,通過對分類和回歸任務的損失進行平衡,解決目標函數(shù)層次的不平衡問題。

圖1 整體結構圖Fig.1 Overall structure diagram
由于特征圖層級的不平衡表現(xiàn)在高低層級特征的利用上,為了能夠利用不同分辨率的特征,如圖2所示,將其分為了四步:尺度變換、集成、改進、增強。使用此方法,可以同時融合從low-level到high-level的特征。

圖2 Balanced Feature Pyramid結構圖Fig.2 Balanced Feature Pyramid structure diagram
2.1.1 尺度變換、集成、增強
分辨率級別為l的特征表示為Cl,L表示特征層級數(shù)量,涉及的最低和最高分辨率層級的索引分別表示為lmin和lmax。為了集成多層級特征并同時保留其語義信息,如圖2所示,特征金字塔特征用{C2,C3,C4,C5}表示,它們的分辨率依次減小,而這些特征中的表達存在差異,利用圖2的結構將這些特征進行整合,從而起到豐富與平衡特征的目的。首先進行尺度變換,將多級特征{C2,C3,C4,C5}調整為中間大小,即與C4相同,那么對其他的層進行插值與最大值池化歸一化到C4對應的尺寸,為集成做準備。再用公式(1)做相加取平均操作獲得語義信息進行集成:

集成后得到特征擁有來自{C2,C3,C4,C5}等量的語義信息。最后將集成后的特征進行尺度變換,得到{P2,P3,P4,P5}實現(xiàn)對原始特征{C2,C3,C4,C5}進行增強。這樣,每個級別分辨率都能獲得來自不同分辨率等量的語義信息,并且在整個過程中沒有任何參數(shù)的引入。
2.1.2 卷積局部性改進
由于卷積具有局部性,集成后的特征并不是最佳。為了使集成的特征更加具有區(qū)分性,采用non-local模塊[16]的方式對其進行改進,如圖2所示。在此使用了其中的embedded Gaussian non-local attention來改善集成后的特征,non-local方法如公式(2)所示:

x表示輸入信號,y表示輸出信號,通過f(xi,xj)表示位置i和所有與之可能關聯(lián)的位置j的關系,f值與位置j對位置i的影響成正比,如公式(3):


圖3 嵌入式高斯非局部塊Fig.3 Embedded Gaussian non-local block
輸入信號x通過三個1×1卷積將通道數(shù)減半來降低計算量分別得到θ(xi)、φ(xj)、g(xj),將維度進行轉換以便相乘操作。相乘得到θ(xi)Tφ(xj)進行softmax后與g(xj)相乘得到y(tǒng)i,再將維度轉換為H×W×C/2。為了與xi進行相加,通過1×1卷積使yi和xi通道數(shù)保持一致,相加后得到公式(5),其中Wz為可學習權重矩陣。

通過這種殘差結構可以克服普通卷積的局限性,使所有產生位置關聯(lián)的特征點都能被利用,將此方法作用于集成的特征圖,改進后的特征更加具有區(qū)分性,如圖4所示。

圖4 改進前后特征圖對比Fig.4 Comparison of feature maps before and after improvement
在檢測網(wǎng)絡中網(wǎng)絡的損失由兩個部分組成:分類損失、邊界框損失,它們通過參數(shù)λ進行調整,一般來講分類的損失是大于邊界的損失的。為了平衡,比較直觀的方法就是調整λ的值,但是這會使模型對于異常值變得更為敏感,導致不平衡問題的發(fā)生。所以,本文將損失大于等于1的定義為outliers,其將會產生較大的梯度值,會對訓練過程造成不平衡,而損失小于1的定義為inliers,其梯度值相對貢獻較小。平衡后的L1損失記為Lb。
BalancedL1Loss通過對SmoothL1Loss基礎上設置轉折點( )loss=1.0區(qū)分inliers和outliers。并將outliers的最大梯度值設定上限,將inliers的梯度線變得平滑,這樣可以控制outliers的梯度不會太大,同時促進inliers梯度的增長,從而來平衡所涉及的樣本,對不同任務的損失進行了平衡,達到對模型更好的訓練。BalancedL1Loss改進的邊界損失Lloc如公式(6):

其中,x、y、w、h分別表示錨點i預測的Bounding Box的橫坐標、縱坐標、寬和高;表示屬于類別u的錨點i預測Bounding Box參數(shù)化坐標;vi表示錨點i的Ground Truth參數(shù)化坐標。梯度計算遵循公式(7):

基于以上公式,改進的梯度公式如公式(8):

這樣,一個很小的α因子即可增加inliers的梯度值,并且對outliers的梯度值沒有影響。γ控制總體的提升倍數(shù),以調整回歸誤差的上限,這可以幫助目標函數(shù)更好地平衡所涉及的任務。通過這種方式,達到更好的平衡訓練。α=0.5,λ=1.5作為BalancedL1Loss梯度曲線的參數(shù)設定,α控制inliers梯度增長,γ控制outliers梯度上限,梯度圖像如圖5所示,與SmoothL1Loss相比,inliers的梯度有明顯提升。

圖5 Balanced L1 Loss和Smooth L1 Loss梯度曲線Fig.5 Balanced L1 Loss and Smooth L1 Loss gradient curves
根據(jù)公式(8),可以反求出BalancedL1Loss如公式(9):

Lb(x)由公式(8)對x求積分得到。通過b來控制Lb在x=1時具有相同值使分段函數(shù)連續(xù)。其中常數(shù)C由公式(9)在x=1處連續(xù)可知C=γ÷b-α,Lb()x通過設置拐點區(qū)分inliers和outliers,并且有效促進inliers部分重要梯度的增長,并控制outliers梯度上限,使訓練中的分類和回歸任務更均衡。由公式(8)函數(shù)在x=1處連續(xù)可知參數(shù)γ、α和b的關系滿足公式(10):

本文實驗參數(shù)設置為α=0.5和γ=1.5。
本文實驗統(tǒng)一在MS COCO數(shù)據(jù)集[17]上進行驗證。其中包括用于訓練的11.5萬張圖像(train-2017)和用于驗證的5 000張圖像(val-2017)。MSCOCO數(shù)據(jù)集是一個大型的、豐富的目標檢測,分割和字幕數(shù)據(jù)集。圖像包括91類目標,328 000影像和2 500 000個label,是目前為止有語義分割的最大數(shù)據(jù)集,提供的類別有80類,有超過33萬張圖片,其中20萬張有標注,整個數(shù)據(jù)集中個體的數(shù)目超過150萬個。在train-2017上對模型進行訓練,并且在val-2017上測試最終結果。
評估標準采用MSCOCO的AP值作為指標,默認為各個類別的平均精度值(mAP),包括AP(平均精度)、AP50(IOU閾值為50%的精度)、AP75(IOU閾值為75%的精度)、APS(小目標的精度)、APM(中等目標的精度)、APL(大目標的精度)。評估指標AP的計算方式如公式(11)~(13)所示。其中Precision=在一張圖片上類別C識別正確的個數(shù)/一張圖片上類別C的總個數(shù)。

AP=每張圖片上的Precision求和/含有類別C的圖片數(shù)目。

mAP=上一步計算的所有類別的AP和/總類別數(shù)目。相當于所有類別AP的平均值。

AP50只計算IOU大于0.5的部分,AP75計算IOU大于0.75的部分,APS計算像素小于32×32的目標,APM計算像素在32×32到96×96之間的目標,APL計算像素大于96×96的目標。其中IOU表示預測的BBox與GroundTruth的交并比,如公式(14)所示:

實驗基于PyTorch[18]、CUDA 10.1和mmdetection2.0目標檢測庫下進行,以基于ResNet-50-FPN[19]的Faster R-CNN[3]為baseline,在單個NVIDIA RTX2070S(一次處理2張圖片)上進行12個epochs的訓練,使用SGD隨機梯度下降法進行模型訓練,起初learning rate設為0.002 5,并在第8和第11個epochs后將其降低十分之一,動量因子為0.9,權重衰減因子為0.000 1,防止模型過擬合。輸入圖片尺寸最大邊為1 333,最小邊為800,選擇ResNet 50作為預訓練權重。
將模型與表1中的其他目標檢測模型在MSCOCO數(shù)據(jù)集的val-2017下5 000張圖片測試的結果進行比較。實驗表明,在相同條件下,本文模型在基于ResNet-50-FPN下AP達到38.5%,比Faster R-CNN結果提高1.1個百分點,比單階段的RetinaNet提高2.0個百分點,比Mask R-CNN提高0.3個百分點,如表2所示。在對Faster R-CNN進行特征層次和目標函數(shù)層次平衡后可以看到結果有明顯提升,說明模型在訓練過程中存在提取特征未能充分被利用,分類和回歸任務之間存在不平衡的問題導致?lián)p失函數(shù)無法最佳收斂,影響模型達到更好效果,導致最終結果的降低。將模型的檢測結果圖像與Faster R-CNN進行對比,本文模型能夠達到更為精準的檢測效果,如圖6所示。

圖6 檢測效果對比圖Fig.6 Comparison chart of detection effect

表2 各模型在COCO val-2017上的結果Table 2 Results of each model on COCO val-2017
模型的收斂曲線如圖7所示,黃色曲線表示回歸損失,藍色曲線表示分類損失。在訓練過程中,損失值都在緩慢下降,并且非常平滑。在經(jīng)過12個epochs的訓練后最終達收斂,收斂的分類損失和回歸損失值在0.2附近。

圖7 本文模型的收斂曲線Fig.7 Convergence curve of the model in this paper
為了驗證Balanced Feature Pyramid和BalancedL1Loss的提升效果,做了以下消融實驗。
(1)Balanced Feature Pyramid
為了驗證Balanced Feature Pyramid的提升效果,將該方法單獨加入基于ResNet-50-FPN的Faster R-CNN中,并且與同樣使用特征金字塔作為基礎來解決特征圖層次不平衡的PAFPN進行對比,如表3所示。在相同的條件下,加入Balanced Feature Pyramid后AP可在MSCOCO數(shù)據(jù)集上達到38.4%,比baseline高了1.0個百分點,比PAFPN高了0.9個百分點。這說明BFP(balanced feature pyramid)利用集成的平衡語義特征來增強原始特征的方式可以獲得更好的feature maps,達到更高的訓練結果。

表3 Balanced Feature Pyramid在COCO val-2017上的消融研究Table 3 Ablation study of Balanced Feature Pyramid on COCO val-2017 %
(2)BalancedL1Loss
為了驗證BalancedL1Loss的提升效果,將該方法單獨加入了基于ResNet-50-FPN的Faster R-CNN中,并且與baseline的SmoothL1[11]函數(shù)和解決回歸損失的基于IOU的損失函數(shù)進行對比,如表4所示。

表4 Balanced L1 Loss在COCO val-2017上的消融研究Table 4 Ablation study of Balanced L1 Loss onCOCO val-2017%
在相同的條件下,加入BalancedL1Loss后AP可在MSCOCO數(shù)據(jù)集上達到37.8%,比baseline高出0.4個百分點。與基于IOU的損失函數(shù)解決目標函數(shù)不平衡的方法不同,BalancedL1Loss通過對不同任務的損失進行平衡,如圖8所示,黃色為回歸損失,藍色為分類損失,通過將分類與回歸的任務損失平衡以達到更好的訓練效果。

圖8 平衡前后損失圖像對比Fig.8 Loss image comparison before and after balance
本文針對模型在訓練中存在的特征圖層次和目標函數(shù)層次的不平衡問題,導致無法充分發(fā)揮目標檢測器的潛力,提出將Balanced Feature Pyramid模塊接入FPN,同時將SmoothL1Loss替換為BalancedL1Loss,對Faster R-CNN目標檢測框架進行了在特征圖層次和目標函數(shù)層次的平衡,并且在MSCOCO上驗證了本文的實驗,實驗結果較Faster R-CNN有提升。