賈敘文 劉慶華 劉東華 李楊 黃凱楓
(江蘇科技大學(xué) 鎮(zhèn)江 212003)
行人檢測是計(jì)算機(jī)視覺中的一個(gè)重要命題,有著悠久的發(fā)展歷史。其中比較經(jīng)典的算法有NAVNEET D 等提出的梯度直方圖特征(Histogram of oriented gradient,HOG)的特征描述法再加支持向量機(jī)進(jìn)行行人檢測[1],這使得行人檢測在計(jì)算機(jī)視覺領(lǐng)域獲得重大突破,之后此方法獲得進(jìn)一步改進(jìn),出現(xiàn)了可變形部件模型(Deformable part models,DPM)方法、聚合通道特征(Aggregation channel feature,ACF)方法等,此類方法雖然在發(fā)展過程中解決了部分問題,如局部遮擋等,但其缺點(diǎn)也是尤為突出,需要大量人工設(shè)置的參數(shù),這導(dǎo)致這類算法很大程度只能應(yīng)用到一些固定的場景環(huán)境當(dāng)中。隨著神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)不斷應(yīng)用到圖像識(shí)別和目標(biāo)檢測當(dāng)中,人們找到了另外的行人檢測思路。目前深度學(xué)習(xí)中的目標(biāo)檢測可以大致分為兩大類,一類是以Faster R-CNN[2]這類為代表的目標(biāo)區(qū)域建議的目標(biāo)檢測算法;另一類是YOLOv3[3]這類基于回歸算法為代表的算法,比較常見出名的有SSD[4]、RetinaNet[5]等算法。前者的這類算法具有較好的精確度,但需要大量的計(jì)算機(jī)資源,后者主要用于實(shí)時(shí)檢測,但檢測性能還是存在很大的改進(jìn)潛力。而本文通過對Faster R-CNN 和Cascada R-CNN[6]的學(xué)習(xí)研究,改進(jìn)了原有Cascada R-CNN模型,本文稱之為改進(jìn)型Cascada R-CNN 算法模型。
Cascada R-CNN 算法本身是以Faster R-CNN為基礎(chǔ)多次優(yōu)化算法,其可以解決因IoU 值的設(shè)置問題而導(dǎo)致出現(xiàn)小樣本訓(xùn)練時(shí)的mismatch 等問題。Faster R-CNN 的傳統(tǒng)做法是將IoU 值設(shè)置為0.5 以兼顧準(zhǔn)確性和mismatch 和過擬合等問題,為此Zhao-wei等[7]還設(shè)計(jì)出了muti-stage 的結(jié)構(gòu),用來在不同的階段設(shè)置不同的IoU 值,也就是通過級聯(lián)的方式逐級提高IoU 值,以此來提高檢測的準(zhǔn)確性。這種方式的本質(zhì)就是前一個(gè)階段的輸出作為后一個(gè)階段的輸入,在這個(gè)過程中IoU 值逐級提高,這樣的好處是在小樣本情況下可以有效的防止過擬合現(xiàn)象并提高檢測的準(zhǔn)確性。IoU值級聯(lián)回歸問題構(gòu)架公式[8]為
其中T為級聯(lián)階段數(shù),ft為預(yù)優(yōu)化的項(xiàng),x表示本階段你輸入的圖片,b表示本階段圖片對應(yīng)的檢測框。Cascada R-CNN 模型的實(shí)現(xiàn)過程就是對Faster R-CNN 實(shí)現(xiàn)多聯(lián)級的擴(kuò)展。Cascada R-CNN 模型是由一個(gè)用于生成候選區(qū)的RPN 階段和三個(gè)檢測階段組成,本文改進(jìn)型Cascada R-CNN 的結(jié)構(gòu)如圖1,其IoU分別設(shè)置為0.5,0.6和0.7。其流程大致可以理解為H0 對輸入圖片進(jìn)行處理產(chǎn)生候選區(qū)RPN,之后的階段對第一階段的RPN進(jìn)行處理完成分類和邊框模塊選擇。原來的Cascada R-CNN 模型還存在一些問題,比如用于行人檢測時(shí)對小尺度行人檢測會(huì)導(dǎo)致誤測,檢測準(zhǔn)確率低,其模型的候選框是對多類目標(biāo)進(jìn)行檢測,而本文的目標(biāo)只是讓其對行人目標(biāo)作出準(zhǔn)確的檢測和識(shí)別,在此基礎(chǔ)上能夠達(dá)到快速準(zhǔn)確的檢測結(jié)果,所以本文就此對模型可以提高的地方進(jìn)行了改進(jìn)。
圖1 改進(jìn)型的Cascada R-CNN模型
通過對Cascada R-CNN 模型網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)了解,本文是以改進(jìn)整個(gè)網(wǎng)絡(luò)中的幾個(gè)模塊網(wǎng)絡(luò)來提升Cascada R-CNN 模型的整體性能,在第一個(gè)共享卷積層時(shí)本文改進(jìn)了原本的VGG16 網(wǎng)絡(luò),在對原本的RPN 分析了原本的一些問題原因,針對這些問題尤其是小尺度行人檢測作出了一些改進(jìn)方法,具體分析如下文。
Shared convolution 層使用的是VGG16[9]網(wǎng)絡(luò),而VGG16 網(wǎng)絡(luò)是由5 個(gè)最大池化層、3 個(gè)全連接層、13 個(gè)卷積層組成的網(wǎng)絡(luò)結(jié)構(gòu),這樣的結(jié)構(gòu)中就可以引入SE嵌入模塊和K-means聚類網(wǎng)絡(luò)[10]。SE模塊中包含的基本操作是池化和全連接,所以可以在VGG16 網(wǎng)絡(luò)中的每一層的最大池化層中加上一層SE 網(wǎng)絡(luò)層用來處理池化層之前的卷積特征集,這樣在處理遮擋和小尺度行人[11]檢測時(shí),能夠有效地提高準(zhǔn)確度。
圖2 SE-conv-moudle模塊
圖3 改進(jìn)的VGG16網(wǎng)路模塊
首先可以固定RPN 中的Anchor 的寬高比,因?yàn)橛糜谛腥藱z測的候選框通??梢钥闯墒鞘蓍L直立型的,其寬高比一般為0.41[12]和以及一些其他相近的數(shù)值,具體參數(shù)根據(jù)訓(xùn)練集進(jìn)行設(shè)置,這個(gè)參數(shù)需要設(shè)置固定好;其次在POI 池化層中原來的Cascada R-CNN 模型中存在兩次浮點(diǎn)取整操作,該網(wǎng)絡(luò)將原圖的ROI 坐標(biāo)(左上角與右下角的坐標(biāo)值)進(jìn)行池化操作,使其縮小為原圖的十六分之一[13],其過程需要兩次取整,導(dǎo)致的問題是RoI pooling提取的特征圖與原圖不對齊,所以在這個(gè)過程中可以采用雙線性插值來對齊RoI pooling 提取出的特征圖,改進(jìn)過程就是在RoI pooling 過程中不進(jìn)行取整運(yùn)算而保留小數(shù),然后通過雙線性插值[14]對每個(gè)采樣點(diǎn)進(jìn)行估值,插值完成對每個(gè)區(qū)域進(jìn)行Max Pooling,整個(gè)過程避免了取整操作,這樣有效地保留了提取出的特征圖的對應(yīng)位置,并且在進(jìn)入RPN 之前引入了K-means 聚類算法,K-means 聚類算法可以加速候選區(qū)域的收斂速度,K-means聚類方法測量兩點(diǎn)間距離使用的是歐式距離測量法,其作用是聚類單位網(wǎng)格長與候選框?qū)捀弑壤?。K-means的聚類函數(shù)為
其中N為聚類的類別;M為聚類的樣本;Box[N]為候選區(qū)域的寬和高;Box[M]為實(shí)際的人的區(qū)域的寬和高。
下面說明雙線性插值方法:在圖像提取特征圖之坐標(biāo)都為原來的十六分之一,我們以特征圖的中心點(diǎn)為坐標(biāo)原點(diǎn)設(shè)為P(x,y),圖中各點(diǎn)的坐標(biāo)為Q11(x1,y1),Q12(x2,y1),Q21(x1,y2),Q22(x2,y2),p=x-[x],q=y-[y],x1=[x],y1=[y],[n]為取整操作,是不大于n的最大整數(shù)。雙插值操作就是先在X方向上插值一次,由Q11(x1,y1)、Q12(x2,y1)得到R1(x,y1)的灰度值為
同理再在X方向再進(jìn)行一次插值得到R2(x,y2),其灰度值為
之后再通過R1(x,y1)、R2(x,y2)的灰度值在Y方向進(jìn)行一次插值得到P(x,y)的灰度值為
雙線性插值避免了特征圖坐標(biāo)的取整操作,保留了高質(zhì)量的特征圖、完整的位置信息。
圖4 雙線性插值法
本次實(shí)驗(yàn)訓(xùn)練采用的是INRIA 數(shù)據(jù)集[15],INRIA 數(shù)據(jù)集包含15560 個(gè)正樣本和6744 個(gè)負(fù)樣本,本次實(shí)驗(yàn)訓(xùn)練集選取了該數(shù)據(jù)集中3000 張正樣本和1000張負(fù)樣本,然后選取300張?jiān)摂?shù)據(jù)集的圖片和自制的500 張某段街區(qū)采集的的行人圖片作為測試集。實(shí)驗(yàn)環(huán)境PyTorch+mmdetection。最終本文的改進(jìn)型Cascada R-CNN 模型的在行人檢測數(shù)據(jù)集中獲得了90.1%準(zhǔn)確率的好成績。在自制的檢測集內(nèi)的檢測結(jié)果如圖5。
圖5 自制測試集檢測結(jié)果
改進(jìn)型Cascada R-CNN 模型和Cascada R-CNN 模型以及Faster R-CNN 模型檢測結(jié)果對比如表1。
表1 實(shí)驗(yàn)結(jié)果對比
由表1 可以知道改型的Cascada R-CNN 模型的準(zhǔn)確率比Faster R-CNN 和Cascada R-CNN 具有更高的識(shí)別精確度,在性能上也優(yōu)于原來的Cascada R-CNN模型。
本文提出了一種改進(jìn)型Cascada R-CNN 行人檢測模型,在INRIA 數(shù)據(jù)集進(jìn)行了訓(xùn)練,并在INRIA 數(shù)據(jù)集中挑選測試圖片和自制的圖片制作了測試集并在測試集中取得了的AP 為90.1%的成績,但是在檢測速度上有不足的地方,可以在后續(xù)的實(shí)驗(yàn)中在保證檢測準(zhǔn)確率的前提下改善網(wǎng)絡(luò)結(jié)構(gòu),盡可能減少網(wǎng)絡(luò)復(fù)雜度提高運(yùn)行速度;同時(shí)在對遠(yuǎn)處小尺度樣本進(jìn)行檢測時(shí),任然會(huì)有誤測,無法固定行人位置等問題,這些問題可以通過后續(xù)改進(jìn)RPN 中的特征提取方式,將色彩位置信息豐富的低層特征圖與具有高級語義信息的高層特征圖相結(jié)合,讓網(wǎng)絡(luò)獲得更加準(zhǔn)確的特征圖,這樣可以對遠(yuǎn)處的小樣本進(jìn)行更加準(zhǔn)確的檢測。