賀宇哲,何 寧,張 人,梁煜博,劉曉曉
1.北京聯(lián)合大學(xué) 北京市信息服務(wù)工程重點實驗室,北京 100101
2.北京聯(lián)合大學(xué) 智慧城市學(xué)院,北京 100101
本文針對基于深度學(xué)習(xí)的目標(biāo)檢測模型在訓(xùn)練過程中存在的不平衡問題進(jìn)行了研究。目標(biāo)檢測作為人工智能領(lǐng)域的一個重要分支,廣泛應(yīng)用于機器人導(dǎo)航、智能視頻監(jiān)控、工業(yè)檢測等領(lǐng)域[1]。隨著深度學(xué)習(xí)技術(shù)的迅速發(fā)展,目標(biāo)檢測模型層出不窮,如YOLO[2]、Faster R-CNN[3]、Mask R-CNN[4]等。雖然它們的模型架構(gòu)各不相同,但訓(xùn)練基本遵從區(qū)域采樣、提取特征、根據(jù)目標(biāo)函數(shù)進(jìn)行分類和回歸的過程。但在此訓(xùn)練過程中存在不平衡問題導(dǎo)致模型不能達(dá)到最佳效果[5]。這種不平衡問題其中包括兩個方面:特征圖層次的不平衡和目標(biāo)函數(shù)層次的不平衡,而引起這兩方面不平衡的原因分別是提取的特征沒有被充分利用;目標(biāo)函數(shù)并不是最佳。
特征圖層次的不平衡:在網(wǎng)絡(luò)中,high-level特征中語義信息比較豐富,但是目標(biāo)位置比較粗略,而lowlevel特征中語義信息比較少,但是目標(biāo)位置準(zhǔn)確。Lin等人[6]提出Feature Pyramid networks利用同一張圖片相鄰層級之間的特征進(jìn)行融合,得到的feature maps供給下個階段進(jìn)行預(yù)測以得到更好的結(jié)果,但是只限于相鄰層級。Pang等人[7]提出Balanced Feature Pyramid在Feature Pyramid networks進(jìn)行了改進(jìn),以實現(xiàn)對于不相鄰層級的特征也能進(jìn)行關(guān)聯(lián),達(dá)到對特征的充分利用。
目標(biāo)函數(shù)層次的不平衡:檢測器需要執(zhí)行分類和回歸兩個任務(wù),因此,在目標(biāo)函數(shù)中也包括了這兩項。如果它們沒有有效地進(jìn)行平衡,或者其中一個出現(xiàn)偏差,則會導(dǎo)致整個檢測性能的降低[8]。因此,要重新對分類和回歸這兩項進(jìn)行平衡,以實現(xiàn)目標(biāo)函數(shù)的最佳收斂。
為了有效地改進(jìn)如上所述模型訓(xùn)練中的不平衡問題,利用Pang等人[7]提出Libra R-CNN的Balanced Feature Pyramid改進(jìn)FPN以得到更好的特征圖,用來解決特征圖層次的不平衡。利用Balanced L1Loss[7]作為回歸損失,有效調(diào)節(jié)目標(biāo)函數(shù)層次的不平衡。為了解決Faster R-CNN在訓(xùn)練過程中存在的不平衡問題,本文將上述兩個模塊加入基于FPN的Faster R-CNN模型中,達(dá)到AP是38.5%的結(jié)果,并進(jìn)行了消融實驗,同時對各模塊逐一進(jìn)行驗證。
基于深度學(xué)習(xí)的目標(biāo)檢測方法根據(jù)模型訓(xùn)練方式可分為兩種類型:One stage目標(biāo)檢測算法和Two stage目標(biāo)檢測算法。Two stage首次由Girshick等人[9]所提出的R-CNN引入,之后He等人[10]在R-CNN的基礎(chǔ)上提出SSP-NET。由于R-CNN在候選區(qū)域上進(jìn)行特征提取時存在大量重復(fù)性計算,為了解決這個問題,Girshick等人[11]提出了Fast R-CNN。SSP-NET和Fast R-CNN都需要單獨生成候選區(qū)域,該步驟的計算量非常大,并且難以用GPU進(jìn)行加速。針對這個問題,2015年,Ren等人[3]在Fast R-CNN的基礎(chǔ)上提出了Faster R-CNN。之后在Faster R-CNN加入了FPN[6],使得相鄰層級之間的特征進(jìn)行融合。
Faster R-CNN分為四個部分:首先通過CNN[12]提取原始圖片的feature maps,供之后的RPN和全連接層使用。其次,RPN網(wǎng)絡(luò)通過softmax判斷錨點屬于物體還是背景,再通過bounding box regression重新調(diào)整錨點以獲得更加準(zhǔn)確的proposals。再次,Roi Pooling通過前面提供的feature maps和proposals,提取proposal feature maps,輸入全連接層。最后,利用proposal feature maps判定所屬類別,并再次通過bounding box regression獲得最終的檢測框位置。
相比于Fast R-CNN,F(xiàn)aster R-CNN的所有任務(wù)都統(tǒng)一在單一的深度學(xué)習(xí)框架之下,計算速度大幅度提升。
解決目標(biāo)檢測訓(xùn)練過程中的不平衡問題對于實現(xiàn)最佳訓(xùn)練并充分利用模型架構(gòu)的潛力至關(guān)重要[7]。對于特征圖層次的不平衡問題,F(xiàn)PN通過提出橫向連接的理念,與相鄰層級的特征圖進(jìn)行融合,從而可以豐富low-level的語義信息。之后,Liu等人[13]在FPN的基礎(chǔ)上提出了PANet,通過自下而上的方式,從而實現(xiàn)highlevel中能夠擁有更加豐富的low-level語義信息。Kong等人[14]提出了一種基于SSD的新型高效金字塔,在當(dāng)前的主流特征金字塔方法上將特征金字塔轉(zhuǎn)為特征的重組合,通過高度非線性結(jié)構(gòu)使high-level和low-level特征進(jìn)行融合。Pang等人[7]提出Libra R-CNN的Balanced Feature Pyramid與上述方法觀念均不相同,而是利用集成的平衡語義特征來增強原始特征。通過這種方式,金字塔中的每個層級都可以獲得來自不同層級的等量語義信息,以此來平衡信息使特征更具區(qū)分性。
對于目標(biāo)函數(shù)層次的不平衡問題,Kendall等人[15]已經(jīng)證明,在基于多任務(wù)學(xué)習(xí)模型中,各個任務(wù)的相對權(quán)重,對模型的性能產(chǎn)生很大影響。以前的大部分方法注重的是如何提高模型的目標(biāo)識別能力。而Libra RCNN提出的Balanced L1Loss[7]通過對各個任務(wù)進(jìn)行平衡實現(xiàn)更好的結(jié)果。
由于Faster R-CNN模型在訓(xùn)練過程中會存在明顯的不平衡問題,導(dǎo)致目標(biāo)檢測器無法被充分利用。本文主要解決模型在訓(xùn)練過程中的特征圖層次不平衡和目標(biāo)函數(shù)層次不平衡。通過Balanced Feature Pyramid進(jìn)行特征的融合和增強解決特征圖層次的不平衡,再通過Balanced L1Loss平衡各任務(wù)的損失解決目標(biāo)函數(shù)層次的不平衡。Faster R-CNN[3]在目標(biāo)檢測任務(wù)時被廣泛應(yīng)用,并達(dá)到了非常好的性能。因此,本文選用Faster R-CNN作為基礎(chǔ)檢測網(wǎng)絡(luò)。ResNet網(wǎng)絡(luò)通過殘差塊解決網(wǎng)絡(luò)退化和梯度爆炸問題,如圖1所示,首先選用ResNet50作為模型的backbone用來提取圖片的feature maps,其中ResNet50結(jié)構(gòu)如表1所示。
表1 ResNet50網(wǎng)絡(luò)結(jié)構(gòu)Table 1 ResNet50 network structure
首先通過7×7步長為2的卷積和3×3步長為2的最大池化,這一步極大減小了存儲所需大小。之后經(jīng)過個數(shù)分別為3、4、6、3的殘差塊堆疊,其中1×1卷積對通道數(shù)進(jìn)行降維和復(fù)原,有效降低運算復(fù)雜度。得到通道數(shù)分別為256、512、1 024、2 048,之后接到FPN[6]生成多維度特征表達(dá),輸出特征層數(shù)為5,通道數(shù)為256,但其只在相鄰層級上進(jìn)行特征融合,所以在FPN后接入Balanced Feature Pyramid,如圖1(a)所示,通過集成平衡語義使金字塔各層級都可以獲得來自不同層級的等量語義信息,從而解決特征圖層次的不平衡問題。接著進(jìn)入RPN網(wǎng)絡(luò)通過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重新調(diào)整錨點以獲得更加準(zhǔn)確的proposals。然后進(jìn)行RoIAlign,輸出尺寸為7,通道數(shù)為256;最后進(jìn)入Box Head進(jìn)行分類和邊界框回歸,全連接層數(shù)為2,輸出結(jié)果為1×1×1 024;通過softmax計算分類損失,分類器類別數(shù)量設(shè)置為81,對應(yīng)COCO數(shù)據(jù)集的80個類別和背景;將Faster R-CNN中的SmoothL1Loss替換為BalancedL1Loss用來進(jìn)行回歸損失,如圖1(b)所示,通過對分類和回歸任務(wù)的損失進(jìn)行平衡,解決目標(biāo)函數(shù)層次的不平衡問題。
圖1 整體結(jié)構(gòu)圖Fig.1 Overall structure diagram
由于特征圖層級的不平衡表現(xiàn)在高低層級特征的利用上,為了能夠利用不同分辨率的特征,如圖2所示,將其分為了四步:尺度變換、集成、改進(jìn)、增強。使用此方法,可以同時融合從low-level到high-level的特征。
圖2 Balanced Feature Pyramid結(jié)構(gòu)圖Fig.2 Balanced Feature Pyramid structure diagram
2.1.1 尺度變換、集成、增強
分辨率級別為l的特征表示為Cl,L表示特征層級數(shù)量,涉及的最低和最高分辨率層級的索引分別表示為lmin和lmax。為了集成多層級特征并同時保留其語義信息,如圖2所示,特征金字塔特征用{C2,C3,C4,C5}表示,它們的分辨率依次減小,而這些特征中的表達(dá)存在差異,利用圖2的結(jié)構(gòu)將這些特征進(jìn)行整合,從而起到豐富與平衡特征的目的。首先進(jìn)行尺度變換,將多級特征{C2,C3,C4,C5}調(diào)整為中間大小,即與C4相同,那么對其他的層進(jìn)行插值與最大值池化歸一化到C4對應(yīng)的尺寸,為集成做準(zhǔn)備。再用公式(1)做相加取平均操作獲得語義信息進(jìn)行集成:
集成后得到特征擁有來自{C2,C3,C4,C5}等量的語義信息。最后將集成后的特征進(jìn)行尺度變換,得到{P2,P3,P4,P5}實現(xiàn)對原始特征{C2,C3,C4,C5}進(jìn)行增強。這樣,每個級別分辨率都能獲得來自不同分辨率等量的語義信息,并且在整個過程中沒有任何參數(shù)的引入。
2.1.2 卷積局部性改進(jìn)
由于卷積具有局部性,集成后的特征并不是最佳。為了使集成的特征更加具有區(qū)分性,采用non-local模塊[16]的方式對其進(jìn)行改進(jìn),如圖2所示。在此使用了其中的embedded Gaussian non-local attention來改善集成后的特征,non-local方法如公式(2)所示:
x表示輸入信號,y表示輸出信號,通過f(xi,xj)表示位置i和所有與之可能關(guān)聯(lián)的位置j的關(guān)系,f值與位置j對位置i的影響成正比,如公式(3):
圖3 嵌入式高斯非局部塊Fig.3 Embedded Gaussian non-local block
輸入信號x通過三個1×1卷積將通道數(shù)減半來降低計算量分別得到θ(xi)、φ(xj)、g(xj),將維度進(jìn)行轉(zhuǎn)換以便相乘操作。相乘得到θ(xi)Tφ(xj)進(jìn)行softmax后與g(xj)相乘得到y(tǒng)i,再將維度轉(zhuǎn)換為H×W×C/2。為了與xi進(jìn)行相加,通過1×1卷積使yi和xi通道數(shù)保持一致,相加后得到公式(5),其中Wz為可學(xué)習(xí)權(quán)重矩陣。
通過這種殘差結(jié)構(gòu)可以克服普通卷積的局限性,使所有產(chǎn)生位置關(guān)聯(lián)的特征點都能被利用,將此方法作用于集成的特征圖,改進(jìn)后的特征更加具有區(qū)分性,如圖4所示。
圖4 改進(jìn)前后特征圖對比Fig.4 Comparison of feature maps before and after improvement
在檢測網(wǎng)絡(luò)中網(wǎng)絡(luò)的損失由兩個部分組成:分類損失、邊界框損失,它們通過參數(shù)λ進(jìn)行調(diào)整,一般來講分類的損失是大于邊界的損失的。為了平衡,比較直觀的方法就是調(diào)整λ的值,但是這會使模型對于異常值變得更為敏感,導(dǎo)致不平衡問題的發(fā)生。所以,本文將損失大于等于1的定義為outliers,其將會產(chǎn)生較大的梯度值,會對訓(xùn)練過程造成不平衡,而損失小于1的定義為inliers,其梯度值相對貢獻(xiàn)較小。平衡后的L1損失記為Lb。
BalancedL1Loss通過對SmoothL1Loss基礎(chǔ)上設(shè)置轉(zhuǎn)折點( )loss=1.0區(qū)分inliers和outliers。并將outliers的最大梯度值設(shè)定上限,將inliers的梯度線變得平滑,這樣可以控制outliers的梯度不會太大,同時促進(jìn)inliers梯度的增長,從而來平衡所涉及的樣本,對不同任務(wù)的損失進(jìn)行了平衡,達(dá)到對模型更好的訓(xùn)練。BalancedL1Loss改進(jìn)的邊界損失Lloc如公式(6):
其中,x、y、w、h分別表示錨點i預(yù)測的Bounding Box的橫坐標(biāo)、縱坐標(biāo)、寬和高;表示屬于類別u的錨點i預(yù)測Bounding Box參數(shù)化坐標(biāo);vi表示錨點i的Ground Truth參數(shù)化坐標(biāo)。梯度計算遵循公式(7):
基于以上公式,改進(jìn)的梯度公式如公式(8):
這樣,一個很小的α因子即可增加inliers的梯度值,并且對outliers的梯度值沒有影響。γ控制總體的提升倍數(shù),以調(diào)整回歸誤差的上限,這可以幫助目標(biāo)函數(shù)更好地平衡所涉及的任務(wù)。通過這種方式,達(dá)到更好的平衡訓(xùn)練。α=0.5,λ=1.5作為BalancedL1Loss梯度曲線的參數(shù)設(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通過設(shè)置拐點區(qū)分inliers和outliers,并且有效促進(jìn)inliers部分重要梯度的增長,并控制outliers梯度上限,使訓(xùn)練中的分類和回歸任務(wù)更均衡。由公式(8)函數(shù)在x=1處連續(xù)可知參數(shù)γ、α和b的關(guān)系滿足公式(10):
本文實驗參數(shù)設(shè)置為α=0.5和γ=1.5。
本文實驗統(tǒng)一在MS COCO數(shù)據(jù)集[17]上進(jìn)行驗證。其中包括用于訓(xùn)練的11.5萬張圖像(train-2017)和用于驗證的5 000張圖像(val-2017)。MSCOCO數(shù)據(jù)集是一個大型的、豐富的目標(biāo)檢測,分割和字幕數(shù)據(jù)集。圖像包括91類目標(biāo),328 000影像和2 500 000個label,是目前為止有語義分割的最大數(shù)據(jù)集,提供的類別有80類,有超過33萬張圖片,其中20萬張有標(biāo)注,整個數(shù)據(jù)集中個體的數(shù)目超過150萬個。在train-2017上對模型進(jìn)行訓(xùn)練,并且在val-2017上測試最終結(jié)果。
評估標(biāo)準(zhǔn)采用MSCOCO的AP值作為指標(biāo),默認(rèn)為各個類別的平均精度值(mAP),包括AP(平均精度)、AP50(IOU閾值為50%的精度)、AP75(IOU閾值為75%的精度)、APS(小目標(biāo)的精度)、APM(中等目標(biāo)的精度)、APL(大目標(biāo)的精度)。評估指標(biāo)AP的計算方式如公式(11)~(13)所示。其中Precision=在一張圖片上類別C識別正確的個數(shù)/一張圖片上類別C的總個數(shù)。
AP=每張圖片上的Precision求和/含有類別C的圖片數(shù)目。
mAP=上一步計算的所有類別的AP和/總類別數(shù)目。相當(dāng)于所有類別AP的平均值。
AP50只計算IOU大于0.5的部分,AP75計算IOU大于0.75的部分,APS計算像素小于32×32的目標(biāo),APM計算像素在32×32到96×96之間的目標(biāo),APL計算像素大于96×96的目標(biāo)。其中IOU表示預(yù)測的BBox與GroundTruth的交并比,如公式(14)所示:
實驗基于PyTorch[18]、CUDA 10.1和mmdetection2.0目標(biāo)檢測庫下進(jìn)行,以基于ResNet-50-FPN[19]的Faster R-CNN[3]為baseline,在單個NVIDIA RTX2070S(一次處理2張圖片)上進(jìn)行12個epochs的訓(xùn)練,使用SGD隨機梯度下降法進(jìn)行模型訓(xùn)練,起初learning rate設(shè)為0.002 5,并在第8和第11個epochs后將其降低十分之一,動量因子為0.9,權(quán)重衰減因子為0.000 1,防止模型過擬合。輸入圖片尺寸最大邊為1 333,最小邊為800,選擇ResNet 50作為預(yù)訓(xùn)練權(quán)重。
將模型與表1中的其他目標(biāo)檢測模型在MSCOCO數(shù)據(jù)集的val-2017下5 000張圖片測試的結(jié)果進(jìn)行比較。實驗表明,在相同條件下,本文模型在基于ResNet-50-FPN下AP達(dá)到38.5%,比Faster R-CNN結(jié)果提高1.1個百分點,比單階段的RetinaNet提高2.0個百分點,比Mask R-CNN提高0.3個百分點,如表2所示。在對Faster R-CNN進(jìn)行特征層次和目標(biāo)函數(shù)層次平衡后可以看到結(jié)果有明顯提升,說明模型在訓(xùn)練過程中存在提取特征未能充分被利用,分類和回歸任務(wù)之間存在不平衡的問題導(dǎo)致?lián)p失函數(shù)無法最佳收斂,影響模型達(dá)到更好效果,導(dǎo)致最終結(jié)果的降低。將模型的檢測結(jié)果圖像與Faster R-CNN進(jìn)行對比,本文模型能夠達(dá)到更為精準(zhǔn)的檢測效果,如圖6所示。
圖6 檢測效果對比圖Fig.6 Comparison chart of detection effect
表2 各模型在COCO val-2017上的結(jié)果Table 2 Results of each model on COCO val-2017
模型的收斂曲線如圖7所示,黃色曲線表示回歸損失,藍(lán)色曲線表示分類損失。在訓(xùn)練過程中,損失值都在緩慢下降,并且非常平滑。在經(jīng)過12個epochs的訓(xùn)練后最終達(dá)收斂,收斂的分類損失和回歸損失值在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中,并且與同樣使用特征金字塔作為基礎(chǔ)來解決特征圖層次不平衡的PAFPN進(jìn)行對比,如表3所示。在相同的條件下,加入Balanced Feature Pyramid后AP可在MSCOCO數(shù)據(jù)集上達(dá)到38.4%,比baseline高了1.0個百分點,比PAFPN高了0.9個百分點。這說明BFP(balanced feature pyramid)利用集成的平衡語義特征來增強原始特征的方式可以獲得更好的feature maps,達(dá)到更高的訓(xùn)練結(jié)果。
表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ù)進(jìn)行對比,如表4所示。
表4 Balanced L1 Loss在COCO val-2017上的消融研究Table 4 Ablation study of Balanced L1 Loss onCOCO val-2017%
在相同的條件下,加入BalancedL1Loss后AP可在MSCOCO數(shù)據(jù)集上達(dá)到37.8%,比baseline高出0.4個百分點。與基于IOU的損失函數(shù)解決目標(biāo)函數(shù)不平衡的方法不同,BalancedL1Loss通過對不同任務(wù)的損失進(jìn)行平衡,如圖8所示,黃色為回歸損失,藍(lán)色為分類損失,通過將分類與回歸的任務(wù)損失平衡以達(dá)到更好的訓(xùn)練效果。
圖8 平衡前后損失圖像對比Fig.8 Loss image comparison before and after balance
本文針對模型在訓(xùn)練中存在的特征圖層次和目標(biāo)函數(shù)層次的不平衡問題,導(dǎo)致無法充分發(fā)揮目標(biāo)檢測器的潛力,提出將Balanced Feature Pyramid模塊接入FPN,同時將SmoothL1Loss替換為BalancedL1Loss,對Faster R-CNN目標(biāo)檢測框架進(jìn)行了在特征圖層次和目標(biāo)函數(shù)層次的平衡,并且在MSCOCO上驗證了本文的實驗,實驗結(jié)果較Faster R-CNN有提升。