章博聞
重慶交通大學 機電與車輛工程學院,重慶 400074
行人檢測(Pedestrian Detection)是指利用計算機視覺技術判斷圖像或者視頻序列中是否存在行人并給予精確定位,被廣泛應用于智能駕駛、智慧交通、智能機器人等領域。基于錨框的目標檢測算法有著檢測精度高、提取特征能力強等特點,因此一直是目標檢測領域的研究熱點。有錨框的行人檢測算法按照是否需要生成區域候選框可以分為兩階段(two-stage)和單階段(one-stage)。本文介紹了傳統的行人檢測方法,重點闡述了基于有錨框的行人檢測算法在面對小尺度行人和遮擋行人等檢測問題上的研究進展。
傳統的行人檢測算法主要是依靠人工設計的特征算子來提取特征,再將提取后的特征傳入分類器,得到最終的檢測結果,即特征提取+分類器模式。VIOLA P 和JONES M[1]提出了Viola-Jones 檢測器用于人臉檢測,Viola-Jones 檢測器主要由Haar-like 特征、Adaboost 分類器和Cascade 級聯分類器組成。DALAL N 等人[2]提出方向梯度直方圖(Histogram of Oriented Gradients,HOG),HOG 算法主要利用光強梯度或邊緣方向的分布能夠對圖片中物體外形進行描述的原理,但是難以應對有遮擋或者人體姿態變化較大的情況。FELZENSZWALB P F 等人[3]在HOG 的基礎上,采用多組件的策略,提出可變形的組件模組(Deformable Part Model,DPM),DPM 對目標的形變具有很強的魯棒性。由于傳統的行人檢測算法大多是采用滑動窗口來一一篩選,所以效率低下,同時,人工設置的特征提取算子會使準確性和魯棒性都得不到保證,在復雜場景下,準確率會大大降低。深度學習的迅猛發展為目標檢測帶來了轉機,與傳統檢測方法相比,通過讓網絡自己學會如何提取特征,取代人工設置的特征提取器,充分學習圖片中的特征,使網絡檢測目標的性能大幅度提高。
兩階段的目標檢測算法主要分為兩步,即先從原始圖片或者特征圖產生可能包含物體的候選框,再對候選框中的特征進行分類回歸。基于錨框的兩階段目標檢測算法有Faster R-CNN[4]、Cascade R-CNN[5]等。
GIRSHICK R[6]提出R-CNN 目標檢測算法。首先輸入原始圖像,通過選擇搜索(selective search)網絡,獲得約2 000 個尺寸不一致的候選區域;再將這些區域縮放到同一尺寸(227×227)后,利用卷積神經網絡對候選區域提取特征;最后使用分類器對得到的特征向量進行分類,以及使用回歸器對候選框的位置進行修正。
DONG P 等人[7]提出了一種基于ACF(Aggregated Channel Feature)模型的候選區域獲取算法,用于替換R-CNN 中的選擇搜索網絡,算法流程如圖1 所示。該候選區域獲取算法只在可能包含行人的區域生成區域候選框,將R-CNN 通用目標檢測器變為只針對行人進行檢測,在提升檢測精度的同時,減少了大量無用的候選框,檢測速度有所提升。

由于在一張圖像內的候選框之間存在著大量重疊的區域,提取圖像特征時操作冗余。為了解決上述問題,GIRSHICK R[8]提出了Fast R-CNN。Fast R-CNN 是將整張圖像進行卷積得到特征圖,再把生成的候選框投影到特征圖上,與R-CNN 算法中對約2 000 個候選框進行卷積操作相比,減少了大量冗余計算。同時,Fast R-CNN將分類與邊界框回歸任務融合在一個網絡,不再單獨訓練分類器和邊界框回歸器。但Fast R-CNN依然采用了選擇搜索算法來生成區域候選框,該過程十分耗時。因此,GIRSHICK R 又提出了Faster R-CNN,使用區域建議網絡(RPN)生成區域候選框,同時提出了錨框(Anchor)這一重要概念。Anchor 是指在圖像上預先設置好尺寸和比例不同的參照框,盡可能地包含物體出現的位置。Faster R-CNN 設置了3 組高寬比(0.5,1,2)以及每種高寬比又分為3 組尺度(8,16,32)的Anchor,共組成了9 種形狀大小不一的邊框。
ZHANG H 等人[9]提出了一種基于Faster R-CNN的行人檢測算法,如圖2 所示。該算法通過ZFnet[10]提取圖片特征,將K-means 聚類算法與RPN 相結合,生成可能包含行人的候選區域,最后檢測網絡對候選區域中的行人進行檢測與定位。但是,這種方法在面對圖像中小尺度行人時檢測效果較差。

SHAO X 等人[11]提出了一種改進的基于Faster R-CNN 的行人檢測算法。在前者的基礎上,提出了一種基于級聯的多層特征融合策略,通過高層次特征與低層次特征相結合來增強網絡的語義信息。同時,采用OHEM(Online Hard Example Mining,在線困難樣本挖掘)方法對高損失樣本進行訓練,處理正負樣本的不平衡。實驗結果表明,該方法提高了小尺度行人檢測的精度。但是,由于這些方法都是對行人的整體特征進行計算,在有部分身體被遮擋的情況下,其檢測效果明顯降低。
為了解決對遮擋行人檢測的問題,許多研究者發現,可以采用基于人體部位的行人檢測方法來解決。XU M 等人[12]提出了一種基于人體關鍵節點的行人檢測算法,該算法通過關鍵點檢測器來獲取行人的6 個關鍵節點(頭部、上身、左右手臂和腿)的語義信息,將這些語義信息與原圖信息相融合,從而使最終的檢測器對遮擋和變形具有魯棒性。
基于人體關鍵部位的行人檢測網絡傾向于關注行人的部位信息,忽略了行人整體的信息,容易對形似人體部位的物體產生誤判。因此,研究者提出了基于行人整體與部位加權的檢測方法[13]。CHI C 等人[14]提出了一種頭部和人體聯合檢測網JointDet,如圖3 所示。使用RPN 生成頭部候選框,頭部和全身的候選框分別經過頭部R-CNN 和全身R-CNN 提取特征;將提取的特征進行匹配后,使用RDM 判別是否屬于同一個人。

在行人檢測中,使用IOU 閾值來定義正負樣本。如果IOU 閾值越小,那么就會學習越多的背景框。但是隨著IOU 閾值的增加,正樣本的數量會大量減少,容易發生過擬合。同時,訓練優化感知器過程中的最優IOU 與輸入proposal 的IOU 會出現誤匹配,從而降低檢測精度。CAI Z 等人[5]提出了Cascade R-CNN,該算法采用級聯式的結構,由多個感知器組成,這些感知器通過遞增的IOU 閾值進行訓練,從而解決了高IOU 下容易發生過擬合的情況。
BRAZIL G 等人[15]在Cascade R-CNN 的基礎上提出了AR-Ped 框架,該框架由自回歸RPN(AR-RPN)和R-CNN 檢測器兩個部分構成,其中,AR-RPN 由多個階段以及encoder-decoder 模塊組成,每個階段預測分類分數,并通過encoder-decoder 模塊將上一階段的特征傳遞到下一階段,從而增強候選框中的語義信息。
單階段目標檢測算法不需要生成區域候選框,而是直接對圖片提取特征后進行分類回歸。其檢測速度與兩階段的目標檢測算法相比更快,但是精度會有所降低。基于錨框的單階段目標檢測算法有SSD[16]、YOLOv3[17]、YOLOv4[18]、YOLOv5 等。
LIU W 等人[16]提出了SSD 算法,圖片通過 VGG-16[19]網絡提取特征,再經過多次下采樣獲得6 個不同尺度的特征圖,每個特征圖都會預測多個bounding box,最后對這些不同尺度的特征進行檢測以及非極大值抑制。
為了提升SSD 對行人檢測的準確率,LI X 等人[20]提出了一種基于改進SSD 稀疏連接的多尺度融合行人檢測方法,采用inception[21]網絡代替SSD 中的 VGG-16 進行特征提取,利用FPN[22](特征金字塔網絡)將不同層次的特征圖像進行合并,并將合并后的特征圖像進行分類和回歸。與SSD 原算法相比,改進后的方法在面對一般行人檢測時,其精度和速度上都有明顯提高,但是文章指出,該算法對擁擠人群中有遮擋行人的檢測效果沒有明顯提高。
為了解決遮擋行人檢測準確度不高的問題,袁姮等人[23]提出一種基于改進SSD 的行人檢測算法,使用BN 層(Batch Normalization)[24]來增加VGG 網絡分支結構,充分利用淺層網絡的語義信息,提升小尺度行人的檢測精度,引入融合SE(Squeeze-Excitation)注意力機制的GhostModule 模型[25],通過SE 注意力機制提升遮擋行人的檢測精度。
REDMON J 等人[26]提出了YOLOv1,在保證較高的檢測精度下,以其簡潔的網絡結構和高效的計算速度給目標檢測領域帶來了巨大的沖擊,其結構如圖4 所示。但是,由于YOLOv1 的每個網格只含有兩個邊界框,且每個網格只能預測一個目標,導致其定位誤差高以及小目標的檢測效果差。所以REDMON J 等人[27]又提出了YOLOv2,該算法借鑒了Faster R-CNN的思想,使用Anchor 來預測邊界框,同時使用BN 層來防止過擬合。

3.2.1 YOLOv3
YOLOv3 算法采用DarkNet53 作為骨干網絡間特征提取,得到3 個不同尺度的特征圖,通過K-means算法在每個特征圖上預設3 個不同尺寸的邊界框,最后分別對這3 個特征圖進行預測輸出。
GONG X 等人[28]提出了一種基于YOLOv3 的行人檢測算法,引入CSPNet[29],將梯度變化全局整合到特征圖中,提高了推理的速度和準確性,加入ECA(Efficient Channel Attention)注意力機制[30],增強網絡提取重要特征的能力,在保持性能穩定的同時,顯著降低了模型的復雜度。
YU Y 等人[31]為解決行人檢測中多尺度目標、遮擋等問題,增加CBAM(Convolutional Block Attention Module)注意力機制[32],使網絡更加關注行人相關特征,提高檢測速度和精度,以及引入SPP 模塊,實現局部特征與全局特征的融合,提高面對遮擋行人時的檢測準確率。
李翔等人[33]提出了一種面向遮擋行人檢測的改進YOLOv3 算法,通過提高每層金字塔特征的分辨率,使重疊度高的目標框中心點盡量落在不同的區域,同時,為了使相鄰區域的特征區別更明顯,將淺層和深層的語義信息進行融合,增加高重疊區域的特征差異,從而盡可能區分重疊行人的特征。
3.2.2 YOLOv4
BOCHKOVSKIY A 等人[18]提出了YOLOv4,使用CSPDarkNet53 作為主干網絡,利用SPP 和PANNet來增大感受野以及提取更豐富的圖像特征。
原始的YOLOv4 模型在面對小尺度行人時容易出現漏檢和誤檢的情況。為了解決這個問題,王程等人[34]提出了一種小目標行人檢測算法 YOLOv4-DBF。在骨干網絡中融入SCSE 注意力機制[35](Concurrent Spatial and Channel Squeeze &Excitation),從空間維度和通道維度兩個方面進行特征提取融合,提高了小目標行人的檢測精度,并采用可分離卷積提升檢測速度。
FAN P 等人[36]提出一種基于YOLOv4-tiny 的行人檢測方法,使用K-means 重新生成更符合行人尺寸的錨框,替換原本的錨框尺寸。同時,為了提取更多淺層語義信息和小尺度信息,將拼接層從第24 層移動到第17 層,將第34 層的上采樣倍數從2 改為4,從而提升遮擋行人以及小尺度行人的檢測精度。改進后的結構與YOLOv4-tiny 對比如圖5 所示。

3.2.3 YOLOv5
YOLOv5 采用CSP-Darknet53 作為主干網絡對圖片進行特征提取,通過頸部網絡將淺層特征融入特征圖中,最后在預測端對特征圖進行預測。
由于YOLOv5 算法結構較為復雜,為了滿足行人檢測實時性的要求,王亮等人[37]提出了一種改進的YOLOv5 行人檢測算法。該算法引入輕量級卷積模塊Ghost 卷積以及輕量注意力機制ECA,同時使用加權雙向金字塔結構BiFPN 替換PAN+FPN 結構。結果表明,改進后的模型大小約為YOLOv5 模型的1/2,檢測速度(FPS)提高了約1.67 倍。
針對現有行人檢測模型在密集場所行人檢測中存在漏檢和誤檢的現象,王宏等人[38]在YOLOv5 的主干網絡中加入了一種坐標注意力機制,其目的是為了使網絡能更精確地對目標行人進行識別定位,同時,增加了一層尺度為160×160 的檢測層用來檢測小尺度行人。ZHANG R 等人[39]使用BoT3 模塊代替YOLOv5骨干網絡中的csp2_1 模塊,增強網絡的全局特征提取能力,在骨干網絡的輸出端添加HAM(hybridatattention Module)[40],該注意力機制模塊結構簡單且兼顧了通道和空間兩個維度,使網絡提取行人相關特征能力得到增強,提高了在面對擁擠人群時的檢測精度與速度。
本文介紹了傳統的行人檢測算法以及基于錨框兩階段和單階段的行人檢測算法的發展現狀,重點闡述基于錨框的行人檢測算法在面對遮擋行人和小尺度行人檢測任務上的優化方法。隨著Faster R-CNN、YOLO 系列等通用目標檢測算法的快速發展,在一般行人的檢測任務上,無論是精度還是速度都已經取得了優秀的成績。但是在面臨擁擠人群或者小尺度行人時,通用目標檢測算法容易發生誤檢和漏檢,因此,許多研究者都嘗試在此基礎上進行改進,例如通過添加注意力機制、增加不同尺度的檢測層,以及將不同層的語言信息進行融合等方式,增強網絡對行人特征的提取能力。