舒壯壯,單 梁,馬苗苗,屈 藝,李 軍
(南京理工大學(xué) 自動(dòng)化學(xué)院,江蘇 南京 210094)
隨著自動(dòng)駕駛、視頻監(jiān)控以及機(jī)器人視覺等領(lǐng)域研究的發(fā)展,行人檢測(cè)作為其中的重要組成部分,具有極大的應(yīng)用前景。近些年來(lái)深度學(xué)習(xí)的發(fā)展,也給行人檢測(cè)提供了新的思路,與基于機(jī)器學(xué)習(xí)的行人檢測(cè)算法相比較,基于卷積神經(jīng)網(wǎng)絡(luò)(Convolution neural network,CNN)的深度學(xué)習(xí)方法極大地推動(dòng)了行人檢測(cè)算法的發(fā)展。
傳統(tǒng)行人檢測(cè)算法的設(shè)計(jì)思想主要是先基于手工設(shè)計(jì)的特征算子提取行人特征,再利用機(jī)器學(xué)習(xí)的分類模型將檢測(cè)問題轉(zhuǎn)換為分類問題來(lái)確定行人的位置。Dalal等[1]提出經(jīng)典的方向梯度直方圖(Histograms of oriented gradients,HOG)模型,借助于梯度算子提取特征,再使用支持向量機(jī)(Support vector machine,SVM)分類模型將檢測(cè)問題劃分為若干個(gè)小方格中的分類問題以最終實(shí)現(xiàn)行人的檢測(cè)。在傳統(tǒng)的行人檢測(cè)算法中,特征算子提取到的特征只能是該算子所關(guān)注的特征信息,無(wú)法充分利用圖像中既有的全部信息,缺乏有效的圖像表達(dá)能力,比如HOG模型中的算子僅僅關(guān)注梯度信息。
隨著CNN的發(fā)展,行人檢測(cè)算法的研究借助于CNN實(shí)現(xiàn)飛速發(fā)展。劉翔羽[2]針對(duì)手工設(shè)計(jì)算子提取能力不足的問題,創(chuàng)新地將CNN融入了傳統(tǒng)算法。先是使用CNN提取圖像的不同特征,再使用HOG算子提取CNN提取到的特征圖中的梯度信息。與傳統(tǒng)的HOG模型相比較,因特征提取能力變強(qiáng)而提升了檢測(cè)精度。完全基于CNN的區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Region-convolution neural network,R-CNN)[3-6]系列目標(biāo)檢測(cè)算法的提出給行人檢測(cè)算法帶來(lái)了新的研究方向?;诳焖賲^(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Faster region-convolution neural network,Faster R-CNN)[5],Zhang等[7]針對(duì)行人檢測(cè)中的遮擋難題提出遮擋處理區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Occlusion-aware R-CNN)行人檢測(cè)算法,該算法將Faster R-CNN[5]的感興趣區(qū)域(Region of interests,ROI)層中融入了人體特征信息并修改Faster R-CNN的損失函數(shù),在法國(guó)國(guó)家信息與自動(dòng)化研究所(Institut National de Recherche en Informatique et en Automatique,INRIA)數(shù)據(jù)集上得到了最佳結(jié)果。Li等[8]為減少不同行人尺度變化帶來(lái)的影響提出Scale-aware Fast R-CNN行人檢測(cè)算法,該算法使用分而治之的思想針對(duì)不同尺度的行人使用不同的子網(wǎng)絡(luò),各個(gè)子網(wǎng)絡(luò)的輸出融合后作為最后的輸出結(jié)果,獲得不錯(cuò)的檢測(cè)結(jié)果。盡管R-CNN系列的算法提高了檢測(cè)精度,但是實(shí)時(shí)性較差,消耗的計(jì)算資源也很大。Redmon 等[9]提出的YOLOv3目標(biāo)檢測(cè)算法平衡了檢測(cè)實(shí)時(shí)性和精度,由于特征提取網(wǎng)絡(luò)借鑒了ResNet[10]并且融入了特征金字塔網(wǎng)絡(luò)(Feature pyramid networks,FPN)[11]結(jié)構(gòu),具備較強(qiáng)的多尺度特征提取能力,因此比Faster R-CNN[5]更加適用于多尺度行人檢測(cè)。葛雯等[12]在原來(lái)的FPN基礎(chǔ)上額外增加1個(gè)尺度來(lái)更好地檢測(cè)極小體型行人。施政等[13]在YOLOv3中使用Darknet-53提取可見光和紅外光2類狀態(tài)下的特征,并結(jié)合了注意力機(jī)制(Attention mechanism),得到較好的行人檢測(cè)結(jié)果。為更好地將行人檢測(cè)算法應(yīng)用于機(jī)器人這類缺乏計(jì)算資源的平臺(tái),本文提出一種基于YOLOv3的改進(jìn)行人檢測(cè)算法。
YOLOv3在通用數(shù)據(jù)集MS COCO(Microsoft common objects in context)上使用K均值(K-means)聚類方法生成大中小全尺度物體的先驗(yàn)框。然而行人檢測(cè)與通用目標(biāo)檢測(cè)相比,行人身體的長(zhǎng)寬比基本是固定的(大致是1.5)。MSCOCO中很大一部分目標(biāo)的長(zhǎng)寬比與行人的比例差距較大,直接將所獲得的先驗(yàn)框應(yīng)用于行人檢測(cè)將會(huì)增加訓(xùn)練模型的時(shí)間。
(1)先從給定樣本X中隨機(jī)挑選1個(gè)當(dāng)作第1個(gè)聚類中心co。
(3)重復(fù)步驟(2)直到選擇出K個(gè)聚類中心。
(4)在MSCOCO的行人子集上使用K-means算法獲得先驗(yàn)框。
由于YOLOv3的特征提取網(wǎng)絡(luò)Darknet-53為了提取不同尺度的特征信息而直接借鑒深度殘差網(wǎng)絡(luò)(Deep residual network,DRN)和FPN結(jié)構(gòu),所提取到的特征中會(huì)出現(xiàn)較多的與行人長(zhǎng)寬比不匹配的信息,而特征提取網(wǎng)絡(luò)提取到的特征很大程度上直接影響后續(xù)的檢測(cè)定位部分的精度以及訓(xùn)練模型的時(shí)間。因此,針對(duì)Darknet-53應(yīng)用于行人檢測(cè)時(shí)提取到較多與行人不匹配的信息的問題,改進(jìn)了當(dāng)前Darknet-53的網(wǎng)絡(luò)結(jié)構(gòu)。
整個(gè)特征提取網(wǎng)絡(luò)的第1部分尤為重要,它決定著整個(gè)特征提取網(wǎng)絡(luò)從場(chǎng)景中提取到的特征信息量。Darknet-53以及其他借鑒ResNet的特征提取網(wǎng)絡(luò)的第1層所使用的結(jié)構(gòu)一般是1個(gè)3×3的卷積網(wǎng)絡(luò)和1個(gè)池化層,來(lái)提取原始的特征信息。為從輸入圖中提取到更多特征,采用如圖1所示的莖塊層(Stream block)結(jié)構(gòu),可以在基本沒有增加有效計(jì)算力的情況下有效地增加所提取到的特征信息量,且比通過增加第1個(gè)卷積層的通道數(shù)能融合更多的信息。
圖1 莖塊層結(jié)構(gòu)圖
原Darknet-53特征提取網(wǎng)絡(luò)中主要使用的結(jié)構(gòu)是如圖2所示的稠密層(Dense layer),通過堆疊Dense layer形成Darknet-53。此類結(jié)構(gòu)輸出層只能獲得單一尺度的感受野(Receptive field)。為獲取不同尺度的感受野,本文將其改進(jìn)為如圖3所示的二路稠密層(Two-way dense layer)結(jié)構(gòu)。其中1條分支使用的是和Darknet-53中的Dense layer一樣的3×3的卷積核和1×1的卷積核,來(lái)提取特征;另1條分支摒棄了原來(lái)的“短路”設(shè)計(jì),采用2個(gè)堆疊的3×3卷積核來(lái)提取大目標(biāo)特征;因而在提取到特征信息的同時(shí),能夠更多地保留大物體尺度特征。
圖2 稠密層結(jié)構(gòu)圖
圖3 二路稠密層結(jié)構(gòu)圖
改進(jìn)后的新特征提取網(wǎng)絡(luò)依舊只使用3個(gè)尺度的特征融合,例如葛雯[12]的論文中新添加了1個(gè)更小尺度的特征融合設(shè)計(jì),用于檢測(cè)更低分辨率的行人,不僅無(wú)法顯著提高mAP(Mean average percision),而且產(chǎn)生更大的計(jì)算量,降低了實(shí)時(shí)性,得不償失。
在損失函數(shù)部分,針對(duì)目標(biāo)定位損失使用L2范數(shù)計(jì)算損失值時(shí)存在的不足,提出了改進(jìn)的方法。在YOLOv3的損失函數(shù)中,整個(gè)損失函數(shù)分為3個(gè)部分:目標(biāo)定位偏移損失Lloc、目標(biāo)置信度損失Lconf和目標(biāo)分類損失Lcls。
在目標(biāo)定位偏移損失中,YOLOv3使用L2范數(shù)計(jì)算預(yù)測(cè)框與真實(shí)框(Ground-truth boxes)之間的差值。
(1)
圖4 L2損失函數(shù)失效場(chǎng)景示意圖
針對(duì)以上問題,本文改進(jìn)為基于交并比(Intersection over union,IoU)函數(shù)的變體廣義交并比(Generalized intersection over union,GIoU)[14],來(lái)計(jì)算目標(biāo)定位損失值。針對(duì)預(yù)測(cè)框Ai與對(duì)應(yīng)的真實(shí)框Bi,損失值計(jì)算如下
(2)
(3)
(4)
式中:N是預(yù)測(cè)產(chǎn)生的矩形框個(gè)數(shù),Ci是Ai與Bi的最小覆蓋矩形。IoUi表征的是Ai與Bi的重疊程度,取值范圍是[0,1]。當(dāng)Ai與Bi接近完全重合時(shí)GIoU(Ai,Bi)=IoU(A,B)=1,而當(dāng)Ai與Bi接近完全不重合時(shí)GIoU(Ai,Bi)=-1,因此GIoUi取值范圍是[-1,1],1-GIoUi的取值范圍是[0,2],總能為每次的檢測(cè)做出有效反饋。而且改進(jìn)的GIoU損失函數(shù)是1個(gè)有界函數(shù),不容易發(fā)生梯度爆炸且具有尺度不變性,比L2更加適合作為損失函數(shù)。
在目標(biāo)置信度損失Lconf中,采用二值交叉熵?fù)p失函數(shù)預(yù)測(cè)目標(biāo)矩形框內(nèi)存在目標(biāo)的概率。
(5)
(6)
在目標(biāo)類別損失Lcls中,同樣采用二值交叉熵?fù)p失函數(shù)來(lái)預(yù)測(cè)目標(biāo)矩形框內(nèi)存在的行人對(duì)象。
(7)
(8)
總的損失值為3個(gè)損失值的加權(quán)和
Loss=λ1Lloc+λ2Lconf+λ3Lcls
式中:λ1、λ2、λ3是3個(gè)用于平衡損失值的平衡因子,在最終的代碼實(shí)現(xiàn)中將λ1、λ2、λ3分別取為1(h×w×9)、1(h×w×9×2)、1(h×w×9×2),其中h、w是輸入圖像的高度和寬度,9是先驗(yàn)框的數(shù)量。
為了驗(yàn)證基于YOLOv3改進(jìn)的行人檢測(cè)算法的有效性,本實(shí)驗(yàn)使用MSCOCO訓(xùn)練集中的“person”子集來(lái)訓(xùn)練模型,分別使用MSCOCO測(cè)試集的“person”子集和自制的行人數(shù)據(jù)集作為測(cè)試集合來(lái)驗(yàn)證模型。
為更好提高召回率,并且減少最終所得的檢測(cè)器對(duì)數(shù)據(jù)集特定樣本的依賴性,在訓(xùn)練過程中對(duì)MSCOCO的“person”子集進(jìn)行標(biāo)準(zhǔn)的數(shù)據(jù)增廣(Data augmentation)操作,比如隨機(jī)翻轉(zhuǎn)、隨機(jī)伸縮圖像尺度、隨機(jī)裁剪以及隨機(jī)改變圖像顏色(亮度、飽和度、對(duì)比度),并對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的線性處理,使得在沒有數(shù)據(jù)覆蓋的區(qū)域能使用簡(jiǎn)單線性插值進(jìn)行學(xué)習(xí)。
將訓(xùn)練所得檢測(cè)模型在MSCOCO測(cè)試集中的行人子集以及自制的行人數(shù)據(jù)集上進(jìn)行對(duì)比分析,驗(yàn)證模型皆在CPU i7 8700上進(jìn)行推理實(shí)驗(yàn)。MSCOCO測(cè)試集上的結(jié)果如表1所示。
可以看出,YOLOv3算法經(jīng)過改進(jìn),應(yīng)用在行人檢測(cè)上,不僅檢測(cè)精度得到了提高,而且也幾乎沒有影響到實(shí)時(shí)性,對(duì)于缺乏計(jì)算資源且沒有圖形處理器(Graphics processing unit,GPU)的平臺(tái)設(shè)備也適用。為了驗(yàn)證基于YOLOv3改進(jìn)的行人檢測(cè)算法在不同復(fù)雜場(chǎng)景下的泛化性能,采集了人群比較密集的樣本621張,對(duì)樣本進(jìn)行行人標(biāo)定,共有2 731個(gè)行人邊界框,從準(zhǔn)確數(shù)、誤檢數(shù)、成功率3個(gè)方面對(duì)算法進(jìn)行比較分析,結(jié)果如表2所示。其中,對(duì)部分樣本的行人檢測(cè)效果如圖5和圖6所示。在圖5(a)與圖6(a)中,2個(gè)算法都能正常檢測(cè)左側(cè)稀疏的人群,而對(duì)右側(cè)的嚴(yán)重密集重疊的3個(gè)人,YOLOv3算法只能檢測(cè)出1個(gè)人,本文改進(jìn)算法可以檢測(cè)出2人。在圖5(b)與圖6(b)中也能發(fā)現(xiàn),改進(jìn)算法比YOLOv3可以更加精確地發(fā)現(xiàn)行人。從表1、表2以及圖5、圖6可以看出,基于YOLOv3改進(jìn)的行人檢測(cè)算法在不同的背景下的檢測(cè)結(jié)果都相對(duì)原始的YOLOv3算法具有較大的提升,更加適合行人檢測(cè)場(chǎng)合。
表2 自制數(shù)據(jù)集的2種算法結(jié)果表
圖5 YOLOv3算法的檢測(cè)結(jié)果圖
圖6 本文改進(jìn)算法的檢測(cè)結(jié)果圖
與YOLOv3的通用目標(biāo)檢測(cè)算法相比,本文改進(jìn)算法通過改進(jìn)預(yù)處理過程的錨框、特征提取網(wǎng)絡(luò)以及目標(biāo)定位損失函數(shù),使其更加易于提取行人特征并提供有效反饋,幾乎不影響模型的推理速度,而且還提高了檢測(cè)精度。因此本文改進(jìn)算法更加適用于行人檢測(cè)。未來(lái)還將繼續(xù)研究行人檢測(cè)如何更好地應(yīng)用到移動(dòng)機(jī)器人領(lǐng)域。