陳 澤,葉學義,錢丁煒,魏陽洋
(杭州電子科技大學 模式識別與信息安全實驗室,杭州 310018)
近年來,行人檢測作為智能交通應用的核心技術,引起了人們的廣泛關注[1]。行人檢測的任務是對輸入的圖像或視頻幀通過計算機視覺技術輸出包含行人的矩形框,可將其看作目標檢測中的一個實例。由于深度學習強大的特征表達能力,因此基于深度學習的檢測算法已經(jīng)在目標檢測領域占據(jù)了主導地位[2-3]。根據(jù)預測流程可將基于深度學習的目標檢測算法分為兩大類:一類是以Faster R-CNN[4]為代表的基于區(qū)域建議的目標檢測算法,如SPP-Net[5]、Fast R-CNN[6]、R-FCN[7]等,這類算法都有兩個流程,首先通過區(qū)域建議算法生成可能包含目標的候選區(qū)域,然后通過卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)對候選區(qū)域進行分類和位置回歸得到最終的檢測框;另一類是以YOLOv3[8]為代表的基于回歸[9]的目標檢測算法,如SSD[10]、RetinaNet[11]等,這類算法沒有區(qū)域建議環(huán)節(jié),而是將預先設置在原圖上的窗口直接映射到卷積神經(jīng)網(wǎng)絡生成的特征圖上,通過深度特征回歸出窗口的類別和位置偏移量,最終得到目標的檢測框。區(qū)域建議環(huán)節(jié)以犧牲檢測時間為代價,可提供質量更好的檢測框,也能使檢測的結果更加精準。由于行人檢測任務對于精度要求較高,因此目前多數(shù)研究在行人檢測中使用基于區(qū)域建議的目標檢測算法。文獻[12]發(fā)現(xiàn)Faster R-CNN目標檢測網(wǎng)絡中的區(qū)域建議網(wǎng)絡(Region Proposal Network,RPN)作為獨立的檢測器表現(xiàn)良好,而分類回歸網(wǎng)絡卻受小尺度行人影響較大,大幅降低了整體網(wǎng)絡的檢測性能,因此,該文使用提升樹(Boosted Forests,BF)算法替換分類回歸網(wǎng)絡,有效提高了網(wǎng)絡對于小尺度行人的檢測能力。文獻[13]針對行人尺度變化過大的問題提出SA-Fast RCNN方法,分別設計兩個子網(wǎng)絡用于檢測大尺度和小尺度行人。類似地,文獻[14]提出多尺度卷積神經(jīng)網(wǎng)絡MS-CNN,在網(wǎng)絡中的多個中間層同時進行檢測以匹配不同尺度的目標。文獻[15]通過引入其他特征(如梯度、熱力信息、光流等)來改善Faster R-CNN的檢測性能,但同時帶來了更多的計算消耗。文獻[16]將語義分割信息引入檢測網(wǎng)絡的共享特征圖用于協(xié)助行人檢測。
現(xiàn)實場景下的行人檢測任務存在背景復雜多變、目標遮擋和尺度過小等問題,而其中小尺度的行人對于檢測性能影響最大且出現(xiàn)的情況更普遍[17],如在自動駕駛場景下存在很多距離汽車較遠的小尺度行人,這些目標很難用激光雷達探測到,因此需要引入計算機視覺技術。本文以Faster R-CNN為基礎,通過重新設置包圍框參數(shù)、取消感興趣區(qū)域池化過程中的量化操作和多層特征融合3種方式,在不增加大量檢測時間的前提下提高網(wǎng)絡對小尺度行人的檢測能力。
Faster R-CNN是基于區(qū)域建議的目標檢測網(wǎng)絡,其檢測流程如圖1所示。首先利用卷積神經(jīng)網(wǎng)絡對輸入圖像進行多層卷積特征提取,然后在區(qū)域建議網(wǎng)絡中根據(jù)提取到的卷積特征生成可能包含目標的候選區(qū)域,也稱為感興趣區(qū)域(Region of Interest,RoI),并將其映射到卷積神經(jīng)網(wǎng)絡生成的特征圖上,分類回歸子網(wǎng)Fast R-CNN通過感興趣區(qū)域池化提取出長度固定的特征張量,最后再對提取的特征張量進行分類和位置回歸得到最終的檢測框。
圖1 Faster R-CNN網(wǎng)絡結構
區(qū)域建議網(wǎng)絡是Faster R-CNN中非常重要的一部分,其根據(jù)卷積神經(jīng)網(wǎng)絡(CNN)提取的特征,在原圖上鋪設不同比例的參考框(Anchor)來產(chǎn)生匹配各種尺度目標的候選框,這種方式大幅降低了區(qū)域建議環(huán)節(jié)帶來的計算成本,例如,傳統(tǒng)的選擇性搜索算法[18]對一張圖像進行區(qū)域建議的時間為2 s,而RPN只需要10 ms。
RPN進行區(qū)域建議的流程如圖2所示,首先在從CNN提取到的卷積特征圖上以每個點為中心生成3種尺度(128,256,512)、3種寬高比(1∶1,1∶2,2∶1)共9種不同大小的Anchor。值得注意的是,Anchor雖然以特征圖上的點為中心,但它是鋪設在原圖尺度上的,如圖2右邊部分所示。這樣的設計是為了更高效地應對多尺度目標的檢測,相比于傳統(tǒng)的圖像金字塔[19]方案(把圖像在多個尺度上進行縮放,并針對每個尺度進行特征提取),Anchor的設置更有效且計算量大幅減少。本文在卷積特征圖上滑動一個3×3的窗口做卷積操作,每一個滑動窗口生成一個512維的特征向量(特征向量的維度由CNN決定,如使用VGG-16[20]構建特征提取網(wǎng)絡,則最后一層卷積得到的特征圖有512個通道),之后這個特征向量被分別輸入到兩個1×1的全連接層,分類層輸出參考框作為前景的置信度,回歸層輸出參考框相較于標注框的坐標偏移量。本文通過設置損失函數(shù)來指導訓練RPN網(wǎng)絡,測試時RPN會輸出約2 000個只包含前景并經(jīng)過位置修正的候選區(qū)域,以供Faster R-CNN做進一步分類回歸。
圖2 RPN示意圖
為訓練RPN,對與標注框的重疊交并比(Intersection over Union,IoU)最大或者與標注框的IoU超過0.7的Anchor分配正標簽,對IoU低于0.3的Anchor分配負標簽。IoU的計算如式(1)所示:
(1)
基于上述計算公式,RPN的損失函數(shù)可以定義為:
(2)
(3)
通過RPN能夠得到約2 000個可能包含目標的候選區(qū)域,文獻[6]將這些候選區(qū)域裁剪到相同的尺寸后分別送入CNN提取特征進行分類,顯然這樣的方式計算效率非常低。Faster R-CNN通過RoI池化層重用現(xiàn)有的卷積特征,以提高計算效率。RoI池化工作流程如圖3所示。首先將候選區(qū)域映射到CNN最后一層卷積得到的特征圖上,由于候選區(qū)域形狀、大小各異,其對應的特征圖形狀也各不相同,而全連接層要求輸入維度相同的特征向量,因此Fast R-CNN將不同的特征池化成7×7×512固定維度的張量,然后通過全連接層分別輸出各個類別的置信度和位置修正參數(shù)。值得注意的是,RPN輸出的候選區(qū)域已經(jīng)經(jīng)過一次位置的修正,Faster R-CNN對于候選區(qū)域位置的第2次修正也使得最終生成的檢測框的位置更加準確。
圖3 RoI池化示意圖
Faster R-CNN網(wǎng)絡在通用的目標檢測領域表現(xiàn)優(yōu)異,但是對于行人檢測任務卻表現(xiàn)不佳,尤其在檢測小尺度行人方面出現(xiàn)了大量的誤檢和漏檢情況[15]。Faster R-CNN網(wǎng)絡應用于行人檢測尤其是小尺度行人檢測時存在的不足具體如下:
1)在RPN網(wǎng)絡中,Anchor的設置是針對通用目標的,為同時檢測到行人和車輛,Anchor需要使用不同的寬高比,但是行人的包圍框多數(shù)為瘦長型,且具有固定的寬高比0.41[1],所以,該超參數(shù)設置對于行人檢測任務而言具有明顯缺陷。
2)原始網(wǎng)絡在RoI池化過程中存在兩次量化(即將浮點數(shù)取整)操作。如圖4所示,原網(wǎng)絡首先將對應于原圖上的RoI坐標(分別為RoI左上角和右下角2個點的4個坐標值)映射到特征圖上,因為CNN的池化操作,特征圖的尺寸相比于原圖縮小了16倍,所以應通過x/16來計算對應坐標,但是這樣計算是有小數(shù)的,因此,需要進行第一次取整操作,即x/16。為方便討論,本文假設進行2×2的池化操作(原網(wǎng)絡使用的是7×7),即對于每一個映射到特征圖上的RoI都要分成2×2個區(qū)域,再進行一次除法操作又會出現(xiàn)小數(shù),所以,需要進行第2次取整。經(jīng)過兩次取整之后就使得RoI池化層最終提取的特征和原圖的RoI不再對齊,這在特征圖上可能僅是1個或2個點的偏差,但是相對于原圖則是16個點甚至更多像素的偏差,這對于一般尺度的目標不會有太大的影響,但是對于自身包含像素就較少的小尺度行人目標而言卻是嚴重的誤差。
圖4 RoI池化中的兩次量化
3)RPN和Faster R-CNN共享CNN提取的卷積特征圖,這個特征圖的質量直接影響了前期區(qū)域建議的質量和后續(xù)分類回歸的準確度。在卷積神經(jīng)網(wǎng)絡中,越深層的特征圖分辨率越低且具有較大的感受野和豐富的語義信息,相反越淺層的特征圖分辨率越高且具有較小的感受野和豐富的細節(jié)信息。Faster R-CNN網(wǎng)絡使用最后一層的卷積特征圖,通過深層特征更為豐富且抽象的語義信息來提高網(wǎng)絡對于物體形變及遮擋的魯棒性,這對于大尺度目標是有效的,但是這些分辨率過小的深層特征圖并不適用于小尺度行人,因為小尺度行人自身所包含的像素點較少,難以從中提取到豐富的語義信息,并且隨著網(wǎng)絡層數(shù)的增加,其細節(jié)特征不斷與周圍提取的特征組合,使得深層特征圖中的每個點都包含很多小尺度目標周圍的信息,降低了檢測的準確性。
本文在RPN的基礎上做出改進,根據(jù)行人較為固定的寬高比的特性,將Anchor設置為1種寬高比(0.41)和11種尺度,其具體數(shù)值可以根據(jù)數(shù)據(jù)集中行人的高度分布進行設置。圖5展示了RPN和改進后提供的Anchor對比,圖中方框部分為Anchor,可以看出,改進RPN后提供的Anchor與行人更為對齊,并且由于RPN中的損失函數(shù)是由分類損失和用于位置修正的回歸損失組成的,更為對齊標注框的Anchor使得回歸的損失函數(shù)較小,在訓練過程中,網(wǎng)絡將更側重于學習分類,進而使得最終RPN提供的候選區(qū)域更為準確。
圖5 改進前后的Anchor對比
為避免RoI池化中兩次量化操作所帶來的像素偏差,本文采取一種基于雙線性插值的對齊RoI池化[21]方式,如圖6所示。首先將RoI映射到特征圖上,計算過程中保留小數(shù),不進行取整操作。為方便討論,同樣將RoI對應的特征圖均分為2×2個區(qū)域,并在每個區(qū)域內(nèi)設置4個采樣點,可以看到,所有的采樣點都不是整數(shù)坐標,沒有對應具體值,因此,本文通過雙線性插值分別對每個采樣點進行估值。插值完成之后,對每個區(qū)域內(nèi)進行最大池化操作,即對每個區(qū)域內(nèi)的4個點取最大值,最終得到一個2×2大小的特征張量。在對齊RoI池化的整個過程中沒有用到取整操作,從而能夠很好地保存每個RoI的空間位置,進一步提高檢測框精度。
圖6 對齊RoI池化示意圖
Faster R-CNN只使用最后一層的卷積特征圖,其較低的分辨率不能滿足小尺度行人檢測的要求,而使用分辨率較高的第4層卷積特征圖(VGG-16[20]中有共5個卷積模塊)就可以提高對小尺度行人的檢測能力,文獻[2]即采用這種方法。但是該方法并沒有充分利用到卷積神經(jīng)網(wǎng)絡強大的特征提取能力,并可能影響對于大尺度目標的檢測??紤]到淺層特征分辨率較高且細節(jié)信息豐富、深層特征分辨率較低但語義信息豐富的特點,本文采用特征融合的策略實現(xiàn)特征復用,以豐富小尺度行人的特征。特征融合一般分為特征通道疊加和特征圖求和兩種方式,對于兩路特征融合而言,通道疊加和與求和的計算公式分別由如式(4)和式(5)所示:
(4)
(5)
其中,Xi和Yi分別表示兩路待融合的特征,Ki表示卷積核,*為卷積操作。特征求和要求兩路特征通道數(shù)必須相同,而通道疊加并不需要,并且特征求和是通過特征圖逐元素相加的方式進行的,如果兩路特征不具有同類的特征信息,則很可能會給融合結果帶來負面影響。通道疊加的方式可以理解為增加了圖像的不同特征而每一層的特征信息沒有變化。因此,本文采用通道疊加的方式進行多層的通道融合,以豐富小尺度行人的特征信息。具體的融合策略如圖7所示。首先將conv3_3后的特征圖和conv5_3后的特征圖調(diào)整到conv4_3后特征圖的尺寸,然后將兩者與conv4_4進行通道疊加,再將通道疊加后的特征通過1×1卷積降維到原始的512通道數(shù),最終得到融合后的特征。
圖7 特征融合示意圖
為驗證本文改進方法的有效性,在計算機上進行仿真,對原Faster R-CNN目標檢測網(wǎng)絡和改進后的Faster R-CNN進行比較。使用PyTorch深度學習框架,在16 GB內(nèi)存、4 GB顯存NVIDIA GeForce GTX1050Ti GPU并搭有CUDA8.0和CUDNN5.1運算平臺的筆記本電腦上進行訓練。本文實驗基于PASCAL VOC2007、PASCAL VOC2012和INRIA數(shù)據(jù)集。采用VOC2007數(shù)據(jù)集中包含行人的部分作為訓練集(共6 383張),采用INRIA數(shù)據(jù)集中訓練集里的正樣本圖片作為測試集(共614張),并將測試集中的正樣本作為驗證集(共576張)。采用PASCAL VOC2012數(shù)據(jù)集中小目標行人圖片制作小尺度行人測試集(共154張),本文定義行人高度小于圖片高度1/4為小尺度行人。
3.1.1 特征融合
本文將conv3_3后的特征圖通過最大池化下采樣到conv4_4的尺寸,對于conv5_3后特征圖的上采樣則是使用雙線性插值的方式而不是當前流行的反卷積[22],這是因為在實際訓練中,反卷積由于參數(shù)過多導致難以訓練,而雙線性插值根據(jù)臨近像素的位置進行估值無需參數(shù),其實驗效果相較于反卷積更好。在特征通道疊加前本文又分別通過Batch Normalization層[23]對調(diào)整過尺寸的不同層特征圖進行歸一化。最后加入1×1的卷積層將融合特征的維度降到512,同時卷積層后增加了Relu非線性激活函數(shù),進一步增強網(wǎng)絡的表達能力。
3.1.2 Soft-NMS算法
原網(wǎng)絡在測試時會通過NMS算法去除同一目標上的重疊框,NMS算法將檢測框按置信度排序,然后保留置信度最高的框,同時直接刪除與該框IoU大于一定閾值(如0.5)的其他框,然而這種過濾方式并不適用于重疊情況較為普遍的行人檢測。如圖8所示,深灰色框的置信度最高,得到保留,而同樣檢測到行人的淺灰色框會因為與實線框的IoU高于設定閾值而被過濾掉,最終導致實線框中行人的漏檢。文獻[24]針對此問題做出改進,提出了Soft-NMS算法。該算法沒有直接刪除圖中的虛線框,而是通過線性加權或是高斯加權的方式降低其置信度,與實線框重疊程度越高則置信度下降得越快,這種方式能夠很大程度地保留因重疊而導致被誤刪的檢測框。因此,本文在測試時使用Soft-NMS算法替換傳統(tǒng)的NMS算法,使平均精確率均值(mean Average Precision,mAP)約提升2%。
圖8 行人重疊示意圖
3.2.1 RPN實驗
為驗證改進RPN的有效性,本節(jié)使用不同的區(qū)域建議網(wǎng)絡(分類回歸子網(wǎng)絡使用相同原Faster R-CNN)在INRIA數(shù)據(jù)集中進行比較,結果如表1所示。
表1 改進RPN前后實驗結果對比Table 1 Comparison of experimental results before and after RPN improvement
從表1可以看出,在和原RPN提供相同數(shù)量的候選區(qū)域的情況下,改進RPN的mAP分別提升了6.22%和5.48%,這說明改進后所提供的候選區(qū)域質量更高。
3.2.2 特征融合實驗
為驗證特征融合策略的有效性,本節(jié)采用不同卷積層的特征圖進行融合,使用INRIA數(shù)據(jù)集進行對比實驗,結果如表2所示,其中,√表示疊加的卷積層??梢钥闯?3層疊加的情況能夠獲得較高的mAP。
表2 不同卷積層特征融合效果對比Table 2 Comparison of feature fusion effects of different convolutional layers
3.2.3 小尺度行人檢測實驗
本節(jié)使用PASCAL VOC2012數(shù)據(jù)集中提取出的小尺度行人測試集進行實驗,結果如表3所示。
表3 PASCAL VOC2012數(shù)據(jù)集實驗結果對比Table 3 Comparison of experimental results in PASCAL VOC2012 dataset
表3顯示本文改進方法對于小尺度行人檢測的mAP提高了23.78%,檢測時間略有延長。這表明本文針對于檢測小尺度行人的改進是有效的,雖然檢測時間相比原始方法有少許增加,但換來的是對于小尺度行人檢測能力的大幅提升。
圖9(a)~圖9(c)為改進方法前后在行人遮擋及尺度變化較大的場景和自動駕駛場景下的行人檢測結果,它們更直觀地展示了改進方法檢測小尺度行人的性能,圖中左圖為Faster R-CNN檢測結果,右圖為改進方法檢測結果。
圖9 Faster R-CNN與改進方法的檢測結果對比Fig.9 Comparison of detection results between Faster R-CNN and improved method
從圖9(a)中可以看出,改進方法不僅檢測出了Faster R-CNN漏檢的遠處小行人,同時也檢測出了被部分遮擋的行人,這說明改進方法對于行人的遮擋具有一定的魯棒性。圖9(b)和圖9(c)是由車載攝像頭采集到的圖像,可以看出改進網(wǎng)絡均能檢測出道路遠端的小尺度行人,這也說明在自動駕駛場景下改進方法對于小尺度行人檢測能力也有很大的提高。
為提高小尺度行人的檢測能力,本文以Faster R-CNN為基礎,針對行人的特點重新設置RPN中的候選框參數(shù),采用基于雙線性插值的對齊池化方式以避免在感興趣區(qū)域池化中兩次量化操作帶來的位置偏差,同時針對小尺度行人在深層特征圖中特征信息的不足,設計基于級聯(lián)的多層特征融合策略,將具有豐富細節(jié)信息的淺層特征圖和具有抽象語義信息的深層特征圖進行融合,使用最終融合的特征進行行人檢測。實驗結果表明,本文方法能夠有效提高改進Faster R-CNN網(wǎng)絡對于小尺度行人的檢測性能。但該方法的改進Faster R-CNN網(wǎng)絡在面對密集人群互相遮擋的場景時依然存在漏檢情況,因此,后續(xù)將在本文工作基礎上對行人的自遮擋問題進行研究,進一步提高行人檢測的準確度。