姚萬業(yè), 李金平
(華北電力大學控制與計算機工程學院, 保定 071003)
近些年,基于圖像和視頻序列的行人檢測技術引起越來越多關注,它是車輛輔助駕駛、智能視頻監(jiān)控和人體行為分析等應用中的第一步,近年來也應用在航拍圖像、受害者營救等新興領域中[1]。但光線強度、復雜環(huán)境、穿著、遮擋、姿態(tài)和視角等因素,使得行人檢測成為計算機視覺的研究難點與熱點。
傳統(tǒng)目標檢測一般使用人工提取特征,然后接上一個分類器來實現(xiàn)目標檢測。通常這類方法是利用一種或幾種基本的圖像特征,如顏色、紋理和梯度等。Dalal等[2]在2005年利用方向速度直方圖(HOG)描述符結合線性SVM分類器實現(xiàn)行人檢測,發(fā)現(xiàn)HOG描述符明顯優(yōu)于現(xiàn)有的人體檢測特征集。Zhu等[3]為提高Dalal等[2]的方法快速性和準確性,利用AdaBoost算法提供最佳塊的尺寸并構建級聯(lián)分類器,系統(tǒng)每秒可以處理5~30幀的圖像,接近實時檢測。盡管這些圖像特征不斷提升但是傳統(tǒng)方法采用人工提取特征所包含圖像信息可能并不充分,且要求研究人員根據不同的檢測任務,選擇合適方法提取候選目標區(qū)域的視覺特征,泛化能力差,增加研究人工作量。
隨著機器學習不斷發(fā)展和完善,出現(xiàn)通過機器學習方法, 從大量樣本中學習特征[1]。Viola等[4]利用AdaBoost算法訓練檢測器,充分利用動作和外觀信息去識別行人。在此之前人們利用動作信息或者外觀信息,而Viola等[4]將動作和外觀信息結合在一個檢測器中。Wu等[5]提取新型剪影導向的edgelet特征,基于這類特征通過增強學習來訓練部分檢測器,將部分檢測器的響應組合以形成聯(lián)合可能性模型。貴向泉等[6]使用改進卷積網絡模型的克羅內克積對航拍圖像采樣,在保證原圖像清晰度的情況下,長和寬被放大4倍。
隨著神經網絡和深度學習技術快速發(fā)展,傳統(tǒng)人工提取的過程也可以通過神經網絡學習實現(xiàn)。而且其擁有高級的語義表達能力、特征表達能力強、魯棒性更好[7]。如基于卷積神經網絡的三代目標檢測算法R-CNN、Fast R-CNN[8]及Faster R-CNN[9],其中Faster R-CNN[9]通過一個全卷積層神經網絡不斷學習生成候選區(qū)域,其實現(xiàn)將整個物體檢測過程納入一個神經網絡中,實現(xiàn)端對端學習。因其卓越的檢測性能,被廣泛應用到各類任務中。如李偉山等[7]基于Faster RCNN 算法,加入一種“金字塔 RPN”結構和特征融合技術,進行煤礦井下目標行人檢測。王斌等[10]運用融合多模型和幀間信息進行行人檢測,通過融合Faste R-CNN和Faster R-CNN模型獲取精準檢測窗口。Le等[11]通過RPN層結合低層次卷積特征圖構成多尺度Faster R-CNN,檢測手、手機和方向盤等的較小物體。 Roh等[12]認為Faster R-CNN對較小物體不敏感,是因為Faster R-CNN中塊性能不足,通過精煉塊來提升對較小物體識別。雖然Faster R-CNN[9]性能好、準確性高,但也存在處理速度過慢、對較小物體不太敏感等問題。
此外,非極大值抑制(non-maximum suppression,NMS)是應用最為廣泛的一類后處理方法,在目標檢測中需要通過NMS消除候選區(qū)域中那些有高重疊區(qū)域。目標檢測中主要使用非極大值抑制方法有啟發(fā)式融合算法、均值漂移非極大值抑制和貪心非極大值抑制。其中啟發(fā)式窗口融合算法對人臉等檢測效果很好,對于行人檢測并不適合;均值漂移非極大值抑制不僅計算復雜,還需要調整很多與檢測器的步長等相關聯(lián)參數,目前較少使用;基于貪心策略的非極大值抑制算法被行人檢測普遍使用,因為它簡單高效[13]。NMS算法在目標檢測中發(fā)揮重要作用,自然Faster RCNN框架也運用NMS算法。但非最大值抑制算法存在著的最大問題就是它將相鄰檢測框的分數均強制歸0。在這種情況下,如果一個真實物體在重疊區(qū)域出現(xiàn),則將導致對該物體的檢測失敗并降低算法的平均檢測率。
針對NMS,Bodla等[14]提出一種新型Soft-NMS算法,改進傳統(tǒng)貪心NMS算法的問題。該算法基于重疊部分的大小,為相鄰檢測框設置一個分數衰減函數而非徹底將其分數置為0。同時,Soft-NMS算法不需要額外的訓練且易于實現(xiàn),因此,它很容易被集成到當前的物體檢測中。
目前,兩階段算法對錨點均勻采樣:以固定像素間隔掃描一個或多個CNN多尺度特征圖,以生成具有不同尺度和比率的錨點,稱為均勻采樣。其最終錨點將均勻地分布在特征圖平面中,錨點的位置僅受特征圖的形狀和固定像素間隔的約束。固定像素間隔(僅是采樣步幅)可以幫助控制錨點的密度。因為原始圖像與CNN特征圖之間的尺寸比是給定CNN模型的固定值,所以在特征圖上采樣的錨可以通過將它們乘以尺寸比來轉換為原始圖像。這意味著CNN特征圖上的均勻采樣等同于在原始圖像均勻采樣。因此,基本假設是圖像上的每個像素具有定位目標對象中心的相等概率。
Zhang等[15]認為在目標檢測中大量候選框只與少量真實框進行匹配,大部分兩階段算法選擇均勻采樣,這導致檢測效率慢。在這過程中大量候選框中不包含有效對象,訓練和評估網絡需要判斷候選框對象是否有效。這樣導致較高的額外計算負擔和對象采樣的不平衡。例如Faster R-CNN在采樣過程中產生大量候選框,最終只選擇評分最高前300個候選框,這無疑增加網絡計算負擔。所以他們提出一種啟發(fā)式的采樣方法尋找候選框,稱之為“Hot Anchors”。
本文對Faster R-CNN框進行修改,使其適應于2分類行人檢測。并用Soft-NMS算法去替代傳統(tǒng)貪心NMS算法,消除NMS算法對檢測結果的影響,提高檢測精度。此外,針對Faster R-CNN算法處理速度過慢,根據” Hot Anchors”采樣方法改進Faster R-CNN算法。最后,使用改進Faster R-CNN目標檢測框架實現(xiàn)復雜場景的行人檢測。
Faster R-CNN算法由區(qū)域建議網絡(region proposal network,RPN)和Fast R-CNN算法組成。Faster R-CNN算法檢測性能優(yōu)Fast R-CNN算法的點在于引入RPN網絡,該網絡與檢測網絡共享全圖像的卷積特征,使近乎零成本的建議區(qū)域成為可能。整個系統(tǒng)是一個單個的,統(tǒng)一的目標檢測網絡。
區(qū)域建議網絡是一個全卷積網絡能夠預測物體的邊框,同時也對每個位置的物體打分。區(qū)域建議網絡接收任意尺寸圖像輸入,通過端到端訓練可以產生高質量建議區(qū)域,然后通Fast R-CNN進行檢測。整個過程采用ZF模型或者VGG-16模型,前者包括5個共享卷積層,而后者包括13個共享卷積層。
為產生建議區(qū)域,使用滑動窗口在最后一個卷積特征圖上滑動。每個滑動窗口被映射到一個低維度特征。特征被傳遞給兩個并列的全連接層,分別是框回歸層(reg)和框分類層(cls)。每個滑動窗口位置,同時預測多個建議區(qū)域,每個位置的最大滑窗建議數量為k。這樣reg層輸出k個框的4k個坐標,cls層輸出k個框的2k個概率打分,預測對象還是非對象。k個建議被參數化成k個參考框,參考框稱為錨點。為應對不同尺寸物體,采用3種不同類型的滑動窗口,長寬比是1∶1、1∶2、2∶1,并用1282、2562、5122這3個尺度縮放滑動滑動窗口,一共采用9種類型的滑動窗口,如圖1所示。
為訓練RPN網絡,設計針對每個錨點的二分類標簽(判斷是否是一個物體)。給兩類錨點標記位正例:①和標注框最大重合的錨點; ②和任何標注框IoU重疊度超過0.7。對于一個真實標注可能會產生多個正例錨點。對于與標注框重疊度低于0.3的都標注為負例。
根據這些定義,對目標函數Fast R-CNN[9]中的多任務損失進行最小化。圖像的損失函數定義為
(1)
預測和回歸兩個損失函數用Ncls和Nreg進行標準化,并由一個平衡參數加權。cls項通過小批量數據的大小進行歸一化,reg項根據錨點位置的數量進行歸一化。默認情況下,λ設置為10,因此cls和reg項的權重大致相等。
采用四步訓練算法,通過交替優(yōu)化學習共享特征。第一步,先訓練RPN網絡。RPN網絡使用ImageNet的預訓練模型進行初始化,針對區(qū)域提議任務進行端到端微調。第二步,使用由第一步RPN生成建議區(qū)域,由Fast R-CNN訓練單獨的檢測網絡。該檢測網絡也由ImageNet預訓練模型進行初始化,此時兩個網絡不共享卷積層。第三步,使用檢測器網絡來初始化RPN訓練,但是修正共享卷積層,并且只對RPN特有層進行微調。第四步,保持共享卷積層的固定,對Fast R-CNN的獨有層進行微調。因此,兩個網絡共享相同的卷積層并形成統(tǒng)一網絡。
傳統(tǒng)NMS處理方法可以通過以下分數重置函數來表達:
(2)
式(2)中:bi是第i檢測框;si第i檢測框的得分;Νt是NMS閾值;M是檢測分數最高檢測框。
在式(2)中,NMS采用硬閾值來判斷相鄰檢測框是否保留。存在最大問題就是將相鄰檢測框的分數均強制歸0。在這種情況下,如果一個真實物體在重疊區(qū)域出現(xiàn),則將導致對該物體的檢測失敗并降低算法平均檢測率。
針對這種問題,引進 Soft-NMS算法。它基于重疊部分大小為相鄰檢測框設置一個衰減函數而非徹底將其分數置為0。簡單來講,如果一個檢測框與最大分數檢測框有大部分重疊,它會有很低分數;如果檢測框與最大分數檢測框只有小部分重疊,那么它的原有檢測分數不會受太大影響。通過衰減與檢測框M有重疊相鄰檢測框的檢測分數是對NMS算法有效改進。越是與M高度重疊的檢測框,越有可能出現(xiàn)假陽性結果,它們的分數衰減應該更嚴重。因此,對NMS原有函數做改進如下:
(3)
當相鄰檢測框與M重疊度超過重疊閾值Nt后,檢測框的檢測分數呈線性衰減。在這種情況下,與M相鄰的檢測框衰減程度很大,而遠離M的檢測框并不受影響。
但是,上述分數重置函數并不是一個連續(xù)函數,在重疊程度超過重疊閾值Nt時,該分數重置函數產生突變,可能導致檢測結果序列產生大的變動,因此更希望找到一個連續(xù)分數重置函數。它對沒有重疊的檢測框原有檢測分數不產生衰減,同時對高度重疊檢測框產生大的衰減。對soft-NMS中的分數重置函數進行改進:
(4)
物體檢測中,候選框(也稱為錨)可以通過三個參數來表征:位置(location)、比例(scale)和比率(ratio)。位置表示對象真實框的中心坐標,比例和比率分別表示對象的大小和形狀。
實際計算中,通常將比例和比率設置為固定的離散值。它們通常被認為是算法的超參數,可以手動設置。例如,F(xiàn)aster R-CNN中比例為[128,256,512],比率為[1/2,1,2]。事實上,位置、比例和比率是相互獨立的,它們構成錨的三種不同優(yōu)化維度,Hot Anchors只選擇位置。
良好的錨點通常落在真實框的附近,需要進一步定義距離閾值判斷錨是否合適。這相當于為兩個盒子定義IoU閾值,以判斷它們是否可以相互匹配。具體地說,如果真是框和任何錨之間的中心距離等于或小于距離閾值d0,定義有效命中;如果真實框和所有錨之間的中心距離大于距離閾值d0,則未命中。這可以用式(5)表示。真實框表示為gt_box,gt_box_hit表示真實框是否被任何錨點命中。d代表真實框與其最近的錨點之間的中心距離,d0是距離閾值為1表示真實框已被至少一個錨點命中,0表示真實框未被任何錨點命中。中心距離是真實框中心和錨中心之間的歐式距離。
(5)
統(tǒng)一錨點實際上僅利用圖像形狀信息,忽略圖像特征信息。當圖像通過卷積神經網絡生成多尺度特征圖,特征圖像素值也是錨采樣的有價值信息。基于這一觀察,Hot Anchors是一種啟發(fā)式采樣方法,用于特征圖上生成錨點。
由于CNN生成特征圖是多尺度的,每個階段具有不同尺寸,因此需要一些預處理??紤]錨點采樣應該低計算成本,預處理方法不能復雜。假設特征圖大小為[ batch, channel, height, width ],直接將特征圖沿其顏色相加生成新的特征圖,該特征圖被稱為熱特征圖。熱意味著這個特征圖可以反映高激活區(qū)域的感知空間,因此它可以用于示例熱點。熱特征圖與原始特征圖具有相同高度和寬度,其通道尺寸為1,因此大小為[ batch,1, height, width ]。batch是每次計算CNN輸入圖像的數量,channel是顏色通道。
因此,需要給出一個閾值來判斷應該選擇熱特征映射上的哪個像素作為錨點位置。因為每個圖像熱特征圖是不同的,所以使用熱特征圖的平均像素值作為閾值,對每個圖像進行自適應判斷。如果像素值大于閾值,則將其視為正熱錨。這可能導致不同圖像上不同數量的熱錨,因此為確保不同圖像上Hot Anchors數量相同并且便于程序處理,均值像素值乘以系數b作為最終閾值b可以初始化為1。如果獲取錨點數量小于預設值,將b乘以0.8并嘗試重新采樣直到錨點數量足夠。相比之下,如果熱錨數量超過預定值,會隨機消除冗余。這可以表示為式(6)和式(7),其中熱特征圖為HFM,原始特征圖的通道為C,熱特征圖平均像素值為mpixel,(x,y)表示HFM上像素坐標。
(6)
HotAchors=Anchor[(x,y),scale,ratio]
if HFM(x,y)≥bmpixel
(7)
如果只想在其中一個多尺度CNN特征圖上采樣錨點,可以選擇其中的中間階段。 一方面,頂部階段太抽象并且通常具有非常小的尺寸,因此忽略小對象; 另一方面,底層階段不夠抽象,可能會產生許多背景細節(jié)。通常在圖像細節(jié)信息和對象語義信息之間妥協(xié)的中間階段可能是一個不錯的選擇。
從github上獲取基于tensorflow的Faster RCNN框架代碼,該代碼支持VGG16,Resnet V1和Mobilenet V1架構。主要利用VGG16進行電力部件識別。整個過程:第一步,把電力部件數據集輸入VGG16進行特征提??;第二步,將最后一層卷積特征圖輸入RPN層,每張圖生成300個建議窗口;第三步,把建議窗口映射到最后一層卷積特征圖上;第四步,通過RoI pooling層使每個RoI生成固定尺寸的特征圖;最后,利用Softmax Loss和Smooth L1 Loss對分類概率和邊框回歸聯(lián)合訓練。
根據“Hot Anchors”觀點修改RPN層,用“Hot Anchors”采樣在熱特征圖去替代滑動窗口在最后卷積特征圖采樣,將采樣到的錨點執(zhí)行RPN層后續(xù)操作,如圖2所示。
圖2 結合Hot Anchors的RPN結構圖Fig.2 Combine the RPN structure diagram of Hot Anchors
在VOC 2007公測數據集中的行人數據集上訓練和測試模型,以驗證改進后的Faster R-CNN性能。VOC 2007 數據集共包括 9 963 張圖片,20個類別,共標注24 640 個目標,尺寸基本為 375×500 自然場景下的圖片。選擇其中行人數據集來訓練模型,將原來21分類任務變成2分類任務。
網絡實現(xiàn)部分選擇主流的深度學習框架tensorflow作為實驗平臺。選擇預訓練好的VGG16模型初始化特征提取網絡卷積層權重。整個網絡訓練過程使用 SGD 反向傳播優(yōu)化整個網絡模型。前60 000次迭代學習率為 0.001,后20 000次迭代學習率為 0.000 1,共進行 8 萬次的迭代,momentum 為0.9,weight_decay 為 0.000 5。相同條件下,同時訓練Faster R-CNN和改進Faster R-CNN。此外,在相同數據集下訓練第一代YOLO模型[16]和第二代YOLO模型[17]。YOLO模型是將物體檢測任務當做一個回歸問題來處理,使用一個神經網絡直接在1張圖像上預測出邊界框坐標、框中包含物體的置信度和物體概率。
在檢測效率和準確率方面,比較四種方法,如表1所示。改進Faster R-CNN相對于Faster R-CNN,檢測效率增加2幀/s,準確率增加1.9;效率提升33%,檢測準確率提升2.6%。雖然,改進Faster R-CNN相對于第二代YOLO模型處理速度顯得慢,但是其檢測準確率超過7.8%。比較四種模型,改進Faster R-CNN,在檢測效率和準確率方面,有其他方法不具備的優(yōu)勢。
表1 行人檢測模型對比Table 1 Pedestrian inspection model comparison
運用訓練好的改進Faster R-CNN模型,去檢測不同場景、不同姿態(tài)和不同穿著行人,如圖3所示。圖3中改進后算法對于不同場景、姿態(tài)以及穿著的行人,無論其所在圖像中位置遠近和在圖中所占區(qū)域的大小都能夠得到很好的識別效果。
圖3 行人檢測效果Fig.3 Pedestrian test renderings
圖4 兩種算法檢測效果對比Fig.4 Test renderings comparison of two algorithms
此外,對比改進前后兩種算法的檢測效果,如圖4所示。圖4中,藍色框是Faster R-CNN檢測結果、紅色框是改進后Faster R-CNN檢測結果。原Faster R-CNN算法對于過大遮擋和重疊的行人難以檢測,改進后Faster R-CNN算法很好解決這個問題。由于傳統(tǒng)NMS算法中忽略重疊區(qū)域存在真實物體情況,改進Faster R-CNN算法以Soft-NMS算法代替NMS算法,提高行人檢測準確率。
基于Faster R-CNN算法,改進Faster R-CNN算法并應用到行人檢測。首先,針對傳統(tǒng)NMS算法回避的重疊區(qū)域存在真實物體問題,引入Soft-NMS算法。其基于重疊部分的大小,為相鄰檢測框設置一個分數衰減函數而非徹底將其分數置為0,這樣保留重疊區(qū)可能存在的真實物體。然后,針對Faster R-CNN算法中均勻采樣導致的檢測效率低問題,引入 “Hot Anchors”。其把熱特征圖上的高激活區(qū)域作為錨點,避免像均勻采樣中采樣到大量無用的錨點,增加額外計算負擔。最后,將Faster R-CNN框架的21分類問題,修改成適合行人檢測的2分類問題。在VOC 2007行人數據集上訓練改進后算法。相對原Faster R-CNN算法,在檢測效率和準確率方面都有所提升。