吉鵬飛
(浙江理工大學 信息學院,杭州 310018)
行人檢測目的是通過計算機自動識別當前畫面中的行人并將其標定出來,是身份判定、姿態分析、目標追蹤等研究的子任務。行人檢測在視頻監控、車輛輔助駕駛、智能交通等領域應用廣泛[1]。影響行人檢測準確率的主要因素有人員密集、背景繁雜、遮擋嚴重和目標形變等。目前行人檢測主要分為基于傳統機器學習和深度學習算法兩種。
傳統機器學習算法通過提取行人特征,如顏色特征、紋理特征等,通過分類器在圖片中檢測出所有目標。Vida 和Jones 等較早的提出了VJ 檢測器并用于行人檢測任務[2];Dalai 等提出了將HOG 結合SVM 用于行人檢測[3];Wu 等提出了一種基于人體部件的Edgelet 特征,能夠提高遮擋情景下的準確率[4];Felzenszwalb 等用DPM(Deformable Parts Model)算法檢測行人,該算法能減弱人員形變帶來的影響[5];P.Dollar 等提出積分通道特征(Integral Channel Feature,ICF)應用于行人檢測、速度和精度有了很大提升[6];甘玲等采用聚合支持向量機(Ensemble SVM)分類器解決了正負樣本數量相差過大的問題[7]。
深度學習算法主要是通過神經網絡對大量的數據進行訓練得到一個模型,圖片輸入后能直接找到所有目標。基于深度學習的行人檢測算法可分為3類:
(1)基于深度置信網絡(Deep Belief Networks,DBN),通過訓練神經元間的權重,讓整個神經網絡按照最大概率來生成訓練數據[8];
(2)基于卷積神經網絡(Convolutional Neural Network,CNN)。雙階段CNN算法有 Faster-RCNN、MaskRCNN、CascadeRCNN 等,需要用算法先生成一定數量的候選框后才進行分類和回歸,因此two-stage 準確率更高。單階段CNN 算法如SSD,YOLO 等則直接進行分類和回歸;
(3)基于循環神經網絡(Recurrent Neural Network,RNN),是一類在其演進方向進行遞歸且所有節點按鏈式連接的神經網絡[9];LSTM(Long ShortTerm Memory networks)是最常見的循環神經網絡。
雖然目前行人檢測準確率已經較高,但仍然存在許多問題:
(1)預測目標框不佳,盡管能夠檢測出目標,但包圍框有較大冗余或和實際目標框存在一定程度偏移;
(2)漏檢,當目標在檢測畫面中較小或遮擋較多,難以查詢出所有目標;
(3)誤檢,將一些類人目標錯誤的判別成行人。
Faster-RCNN 是一種雙階段目標檢測網絡,其結構如圖1 所示。Faster-RCNN 與單階段網絡不同的是在通過由多個卷積層、激勵層和池化層組成的骨干特征提取網絡后,不是直接進行分類和回歸,而是要經過一個RPN 網絡,圖1 中紅線標注的部分即是RPN 網絡,其目的是為后續精確的分類和回歸網絡提供一定數量的候選框。ROI Pooling 的作用是將RPN 生成的候選框轉變成某一特定大小的框,為之后更細致的分類和回歸任務提供方便。

圖1 Faster-RCNN 網絡圖Fig.1 Faster-RCNN network diagram
Cascade RCNN 是由Faster-RCNN 改進而來的,其結構如圖2 所示。與Faster-RCNN 相比其最大的改進是級聯多個不同IOU(Intersection over Union,預測框和實際框的交并比)的分類回歸網絡。通常IOU值較低時,會學習到很多背景特征信息,降低模型預測的準確率;而IOU值較高時盡管能夠減小匹配的錯誤率,但這樣會造成有效樣本占比太小,出現過擬合的問題。Cascade R-CNN 是一種stage-bystage 的結構,上一個檢測網絡輸出是后一個檢測模型的輸入,并且每個階段的IOU閾值依次增加。與Faster-RCNN 一樣,輸入圖片經過一個特征提取網絡CNN 后,通過RPN 網絡產生一定數量的proposals,圖2 中B0就是proposals,與faster-Rcnn 一樣要對這些proposals 進行精細的分類和回歸,C 和B 分別代表分類和回歸網絡,H 代表網絡頭部。

圖2 Cascade RCNN 網絡結構Fig.2 Cascade RCNN network structure
Cascade RCNN 的損失函數(1)為:

其中,pi和pi?分別表示預測類別的概率和正負樣本標簽;ti和分別表示預測框和實際框的坐標;λ是回歸損失占整個損失函數的比重。分類損失函數(2)為:

位置回歸函數(4):

通常為了提升檢測精度,會選擇更加復雜的骨干特征提取網絡,但這樣會引入過多的參數,增加計算量。ResNet 是一種常用的特征提取網絡,其結構如圖3 左側所示,學習的目標是目標值和輸入的“差值”,這樣能有效解決網絡加深帶來的梯度消失問題[10]。本文選用ResNeXt101 代替ResNet 作為最終模型的骨干特征提取網絡,其結構如圖3(b)所示,ResNeXt 瓶頸結構是在ResNet 基礎上改進而來的。ResNext 用多路與ResNet 類似的拓撲結構的blocks 提取特征,最后融合多路特征,這樣不僅可以減少計算量,而且模型擬合能力也得到了進一步提升。實踐已經證明增加分組卷積的分支數比加深或加寬網絡對準確率的提升更大。
與faster-rcnn 一樣,為了更好地適應圖片中目標形狀、大小的變化,Cascade RCNN 也引入了anchor 機制,如圖4 所示。在特征圖上每個位置生成多個不同比例、不同尺度的anchor,每個anchor 都對應著原圖一定大小形狀的區域。Cascade RCNN有默認的anchor 尺度、長寬比,但如果用默認參數可能難以生成與實際需要相匹配的目標框。為此本文采用kmeans 聚類算法得到更適應實驗數據集的anchor 長寬比例,其詳細步驟為:

圖4 anchor 機制Fig.4 Anchor mechanism
(1)將訓練集中bounding box 對角坐標轉變成高和寬的數據;
(2)在訓練集中挑選k個bounding boxes 對k個anchor-box 初始化;
(3)算出所有的bounding box 和每個anchorbox 的IOU,將所有的bounding box 分類給與其誤差d最小的anchor-box。用d(n,k)(d =1-IOU)來刻畫第n個bounding box 和第k個anchor-box 間的誤差;
(4)根據分類的結果找出每個anchor box 對應的bounding box 的長寬的中值,并用其來更新anchor box;
(5)重復上面的步驟,直到bounding box 的分類已經不再更新。
本文采用了多尺度訓練和測試的方法,能夠學習不同尺度目標下的特征,提高了模型的適應能力。實驗中將訓練集和測試集同時放大一定比例(雙線性插值)一定程度上可以提高小尺度目標的檢測準確率。
對于同一目標,根據模型可能會在其周圍生成若干重疊率較高的預測框,如圖5 所示。通常本文用NMS 只留下置信度最高的框,將其余的框排除。本文通過WBF(Weight BoxFusion)方式融合多個模型的結果,提高了目標檢測的準確率,其可以修正單個模型預測不精確的問題,消除冗余的邊界框,最終預測框坐標是多個模型預測框的坐標加權和,權重為相應的邊界框置信度[11]。

圖5 NMS 和WBF 處理重疊框Fig.5 NMS and WBF processing overlapping boxes
WBF 的主要步驟:
(1)將N個模型的所有預測框按得分降序輸入到List B 中;
(2)新建兩個空的ListL和ListF。遍歷B,在F中尋找和其匹配的框(IOU >閾值),如果找到,就將其插入到L[i]中,i表示該框在F中的下標;如果未找到,直接將其插入到L和F的末尾;
(3)利用L[i]處所有的m個框(L與F可能是一對多的關系)加權計算F[i]框的坐標(x1,y1,x2,y2)和得分C,式(5)~式(7):

(4)如果B 中每個框都處理完了,再次對F得分更新,式(8):

為了提高訓練出的模型的穩定性和泛化能力,本文采用了SWA(Stochastic Weight Averaging)方法融合多個訓練周期的模型,該方法可以在一定程度上提高目標檢測的準確率,并且不會增加額外的計算量[12],融合第i輪模型后的公式(9):

本文一共訓練20 輪得到20 個模型。根據式(9),本文采用第9~19 輪階段參數模型加權融合為最終模型。
實驗基于CentOS 操作系統,Python3.6,pytorch1.4,cuda10.1,GPU 型號為tesla T4,顯存為15G,CPU 型號為Intel(R)Xeon(R)Silver 4110,2.10GHz。實驗用的人體檢測數據集是Crowd-Human,訓練和測試的圖片有1.5w 和5k 張,共340k 個人體目標,并且有場景多樣、尺度各異,部分目標還存在一定的遮擋。
為了增加數據集的多樣性,提高模型的泛化能力,本文嘗試了一些數據增強方法,如水平翻轉、GridMask、高斯模糊、顏色抖動等。實驗學習率初始值為12×10-4,一共經歷20 輪訓練。
CrowdHuman 數據集采用JI(Jaccard Index)評測,被定義為式(10):

其中,|D |和|G |分別表示預測框和標注框的數量,|Matchiou(D,G)|是兩者匹配的數量(評判標準是IOU >Threshold),本文IOU閾值為0.5。
為了證明提出的改進之處的實用性,本文主要設計了3 個實驗:ResNeXt101 代替ResNet 實驗、kmeans 聚類算法生成anchor 長寬比實驗和引入WBF 算法實驗。
通過觀察訓練集,發現大多數對象的縱橫比都大于1.0,為了得到更好的縱橫比的anchor,本文采用kmeans 聚類算法得到anchor 的長寬比為[1.05,1.84,3.21],為了使用方便,本文將其取整[1.0,2.0,3.0](Cascade- RCNN 默認的比例為[0.5,1,2])。由于實驗數據集中的圖片尺度差異較大,其短邊幾百像素至幾千像素不等。為此,本文通過多尺度訓練的方式將訓練集中的圖片短邊做一定程度的縮放或放大,長邊按相同比例縮小或放大,結果見表1。

表1 kmeans 得到anchor 比例前后對比結果Tab.1 Comparison results before and after the anchor ratio obtained by kmeans
從表1 中對比發現1 440~1 760 的訓練尺度較較小的704~1 024 尺度得分大幅提高,提高了4.7%(數據集中有較多的小目標),用kmeans 聚類算法能夠獲得更好的包圍框,其準確率提升了0.7%。
為測試不同骨干特征提取網絡的性能,本文選擇了Res50、Res101 和ResNeXt101 作為特征提取網絡。同時為了提高準確率,將Res101 和ResNeXt101 得到的模型通過WBF 算法融合預測框,最后加入kmeans聚類算法,得到最終目標檢測結果,見表2。

表2 不同特征提取網絡對比實驗Tab.2 Comparison experiments of different feature extraction networks
從表2 可以看出,更深層次的Res101 比淺層的Res50 特征提取網絡效果要好,融合多路特征的ResNeXt101 網絡比Res101 得分提高3.7%,使用WBF 融合后得分提高約1.2% 。實驗結果顯示ResNeXt 作為骨干網絡比ResNet 性能有很大提升,用ResNeXt101 和Res101 做WBF 融合后較未融合前準確率也有一些提升,最后加入kmeans 聚類算法,較基礎Cascade RCNN 整體性能提升近6%。提升前后的對比如圖6 所示,圖6(a)標注的1 和2 框均要比左側的更好,同時發現當遮擋較嚴重時,本文的算法也很難檢測出來。

圖6 算法提升前后對比圖Fig.6 Comparison chart before and after algorithm upgrade
在人員密集的場景下,難免會發生遮擋、較大程度的形變等問題,本文提出的基于改進的Cascade-RCNN 的目標檢測網絡能夠有效提高目標檢測的準確率,減小漏檢的概率。實驗結果表明用ResNeXt101網絡作為基礎骨干網絡,在不增加計算量的基礎上融合多路特征,能夠獲得更細致的特征進而提高檢測的準確率。用本文所述的kmeans 聚類算法得到的anchor 比例能得到更適合當前數據集的目標框,通過WBF 算法融合多個模型的檢測結果能夠得到更加準確的預測框。整體而言,改進的Cascade-RCNN 算法較基礎的Cascade- RCNN 算法的人員檢測性能有很大提升,但對于一些重疊較大、尺度過小的目標,本文的方法依舊無能為力,這也是后續研究的難點。