李巖, 孟令軍
(中北大學(xué) 電子測(cè)試技術(shù)國(guó)防科技重點(diǎn)實(shí)驗(yàn)室, 山西 太原 030051)
隨著人們對(duì)公共安全領(lǐng)域日益重視,行人檢測(cè)技術(shù)在智能監(jiān)控和無(wú)人駕駛領(lǐng)域得到了廣泛的應(yīng)用[1]。傳統(tǒng)的行人檢測(cè)方法依賴于從訓(xùn)練樣本中手動(dòng)提取特征,精度低、模型泛化性差,難以適應(yīng)復(fù)雜的行人場(chǎng)景[2]。相對(duì)于傳統(tǒng)方法,行人檢測(cè)方法的性能隨著卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展得到了極大的提高。
然而,在公共安全領(lǐng)域,檢測(cè)智能監(jiān)控下不同大小的行人目標(biāo)仍然是一個(gè)挑戰(zhàn)。當(dāng)待檢測(cè)行人目標(biāo)送入具有自上而下結(jié)構(gòu)的檢測(cè)模型中,小尺度行人目標(biāo)隨著卷積層數(shù)的增加,特征圖逐漸變小,丟失可識(shí)別特征信息,較難被檢測(cè)。大尺度行人目標(biāo)由于面積和感受野較大,特征信息也更豐富,較容易被檢測(cè)。針對(duì)多尺度檢測(cè)問(wèn)題,有兩種常用的方法:圖像和特征金字塔。前者,將圖片縮放為不同大小,并對(duì)縮放后的圖片提取特征。后者把輸入圖像轉(zhuǎn)換為特征圖,在不同尺度上進(jìn)行特征融合,將特征信息與空間性互補(bǔ)。
相對(duì)于圖像金字塔,特征金字塔不需要識(shí)別多種分辨率的圖像,具有速度快、精度高的特點(diǎn),被廣泛應(yīng)用于目標(biāo)檢測(cè)任務(wù)中。典型的網(wǎng)絡(luò)有特征金字塔網(wǎng)絡(luò)(FPN)[3]、物體檢測(cè)骨干網(wǎng)絡(luò)(DetNet)[4]和反卷積單發(fā)多框檢測(cè)網(wǎng)絡(luò)(DSSD)[5]。FPN采取級(jí)聯(lián)融合上采樣得到的特征圖,形成金字塔結(jié)構(gòu);DetNet利用空洞卷積與殘差結(jié)構(gòu),使得多個(gè)融合后的特征圖尺寸相同,避免上采樣操作;DSDD在SSD[6]的基礎(chǔ)上,在對(duì)應(yīng)的通道上將深淺特征圖作乘法運(yùn)算。
為了提高在智能監(jiān)控下行人檢測(cè)的精度,本文在YOLOv3[7]的基礎(chǔ)上,引入SPP和ASFF結(jié)構(gòu),融合不同特征圖中的位置和分類信息,同時(shí)采用k-means算法,修改錨框的尺寸。實(shí)驗(yàn)表明,引入改進(jìn)策略的算法,在INRIA和VOC混合行人數(shù)據(jù)集有更好的檢測(cè)性能。
YOLOv3是一種基于端到端的檢測(cè)算法,由神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)CBL_n和殘差網(wǎng)絡(luò)Res搭建而成,如圖1所示。

圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖
其中,n代表卷積層卷積核的大小,標(biāo)準(zhǔn)歸一化層可以加快網(wǎng)絡(luò)速度,抑制梯度爆炸,防止過(guò)擬合,激活函數(shù)可以提高模型表達(dá)能力,Res可以改善網(wǎng)絡(luò)退化問(wèn)題,CBL_Y表示多個(gè)神經(jīng)網(wǎng)絡(luò)基本結(jié)構(gòu)相連接。YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)主要分為三個(gè)部分,首先Darknet-53提取固定尺寸的輸入圖像,將特征送入檢測(cè)網(wǎng)絡(luò)。然后檢測(cè)網(wǎng)絡(luò)借鑒了FPN的思想,以上采樣級(jí)聯(lián)的方式融合不同網(wǎng)絡(luò)層,輸出19×19、38×38和76×76三種不同尺度的特征圖,獲得了更好的細(xì)粒度特征[8]。最后預(yù)測(cè)網(wǎng)絡(luò)對(duì)目標(biāo)位置信息和類別的置信度進(jìn)行預(yù)測(cè),使用非極大值抑制算法確定真實(shí)目標(biāo)框。
當(dāng)圖像中的行人目標(biāo)差異較大,YOLOv3算法提取特征能力不足,漏檢率高,精度降低。本文借鑒YOLOv3-SPP和SPP-net[9]的空間金字塔思想,在三個(gè)尺度檢測(cè)YOLO層前引入SPP層,融合不同大小的特征,提高模型精度。最大池化層利用大小為5×5、9×9、13×13過(guò)濾器在n×n的特征圖上滑動(dòng),大小為1的步長(zhǎng)保證了特征圖輸入與輸出的大小一致,最后在融合層將四個(gè)特征圖的通道進(jìn)行拼接,如圖2所示。

圖2 SPP層網(wǎng)絡(luò)結(jié)構(gòu)
SPP采用級(jí)聯(lián)融合的方式,融合后特征圖的通道變?yōu)樵瓉?lái)的四倍,并保留了原始特征[10],如式(1)。
ycat=fcat(xa,xb,xc,xd)
(1)
SPP層引入位置的不同,對(duì)模型的檢測(cè)精度和參數(shù)量有不同的影響,經(jīng)過(guò)多次綜合實(shí)驗(yàn),將圖1中,三條分支的CBL_Y網(wǎng)絡(luò)替換為圖3中對(duì)應(yīng)y1,y2,y3網(wǎng)絡(luò),效果最優(yōu),如圖3所示。

圖3 YOLOv3引入SPP
CBL_131代表三個(gè)帶有標(biāo)準(zhǔn)歸一化層和激活函數(shù)的卷積層相連接,卷積核大小分別為1×1、3×1、1×1。
SPP層通過(guò)池化操作,特征拼接,實(shí)現(xiàn)局部特征和全局特征相融合,豐富了特征圖的提取能力,有效防止了過(guò)擬合現(xiàn)象。
YOLOv3采用多尺度檢測(cè),在不同的尺度特征圖中分別檢測(cè)大小目標(biāo)。一旦目標(biāo)與一個(gè)特征圖有關(guān),其他相關(guān)的位置被視為一個(gè)負(fù)樣本。因此,一旦圖像中含有大目標(biāo)和小目標(biāo),不同的特征層就會(huì)發(fā)生沖突,影響參數(shù)在模型傳遞中的梯度計(jì)算,降低了多尺度檢測(cè)的有效性。
本文采用ASFF[11]算法,解決不同尺度特征之間的不一致性。首先,通過(guò)下采樣的方式,將y2,y3的特征圖調(diào)整為和y1一樣的大小。然后,通過(guò)加權(quán)的方式,將y1,y2,y3的特征圖融合得到融合特征ASFF1(ASFF2、ASFF3同理),如圖4所示。

圖4 ASFF網(wǎng)絡(luò)結(jié)構(gòu)圖
以ASFF1為例,不同層的特征與權(quán)重相乘并相加,可以得到新的融合特征,如式(2)。
(2)
ASFF算法通過(guò)學(xué)習(xí)不同特征圖之間的聯(lián)系,過(guò)濾掉融合特征ASFF1、ASFF2、ASFF3空間位置矛盾的信息,同時(shí)增強(qiáng)帶有區(qū)分性線索的特征,提高了尺度不變性,具有實(shí)現(xiàn)簡(jiǎn)單,附加計(jì)算成本小的優(yōu)點(diǎn)。
原始錨框的寬高比適用于檢測(cè)多類別目標(biāo),不適用于混合行人數(shù)據(jù)集單類別檢測(cè)。利用k-means調(diào)整錨框的尺寸,可以有效提高檢測(cè)精度。
k-means使用歐式距離調(diào)整錨框的尺寸計(jì)算時(shí),檢測(cè)結(jié)果易受到尺寸的影響,從而降低了精度。為了避免這一影響,本文用IOU距離替代歐式距離,如式(3)。
d(b,c)=1-IOU(b,c)
(3)
其中,b為數(shù)據(jù)集中行人數(shù)據(jù)的目標(biāo)框信息;c為聚類中心;IOU為目標(biāo)框與聚類中心框的平均交并比。數(shù)據(jù)集利用算法進(jìn)行100次迭代聚類,可以得到較好的錨框尺寸,如圖5所示。

(a) 算法迭代1次

(b) 算法迭代100次
通過(guò)聚類得到聚類中心,與輸入圖像的尺寸進(jìn)行乘積運(yùn)算可以得到聚類后的錨框尺寸,如表1所示。

表1 聚類后的錨框尺寸
改進(jìn)后的算法流程,如圖6所示。

圖6 改進(jìn)后算法流程
將行人圖像經(jīng)過(guò)預(yù)處理得到608×608固定大小的輸入,經(jīng)過(guò)Darknent53卷積池化,送入改進(jìn)的檢測(cè)網(wǎng)絡(luò),待使用ASFF進(jìn)行特征融合后,得到預(yù)測(cè)網(wǎng)絡(luò)。
當(dāng)訓(xùn)練好改進(jìn)的模型,將行人圖像大小和錨框尺寸送入模型,得到特征圖y1,y2,y3(N×N×[3×(4+1+1)])。其中N表示輸出特征圖的大小,將原始圖片劃分成N×N的網(wǎng)格。(cx,cy)表示網(wǎng)格左上角坐標(biāo);4表示錨框的邊框坐標(biāo)(tx,ty,tw,th);3表示每個(gè)網(wǎng)格上有3個(gè)錨框;1表示邊框置信度conf;1表示對(duì)象類別class。利用公式計(jì)算預(yù)測(cè)框的位置,如式(4)。
bx=σ(tx)+cx
by=σ(ty)+cy
bw=pwetw
bh=pheth
(4)
同時(shí)利用Simgoid函數(shù)解碼置信度和類別,設(shè)置閾值過(guò)濾無(wú)用的預(yù)測(cè)框,最后經(jīng)過(guò)NMS算法,得到行人目標(biāo)置信度最高的預(yù)測(cè)框,如表2所示。

表2 行人檢測(cè)流程
本文實(shí)驗(yàn)環(huán)境為:Inter?Xeon?E5-2689 CPU @3.60GHz,16GB內(nèi)存,NVIDIA GeForce RTX 2070Ti,Ubuntu16.04系統(tǒng),PyTorch深度學(xué)習(xí)框架,GPU加速庫(kù)為CUDA10.2和CUDNN8.0.4。實(shí)驗(yàn)中,數(shù)據(jù)集分布如表3所示。

表3 混合行人數(shù)據(jù)集
實(shí)驗(yàn)采用檢測(cè)精度(AP)、查準(zhǔn)率(precision)、查全率(recall)對(duì)模型效果進(jìn)行評(píng)估,即式(5)。
(5)
其中,TP和FP分別表示真假正例;FN表示假負(fù)例。
實(shí)驗(yàn)中輸入圖像尺寸為608×608,采用adam優(yōu)化器自動(dòng)調(diào)節(jié)學(xué)習(xí)率,初始超參數(shù)設(shè)置如表4所示。

表4 初始超參數(shù)設(shè)置
損失函數(shù)如圖7所示。

圖7 損失函數(shù)曲線圖
從圖中可以看出,隨著eporch次數(shù)增加,總損失下降較快,經(jīng)過(guò)200 eporch后,總損失趨于穩(wěn)定。
以AP和eporch為y軸和x軸來(lái)繪制,準(zhǔn)確率曲線圖如圖8所示。

圖8 準(zhǔn)確率曲線圖
將YOLOv3算法與不同改進(jìn)策略算法,在P、R、AP上進(jìn)行比較。通過(guò)對(duì)YOLOv3的網(wǎng)絡(luò)進(jìn)行修改,在三個(gè)尺度檢測(cè)分支加入SPP層,融合不同大小的特征,提取特征提取能力。相對(duì)于YOLOv3-spp,查全率和準(zhǔn)確率分別提高2.8%和1.7%,如表5和圖9所示。

表5 不同改進(jìn)策略測(cè)試結(jié)果

圖9 不同改進(jìn)策略結(jié)果對(duì)比
此外,引入了自適應(yīng)多尺度特征融合,使用采樣方式,融合三個(gè)尺度特征圖的語(yǔ)義信息,增加特征的豐富度,提高對(duì)不同大小行人的檢測(cè)能力。相對(duì)于YOLOv3-spp,查全率和準(zhǔn)確率分別提高2.7%和1%。
在輸出預(yù)測(cè)框之前,采用k-means算法,可以有效提高檢測(cè)能力,提高檢測(cè)網(wǎng)絡(luò)的查全率。相對(duì)于YOLOv3-spp,查準(zhǔn)率、查全率和精度分別提高10.2%、1.5%和3.3%。
在輸出預(yù)測(cè)框之前,采用k-means算法,可以有效提高檢測(cè)能力,提高檢測(cè)網(wǎng)絡(luò)的查全率。相對(duì)于YOLOv3-spp,查準(zhǔn)率、查全率和精度分別提高10.2%、1.5%和3.3%。
神經(jīng)網(wǎng)絡(luò)通常采用浮點(diǎn)運(yùn)算次數(shù)(FLOPS)和模型參數(shù)量或模型體積表示模型的時(shí)間和空間復(fù)雜度。對(duì)YOLOv3和本文算法進(jìn)行復(fù)雜度對(duì)比,可以看到本文算法的浮點(diǎn)運(yùn)算次數(shù)減少0.3GFLOPS,減少了模型訓(xùn)練和預(yù)測(cè)的時(shí)間,降低了時(shí)間復(fù)雜度。當(dāng)輸入相同時(shí),本文算法在前后向傳播過(guò)程中所占GPU顯存降低了10.32MB,模型權(quán)重內(nèi)存占用增加了2.4MB,總占用降低了7.92MB,降低了空間復(fù)雜度,如表6所示。

表6 復(fù)雜度分析
為了提高智能監(jiān)控下,對(duì)不同大小行人目標(biāo)的檢測(cè)精度。本文借鑒特征融合思想,通過(guò)引入SPP和ASFF結(jié)構(gòu),增加模型的特征提取和表達(dá)能力。在結(jié)果預(yù)測(cè)階段,改進(jìn)錨框的尺寸,提高了錨框與行人目標(biāo)的匹配能力。實(shí)驗(yàn)結(jié)果表明,引入單一的SPP或ASFF結(jié)構(gòu),可以提高模型的檢測(cè)精度。引入全部的改進(jìn)策略后,檢測(cè)精度得到了3.3%的提高。