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

圖1 改進(jìn)的Faster R-CNN結(jié)構(gòu)流程圖
要解決的問題有以下兩個(gè):使得圖片中小目標(biāo)不會(huì)消失的同時(shí)能夠確保獲得的特征圖有清楚的邊界,則從圖片中提取出的特征圖要能夠有足夠大的尺寸;通過采用減少下采樣的方式來確保特征圖的分辨率足夠高而且感受野的大小也不會(huì)受到影響。對(duì)于圖像的特征提取網(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這三個(gè)階段的幅度都是16,也就是說該網(wǎng)絡(luò)結(jié)構(gòu)下原圖尺寸是這三個(gè)階段的特征圖尺寸的16倍。圖中可以看出階段5和階段6都有256個(gè)輸入通道,與每個(gè)階段通道數(shù)都增加一倍的傳統(tǒng)主干網(wǎng)絡(luò)不同,這一做法是考慮了計(jì)算量和內(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殘差對(duì)比如圖3所示。確保特征圖尺寸的大小也就是要增大感受野是該技術(shù)的主要目的。

圖3 DetNet和ResNet殘差對(duì)比
在候選框的產(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層后分成兩個(gè)1×1 conv部分,一部分通過Softmax預(yù)測(cè)分類概率,分析是目標(biāo)本身還是圖片背景從而獲得最有可能存在物體的先驗(yàn)框anchor;另一部分是計(jì)算針對(duì)原圖坐標(biāo)的偏移量從而選取準(zhǔn)確的區(qū)域。最后綜合正先驗(yàn)框和對(duì)應(yīng)的邊框回歸偏移量來提取目標(biāo)區(qū)域。
RPN網(wǎng)絡(luò)的運(yùn)行機(jī)制如圖5所示:圖像的卷積特征圖上的每個(gè)像素點(diǎn)都有k個(gè)先驗(yàn)框,然后去判斷這個(gè)框有沒有覆蓋到物體,并且會(huì)為含有物體的先驗(yàn)框進(jìn)行坐標(biāo)調(diào)整。檢測(cè)目標(biāo)和背景分為兩類屬于二分類所以class layer得到2k個(gè)scores。而坐標(biāo)修正是x、y、w和h,所以reg layer得到4k個(gè)坐標(biāo)。RPN整體上是依靠在一個(gè)圖片特征圖上的滑動(dòng)窗口,可以為每個(gè)像素點(diǎn)生成9種目標(biāo)框。先驗(yàn)框的面積分別有128×128、256×256、512×512,長寬比是1:1、1:2、2:1,所以由面積和長寬比兩兩組合會(huì)形成9種目標(biāo)框an?chor。

圖5 RPN網(wǎng)絡(luò)的運(yùn)行機(jī)制
傳統(tǒng)技術(shù)中ROI Pooling中區(qū)域不匹配是因?yàn)閮纱瘟炕a(chǎn)生的,所以這里采用了ROI Align區(qū)域聚集方式來解決該缺點(diǎn)。ROI Align會(huì)經(jīng)過特征圖上每個(gè)選取的區(qū)域,此時(shí)邊界是浮點(diǎn)數(shù)類型的,ROI Align不對(duì)該邊緣信息作量化處理。然后將建議選取區(qū)域分割成k×k個(gè)矩形單元,分割所得的單元的邊界信息不進(jìn)行量化處理。在每個(gè)矩形單元中按照一定的規(guī)則確定四個(gè)點(diǎn)的位置,再用雙線性插值的方式計(jì)算出這四個(gè)點(diǎn)位置的具體值。最后,在這四個(gè)值上進(jìn)行最大池化操作。其中雙線性插值法具體做法如圖6所示。

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

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

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

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

圖8 兩類損失曲線
實(shí)驗(yàn)中測(cè)試的MAP值隨著迭代次數(shù)的增加逐漸增大最后逐漸趨于穩(wěn)定,迭代次數(shù)達(dá)到6次時(shí)MAP值為0.6150,迭代次數(shù)達(dá)到12時(shí),MAP值為0.6934;當(dāng)?shù)螖?shù)達(dá)到18時(shí),MAP值為0.7627;當(dāng)?shù)螖?shù)達(dá)到20時(shí),MAP值達(dá)到最大為0.7810。
實(shí)驗(yàn)利用公開的USC行人數(shù)據(jù)集和INRIA數(shù)據(jù)集以及自制的數(shù)據(jù)集進(jìn)行模型訓(xùn)練和測(cè)試,驗(yàn)證了DetNet主干網(wǎng)絡(luò)提取特征值以及使用ROI Align進(jìn)行映射池化對(duì)行人檢測(cè)模型產(chǎn)生的有效性,為之后在實(shí)際場(chǎng)景中的應(yīng)用提供了基礎(chǔ)。