單志勇,張鐘月
(東華大學(xué)信息科學(xué)與技術(shù)學(xué)院,上海201600)
隨著智能科技的進(jìn)步和社會科學(xué)潮流的發(fā)展,在生活很多的應(yīng)用中都可以看到智能化技術(shù)的身影,基于視覺的行人檢測是智能監(jiān)控、智能駕駛、無人駕駛等領(lǐng)域的重要組成部分。行人檢測屬于是目標(biāo)識別領(lǐng)域的研究熱點及難點,在生活中有廣泛的應(yīng)用。準(zhǔn)確的檢測出各類場景中的行人在監(jiān)控等技術(shù)領(lǐng)域上具有重要意義。20世紀(jì)80年代,Marr提出了相對完整的計算機視覺理論體系[1]。運動目標(biāo)的跟蹤技術(shù)發(fā)展是從20世紀(jì)80年代開始的,并且成為了計算機視覺技術(shù)領(lǐng)域研究的一大熱點。
行人檢測也就是對圖像中的行人進(jìn)行檢測和識別,與此同時確定其行人在圖像中所處位置進(jìn)行定位。行人檢測算法大致可以分為以下幾類,分別是基于背景建模、輪廓模板、底層特征和統(tǒng)計學(xué)習(xí)?;贑odebook背景建模算法是通過提取運動前景,縮小檢測過程的搜索范圍,構(gòu)建臨時塊模型,結(jié)合行人檢測結(jié)果更新背景模型,以此來實現(xiàn)行人檢測[2]。全局模板法是由Gavrila等人所提出的,該方法構(gòu)建了近2500個輪廓模板用來對行人進(jìn)行識別[3]。局部模板法是由Broggi等人提出的,該方法采取一種提取人的頭以及肩部的不同大小的二值圖像特征模板來進(jìn)行行人檢測識別功能[4]。這種方法是在原本的圖像上進(jìn)行計算,缺點是需要提前構(gòu)建大量的行人檢測模板才能取得比較好的匹配結(jié)果。目前所存在的行人檢測方法主要有以下幾個不足之處:①底層特征的使用對行人的檢測能力不足;②行人的特征分辨較差,容易造成分類錯誤,使得檢測錯誤率高;③目標(biāo)特征針對性較強使得特征對應(yīng)單獨的場景而在其他場景的情況下很難達(dá)到很好的效果。2006年Hinton[5]團(tuán)隊提出了一種模擬人腦進(jìn)行基于深度學(xué)習(xí)的算法,將高層特征通過深度卷積神經(jīng)網(wǎng)絡(luò)從極多的數(shù)據(jù)中學(xué)習(xí)出來。深度卷積神經(jīng)網(wǎng)絡(luò)將特征提取、特征選擇以及特征分類融合在同一模型中,通過端到端的訓(xùn)練,從整體上優(yōu)化檢測功能,以此來增強了特征的分類。Girshick R團(tuán)隊提出了區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(R-CNN)模型[6]。為有效解決行人目標(biāo)的遮擋以及形變等問題,Ouyang等人提出了一種方法即利用卷積神經(jīng)網(wǎng)絡(luò)提取行人特征[7]。YANG團(tuán)隊提出了基于稀疏編碼的非監(jiān)督學(xué)習(xí)方法[8],該方法比傳統(tǒng)行人檢測算法更有效。
實驗中利用Faster R-CNN[9]算法來進(jìn)行運動中的行人檢測,算法中利用DetNet神經(jīng)進(jìn)行特征提取[10],采用區(qū)域建議網(wǎng)絡(luò)RPN生成建議候選區(qū)域,使用檢測網(wǎng)絡(luò)對行人目標(biāo)進(jìn)行分類和定位。與此同時還采用ROI Align來進(jìn)行圖像特征映射。實驗中使用INRIA行人數(shù)據(jù)集和USC行人數(shù)據(jù)集訓(xùn)練該模型。
Faster R-CNN是區(qū)域卷積神經(jīng)網(wǎng)絡(luò),它的提出是為了解決選擇搜索方式中尋找建議區(qū)域速度太慢的問題。Faster R-CNN整體的流程可以分為三步:首先,輸入圖片,圖片經(jīng)過預(yù)訓(xùn)練網(wǎng)絡(luò)(實驗中采用的是DetNet),提取出圖片的特征;其次,將提取的特征經(jīng)過RPN網(wǎng)絡(luò),產(chǎn)生一定數(shù)量的候選框(每張圖上都有2000個候選框);最后則是預(yù)測的分類與回歸結(jié)果,將候選框和圖像特征都輸入到ROI head里面,對候選區(qū)域進(jìn)行分類,判斷其類別,與此同時還會對候選區(qū)域的位置進(jìn)行微調(diào)。改進(jìn)的Faster R-CNN結(jié)構(gòu)流程如圖1所示。
圖1 改進(jìn)的Faster R-CNN結(jié)構(gòu)流程圖
要解決的問題有以下兩個:使得圖片中小目標(biāo)不會消失的同時能夠確保獲得的特征圖有清楚的邊界,則從圖片中提取出的特征圖要能夠有足夠大的尺寸;通過采用減少下采樣的方式來確保特征圖的分辨率足夠高而且感受野的大小也不會受到影響。對于圖像的特征提取網(wǎng)絡(luò)這里選擇使用DetNet。DetNet網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,DetNet結(jié)構(gòu)中的階段1到階段4的網(wǎng)絡(luò)結(jié)構(gòu)與ResNet50結(jié)構(gòu)相同,而階段5中的結(jié)構(gòu)與ResNet50結(jié)構(gòu)中的區(qū)別主要體現(xiàn)在ResNet50結(jié)構(gòu)中原尺寸是該stage5的特征圖的32倍。該網(wǎng)絡(luò)結(jié)構(gòu)還增加了額外的階段6。由圖2可以看出,階段4到階段6這三個階段的幅度都是16,也就是說該網(wǎng)絡(luò)結(jié)構(gòu)下原圖尺寸是這三個階段的特征圖尺寸的16倍。圖中可以看出階段5和階段6都有256個輸入通道,與每個階段通道數(shù)都增加一倍的傳統(tǒng)主干網(wǎng)絡(luò)不同,這一做法是考慮了計算量和內(nèi)存的問題。
圖2 DetNet網(wǎng)絡(luò)結(jié)構(gòu)
DetNet網(wǎng)絡(luò)結(jié)構(gòu)中使用了dilation技術(shù),其中di?lated bottleneck分為A和B兩種,DetNet和ResNet殘差對比如圖3所示。確保特征圖尺寸的大小也就是要增大感受野是該技術(shù)的主要目的。
圖3 DetNet和ResNet殘差對比
在候選框的產(chǎn)生上面,采用了區(qū)域選取網(wǎng)絡(luò)(RPN)。RPN網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 RPN網(wǎng)絡(luò)結(jié)構(gòu)圖
由圖4可以看出將圖像的特征圖輸入到RPN網(wǎng)絡(luò)結(jié)構(gòu)中,通過3×3 conv和relu層后分成兩個1×1 conv部分,一部分通過Softmax預(yù)測分類概率,分析是目標(biāo)本身還是圖片背景從而獲得最有可能存在物體的先驗框anchor;另一部分是計算針對原圖坐標(biāo)的偏移量從而選取準(zhǔn)確的區(qū)域。最后綜合正先驗框和對應(yīng)的邊框回歸偏移量來提取目標(biāo)區(qū)域。
RPN網(wǎng)絡(luò)的運行機制如圖5所示:圖像的卷積特征圖上的每個像素點都有k個先驗框,然后去判斷這個框有沒有覆蓋到物體,并且會為含有物體的先驗框進(jìn)行坐標(biāo)調(diào)整。檢測目標(biāo)和背景分為兩類屬于二分類所以class layer得到2k個scores。而坐標(biāo)修正是x、y、w和h,所以reg layer得到4k個坐標(biāo)。RPN整體上是依靠在一個圖片特征圖上的滑動窗口,可以為每個像素點生成9種目標(biāo)框。先驗框的面積分別有128×128、256×256、512×512,長寬比是1:1、1:2、2:1,所以由面積和長寬比兩兩組合會形成9種目標(biāo)框an?chor。
圖5 RPN網(wǎng)絡(luò)的運行機制
傳統(tǒng)技術(shù)中ROI Pooling中區(qū)域不匹配是因為兩次量化而產(chǎn)生的,所以這里采用了ROI Align區(qū)域聚集方式來解決該缺點。ROI Align會經(jīng)過特征圖上每個選取的區(qū)域,此時邊界是浮點數(shù)類型的,ROI Align不對該邊緣信息作量化處理。然后將建議選取區(qū)域分割成k×k個矩形單元,分割所得的單元的邊界信息不進(jìn)行量化處理。在每個矩形單元中按照一定的規(guī)則確定四個點的位置,再用雙線性插值的方式計算出這四個點位置的具體值。最后,在這四個值上進(jìn)行最大池化操作。其中雙線性插值法具體做法如圖6所示。
圖6 ROI Align雙線性插值
ROI Pooling的反向傳播公式為:
其中,xi表示池化前特征圖上的像素點,yrj表示池化后的第r個候選區(qū)域的第j個點。進(jìn)行最大池化操作后挑選出來的最大像素值存在的點的坐標(biāo)就是i*(r,j)表示yrj像素值。由以上公式可以看出,要想使得某個點可以在xi處回傳梯度,該點必須滿足池化后的某一個點的像素值在池化過程中采用了當(dāng)前點xi的像素值即滿足i=i*(r,j)。
在ROI Align中,xi*(r,j)是一個浮點數(shù)的坐標(biāo)值也就是前向傳播時計算出來的采樣點。特征圖在進(jìn)行池化操作前,能接收對應(yīng)的點yrj回傳的梯度的要求是每一個和i*(r,j)橫縱坐標(biāo)都要小于1的點。ROI Align的反向傳播公式如下:
其中,d(,)代表兩點之間的距離,?h、?w表示xi和xi*(r,j)橫縱坐標(biāo)的差值,它們將作為雙線性內(nèi)插的系數(shù)與原始梯度相乘。
實驗采用INRIA行人檢測數(shù)據(jù)集以及USC數(shù)據(jù)集等公開數(shù)據(jù)集,以及道路上采拍圖像共計10111張圖片,公開數(shù)據(jù)集中含有原始圖像及其標(biāo)注文件,實驗開始前將公開數(shù)據(jù)集分別轉(zhuǎn)化成VOC格式的數(shù)據(jù)集以便訓(xùn)練模型。道路采拍圖像選擇用labelImg標(biāo)注工具進(jìn)行自行標(biāo)注。按VOC格式需要建立文檔作為備用。INRIA行人檢測數(shù)據(jù)集中的圖片來源于個人網(wǎng)站以及谷歌網(wǎng)頁等,清晰度很高便于訓(xùn)練模型。USC數(shù)據(jù)集有三個數(shù)據(jù)集包,涵蓋了各個角度拍攝的行人圖像,包括正面背面以及側(cè)面,人與人之間有無遮擋的圖像也均含有。
實驗硬件配置為Intel Core i7處理器,內(nèi)存16G,遠(yuǎn)程連接外部服務(wù)器,GPU是NVIDIA GeForce 1080Ti,11G顯存,62G內(nèi)存。實驗中行人檢測結(jié)果如圖7所示。
圖7 行人檢測效果
實驗記錄了模型訓(xùn)練過程中各類損失曲線圖,如圖8所示:roi_loc_loss、roi_cls_loss、rpn_loc_loss以及rpn_cls_loss分為兩類損失,一部分是分類損失,另一部分是回歸損失。由圖可以看出,模型訓(xùn)練過程中損失整體呈現(xiàn)下降趨勢。
圖8 兩類損失曲線
實驗中測試的MAP值隨著迭代次數(shù)的增加逐漸增大最后逐漸趨于穩(wěn)定,迭代次數(shù)達(dá)到6次時MAP值為0.6150,迭代次數(shù)達(dá)到12時,MAP值為0.6934;當(dāng)?shù)螖?shù)達(dá)到18時,MAP值為0.7627;當(dāng)?shù)螖?shù)達(dá)到20時,MAP值達(dá)到最大為0.7810。
實驗利用公開的USC行人數(shù)據(jù)集和INRIA數(shù)據(jù)集以及自制的數(shù)據(jù)集進(jìn)行模型訓(xùn)練和測試,驗證了DetNet主干網(wǎng)絡(luò)提取特征值以及使用ROI Align進(jìn)行映射池化對行人檢測模型產(chǎn)生的有效性,為之后在實際場景中的應(yīng)用提供了基礎(chǔ)。