鮑文斌,張冬泉
北京交通大學 機械與電子控制工程學院,北京 100044
近年來,行人檢測技術作為自動駕駛和機器人技術等領域的重要組成部分引起了研究學者的極大關注,該技術分為基于特征的行人檢測[1]和基于深度學習的行人檢測[2]兩大類。其中,常用的手工特征描述符包括HOG特征[3]、Haar-like特征[4]、DPM特征[5]等。與基于特征的行人檢測方法相比,基于深度學習的行人檢測方法能夠通過學習的方式獲取更有利于分類的最佳特征[6]。因此,基于深度學習的行人檢測方法在行人檢測技術中占據了主導地位。其中,RCNN[7]充分結合了卷積神經網絡和選擇性搜索算法[8],是卷積神經網絡應用于通用目標檢測的開山之作。但是,對輸入圖片重復進行特征提取使得RCNN算法不滿足實時性要求。在RCNN的基礎上,Fast RCNN[9]借鑒空間金字塔池化算法[10]實現了單次特征提取即可完成檢測的跨越,提高了檢測速度。Faster RCNN采用區域建議網絡替代選擇性搜索算法進行候選框選擇[11],再次提高了檢測速度和檢測精度。SSD算法[12]和YOLO系列算法[13-16]實現了真正意義上的端到端的行人檢測,大幅提高了行人檢測的速度。
SSD算法通過骨干網絡進行特征提取并構造多尺度特征圖,在每個特征圖上預測固定數量的框和框內是否存在行人,然后通過非極大值抑制算法產生最終檢測[17]。在對SSD算法的改進中,DSSD算法和FSSD算法分別采取反卷積和雙線性插值變換的方法產生新的特征圖并通過將新特征圖與原特征圖進行融合提高了檢測精度[18-19];M2Det算法改進了特征融合的方式將檢測精度再次提高[20];RfbNet算法提出感受野模塊并將其應用于特征圖的頭部[21],起到了提高檢測精度的作用;Pelee算法通過設計輕量化的網絡提高了檢測速度[22]。雖然改進算法對檢測精度或檢測速度有不同程度的提高,但某一性能提高的同時也不同程度地犧牲了其對立性能。因此如何同時提高檢測速度和檢測精度或在不降低其中一個性能的情況下提高另一個性能成為研究行人檢測的關鍵問題之一。
基于以上對SSD算法及其改進算法的研究分析,本文將在進一步分析錨框和特征圖映射到輸入圖像上的感受野對檢測性能的影響的基礎上,通過改造SSD算法的骨干網絡和重新設計基礎錨框與多尺度卷積核,并將卷積核與基礎錨框進行耦合,同時提高行人檢測的檢測精度及檢測速度。
XSSD-P算法以修改后的Xception網絡作為骨干網絡,輸入圖片的大小為299×299像素。與SSD算法相比,XSSD-P算法使用多尺度卷積核在被選擇用于檢測的特征圖上滑窗進行預測,且在該過程中使用深度可分離卷積替代常規卷積完成預測運算。在進行位置回歸時,XSSD-P算法根據行人外形尺寸特點設計了基礎錨框,基礎錨框與用于預測的卷積核耦合且其可以通過調整自身大小得到用于位置回歸的錨框(1.3節詳細說明)。XSSD-P算法與SSD算法的結構對比如圖1所示。

圖1 XSSD-P算法與SSD算法的結構對比圖Fig.1 Structure comparison of XSSD-P and SSD
在卷積神經網絡的特征圖中跨通道相關性和空間相關性的映射可以完全解耦的前提下,Chollet[23]提出了Xception網絡。Xception網絡由輸入流(entry flow)、中間流(middle flow)和輸出流(exit flow)三部分組成,共包含了14個模塊(block),網絡結構如圖2所示。由圖可知,Xception網絡是一個由深度可分離卷積層和殘差結構組成的線性堆棧,除第一個和最后一個模塊以外,其余模塊均與淺層特征存在線性連接。
殘差結構首先復制一個淺層網絡的輸出,然后將其與深層網絡的輸出通過元素相加得到下一層的輸出,如圖2所示(使用虛線框標出),在通過增加網絡深度提高網絡的特征表達能力時,該結構能夠有效地緩解梯度消失、梯度爆炸和網絡退化問題[24]。深度可分離卷積將常規卷積運算一分為二,其在減少參數的同時擁有與常規卷積相當的特征提取能力。本文對常用的骨干網絡進行了性能比較,包括Xception網絡、VGG16網絡、ResNet-152網絡和Darknet53網絡,網絡的相關參數如表1所示,在ImageNet數據集的分類性能比較如表2所示。表1中的參數為各網絡去掉全連接層后得到的參數,其中,網絡的計算量(FLOPs)在輸入圖像尺寸相同和輸入圖像尺寸為常用尺寸兩種條件下分別獲得。表2給出了各網絡在ImageNet數據集中的Top-1 accuracy(排名第一的類別與實際結果相符的準確率)和Top-5 accuracy(排名前五的類別包含實際結果的準確率)[15,23]。

表1 常用骨干網絡參數對比Table 1 Comparison of commonly used backbone network

表2 ImageNet數據集中的分類性能比較Table 2 Classification performance comparison on ImageNet 單位:%

圖2 Xception網絡結構Fig.2 Structure of Xception network
由表1可知,除VGG16網絡以外,其余網絡的感受野均大于700,遠超過輸入圖像的大小,且擁有較深的網絡深度,感受野和網絡深度的增加在一定程度上可以增強網絡的特征提取能力;由表2可知,在ImageNet數據集上的分類性能比較中,Xception網絡的分類精度均高于其他三個網絡?;谝陨蟽牲c可知,Xception網絡擁有更強的特征提取能力。在參數量和計算量方面,由表1可知,Xception網絡擁有最少的計算量,參數量僅超過VGG16網絡,較少的參數量可以降低網絡的訓練難度和提高網絡的訓練速度,較少的計算量可以提高網絡提取特征的速度。綜合Xception網絡在特征提取能力和速度上的優勢,XSSD-P算法選擇Xception網絡作為骨干網絡。
XSSD-P算法在使用Xception網絡進行特征提取時,將網絡最后一個模塊中全局平均池化層及以后的結構去除(圖2虛線框標出),然后分別使用block10、block12和block14輸出的特征圖對小尺寸、中等尺寸和大尺寸的行人進行預測。
深度可分離卷積的核心思想是將一個完整的卷積運算分解為逐深度卷積(depthwise convolution)和逐點卷積(pointwise convolution)兩步進行[25]。在Xception網絡中,大量的深度可分離卷積被運用,圖3為深度可分離卷積運算和常規卷積運算對比。如圖所示,深度可分離卷積先使用1×1的卷積核進行逐點卷積,然后再使用3×3的卷積核在每個通道上進行卷積。

圖3 深度可分離卷積運算和常規卷積運算對比Fig.3 Comparison of depthwise separable convolution and conventional convolution
當輸入通道為m1,輸出通道為m2時,
常規卷積參數量:

深度可分離卷積參數量:

由參數量計算結果可知,常規卷積運算的參數量約為深度可分離卷積運算的參數量的9倍。因此,在特征圖上進行預測時,XSSD-P算法采用深度可分離卷積運算代替SSD算法中使用的常規卷積運算達到減少網絡參數的目的。
在SSD算法中,輸入圖片經過各層卷積計算得到多尺度特征圖,卷積核在特征圖上進行特征提取并完成預測,如圖4所示。由圖可知,最終用于分類的特征是結果特征圖映射到輸入圖像上的實際感受野內的特征,且研究表明,實際感受野內的像素點對輸出特征向量的影響分布成高斯分布,即中心的像素點產生的影響最大[26]。如果待檢測行人的關鍵特征沒能夠被負責該行人檢測的實際有效感受野[26]所覆蓋,那么將導致卷積核無法提取到最有效的特征用于檢測,即實際有效感受野的位置和尺寸與錨框的位置和尺寸的不匹配以及錨框尺寸與待檢測行人尺寸的不匹配將直接影響SSD算法的精度。

圖4 特征提取及預測示意Fig.4 Feature extraction and prediction diagram
針對SSD算法的不足,本文首先在INRIA數據集、VOC數據集和COCO數據集中選擇出存在小部分遮擋和未遮擋的行人并使用K-means聚類算法對其寬度和高度進行了聚類分析,共聚成9類,K-means聚類算法如式(3)所示:

式中,μi是k個聚類中心的類別,x()j是第j個樣本,代價函數T是不同類別之間的距離之和,聚類結果如圖5所示。

圖5 K-means聚類分析結果Fig.5 Results of K-means cluster analysis
在聚類分析結果的基礎上,使用如式(4)所示的最小二乘法對聚類中心坐標進行線性擬合:

式中,(xi,yi)是聚類中心坐標,a和b分別為線性方程的斜率和截距,當φ取最小值時為最優解,通過計算,獲得的回歸直線方程為y=1.7x+33。K-means聚類分析和最小二乘法的計算結果表明行人的寬高比約為1∶2。
通過對行人外形尺寸進行分析,并根據輸入圖像的尺寸(299×299),本文將圖片中高度小于75、介于75和150之間和大于150的行人分別認定為小尺寸行人、中等尺寸行人和大尺寸行人。綜合特征圖的尺寸特點、行人寬高比和行人的尺寸劃分,XSSD-P算法選擇使用多尺度卷積核,將block10、block12和block14輸出的預測特征圖上用于預測的卷積核尺寸分別設定為2×4、4×8和4×8。然后將輸入圖片分別均分為19×19和10×10與預測特征圖相對應,類比3個預測特征圖,在均分后的輸入圖片上設置2×4、4×8和4×8的框跟隨多尺度卷積核在輸入圖片上滑動,稱之為基礎錨框。當多尺度卷積核在預測特征圖上滑窗進行檢測時,輸入圖片上與卷積核相對應的基礎錨框滑動至對應位置并進行同心縮放,得到的新框即為用于位置回歸的錨框,縮放比例分別為0.8、1和1.25。表3對預測特征圖、卷積核和錨框進行了匯總。

表3 特征圖、卷積核和錨框匯總Table 3 Summary table of feature map,convolution kernel and anchors
網絡輸出的位置偏差預測值為預測位置坐標與基礎錨框坐標之間的偏差,可用式(5)表示:

式中,(tx,ty,tw,th)為網絡的位置偏差預測值,(Px,Py,Pw,Ph)為預測框的中心坐標和寬高,(Rx,Ry,Rw,Rh)為基礎錨框的中心坐標和寬高,α為比例系數。
簡言之,本文借助實際有效感受野和實際感受野之間的關系提出基礎錨框,其與實際有效感受野和行人外形尺寸高度匹配,實現了卷積核與錨框的耦合并增強了卷積核提取有效特征的能力。如圖6所示,展示了上述使用多尺度卷積核及卷積核與錨框之間的耦合關系進行行人檢測的過程,首先,輸入圖片經特征提取獲得預測特征圖,然后,多尺度卷積核在對應預測特征圖上滑動進行預測,每個位置進行3組預測,輸出得分預測值和位置偏差預測值,在此過程中,與卷積核對應的基礎錨框在輸入圖片上隨卷積核滑動并在每個位置產生3個錨框,最后,在位置偏差預測值和錨框坐標值的基礎上進行位置回歸完成檢測。

圖6 行人檢測示意圖Fig.6 Schematic diagram of pedestrian detection process
為了驗證方法的有效性和合理性,本文使用相同的數據集分別對XSSD-P算法和SSD算法以及其他主流算法進行訓練和測試,比較了XSSD-P與各算法的檢測精度性能;在同一臺計算機上對XSSD-P算法和SSD算法進行檢測速度測試,比較兩算法的檢測速度性能。
本文使用INRIA、COCO、VOC2007、VOC2012、Caltech和MIT數據集進行訓練和測試,在COCO、VOC2007和VOC2012數據集中只對行人進行檢測,在Caltech行人數據集中共包括249 884幀圖像,有122 187幀圖像包含行人,在122 187幀圖像中每隔10幀進行一次截取,共得到12 218張圖像,由于Caltech數據集圖像清晰度較低,因此選擇使用測試集的合理子集(reasonable,行人高度H>50像素)作為本實驗的測試集,最終共選擇7 610張圖像用于實驗,在MIT數據集中,由于部分圖片并非只包含一個行人,因此本文對其進行補充標注后作為測試集使用。本文使用的數據集匯總如表4所示。

表4 實驗數據集匯總Table 4 Summary table of datasets used for experiments
本實驗在TensorFlow2.3.1框架下進行,操作系統為Windows10。訓練時,本文將加載的訓練集中90%的圖片用于網絡訓練,剩下10%作為訓練過程中的驗證集,初始學習率設定為0.000 5,學習率的衰減方式為,當驗證集的損失在3個批次內不發生明顯下降時,學習率縮小為原來的一半。訓練停止的條件為,訓練批次達到100次或者驗證集的損失不再發生明顯下降。
XSSD-P算法用到的損失函數與SSD算法一致,均為定位損失和置信度損失的加權和[27],公式如下所示:

式中,N為匹配的框數,Lconf(x,c)為置信度損失,Lloc(x,l,g)為定位損失,α為權重系數。
2.3.1 評估指標
本文使用精確率(precision,P)、召回率(recall,r)和平均精度均值(mean average precision,mAP)作為檢測精度性能的評估指標[28],使用每秒幀數(frames per second)和平均用時作為檢測速度性能的評估指標。
精確率計算公式如式(7)所示:

式中,TP(true positive)是被檢測為正樣本,實際也是正樣本;FP(false positive)是被檢測為正樣本,實際是負樣本。
召回率計算公式如式(8)所示:

式中,FN(false negative)是被檢測為負樣本,實際是正樣本。
平均精度均值計算公式如式(9)所示:

式中,C為類別,AP(average precision)的計算公式如式(10)所示:

式中,P為準確率,r為召回率。
2.3.2 預測特征圖的選擇試驗
XSSD-P算法共使用3個特征圖用于行人檢測。由于深層特征擁有更大的感受野和更強的特征表達能力,因此選擇block14輸出的特征圖用于大尺寸行人的檢測。在block8、block9、block10、block11和block12輸出的特征圖中選擇剩余兩個特征圖,且輸出用于小尺度行人檢測的特征圖的特征層在網絡中的位置更靠前一些。本文使用VOC2007訓練集和VOC2007測試集進行實驗,實驗結果如表5所示。

表5 預測特征圖的選擇實驗結果Table 5 Experimental results of feature map selection for pedestrian detection
由表中結果可以得出,當使用block10和block12輸出的特征圖作為小尺寸行人檢測和中等尺寸行人檢測的預測特征圖時,行人檢測器獲得了最高的召回率和平均精度均值,且精確率與最大值相差不到1%,綜合考慮,XSSD-P算法選擇block10、block12和block14輸出的特征圖用于小尺度、中等尺度和大尺度行人檢測。
2.3.3 與SSD的檢測精度對比實驗
在INRIA數據集中,使用INRIA訓練集對網絡進行訓練,使用INRIA測試集進行測試,實驗結果如表6所示。

表6 INRIA數據集實驗結果Table 6 Experimental results of XSSD-P and SSD using INRIA dataset
在該實驗中,與SSD算法相比,XSSD-P算法的精確率、召回率和平均精度均值分別提高了1.07、18.68和4.9個百分點。
在VOC數據集中,本文共進行兩次實驗:(1)使用VOC2007訓練集對網絡進行訓練,使用VOC2007測試集進行測試;(2)使用VOC2007訓練集和VOC2012訓練集對網絡進行訓練,使用VOC2007測試集進行測試。實驗結果如表7所示。

表7 VOC數據集實驗結果Table 7 Experimental results of XSSD-P and SSD using VOC dataset
在該實驗中,與SSD算法相比,使用VOC2007訓練集進行訓練時,XSSD-P算法的精確率、召回率和平均精度均值分別提高了0.69、7.11和1.39個百分點;使用VOC2007訓練集和VOC2012訓練集進行訓練時,XSSD-P算法的精確率、召回率和平均精度均值分別提高了1.04、3.98和2.42個百分點。
在COCO數據集中,先使用COCO訓練集分別對XSSD-P算法和SSD算法進行預訓練,然后使用VOC2007訓練集、VOC2012訓練集和INRIA訓練集對網絡參數進行微調,并在對應測試集上進行測試,實驗結果如表8所示。

表8 COCO數據集實驗結果Table 8 Experimental results of XSSD-P and SSD using COCO dataset
在該實驗中,使用VOC2007訓練集和VOC2012訓練集進行網絡參數微調時,XSSD-P算法比SSD算法在精確率、召回率和平均精度均值三個指標上分別高出2.60、3.71和3.78個百分點;使用INRIA訓練集進行網絡參數微調時,改進算法比原算法在精確率、召回率和平均精度均值三個指標上分別高出1.66、11.2和2.61個百分點。
XSSD-P算法通過分析INRIA、VOC和COCO數據集獲取了行人外形特征,并以此重新定義了錨框以及錨框的產生方式,為了驗證算法的泛化性能,本文在Caltech行人數據集和MIT行人數據集中比較了XSSD-P算法與SSD算法的檢測精度。
在Caltech行人數據集中,使用Caltech訓練集對網絡進行訓練,使用Caltech測試集進行測試,在MIT行人數據集中,使用在COCO數據集和VOC數據集中獲得的網絡參數進行測試,測試結果如表9所示。

表9 Caltech和MIT數據集實驗結果Table 9 Experimental results of XSSD-P and SSD using Caltech and MIT datasets
由實驗結果可知,與SSD算法相比,在Caltech數據集中XSSD-P算法的召回率和平均精度均值分別提高了12.68和3.17個百分點,精確率降低了9.24個百分點,在MIT數據集中XSSD-P算法的精確率、召回率和平均精度均值分別提高了0.04、10.83和7.72個百分點。
在以上四組實驗中,除Caltech測試集中的精確率比較以外,XSSD-P算法在精確率、召回率和平均精度均值三個指標上全面領先SSD算法,結果表明XSSD-P算法的檢測精度性能優于SSD算法。XSSD-P算法在Caltech和MIT數據集中的檢測精度依然優于SSD算法,且領先幅度接近其在INRIA和VOC數據集中的領先幅度,表明XSSD-P算法擁有與SSD算法相當的泛化能力。第三組實驗中在VOC2007測試集中的部分行人檢測結果對比如圖7所示。

圖7 行人檢測結果對比Fig.7 Comparison of pedestrian detection results between XSSD-P and SSD
2.3.4 與其他主流算法的檢測精度對比
除了與SSD算法進行檢測精度比較,本文還將XSSD-P與Faster RCNN、YOLO和YOLOv2在VOC數據集中進行了比較,使用VOC2007訓練集和VOC2012訓練集分別對各網絡進訓練,使用VOC2007測試集進行測試,實驗結果如表10所示。

表10 檢測精度對比結果Table 10 Comparison result of detection accuracy
由表中結果可以看出,在行人檢測方面,XSSD-P算法的平均精度均值高于當前主流的Faster RCNN、YOLO和YOLOv2算法。
2.3.5 檢測速度對比實驗
本文在檢測速度對比實驗中所使用的計算機的配置如表11所示,在測速過程中不包括圖片前處理和檢測完成后的繪圖部分,包括的內容有:網絡推理、得分門限篩選和非極大值抑制,即圖片被輸入網絡得到輸出后使用非極大值抑制算法進行篩選的全過程。

表11 計算機配置信息Table 11 Computer configuration information
在VOC2007測試集中隨機選擇1 000張圖片對SSD算法和XSSD-P算法進行檢測速度測試,測試結果如表12所示。

表12 檢測速度測試結果Table 12 Experimental results of pedestrian detection speed
測試結果表明,XSSD-P算法的平均耗時比SSD算法減少了0.004 14 s,單張圖片的檢測時間縮短了29.32%;在使用每秒幀數(FPS)作為評估指標時,XSSD-P算法比SSD算法高30 FPS,單位時間內檢測的圖片數目增加了42.86%。與SSD算法相比,XSSD-P算法在檢測速度性能方面大幅提高。
為了提高SSD算法的檢測精度和檢測速度,本文分析了其不足之處并做出改進,提出了XSSD-P算法用于行人檢測。首先,該方法充分考慮了錨框尺寸和感受野對檢測性能的影響,根據行人外形尺寸重新設計了錨框和多尺度卷積核并將二者進行耦合。其次,XSSD-P算法以Xception網絡作為骨干網絡并通過實驗選擇了檢測效果最佳的特征層用于預測,且預測過程采用深度可分離卷積代替常規卷積完成。
使用INRIA數據集、VOC數據集和COCO數據集比較了XSSD-P算法與SSD算法以及其他主流算法的檢測精度。在與SSD算法的比較中,XSSD-P算法的精確率、召回率和平均精度均值全面領先SSD算法;在與Faster RCNN、YOLO和YOLOv2算法的比較中,XSSD-P算法的平均精度均值均高于其他算法。除此以外,還在Caltech行人數據集和MIT行人數據集中對XSS-P算法的泛化能力進行了驗證。在搭載型號為GeForce RTX 2070 SUPER的GPU的計算機上分別測試了XSSD-P算法和SSD算法的檢測速度,XSSD-P算法的檢測速度比SSD算法高30 FPS,提高了42.86%。實驗結果表明,XSSD-P算法的檢測精度和檢測速度均優于SSD算法,具有一定的應用價值。