韓 松, 馬國(guó)軍
(江蘇科技大學(xué)電子信息學(xué)院,江蘇 鎮(zhèn)江 212000)
隨著視頻監(jiān)控、無人駕駛汽車、智能機(jī)器人等應(yīng)用領(lǐng)域的快速發(fā)展,行人檢測(cè)技術(shù)[1]也逐漸成為研究熱點(diǎn)。針對(duì)行人檢測(cè)問題,國(guó)內(nèi)外學(xué)者已經(jīng)開展了相關(guān)的研究,但通用目標(biāo)檢測(cè)算法在檢測(cè)小目標(biāo)或遮擋行人時(shí),由于分辨率較低、圖像不清晰、背景環(huán)境干擾等因素容易出現(xiàn)行人特征信息提取不全的現(xiàn)象,嚴(yán)重影響行人檢測(cè)準(zhǔn)確性和實(shí)時(shí)性,這是目前行人檢測(cè)領(lǐng)域亟需解決的問題。
傳統(tǒng)的行人檢測(cè)方法主要采取大小不同的滑動(dòng)窗口選取候選區(qū)域并進(jìn)行特征提取,最后使用分類器實(shí)現(xiàn)行人檢測(cè)。DALAL等[2]提出將提取圖像的方向梯度直方圖(Histogram of Oriented Gradient,HOG)特征送入支持向量機(jī)(Support Vector Machine,SVM)進(jìn)行分類;DOLLR等[3]提出聚合通道特征(Aggregate Channel Feature,ACF)方法,通過提取多種通道特征構(gòu)成特征金字塔,并利用AdaBoost分類器檢測(cè)行人,該方法在性能和速度上都有很大的提升。由于上述方法依賴人工設(shè)計(jì)特征,因此計(jì)算復(fù)雜、泛化能力弱且魯棒性差,使得傳統(tǒng)行人檢測(cè)方法對(duì)中小尺寸行人特征表征能力不足,實(shí)時(shí)檢測(cè)效果不明顯。
隨著計(jì)算機(jī)硬件的快速發(fā)展,深度學(xué)習(xí)方法應(yīng)用于行人檢測(cè)的效果也發(fā)生了質(zhì)的飛越,其提取到圖像深度特征信息,相比于人工設(shè)計(jì)特征具有更強(qiáng)的表征能力,其方法具體分為基于候選框生成的兩階段(Two Stage)目標(biāo)檢測(cè)算法和基于回歸的一階段(One Stage)目標(biāo)檢測(cè)算法。基于候選框生成的兩階段算法首先生成包含目標(biāo)的候選框,然后對(duì)候選框區(qū)域進(jìn)行分類和邊界回歸,代表算法有R-CNN[4],F(xiàn)ast R-CNN,F(xiàn)aster R-CNN[5](Faster Regions with CNN Features)和Mask R-CNN等。由于基于候選框生成的兩階段算法網(wǎng)絡(luò)較復(fù)雜、速度慢,無法滿足視頻監(jiān)控行人實(shí)時(shí)性要求,因此基于回歸的一階段目標(biāo)檢測(cè)算法逐漸興起,代表算法有SSD[6],YOLO[7],YOLOv2,YOLOv3[8]等。SSD采用特征融合思想將底層結(jié)構(gòu)信息與高層語(yǔ)義信息進(jìn)行融合。YOLO是基于回歸思想的網(wǎng)絡(luò)模型,實(shí)現(xiàn)了端到端的訓(xùn)練并且可以達(dá)到實(shí)時(shí)檢測(cè)效果。YOLOv2中增加Batch Normalization層加速收斂,避免了模型過擬合[9]。
針對(duì)YOLOv2對(duì)小目標(biāo)檢測(cè)效果不明顯的問題,YOLOv3利用殘差結(jié)構(gòu)[10]改進(jìn)了Darknet-53分類網(wǎng)絡(luò),并使用3個(gè)尺度特征圖對(duì)行人目標(biāo)進(jìn)行檢測(cè)與識(shí)別。為了進(jìn)一步提高模型檢測(cè)準(zhǔn)確率,范麗等[11]提出在YOLOv3模型中融入標(biāo)簽平滑并增加多尺度檢測(cè),解決因行人較遠(yuǎn)或行人被嚴(yán)重遮擋而出現(xiàn)漏檢的問題,實(shí)現(xiàn)自動(dòng)學(xué)習(xí)行人特征;曾成等[12]為了解決小尺寸目標(biāo)識(shí)別率低的問題,重構(gòu)金字塔機(jī)制,損失函數(shù)由IoU替換為DIoU,解決邊框回歸梯度下降問題。以上方法雖然檢測(cè)速度和精度有了提升,但仍然存在對(duì)中小尺寸目標(biāo)識(shí)別準(zhǔn)確度不高的問題,容易造成誤檢、漏檢。針對(duì)以上問題,本文改進(jìn)主干網(wǎng)絡(luò)Darknet-53網(wǎng)絡(luò)結(jié)構(gòu),輸出層由三尺度檢測(cè)變?yōu)樗某叨葯z測(cè),同時(shí),使用線性尺度縮放的K-means聚類算法提升先驗(yàn)框與真實(shí)框的相似度,提高了對(duì)中小尺寸行人目標(biāo)檢測(cè)的準(zhǔn)確率。
YOLOv3算法是在YOLOv2基礎(chǔ)上,融合了特征金字塔(Feature Pyramid Network,FPN)[13]、殘差網(wǎng)絡(luò)等方法提出的基于回歸的一階段目標(biāo)檢測(cè)算法,該算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。它將目標(biāo)檢測(cè)問題轉(zhuǎn)換成回歸問題,改進(jìn)YOLOv2網(wǎng)絡(luò)結(jié)構(gòu),使得端到端檢測(cè)算法適合小目標(biāo)檢測(cè),在訓(xùn)練模型時(shí),行人圖像輸入神經(jīng)網(wǎng)絡(luò)中可直接得到行人目標(biāo)的位置和類別信息。
圖1 YOLOv3 網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of YOLOv3 network
YOLOv3算法主要分為特征提取網(wǎng)絡(luò)和預(yù)測(cè)網(wǎng)絡(luò)兩個(gè)部分,其中,特征提取網(wǎng)絡(luò)為Darknet-53,包括5個(gè)殘差模塊,為了避免在訓(xùn)練時(shí)網(wǎng)絡(luò)層數(shù)過多導(dǎo)致梯度爆炸,其借鑒了殘差結(jié)構(gòu)思想使用大量的跳躍連接,堆疊更多的層來進(jìn)行特征提取,加強(qiáng)網(wǎng)絡(luò)的學(xué)習(xí)能力。Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)不同,包含更多卷積層,不含全連接層和池化層。在進(jìn)行行人檢測(cè)與識(shí)別時(shí),由于輸出的特征圖13×13網(wǎng)絡(luò)層比較深,感受野大,容易丟失小目標(biāo)行人特征。
在預(yù)測(cè)網(wǎng)絡(luò)方面,YOLOv3算法利用FPN選取Darknet-53網(wǎng)絡(luò)上13×13,26×26和52×52這3個(gè)不同尺度特征圖進(jìn)行預(yù)測(cè),分別預(yù)測(cè)大目標(biāo)、中等目標(biāo)和小目標(biāo)。對(duì)輸入圖像劃分為S×S的網(wǎng)格,每個(gè)網(wǎng)格負(fù)責(zé)檢測(cè)中心位置落入其中的目標(biāo),1個(gè)網(wǎng)絡(luò)預(yù)測(cè)B個(gè)邊界框及其置信度,以及C個(gè)類別概率,其網(wǎng)絡(luò)輸出大小為S×S×B×(4+1+C)。在預(yù)測(cè)過程中,YOLOv3選取了9個(gè)初始候選框(Anchor Box),Anchor Box與Bounding Box的關(guān)系如圖2所示。
圖2 Anchor Box與Bounding Box關(guān)系圖
Bounding Box的坐標(biāo)算式為
(1)
式中:網(wǎng)絡(luò)輸出相對(duì)于Anchor Box的偏移量分別記為tx,ty,tw,th;cx,cy分別為當(dāng)前網(wǎng)格坐標(biāo)偏移量;σ為激活函數(shù)Sigmoid,將偏移量tx,ty映射到[0,1]區(qū)間內(nèi);pw,ph分別為對(duì)應(yīng)Anchor Box的寬和高。
在神經(jīng)網(wǎng)絡(luò)訓(xùn)練網(wǎng)絡(luò)模型時(shí),BN(Batch Normalization)層[14]能夠加速網(wǎng)絡(luò)收斂,防止過擬合情況發(fā)生,通常在卷積之后,非線性處理之前。在模型訓(xùn)練時(shí),計(jì)算每個(gè)batch的均值μ和方差σ2來對(duì)每個(gè)數(shù)據(jù)做歸一化處理,算式為
(2)
式中:N為Batch size;xi為Batch中的每一個(gè)數(shù)據(jù)。同時(shí),BN計(jì)算加上一個(gè)縮放因子γ和偏移系數(shù)β,單獨(dú)BN層輸出為
(3)
在訓(xùn)練行人檢測(cè)模型時(shí),雖然BN層能加速模型網(wǎng)絡(luò)收斂,提高模型的泛化能力,但是網(wǎng)絡(luò)層數(shù)的增加會(huì)影響模型的性能,且占用內(nèi)存和顯存。為了提升網(wǎng)絡(luò)的前向推理速度,將BN層與卷積層融合,如圖3所示。
圖3 BN層與卷積層融合前后對(duì)比
BN層與卷積層融合前,卷積層輸出表達(dá)式為
yConv=w*x+b。
(4)
將卷積層輸出結(jié)果送入BN層,BN層輸出表達(dá)式為
(5)
BN層與卷積層融合后,根據(jù)Conv層和BN層參數(shù)計(jì)算新的Conv層參數(shù)表達(dá)式為
(6)
融合后新的卷積層輸出表達(dá)式為
(7)
在行人目標(biāo)檢測(cè)時(shí),由于不同行人與攝像頭距離不同,行人在拍攝到的圖像上呈現(xiàn)大小不一,YOLOv3最后一層檢測(cè)層尺寸只有輸出圖像的1/32,這使得特征層會(huì)丟失小尺寸行人信息。為了提取小尺寸行人目標(biāo)更多的特征信息,采用FPN結(jié)構(gòu)[15],增加新的檢測(cè)層尺寸104×104,并與原有的3個(gè)檢測(cè)層進(jìn)行融合,網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
YOLOv3網(wǎng)絡(luò)經(jīng)過多次卷積操作,將尺寸為13×13特征圖經(jīng)過上采樣后與尺寸為26×26的特征圖融合,將融合的結(jié)果輸入到下一特征層,直到新增第4個(gè)檢測(cè)層融合前3個(gè)檢測(cè)層特征信息。新增檢測(cè)層保留了原始圖像更多的細(xì)節(jié)信息,在沒有增加網(wǎng)絡(luò)復(fù)雜度的情況下,增強(qiáng)了網(wǎng)絡(luò)的表征能力,在對(duì)小尺寸行人識(shí)別中,新的網(wǎng)絡(luò)結(jié)構(gòu)提高了檢測(cè)準(zhǔn)確性。
圖4 改進(jìn)YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)采取FPN進(jìn)行多尺度特征融合,13×13特征圖檢測(cè)大尺寸行人目標(biāo),26×26特征圖檢測(cè)中等尺寸行人目標(biāo),52×52和新增104×104特征圖側(cè)重對(duì)小尺寸行人目標(biāo)的檢測(cè),通過深層網(wǎng)絡(luò)與淺層網(wǎng)絡(luò)特征信息融合[16],增強(qiáng)了對(duì)小目標(biāo)行人檢測(cè)的魯棒性??紤]到行人數(shù)據(jù)集中的目標(biāo)尺寸大小比較集中,通過K-means聚類[17]的方法產(chǎn)生候選框[18]自然比較集中,不能有效地發(fā)揮YOLOv3算法多尺度檢測(cè)的優(yōu)勢(shì),因此,本文提出一種線性尺度縮放的方式,如圖5所示,將K-means聚類產(chǎn)生的候選框乘以一定比例系數(shù),離散候選框尺寸集合,使候選框尺寸具有多樣性。候選框線性尺度縮放表達(dá)式為
(8)
式中,設(shè)定m=0.3,n=1.2。
候選框線性尺度縮放后12個(gè)新的坐標(biāo)點(diǎn)表達(dá)式為
(9)
圖5 線性尺度縮放算法Fig.5 Linear scaling algorithm
本文所提出的對(duì)候選框進(jìn)行線性尺度縮放,在改進(jìn)的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上,進(jìn)行了多次實(shí)驗(yàn),設(shè)定線性尺度縮放比例m=0.3,n=1.2,更加符合實(shí)驗(yàn)數(shù)據(jù)集候選框多尺度輸出檢測(cè)特點(diǎn),有利于候選框多樣性。
本文所有實(shí)驗(yàn)都在服務(wù)器中進(jìn)行,操作系統(tǒng)為Ubuntu18.04,CPU為i7-8700K處理器,主頻3.7 GHz,內(nèi)存為32 GiB,顯卡型號(hào)為GTX1080Ti。
本實(shí)驗(yàn)采用INRIA公開數(shù)據(jù)集, INRIA數(shù)據(jù)集行人姿態(tài)多樣化,圖像清晰度高,同時(shí)存在遮擋、小尺寸行人目標(biāo)等復(fù)雜環(huán)境下拍攝的圖像。INRIA數(shù)據(jù)集中正樣本614幅(包含2416個(gè)行人),測(cè)試集有正樣本288幅(包括1126個(gè)行人),圖像中人體站立姿勢(shì)大于100像素。
本實(shí)驗(yàn)選取Darknet框架,所用的模型為改進(jìn)的YOLOv3行人目標(biāo)檢測(cè)算法。為了讓神經(jīng)網(wǎng)絡(luò)達(dá)到更好的預(yù)測(cè)效果,訓(xùn)練時(shí)輸入圖像大小為608×608,輸入通道數(shù)為3,Batch為64,subdivisions為16,動(dòng)量值(momentum)為0.9,權(quán)重衰減為0.000 5,初始學(xué)習(xí)率為0.001,迭代次數(shù)設(shè)為4000,并且每100次迭代保存一次模型,最終選取損失值最低模型用于行人檢測(cè)。
本文使用損失函數(shù)(Loss)、準(zhǔn)確率與召回率(P-R)對(duì)行人檢測(cè)模型進(jìn)行評(píng)價(jià),行人檢測(cè)效果通過對(duì)比改進(jìn)算法得到的實(shí)驗(yàn)效果圖進(jìn)行評(píng)價(jià)。
原始YOLOv3算法模型記為YOLOv3,為了滿足算法運(yùn)用于行人監(jiān)控場(chǎng)景下的實(shí)時(shí)性要求,BN層融入卷積層中的模型記為YOLOv3_BN,加快模型前向推理速度,提升模型性能。增加目標(biāo)檢測(cè)層,原始9類候選框變成12類候選框,并利用K-means算法對(duì)候選框進(jìn)行重新聚類后訓(xùn)練的模型記為YOLOv3_New Layer,在候選框聚類的基礎(chǔ)上,運(yùn)用線性尺度縮放方法并對(duì)候選框重新聚類,聚類后Anchor參數(shù)為(6,23),(15,58),(27,102),(31,152),(46,95),(47,153),(56,228),(78,188),(87,318),(107,236),(150,300),(207,354),訓(xùn)練后的模型記為YOLOv3_Linear Scale。
為了進(jìn)一步比較YOLOv3改進(jìn)算法模型檢測(cè)性能,其模型YOLOv3,YOLOv3_New Layer及YOLOv3_ Linear Scale對(duì)比損失值變化情況如圖6(a)~6(c)所示,YOLOv3,YOLOv3_BN,YOLOv3_New Layer及YOLOv3_Linear Scale 的P-R曲線如圖6(d)所示。
圖6 不同模型性能比較
由圖6(a)、圖6(b)可知,YOLOv3_New Layer模型和YOLOv3_ Linear Scale模型相比YOLOv3算法訓(xùn)練模型損失值要小,隨著訓(xùn)練迭代次數(shù)增加,其損失值越來越接近于平滑,最終損失值降低到0.1以下,模型收斂效果相對(duì)于YOLOv3算法更好。新加的檢測(cè)層YOLOv3_New Layer模型是在YOLOv3算法基礎(chǔ)上添加104×104尺度檢測(cè)層,其對(duì)小目標(biāo)檢測(cè)比較敏感,在行人檢測(cè)識(shí)別中,減少了行人漏檢情況發(fā)生。YOLOv3_ Linear Scale模型為了適應(yīng)行人檢測(cè)數(shù)據(jù)集需要,運(yùn)用尺度縮放方法,提高了小尺寸行人目標(biāo)檢測(cè)效果。同時(shí)也比較了YOLOv3_New Layer模型和運(yùn)用尺度縮放方法YOLOv3_ Linear Scale模型損失值,通過圖6(c)可以直觀得出,盡管剛開始YOLOv3_ Linear Scale模型訓(xùn)練損失比較大,但隨著訓(xùn)練次數(shù)的增多,損失值逐漸降低,趨向收斂,最終訓(xùn)練結(jié)束時(shí)損失值低于YOLOv3_New Layer,說明在行人目標(biāo)聚類分析中,通過設(shè)置合適的縮放比例,能夠改善模型的性能,提高行人目標(biāo)檢測(cè)準(zhǔn)確率。
圖6(d)給出了YOLOv3,YOLOv3_BN,YOLOv3_New Layer以及YOLOv3_Linear Scale模型的P-R曲線進(jìn)行對(duì)比,改進(jìn)算法在準(zhǔn)確率與召回率上均有提升,本文利用平均精度均值(mAP)和檢測(cè)速度作為模型準(zhǔn)確率和速度評(píng)估指標(biāo),分別對(duì)比3種改進(jìn)算法的mAP和檢測(cè)速度,如表1所示。從表1中可知,改進(jìn)后的YOLOv3_Linear Scale算法的mAP值達(dá)到91.4%,提高了3.4%,YOLOv3_BN的檢測(cè)速度達(dá)到66.7幀/s,提高了15%。
表1 改進(jìn)YOLOv3算法檢測(cè)效果
由表1可知,本文列舉的3種改進(jìn)算法檢測(cè)速度都滿足現(xiàn)實(shí)視頻監(jiān)控實(shí)時(shí)性要求,同時(shí),YOLOv3_BN檢測(cè)速度大幅度提高。YOLOv3_New Layer,YOLOv3_Li-near Scale為了提高對(duì)小尺寸行人目標(biāo)識(shí)別率,增加網(wǎng)絡(luò)檢測(cè)層并運(yùn)用尺度縮放方法,提取更深層特征信息,增加網(wǎng)絡(luò)模型計(jì)算量,降低模型速度,但仍然滿足實(shí)時(shí)性要求。在視頻下進(jìn)行行人檢測(cè),降低行人目標(biāo)漏檢率。
YOLOv3,YOLOv3_New Layer與YOLOv3_Linear Scale算法在INRIA行人數(shù)據(jù)集檢測(cè)結(jié)果如圖7所示。
圖7 行人檢測(cè)效果對(duì)比Fig.7 Comparison of pedestrian detection effect
由圖7可以看出,YOLOv3_New Layer在YOLOv3模型基礎(chǔ)上增加檢測(cè)層,提高了對(duì)行人目標(biāo)識(shí)別率。YOLOv3_Linear Scale在YOLOv3_New Layer模型基礎(chǔ)上運(yùn)用尺度縮放方法,提高候選框尺寸范圍,在小目標(biāo)和遮擋行人檢測(cè)方面具有很好的檢測(cè)效果。
為了測(cè)試模型的泛化能力,將YOLOv3_Linear Scale算法運(yùn)用于實(shí)際場(chǎng)景中檢測(cè),使用摩勝Q(mào)15免驅(qū)動(dòng)攝像頭對(duì)周圍環(huán)境行人目標(biāo)進(jìn)行識(shí)別,截取實(shí)驗(yàn)室不同場(chǎng)景下識(shí)別效果如圖8所示。
圖8 不同場(chǎng)景中的識(shí)別效果
對(duì)摩勝Q(mào)15攝像頭檢測(cè)到的人進(jìn)行識(shí)別,使用改進(jìn)算法,mAP由88.0%提高到91.4%,對(duì)小目標(biāo)和遮擋的目標(biāo)具有很好的檢測(cè)效果,也滿足實(shí)時(shí)性要求。
本文提出一種改進(jìn)多尺度特征融合的行人檢測(cè)算法,該算法是以Darknet-53為主干網(wǎng)絡(luò)結(jié)構(gòu),根據(jù)行人檢測(cè)任務(wù)要求對(duì)YOLOv3算法進(jìn)行優(yōu)化。通過將BN層融入卷積層中,降低模型計(jì)算復(fù)雜度。同時(shí),該算法增加新的檢測(cè)層,利用FPN思想將圖像中深層特征信息與淺層特征信息相融合,提升網(wǎng)絡(luò)的表征能力。結(jié)合線性尺度縮放的方法,發(fā)揮YOLOv3算法多尺度輸出的優(yōu)勢(shì)。在INRIA行人數(shù)據(jù)集上實(shí)驗(yàn)得出該算法的mAP達(dá)到91.4%,滿足行人監(jiān)控需求,相比于原始的YOLOv3算法在行人檢測(cè)方面有了明顯的提高。