潘 婷,周武杰,b,顧鵬笠
(浙江科技學(xué)院 a.機(jī)械與能源工程學(xué)院;b.信息與電子工程學(xué)院,杭州 310023)
隨著中國(guó)經(jīng)濟(jì)的持續(xù)快速增長(zhǎng),車(chē)輛已成為不可缺少的代步工具,人們對(duì)汽車(chē)的舒適度和安全性提出了更高的要求。在2016年世紀(jì)圍棋大戰(zhàn)落幕之后,2017年迎來(lái)人工智能年,無(wú)人駕駛作為人工智能的熱門(mén)應(yīng)用迎來(lái)了巨大的發(fā)展空間。在無(wú)人駕駛領(lǐng)域,車(chē)輛和行人目標(biāo)檢測(cè)是車(chē)輛感知外界環(huán)境的基礎(chǔ)環(huán)節(jié),也是計(jì)算機(jī)視覺(jué)和圖像處理方向的重要分支[1]。2013年隨著R-CNN[2]被應(yīng)用于目標(biāo)檢測(cè)領(lǐng)域并取得較好效果,深度學(xué)習(xí)的方法開(kāi)始在目標(biāo)檢測(cè)領(lǐng)域發(fā)展起來(lái),主要分為不基于區(qū)域建議和基于區(qū)域建議兩種方式[3]。不基于區(qū)域建議的算法主要采用回歸的思路,其檢測(cè)效果相對(duì)而言不理想但速度較快,Szegedy等[4]通過(guò)深度神經(jīng)網(wǎng)絡(luò)(deep neural network, DNN)采用回歸的方式估計(jì)圖片中目標(biāo)的概率和分?jǐn)?shù);Redmon等[5]提出了一種只需在圖像上看一次(you only look once, YOLO)即可實(shí)現(xiàn)檢測(cè)的算法,通過(guò)將整張圖片分為多個(gè)網(wǎng)格,分別計(jì)算每個(gè)網(wǎng)格包含目標(biāo)及位置的概率檢測(cè)目標(biāo),提高了檢測(cè)速度;之后出現(xiàn)了諸如單個(gè)多盒檢測(cè)器(single shot multibox detector, SSD)[6]、YOLO算法的變形[7]、小型的單個(gè)多樣檢測(cè)器(tiny single shot multibox detector, Tiny SSD)[8]等算法,可以實(shí)現(xiàn)實(shí)時(shí)檢測(cè),但檢測(cè)精度仍略遜于基于區(qū)域建議的算法。基于區(qū)域建議的算法主要分為兩步,一是找到感興趣區(qū)域;二是通過(guò)卷積神經(jīng)網(wǎng)絡(luò)檢測(cè)得到目標(biāo)并標(biāo)定矩形框。通過(guò)在基于區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(regions with CNN, RCNN)算法基礎(chǔ)上不斷改進(jìn),He等[9]提出了空間金字塔池化網(wǎng)絡(luò)(spatial pyramid pooling network, SPP-net),取消了輸入尺寸的限制;Girshick等[10]提出了快速基于區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(fast regions with CNN, Fast RCNN),通過(guò)增加區(qū)域建議融合層減小了計(jì)算量;Ren等[11]提出了更快速的基于區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(faster regions with CNN, Faster RCNN),將目標(biāo)檢測(cè)的4個(gè)步驟融合提高了檢測(cè)精度,并且提高了檢測(cè)效率;之后出現(xiàn)了諸如基于區(qū)域的全卷積神經(jīng)網(wǎng)絡(luò)(region-based fully convolutional networks, R-FCN)[12]、基于掩模的區(qū)域卷積神經(jīng)網(wǎng)絡(luò)特征(mask regions with CNN, Mask RCNN)[13]等網(wǎng)絡(luò)框架,改進(jìn)了基于區(qū)域建議的方法。其中,F(xiàn)aster RCNN算法因較好的性能,被應(yīng)用于諸如車(chē)型識(shí)別、人臉檢測(cè)、醫(yī)療病理檢測(cè)及電力小部件識(shí)別等,并且都取得了較好的結(jié)果。
當(dāng)前車(chē)輛和行人檢測(cè)算法主要是在目標(biāo)檢測(cè)算法的基礎(chǔ)上,針對(duì)車(chē)輛在不同尺度和角度下特征的區(qū)別,以及考慮行人多姿態(tài)的情況,設(shè)計(jì)出有針對(duì)性的算法,諸如行人檢測(cè)的可變形組件模型(deformable part model, DPM)[14]算法和可用于車(chē)輛檢測(cè)的深度學(xué)習(xí)的ZF模型[11]算法等?;谏鲜鲅芯浚狙芯刻岢隽嘶诰矸e神經(jīng)網(wǎng)絡(luò)的車(chē)輛和行人檢測(cè)算法,該算法針對(duì)當(dāng)前算法特征提取時(shí)參數(shù)較多、計(jì)算量較大的不足,以及傳統(tǒng)檢測(cè)算法中特征提取魯棒性較差的現(xiàn)象,在Faster RCNN的開(kāi)源框架的基礎(chǔ)上,利用Squeezenet網(wǎng)絡(luò)框架提取特征,有效減少參數(shù)提高計(jì)算性能,之后在訓(xùn)練學(xué)習(xí)階段通過(guò)在線負(fù)樣本學(xué)習(xí)[15](online hard example mining, OHEM)算法將疑難樣本重新訓(xùn)練以降低損失,并且利用Soft-NMS[16]算法有效抑制多余的檢測(cè)框,能夠較為精確地檢測(cè)出其具體位置,通過(guò)在KITTI數(shù)據(jù)集上驗(yàn)證該算法能夠?qū)崿F(xiàn)車(chē)輛和行人檢測(cè)。
OHEM于2016年被應(yīng)用于Fast RCNN網(wǎng)絡(luò)框架中改進(jìn)檢測(cè)網(wǎng)絡(luò)。在本研究中,通過(guò)采用OHEM算法對(duì)損失函數(shù)的數(shù)值進(jìn)行排序,選擇出同一批次中損失較高的前600個(gè)返回作為困難樣本再訓(xùn)練,以改善隨機(jī)梯度下降(stochastic gradient descent, SGD)過(guò)程,從而獲得更好的模型。具體過(guò)程如下:對(duì)于第t次進(jìn)行SGD迭代的一個(gè)批次的圖像,假設(shè)某一張圖片作為輸入,首先通過(guò)卷積網(wǎng)絡(luò)提取特征圖。之后,在提取感興趣區(qū)域(region of interest, RoI)過(guò)程中,通過(guò)RoI網(wǎng)絡(luò)利用特征圖和所有輸入的RoIs(即某一個(gè)批次中所有樣本的RoI)一起傳遞參數(shù)。通過(guò)對(duì)輸入的RoI進(jìn)行排序以選出當(dāng)前損失值最高的600個(gè)特征圖。該過(guò)程通過(guò)參數(shù)共享降低計(jì)算量。此外,由于選擇了少量的RoIs來(lái)更新模型,所以相較于之前的過(guò)程并沒(méi)有增加太多計(jì)算量,但是由于圖片可能會(huì)出現(xiàn)同一個(gè)位置多個(gè)重疊矩形框,會(huì)導(dǎo)致?lián)p失重復(fù)計(jì)算,因此本研究采用了Soft-NMS算法刪除重疊框。
Soft-NMS算法于2017年被提出,是針對(duì)非極大值抑制(non maximum suppression, NMS)算法的改進(jìn),在檢測(cè)過(guò)程中最后通常需要通過(guò)NMS算法抑制重疊框,具體做法就是設(shè)置閾值,低于此閾值的框?qū)⒈恢苯觿h除,只保留最高得分的幾個(gè)框。不同于NMS算法直接將重疊度較高的框直接刪除的做法,Soft-NMS在考慮到可能重疊部分有兩個(gè)物體的情況,諸如兩輛緊挨著的汽車(chē),此時(shí)直接刪除框可能會(huì)造成漏檢,因此Soft-NMS通過(guò)一個(gè)衰減函數(shù)取代直接刪除框的做法,這對(duì)提高檢測(cè)率有一定的效果。
檢測(cè)過(guò)程主要分為訓(xùn)練階段和測(cè)試階段。通過(guò)大量圖片訓(xùn)練得到合適的模型,之后對(duì)輸入該模型的圖片依次檢測(cè),并且計(jì)算檢測(cè)性能。本研究主要利用了Faster RCNN的開(kāi)源框架,將目標(biāo)檢測(cè)的4個(gè)基本步驟融合到一個(gè)網(wǎng)絡(luò)框架里,通過(guò)共享卷積參數(shù)和利用GPU并行運(yùn)算等方式提升計(jì)算性能,并在此基礎(chǔ)上進(jìn)行了一定的改進(jìn),具體流程如圖1所示:首先將圖片輸入Squeezenet神經(jīng)網(wǎng)絡(luò)中進(jìn)行特征提取,然后通過(guò)RPN網(wǎng)絡(luò)得到感興趣的區(qū)域,將輸出的包含類(lèi)別和邊界框信息的感興趣區(qū)域與Squeezenet提取的特征共同通過(guò)RoI池化層輸出,經(jīng)過(guò)全連接層并進(jìn)行檢測(cè)計(jì)算獲得類(lèi)別分?jǐn)?shù)與邊界框,并將此時(shí)的預(yù)測(cè)值與標(biāo)注信息計(jì)算損失函數(shù),判定參數(shù)好壞。在此過(guò)程中對(duì)損失函數(shù)進(jìn)行排序并將同一批次中損失值較大的600個(gè)樣本作為疑難樣本返回到RoI池化。之后,將RoI池化層輸出的結(jié)果通過(guò)全連接層和分類(lèi)層與邊界框回歸層,獲得最后的檢測(cè)結(jié)果。此過(guò)程重復(fù)多次,最終獲得合適的檢測(cè)模型。其中,將損失值較大的樣本作為疑難樣本返回到RoI池化層的這一過(guò)程僅存在于訓(xùn)練階段。圖中虛線框代表提取的感興趣區(qū)域。
圖1 算法流程圖Fig.1 Algorithm flow chart
本試驗(yàn)中我們使用了KITTI官網(wǎng)[17]提供的訓(xùn)練集(共7 481張圖片),由于官網(wǎng)未提供測(cè)試集的標(biāo)注信息,為了能夠大致了解模型的檢測(cè)精度,將訓(xùn)練集按照8∶1∶1的比例隨機(jī)分為訓(xùn)練集、驗(yàn)證集和測(cè)試集三部分。其中,訓(xùn)練集用于訓(xùn)練得到模型,驗(yàn)證集用于在訓(xùn)練過(guò)程中及時(shí)了解模型性能以便于選出最優(yōu)的模型,測(cè)試集用于最后檢測(cè)模型的性能。隨機(jī)處理獲得數(shù)據(jù)集之后,處理得到合適的數(shù)據(jù)格式。部分樣例如圖2所示,包含諸多情況下的場(chǎng)景。我們通過(guò)同一個(gè)模型對(duì)這兩者一起進(jìn)行訓(xùn)練和最終的測(cè)試,即實(shí)現(xiàn)了多類(lèi)檢測(cè)。
圖2 訓(xùn)練數(shù)據(jù)集樣例Fig.2 Examples of training data
為了驗(yàn)證基于Faster RCNN方法在車(chē)輛和行人檢測(cè)中的具體應(yīng)用具有可行性,試驗(yàn)在Linux環(huán)境下完成,采用Ubuntu 16.04系統(tǒng),硬件設(shè)施如下:16 GB內(nèi)存,GPU為NVIDIA 1070的顯卡,包含8 GB顯存,通過(guò)Python語(yǔ)言完成試驗(yàn)。
通過(guò)輸入如圖3所示的待測(cè)試圖片,當(dāng)圖片包含諸如形態(tài)不同、存在遮擋以及尺寸較小等諸多情況時(shí),可以發(fā)現(xiàn)該模型能夠很好地檢測(cè)出車(chē)輛和行人,并且針對(duì)不同視角和不同尺寸的目標(biāo)也能夠?qū)崿F(xiàn)較好的檢測(cè)結(jié)果,對(duì)光照、姿態(tài)、尺寸等都具有一定的抗干擾性,具體結(jié)果如圖3所示。其中,面對(duì)同一張圖片同時(shí)包含車(chē)輛和行人時(shí),能夠用同一個(gè)模型同時(shí)檢測(cè)出結(jié)果,并且分別給出得分。在測(cè)試過(guò)程中,我們將檢測(cè)目標(biāo)的置信度設(shè)置為0.8,如圖3所示的p(car|box)≥0.8,這意味著只有當(dāng)檢測(cè)到車(chē)輛或行人的概率超過(guò)0.8時(shí)才框定出位置。
圖3 測(cè)試集圖片檢測(cè)結(jié)果示例Fig.3 Detection results about testing data
通過(guò)與傳統(tǒng)典型可變形的組件模型算法和ZF網(wǎng)絡(luò)模型的深度學(xué)習(xí)算法的比較可以發(fā)現(xiàn),我們提出的算法獲得了較好的檢測(cè)結(jié)果。當(dāng)前,目標(biāo)檢測(cè)主要通過(guò)計(jì)算一批圖片的平均正確率(average precision, AP)代表檢測(cè)結(jié)果的準(zhǔn)確率,由于我們的方法可以檢測(cè)車(chē)輛和行人兩個(gè)類(lèi)別,因此要對(duì)兩個(gè)類(lèi)別的檢測(cè)結(jié)果算平均AP值(mean average precision, mAP)作為最終的檢測(cè)結(jié)果準(zhǔn)確率。本文方法的車(chē)輛檢測(cè)結(jié)果準(zhǔn)確率為60.1%,行人檢測(cè)結(jié)果準(zhǔn)確率為34.6%,平均檢測(cè)準(zhǔn)確率為47.4%,具體結(jié)果如表1所示。其中,由于KITTI數(shù)據(jù)集主要包含車(chē)輛信息,行人的數(shù)據(jù)偏少,在訓(xùn)練過(guò)程中,行人的正樣本信息所占比率小于車(chē)輛的數(shù)據(jù),訓(xùn)練不夠充分,導(dǎo)致結(jié)果中行人檢測(cè)率較低。
表1 測(cè)試結(jié)果對(duì)比Table 1 Comparison of detection results %
本研究在Faster RCNN的網(wǎng)絡(luò)框架基礎(chǔ)上,通過(guò)加入Squeezenet網(wǎng)絡(luò),在不影響精度的前提下提高了運(yùn)算性能,之后通過(guò)加入OHEM算法對(duì)負(fù)樣本進(jìn)行及時(shí)學(xué)習(xí),從而有效地提高了檢測(cè)率。試驗(yàn)結(jié)果表明,本方法可以有效地通過(guò)一個(gè)模型同時(shí)檢測(cè)出車(chē)輛與行人。可是,由于訓(xùn)練樣本太少等問(wèn)題導(dǎo)致本方法有一定的誤檢率和漏檢率,因此有待進(jìn)一步研究。