單志勇,張鐘月
(東華大學信息科學與技術學院,上海201600)
隨著智能科技的進步和社會科學潮流的發展,在生活很多的應用中都可以看到智能化技術的身影,基于視覺的行人檢測是智能監控、智能駕駛、無人駕駛等領域的重要組成部分。行人檢測屬于是目標識別領域的研究熱點及難點,在生活中有廣泛的應用。準確的檢測出各類場景中的行人在監控等技術領域上具有重要意義。20世紀80年代,Marr提出了相對完整的計算機視覺理論體系[1]。運動目標的跟蹤技術發展是從20世紀80年代開始的,并且成為了計算機視覺技術領域研究的一大熱點。
行人檢測也就是對圖像中的行人進行檢測和識別,與此同時確定其行人在圖像中所處位置進行定位。行人檢測算法大致可以分為以下幾類,分別是基于背景建模、輪廓模板、底層特征和統計學習。基于Codebook背景建模算法是通過提取運動前景,縮小檢測過程的搜索范圍,構建臨時塊模型,結合行人檢測結果更新背景模型,以此來實現行人檢測[2]。全局模板法是由Gavrila等人所提出的,該方法構建了近2500個輪廓模板用來對行人進行識別[3]。局部模板法是由Broggi等人提出的,該方法采取一種提取人的頭以及肩部的不同大小的二值圖像特征模板來進行行人檢測識別功能[4]。這種方法是在原本的圖像上進行計算,缺點是需要提前構建大量的行人檢測模板才能取得比較好的匹配結果。目前所存在的行人檢測方法主要有以下幾個不足之處:①底層特征的使用對行人的檢測能力不足;②行人的特征分辨較差,容易造成分類錯誤,使得檢測錯誤率高;③目標特征針對性較強使得特征對應單獨的場景而在其他場景的情況下很難達到很好的效果。2006年Hinton[5]團隊提出了一種模擬人腦進行基于深度學習的算法,將高層特征通過深度卷積神經網絡從極多的數據中學習出來。深度卷積神經網絡將特征提取、特征選擇以及特征分類融合在同一模型中,通過端到端的訓練,從整體上優化檢測功能,以此來增強了特征的分類。Girshick R團隊提出了區域卷積神經網絡(R-CNN)模型[6]。為有效解決行人目標的遮擋以及形變等問題,Ouyang等人提出了一種方法即利用卷積神經網絡提取行人特征[7]。YANG團隊提出了基于稀疏編碼的非監督學習方法[8],該方法比傳統行人檢測算法更有效。
實驗中利用Faster R-CNN[9]算法來進行運動中的行人檢測,算法中利用DetNet神經進行特征提取[10],采用區域建議網絡RPN生成建議候選區域,使用檢測網絡對行人目標進行分類和定位。與此同時還采用ROI Align來進行圖像特征映射。實驗中使用INRIA行人數據集和USC行人數據集訓練該模型。
Faster R-CNN是區域卷積神經網絡,它的提出是為了解決選擇搜索方式中尋找建議區域速度太慢的問題。Faster R-CNN整體的流程可以分為三步:首先,輸入圖片,圖片經過預訓練網絡(實驗中采用的是DetNet),提取出圖片的特征;其次,將提取的特征經過RPN網絡,產生一定數量的候選框(每張圖上都有2000個候選框);最后則是預測的分類與回歸結果,將候選框和圖像特征都輸入到ROI head里面,對候選區域進行分類,判斷其類別,與此同時還會對候選區域的位置進行微調。改進的Faster R-CNN結構流程如圖1所示。

圖1 改進的Faster R-CNN結構流程圖
要解決的問題有以下兩個:使得圖片中小目標不會消失的同時能夠確保獲得的特征圖有清楚的邊界,則從圖片中提取出的特征圖要能夠有足夠大的尺寸;通過采用減少下采樣的方式來確保特征圖的分辨率足夠高而且感受野的大小也不會受到影響。對于圖像的特征提取網絡這里選擇使用DetNet。DetNet網絡結構如圖2所示,DetNet結構中的階段1到階段4的網絡結構與ResNet50結構相同,而階段5中的結構與ResNet50結構中的區別主要體現在ResNet50結構中原尺寸是該stage5的特征圖的32倍。該網絡結構還增加了額外的階段6。由圖2可以看出,階段4到階段6這三個階段的幅度都是16,也就是說該網絡結構下原圖尺寸是這三個階段的特征圖尺寸的16倍。圖中可以看出階段5和階段6都有256個輸入通道,與每個階段通道數都增加一倍的傳統主干網絡不同,這一做法是考慮了計算量和內存的問題。

圖2 DetNet網絡結構
DetNet網絡結構中使用了dilation技術,其中di?lated bottleneck分為A和B兩種,DetNet和ResNet殘差對比如圖3所示。確保特征圖尺寸的大小也就是要增大感受野是該技術的主要目的。

圖3 DetNet和ResNet殘差對比
在候選框的產生上面,采用了區域選取網絡(RPN)。RPN網絡結構如圖4所示。

圖4 RPN網絡結構圖
由圖4可以看出將圖像的特征圖輸入到RPN網絡結構中,通過3×3 conv和relu層后分成兩個1×1 conv部分,一部分通過Softmax預測分類概率,分析是目標本身還是圖片背景從而獲得最有可能存在物體的先驗框anchor;另一部分是計算針對原圖坐標的偏移量從而選取準確的區域。最后綜合正先驗框和對應的邊框回歸偏移量來提取目標區域。
RPN網絡的運行機制如圖5所示:圖像的卷積特征圖上的每個像素點都有k個先驗框,然后去判斷這個框有沒有覆蓋到物體,并且會為含有物體的先驗框進行坐標調整。檢測目標和背景分為兩類屬于二分類所以class layer得到2k個scores。而坐標修正是x、y、w和h,所以reg layer得到4k個坐標。RPN整體上是依靠在一個圖片特征圖上的滑動窗口,可以為每個像素點生成9種目標框。先驗框的面積分別有128×128、256×256、512×512,長寬比是1:1、1:2、2:1,所以由面積和長寬比兩兩組合會形成9種目標框an?chor。

圖5 RPN網絡的運行機制
傳統技術中ROI Pooling中區域不匹配是因為兩次量化而產生的,所以這里采用了ROI Align區域聚集方式來解決該缺點。ROI Align會經過特征圖上每個選取的區域,此時邊界是浮點數類型的,ROI Align不對該邊緣信息作量化處理。然后將建議選取區域分割成k×k個矩形單元,分割所得的單元的邊界信息不進行量化處理。在每個矩形單元中按照一定的規則確定四個點的位置,再用雙線性插值的方式計算出這四個點位置的具體值。最后,在這四個值上進行最大池化操作。其中雙線性插值法具體做法如圖6所示。

圖6 ROI Align雙線性插值
ROI Pooling的反向傳播公式為:

其中,xi表示池化前特征圖上的像素點,yrj表示池化后的第r個候選區域的第j個點。進行最大池化操作后挑選出來的最大像素值存在的點的坐標就是i*(r,j)表示yrj像素值。由以上公式可以看出,要想使得某個點可以在xi處回傳梯度,該點必須滿足池化后的某一個點的像素值在池化過程中采用了當前點xi的像素值即滿足i=i*(r,j)。
在ROI Align中,xi*(r,j)是一個浮點數的坐標值也就是前向傳播時計算出來的采樣點。特征圖在進行池化操作前,能接收對應的點yrj回傳的梯度的要求是每一個和i*(r,j)橫縱坐標都要小于1的點。ROI Align的反向傳播公式如下:

其中,d(,)代表兩點之間的距離,?h、?w表示xi和xi*(r,j)橫縱坐標的差值,它們將作為雙線性內插的系數與原始梯度相乘。
實驗采用INRIA行人檢測數據集以及USC數據集等公開數據集,以及道路上采拍圖像共計10111張圖片,公開數據集中含有原始圖像及其標注文件,實驗開始前將公開數據集分別轉化成VOC格式的數據集以便訓練模型。道路采拍圖像選擇用labelImg標注工具進行自行標注。按VOC格式需要建立文檔作為備用。INRIA行人檢測數據集中的圖片來源于個人網站以及谷歌網頁等,清晰度很高便于訓練模型。USC數據集有三個數據集包,涵蓋了各個角度拍攝的行人圖像,包括正面背面以及側面,人與人之間有無遮擋的圖像也均含有。
實驗硬件配置為Intel Core i7處理器,內存16G,遠程連接外部服務器,GPU是NVIDIA GeForce 1080Ti,11G顯存,62G內存。實驗中行人檢測結果如圖7所示。

圖7 行人檢測效果
實驗記錄了模型訓練過程中各類損失曲線圖,如圖8所示:roi_loc_loss、roi_cls_loss、rpn_loc_loss以及rpn_cls_loss分為兩類損失,一部分是分類損失,另一部分是回歸損失。由圖可以看出,模型訓練過程中損失整體呈現下降趨勢。

圖8 兩類損失曲線
實驗中測試的MAP值隨著迭代次數的增加逐漸增大最后逐漸趨于穩定,迭代次數達到6次時MAP值為0.6150,迭代次數達到12時,MAP值為0.6934;當迭代次數達到18時,MAP值為0.7627;當迭代次數達到20時,MAP值達到最大為0.7810。
實驗利用公開的USC行人數據集和INRIA數據集以及自制的數據集進行模型訓練和測試,驗證了DetNet主干網絡提取特征值以及使用ROI Align進行映射池化對行人檢測模型產生的有效性,為之后在實際場景中的應用提供了基礎。