劉叢強(qiáng) 王浩森 范 虹 葛成鵬 楊建盛
(河北建筑工程學(xué)院 信息工程學(xué)院,河北 張家口 075000)
行人檢測是計(jì)算機(jī)視覺領(lǐng)域的一個(gè)經(jīng)典問題,其特點(diǎn)是應(yīng)用范圍廣泛如無人駕駛,機(jī)器人,智能監(jiān)控,人體行為分析,弱視輔助技術(shù)等[1,2].傳統(tǒng)的行人檢測方法主要是應(yīng)用HOG提取行人特征再用SVM進(jìn)行分類[3],但HOG只能從梯度或者紋理來描述行人特征,判別力較差[4],同時(shí)SVM也不再適應(yīng)規(guī)模越來越大的行人檢測數(shù)據(jù)集.隨著近幾年卷積神經(jīng)網(wǎng)絡(luò)的流行與發(fā)展,行人檢測的精度依靠卷積神經(jīng)網(wǎng)絡(luò)從大規(guī)模樣本中學(xué)習(xí)目標(biāo)特征的能力得到了很大提升,但正負(fù)樣本失衡,多尺度,行人之間的相互遮擋等問題仍然影響著檢測性能.
基于深度卷積神經(jīng)網(wǎng)絡(luò)的檢測模型可以分為基于錨框(anchor-based)和不基于錨框(anchor-free)兩類,目前基于錨框的目標(biāo)檢測模型主要有Faster R-CNN[7],SSD[8]等,不基于錨框的主要有YOLOV1[5],CornerNet[6]等.相比于不基于錨框基于錨框的檢測模型盡管靈活性較差,需要調(diào)優(yōu)錨框相關(guān)的參數(shù),但在精度上表現(xiàn)更好,F(xiàn)aster R-CNN在訓(xùn)練RPN階段會(huì)生成預(yù)先設(shè)置好尺度與比例的錨框,通過迭代訓(xùn)練,使RPN能輸出更符合檢測目標(biāo)的候選框給Fast R-CNN進(jìn)行進(jìn)一步的分類和定位,只要生成錨框的尺度和比例能符合檢測目標(biāo)的分布,就可以提升模型的檢測精度.
本文實(shí)驗(yàn)基于Faster R-CNN進(jìn)行,為了獲得更適應(yīng)于行人檢測的錨框比例,提升檢測性能,通過k-均值聚類算法對(duì)CityPersons[9]數(shù)據(jù)集的標(biāo)注信息進(jìn)行聚類,并將聚類出的行人比例應(yīng)用到RPN中,將結(jié)果與原始Faster R-CNN設(shè)置的比例和AdaptedFaster R-CNN[9]使用密集比例的方法得到的結(jié)果進(jìn)行對(duì)比.
模型的訓(xùn)練流程如圖1所示.首先將行人檢測數(shù)據(jù)集輸入卷積神經(jīng)網(wǎng)絡(luò)(CNN)中提取特征,生成特征圖,然后RPN根據(jù)特征圖的大小,預(yù)先設(shè)置好的錨框尺度及通過對(duì)行人數(shù)據(jù)集使用k-均值聚類得到的比例來生成錨框,并按照一定規(guī)則挑選部分錨框來來訓(xùn)練RPN,最后RPN再輸出經(jīng)過非最大值抑制(NMS)的候選框到Fast R-CNN中進(jìn)行訓(xùn)練.
圖1 模型訓(xùn)練流程
實(shí)際場景中,行人的寬度會(huì)因姿態(tài),遮擋等因素變化很大,但人的高寬比仍然處于一定范圍內(nèi),對(duì)于行人檢測模型性能的評(píng)估都會(huì)進(jìn)行多尺度的評(píng)估,將行人樣本根據(jù)高度,或面積可以分為小中大三類,實(shí)際情況中行人距離檢測器的遠(yuǎn)近表現(xiàn)在圖像中就是像素大小的變化,所以在類別數(shù)范圍已知,類間差別大的情況下可以通過k均值聚類算法找到每一類行人的中心比例.算法的描述及實(shí)現(xiàn)過程如下[11]:
a)給定數(shù)據(jù)集D={x1,…,xn},隨機(jī)選擇k個(gè)聚類中心C={C1,…,Ck}.
b)根據(jù)歐式距離將數(shù)據(jù)集中的對(duì)象劃分到某個(gè)類之中.
c)計(jì)算新的聚類中心Ci:
(1)
d)當(dāng)滿足最小化誤差函數(shù)E(C)或達(dá)到迭代次數(shù),迭代停止,否則轉(zhuǎn)入b)繼續(xù)迭代:
(2)
FPN[12]是利用CNN本身帶有的層次性特征來構(gòu)建具有更強(qiáng)語義信息的特征圖,CNN本身的層次性特征是指底層的特征圖分辨率高,有利于定位,但語義信息弱,不利于分類,而頂層的特征圖分辨率低,不利于定位,尤其是對(duì)小目標(biāo),但包含的語義信息更強(qiáng),有利于分類.FPN的具體構(gòu)造流程如圖2所示,以ResNet[13]為例,將conv2,conv3.conv4,conv5每一層最后一組殘差塊輸出的特征圖提取出來,命名為C2,C3,C4,C5,然后先對(duì)C5進(jìn)行11卷積得到M5,將M5上采樣成與C4相同的分辨率后加上經(jīng)過11卷積的C4得到M4,依此類推得到M3,M2,然后將M5,M4,M3,M2都經(jīng)過33的卷積得到P5,P4,P3,P2,通道數(shù)都固定為256.這樣得到的特征圖都包含CNN頂層較強(qiáng)的語義信息.
圖2 FPN構(gòu)造過程
Faster R-CNN結(jié)構(gòu)與Fast R-CNN基本一致,區(qū)別在于Faster R-CNN不再使用selective search來獲取候選框,而是提出了RPN與CNN結(jié)合到一起來生成候選框,實(shí)現(xiàn)了端到端的目標(biāo)檢測,有效提升了檢測效率.
1.4.1 區(qū)域建議網(wǎng)絡(luò)
在輸入一張任意大小的圖片后,RPN會(huì)輸出一批候選框,每個(gè)候選框都會(huì)有一個(gè)類別得分和相對(duì)于真實(shí)框(ground truth)的偏移量,在訓(xùn)練階段會(huì)根據(jù)特征圖的大小和預(yù)先設(shè)置好的尺度和比例生成一定數(shù)量的錨框,在測試階段就不再生成錨框,而是直接將通過卷積計(jì)算得到的候選框經(jīng)過最大值抑制后選擇前1000個(gè)輸入到Fast R-CNN中得到分類和定位結(jié)果[12].
1.4.2 損失函數(shù)
在RPN訓(xùn)練階段時(shí),會(huì)根據(jù)生成的錨框與真實(shí)框的交并比分配正負(fù)樣本,然后按照設(shè)置好的比例和數(shù)量隨機(jī)選擇正負(fù)樣本進(jìn)行訓(xùn)練,根據(jù)文獻(xiàn)[9],損失函數(shù)設(shè)置為:
(3)
(4)
(5)
本文使用公開的行人檢測數(shù)據(jù)集CityPersons進(jìn)行實(shí)驗(yàn),CityPersons訓(xùn)練集包含2975張圖像,驗(yàn)證集包含500張圖像.
表1 Citypersons子集劃分標(biāo)準(zhǔn)
實(shí)驗(yàn)基于Pytorch深度學(xué)習(xí)框架進(jìn)行,GPU為單張GTX 1060.使用在ImageNet分類任務(wù)上預(yù)訓(xùn)練過的ResNet50[13]作為基礎(chǔ)網(wǎng)絡(luò)架構(gòu),不使用數(shù)據(jù)增強(qiáng)技巧.訓(xùn)練RPN時(shí),設(shè)置當(dāng)錨框與真實(shí)框交并比大于0.7時(shí),標(biāo)記為正樣本,當(dāng)交并比小于0.3時(shí),標(biāo)記為負(fù)樣本,然后隨機(jī)挑選256個(gè)錨框計(jì)算分類損失和回歸損失,正負(fù)樣本比例為1:1.在訓(xùn)練參數(shù)設(shè)置方面,batchsize設(shè)為1,共30k次迭代,前25k次學(xué)習(xí)率為0.001,后5k次學(xué)習(xí)率為0.0001,動(dòng)量為0.9,權(quán)重衰減設(shè)為0.0005.
表2 k-均值算法聚類結(jié)果
評(píng)估標(biāo)準(zhǔn)參照文獻(xiàn)[10],在FPPI(false positive per image)的[10-2,100]范圍內(nèi)計(jì)算對(duì)數(shù)平均丟失率,按照官方提供的評(píng)估標(biāo)準(zhǔn)根據(jù)高度和遮擋率將驗(yàn)證集劃分為三個(gè)子集.所有實(shí)驗(yàn)交并比(IOU)閾值都為0.5.
如1.2節(jié)所述,會(huì)將數(shù)據(jù)集的標(biāo)注信息聚類成三類及兩類做實(shí)驗(yàn)對(duì)比,對(duì)于CityPersons數(shù)據(jù)集,只對(duì)其可見框的標(biāo)注信息進(jìn)行聚類,因?yàn)槠淙砜蚴歉鶕?jù)固定比例生成的,而檢測時(shí)是針對(duì)可見部位的檢測.聚類結(jié)果如表3所示,橫坐標(biāo)為寬度,縱坐標(biāo)為高度,文中所有比例值都為高比寬.由中心點(diǎn)變化可以看出,行人的面積分布具有明顯的尺度變換.
現(xiàn)在將聚類所得比例與Faster R-CNN根據(jù)經(jīng)驗(yàn)設(shè)置的原始比例{0.5,1.0,2.0}及AdaptedFaster R-CNN憑直覺設(shè)置的密集比例得到的行人檢測結(jié)果進(jìn)行對(duì)比,密集比例是指把區(qū)間[0.5,2]10等分取11個(gè)端點(diǎn)作為生成的錨框比例[9],在CityPersons數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果如表3所示,Ori表示原始比例,k-means-3表示錨框比例聚類成3類,k-means-2表示聚類成兩類,Dense表示密集比例.
表3 CityPersons數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果
從表3可以看出,使用聚類得到的比例對(duì)比原始比例能有效降低行人檢測的丟失率,在Reasonable,Reasonable_small子集上分別最大降低了2.8%,4.7%.圖4為CityPersons數(shù)據(jù)集在RPN階段生成的正樣本數(shù)量分布圖,橫坐標(biāo)為圖片生成的正樣本數(shù)區(qū)間,縱坐標(biāo)為圖片生成的正樣本數(shù)在該區(qū)間范圍內(nèi)的頻數(shù).從圖4可以看出,對(duì)比原始比例,聚類得到的比例使圖片生成的正樣本數(shù)在[0,20]之間的頻數(shù)明顯下降,因?yàn)閷?shí)驗(yàn)設(shè)置為隨機(jī)挑選256個(gè)正負(fù)樣本,所以在這一范圍內(nèi)的負(fù)樣本的數(shù)量為正樣本的10倍到255倍,屬于極端正負(fù)樣本不平衡,同時(shí)在其他范圍內(nèi)的頻數(shù)基本呈上升趨勢(shì),在[20,40]的區(qū)間范圍內(nèi)上升最多,平均上升了144次,這表明合適的錨框比例有效緩解了正負(fù)樣本不平衡的狀況,進(jìn)而提升檢測精度.并且從表3還可以看出使用密集比例得到的丟失率相比使用聚類得到的比例并沒有明顯降低,在Reasonable_small子集上丟失率相比原始比例還上升了0.5%,這表明密集比例對(duì)多尺度變換的適應(yīng)力差.
圖4 CityPerosns數(shù)據(jù)集RPN階段生成的正樣本數(shù)量分布
同時(shí)觀察表3不同比例下生成的正樣本總數(shù)及圖4密集比例在RPN階段生成的正樣本數(shù)量分布,從生成的正樣本的總數(shù)來看,使用密集比例生成的正樣本總數(shù)最多,是聚類得到的比例的2倍左右,密集比例生成的正樣本數(shù)對(duì)比原始比例在[0,20]范圍內(nèi)下降最多,雖然在[20,100]范圍內(nèi)有小幅下降,但在能滿足正負(fù)樣本平衡的[120,180]范圍內(nèi)上升幅度最大,可丟失率相比聚類所得比例卻沒有下降,由此可以推測生成的正樣本數(shù)量并不是降低丟失率的決定因素,再考慮RPN的損失函數(shù),要通過迭代去擬合的是標(biāo)記為正樣本的錨框相對(duì)于真實(shí)框的偏移量,該偏移量越小,說明越接近真實(shí)框,標(biāo)記的正樣本質(zhì)量也就越高,越能提升模型的定位能力.因此,生成的正樣本質(zhì)量相比正樣本數(shù)量是影響丟失率下降的更重要因素.
本文使用構(gòu)建了FPN的Faster R-CNN進(jìn)行行人檢測,通過結(jié)合k-均值聚類的方法獲得適應(yīng)于行人檢測的錨框比例,從而提升了Faster R-CNN應(yīng)用于行人檢測時(shí)的性能.在CityPersons數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果說明聚類得到的比例有效緩解了正負(fù)樣本不平衡的問題并且生成的正樣本的質(zhì)量相比生成的正樣本數(shù)量是影響檢測精度的更重要因素,使用聚類得到的比例能生成相比密集比例稀疏但總體質(zhì)量更高的正樣本。