陳孝聰
(合肥工業(yè)大學(xué) 數(shù)學(xué)學(xué)院,合肥230601)
目標(biāo)檢測(cè)一直是計(jì)算機(jī)視覺(jué)領(lǐng)域內(nèi)一個(gè)基礎(chǔ)而又重要的方向,它由目標(biāo)定位和目標(biāo)識(shí)別兩個(gè)任務(wù)組成.當(dāng)前主流的目標(biāo)檢測(cè)算法可以分為兩個(gè)方向,兩步法和一步法.兩步法的經(jīng)典算法有基于區(qū)域建議的Faster R-CNN[1-3]等,一步法的經(jīng)典算法有基于回歸的YOLO[4-5],SSD[6]等.
目標(biāo)檢測(cè)任務(wù)的損失函數(shù)由分類損失和定位損失兩部分組成.以Faster R-CNN[3]中定義的多任務(wù)損失函數(shù)為例,如式(1)
Lp,u,tu,v=Lcls(p,u)+λ[u≥1]Lloc(tu,v).
(1)
Lcls和Lloc分別對(duì)應(yīng)分類損失函數(shù)和定位損失函數(shù).Lcls中的p和u分別對(duì)應(yīng)類別預(yù)測(cè)值和真實(shí)值.tu對(duì)應(yīng)類別u的邊框預(yù)測(cè)值,v對(duì)應(yīng)類別u的邊框真實(shí)值.λ是一個(gè)超參數(shù),用來(lái)平衡分類損失和定位損失的權(quán)重.真實(shí)值u只能是0或者1,所以u(píng)≥1表示1或者0,這表明定位損失函數(shù)只對(duì)正樣本負(fù)責(zé).通常稱預(yù)測(cè)值與目標(biāo)值差的絕對(duì)值大于或等于1的點(diǎn)為離散點(diǎn),小于1的點(diǎn)為非離散點(diǎn).平衡上述損失的一個(gè)常用方法是,調(diào)節(jié)兩個(gè)任務(wù)損失的權(quán)重λ.但是這會(huì)增大離散點(diǎn)的梯度,導(dǎo)致模型對(duì)離散點(diǎn)非常敏感,不利于訓(xùn)練.[7]中指出,平均每個(gè)離散點(diǎn)對(duì)整體的梯度貢獻(xiàn)達(dá)70%,而平均每個(gè)非離散點(diǎn)對(duì)整體的梯度貢獻(xiàn)僅30%.
目標(biāo)檢測(cè)中,通常采用交叉熵作為分類損失函數(shù).常見(jiàn)的定位損失函數(shù)采用n范數(shù)(n=1,2)形式[8-9].L1有固定的梯度,可以讓模型穩(wěn)定收斂,但需要手動(dòng)的調(diào)整學(xué)習(xí)率,否則后期很難收斂在極值點(diǎn);L2在訓(xùn)練初期容易產(chǎn)生梯度爆炸.[2]綜合了n范數(shù)的優(yōu)勢(shì),提出了smoothL1損失函數(shù)(式(6)),該損失函數(shù)對(duì)離散點(diǎn)采用L1,對(duì)非離散點(diǎn)采用L2,有效地避免了L1的不穩(wěn)定性和L2梯度爆炸的情況.
本文提出一種基于smoothL1的新型邊框回歸損失函數(shù).在不改變離散點(diǎn)梯度的前提下,自適應(yīng)地增大定位損失函數(shù)中非離散點(diǎn)的梯度,緩解了反向傳播中對(duì)離散點(diǎn)和非離散點(diǎn)的梯度分布不平衡問(wèn)題.在PASCAL VOC2007數(shù)據(jù)集上的實(shí)驗(yàn)表明,改進(jìn)后的smoothL1在Faster R-CNN上精度達(dá)到70.8%.
圖1 實(shí)線表示L1函數(shù)圖象,虛線表示L2 圖象,點(diǎn)虛線表示smoothL1函數(shù)圖象
L1的表達(dá)式如式(2),函數(shù)圖象如圖1,梯度函數(shù)表達(dá)式如式(3),L1是用來(lái)統(tǒng)計(jì)預(yù)測(cè)值與真實(shí)值之間差的絕對(duì)值之和.可以看到,L1的梯度是一個(gè)常量,可以保證模型訓(xùn)練前期穩(wěn)定收斂,但訓(xùn)練到后期時(shí),需要手動(dòng)地逐步調(diào)低學(xué)習(xí)率,否則模型將難以收斂.
(2)
(3)
L2的表達(dá)式如式(4),函數(shù)圖像如圖1,梯度函數(shù)表達(dá)式如式(5),L2是用來(lái)統(tǒng)計(jì)預(yù)測(cè)值與真實(shí)值之間差的平方和.可以看到,L2的梯度隨著x的變小而減小,起到逐步降低學(xué)習(xí)率的效果.但是,訓(xùn)練初期,當(dāng)x很大時(shí),x的梯度也會(huì)成倍的增長(zhǎng),這導(dǎo)致模型難以收斂,并且對(duì)離散點(diǎn)非常敏感.
(4)
(5)
smoothL1的表達(dá)式如式(6),函數(shù)圖象如圖1,梯度函數(shù)表達(dá)式如式(7).可以看到,smoothL1對(duì)離散點(diǎn)采用L1,可以減少模型對(duì)離散點(diǎn)的敏感程度;對(duì)非離散點(diǎn),采用L2,可以起到逐步降低學(xué)習(xí)率的效果,使模型能夠穩(wěn)定在極小值點(diǎn)處.
(6)
(7)
為了緩解離散點(diǎn)與非離散點(diǎn)之間的梯度不平衡,提出了改進(jìn)的smoothL1,表達(dá)式如式(8),梯度函數(shù)表達(dá)式如式(9).可以看到,L1保持不變,L2采用了其等價(jià)無(wú)窮小的自然指數(shù)形式.這樣做有兩個(gè)好處,(i)當(dāng)|x|趨向0時(shí),smoothL1趨近L2,保證模型訓(xùn)練后期可以穩(wěn)定在極小值點(diǎn)處;(ii)當(dāng)|x|較大時(shí),可以自適應(yīng)地增大梯度.圖2(a)展示了smoothL1和改進(jìn)后的smoothL1的損失函數(shù)圖象,可以看到,改進(jìn)后的smoothL1有更大的損失.改進(jìn)后的smoothL1損失函數(shù)的分段點(diǎn)設(shè)置在0.65,這樣做是為了保證梯度函數(shù)的單調(diào)性(0.65e0.652≈0.9918),使梯度函數(shù)符合這樣一個(gè)規(guī)則,非離散點(diǎn)越靠近真實(shí)值,梯度就不增或者越小.圖2(b)展示了smoothL1和改進(jìn)后的smoothL1梯度函數(shù)圖象,可以看到,改進(jìn)后的smoothL1自適應(yīng)地增大了非離散點(diǎn)的梯度.綜上所述,改進(jìn)后的smoothL1相較smoothL1,在不增大離散點(diǎn)梯度的情況下,增大了非離散點(diǎn)的梯度.非離散點(diǎn)越靠近真實(shí)值,梯度增加的幅度就越小.
(a) (b)圖2 (a) 虛線表示smoothL1的損失函數(shù)曲線,實(shí)線表示改進(jìn)后的smoothL1的損失函數(shù)曲線; (b) 虛線表示smoothL1的梯度函數(shù)曲線,實(shí)線表示改進(jìn)后的smoothL1的梯度函數(shù)曲線.
(8)
(9)
本文在目標(biāo)檢測(cè)模型Faster R-CNN上對(duì)比基于改進(jìn)的smoothL1,smoothL1和n范數(shù)(n=1,2)的邊框回歸損失函數(shù)的實(shí)驗(yàn),數(shù)據(jù)集為PASCAL VOC2007,評(píng)價(jià)指標(biāo)為平均精度均值(mAP),是目標(biāo)檢測(cè)領(lǐng)域最主要的評(píng)價(jià)指標(biāo),mAP越大,表示模型的表現(xiàn)越好.Faster R-CNN采用近似聯(lián)合訓(xùn)練的方式,訓(xùn)練總共迭代7輪,初始學(xué)習(xí)率設(shè)置為0.001,訓(xùn)練到第5輪時(shí),將學(xué)習(xí)率縮小10倍,批量大小設(shè)置為1.訓(xùn)練前對(duì)每張圖片水平翻轉(zhuǎn),達(dá)到數(shù)據(jù)增強(qiáng)的作用.
Faster R-CNN是一個(gè)經(jīng)典的基于區(qū)域建議的兩步法目標(biāo)檢測(cè)模型,模型結(jié)構(gòu)如圖3.實(shí)驗(yàn)設(shè)置的基礎(chǔ)特征提取網(wǎng)絡(luò)為VGG16,通過(guò)區(qū)域候選網(wǎng)絡(luò)(RPN)得到候選區(qū)域(RoIs),進(jìn)一步通過(guò)候選區(qū)域池化(RoI Pooling)得到最終檢測(cè)結(jié)果.
圖3 Faster R-CNN模型結(jié)構(gòu)圖
PASCAL VOC2007是目標(biāo)檢測(cè)領(lǐng)域內(nèi)最通用的數(shù)據(jù)集之一,該數(shù)據(jù)集由5011張訓(xùn)練集和4952張測(cè)試集組成,總計(jì)9963張圖,共包含20個(gè)類別物體.
實(shí)驗(yàn)環(huán)境:深度學(xué)習(xí)框架PyTorch,GPU為NVIDIA GeForce GTX 1650,顯存4G.
3.2.1 模型精度對(duì)比
表1展示了不同邊框回歸損失函數(shù)在PASCAL VOC2007數(shù)據(jù)集上的測(cè)試結(jié)果.從表中數(shù)據(jù)可以看出,改進(jìn)后的smoothL1的mAP達(dá)到了70.8%,相較smoothL1,提高了0.2%,基于L1和L2的邊框回歸損失函數(shù)的mAP分別為70.1%和70.2%.對(duì)于VOC中的20類不同物體,基于改進(jìn)后的smoothL1,大部分物體的精度都有所上升.改進(jìn)后的smoothL1只影響訓(xùn)練期間的梯度大小,沒(méi)有增加模型的推算時(shí)間.
表1 不同邊框回歸損失函數(shù)精度對(duì)比
3.2.2 可視化結(jié)果對(duì)比
圖4挑選了PASCAL VOC2007測(cè)試集上的一些圖片,通過(guò)可視化結(jié)果對(duì)比基于改進(jìn)的smoothL1和smoothL1的模型檢測(cè)結(jié)果.對(duì)比(a),(b),(a)只檢測(cè)出了一只貓,并且貓的邊框還很不準(zhǔn)確,(b)檢測(cè)到了貓和桌子,同時(shí)回歸框十分準(zhǔn)確;對(duì)比(c),(d),(c)檢測(cè)到的兩艘船的邊框都不準(zhǔn)確,(d)準(zhǔn)確地檢測(cè)到了兩艘船;對(duì)比(e),(f),(e)漏檢了一頭牛,(f)檢測(cè)到了所有牛.通過(guò)這些可視化結(jié)果發(fā)現(xiàn),改進(jìn)后的smoothL1相較smoothL1,回歸框更加準(zhǔn)確,回歸精度更高.
(a) (b)
(c) (d)
(e) (f)圖4 PASCAL VOC2007測(cè)試集上的運(yùn)行結(jié)果,圖片(a),(c),(e)基于smoothL1,圖片(b),(d),(f)基于改進(jìn)的smoothL1
本文提出一種基于smoothL1改進(jìn)的邊框回歸損失函數(shù),在不改變離散點(diǎn)梯度的情況下,自適應(yīng)地增大非離散點(diǎn)梯度,緩解了離散點(diǎn)與非離散點(diǎn)間梯度分布不平衡問(wèn)題.在PASCAL VOC2007上的實(shí)驗(yàn)表明,改進(jìn)后的smoothL1相較原算法,在精度上有所提升.
致謝作者非常感謝相關(guān)文獻(xiàn)對(duì)本文的啟發(fā)以及審稿專家提出的寶貴意見(jiàn).