劉婷婷,王賽,凌云,郁翰文
(南京信息工程大學(xué) 自動(dòng)化學(xué)院,江蘇南京, 210000)
在目前的行人檢測中系統(tǒng)研發(fā)中,檢測速度和檢測精度是制約車載識(shí)人發(fā)展的兩大難點(diǎn)和痛點(diǎn)。基于視覺的行人檢測技術(shù)是近年來被重點(diǎn)關(guān)注和研究的一項(xiàng)關(guān)鍵技術(shù)。在多種傳感器中,視覺傳感器具有更豐富的信息量、更高的精確性、功能更加豐富以及更合理的成本等優(yōu)勢(shì)。
文獻(xiàn)[1]出了一種適用于多樣復(fù)雜環(huán)境下多尺度行人實(shí)時(shí)檢測的方法,該方法可自適應(yīng)提取可見光或紅外背景下的多尺度行人,滿足實(shí)際的檢測精度;文獻(xiàn)[2]針對(duì)基于視頻行人檢測的深度學(xué)習(xí)檢測框架計(jì)算復(fù)雜度較高的問題,提出一種改進(jìn)的SSD檢測框架,從而實(shí)現(xiàn)計(jì)算量的減少。文獻(xiàn)[3]提出了一種頭部感知行人檢測網(wǎng)絡(luò)(HAPNet),提高了遮擋條件下的行人檢測性能。
針對(duì)檢測速度慢這一痛點(diǎn),隨著邊緣計(jì)算的發(fā)展,采取在車輛終端部署邊緣設(shè)備的方式,不僅能夠?qū)崿F(xiàn)直接在邊緣設(shè)備上處理圖像數(shù)據(jù)、推斷計(jì)算進(jìn)行檢測,還能通過一定的技術(shù)手段達(dá)到行人檢測這一應(yīng)用對(duì)高標(biāo)準(zhǔn)實(shí)時(shí)性的要求。本文基于RFB算法思想,對(duì)其進(jìn)行改進(jìn),設(shè)計(jì)了RFB—Nano算法,并將其部署在邊緣設(shè)備上,改進(jìn)的算法有效地提高了檢測實(shí)時(shí)性,達(dá)到精確性和實(shí)時(shí)性的有效平衡表現(xiàn)。
在人類的視覺皮層中,群體感受野(Population Receptive Field,PRF)的規(guī)模大小是視網(wǎng)膜圖中離心率的函數(shù),雖然各個(gè)感受野之間有差異,但是群體感受野的規(guī)模大小與離心率都呈正相關(guān)趨勢(shì)。劉等人[4]受到人類感受野RF結(jié)構(gòu)的啟發(fā),提出了RFB(Receptive Field Block),以加強(qiáng)輕量級(jí)CNN模型中對(duì)于深層特征的提取能力,如圖1所示,RFB設(shè)計(jì)了多分支結(jié)構(gòu),并且在各分支上設(shè)計(jì)了不同尺度的常規(guī)卷積和空洞卷積,并通過concat(銜接)和1*1卷積,減少特征圖的通道數(shù),生成最終的特征表達(dá)。
圖1 RFB模塊
VGG16由5組共13個(gè)卷積層、3個(gè)全連接層和5個(gè)池化層組成。由于一個(gè)5*5的卷積可以由兩個(gè)3*3卷積串聯(lián)實(shí)現(xiàn),且感受野大小仍為5*5,因此整個(gè)VGG16網(wǎng)絡(luò)均使用了同樣尺寸大小的3*3卷積核進(jìn)行堆疊,這樣的連接方式既減少了網(wǎng)絡(luò)模型的參數(shù)量,多層的ReLU激活函數(shù)也使得網(wǎng)絡(luò)有更多的非線性變化,從而使得CNN的特征提取能力更強(qiáng);此外,每組卷積層后都使用了2*2尺寸的最大池化層,以縮小特征圖尺寸,降低計(jì)算量;網(wǎng)絡(luò)最后還有3個(gè)全連接層,其中前兩個(gè)全連接層各含有4096個(gè)神經(jīng)元,通過增加的dropout機(jī)制,隨機(jī)丟掉一些全連接層節(jié)點(diǎn),達(dá)到防止過擬合的作用,最后一個(gè)全連接層輸出圖片中每個(gè)類別的概率,圖片的最終分類結(jié)果為概率最大的類別。
本文提出的RFB_Nano檢測模型如圖2所示,相對(duì)RFBNet而言,對(duì)VGG16的特征提取網(wǎng)絡(luò)進(jìn)行通道上的削減以及卷積數(shù)量的減少,添加了1*1卷積層,使得模型參數(shù)大幅度減少;添加了BN層,使得模型訓(xùn)練收斂速度加快;只使用了一個(gè)改進(jìn)的RFB模塊,在保證不犧牲性能的前提下使得網(wǎng)絡(luò)更加簡單。在不同層的多尺度特征融合機(jī)制中,在保證精度不損失的前提下減少參數(shù)量。
圖2 RFB—Nano檢測模型
2.1.1 改進(jìn)的RFB模塊
本文對(duì)RFB模塊的第一個(gè)卷積分支進(jìn)行改進(jìn),如圖3所示,增加了一個(gè)3*3卷積層,并且將原來3*3空洞卷積因子設(shè)置為2。
圖3 改進(jìn)的RFB模塊
2.1.2 特征提取網(wǎng)絡(luò)的壓縮
本文提出的RFB_Nano檢測模型,首先是對(duì)特征提取網(wǎng)絡(luò)的壓縮,將VGG16中的全連接層替換為卷積層,這一點(diǎn)會(huì)大大的提升速度,因?yàn)閂GG中的FC層都需要大量的運(yùn)算,有大量的參數(shù),需要進(jìn)行前向推理,并自定義卷積層,直接使用卷積層進(jìn)行檢測。在不損失網(wǎng)絡(luò)性能的前提下,盡可能地提高檢測推斷時(shí)的速度,以達(dá)到實(shí)時(shí)處理的效果。根據(jù)上述特征提取網(wǎng)絡(luò)中含有大量卷積層,每組卷積都含有大量的卷積核數(shù)目的網(wǎng)絡(luò)特性,本文采取削減網(wǎng)絡(luò)通道和卷積層數(shù)量的方式:削減每一層的卷積核數(shù)目為原來的一半,且最多卷積核數(shù)目為256;且在第三組至第五組的卷積層中各去掉了一個(gè)3*3卷積層,在第五組還去掉了一個(gè)最大池化層。
2.1.3 1*1卷積
在RFB_Nano模型的網(wǎng)絡(luò)中從第三層開始,在每組卷積層中的3*3卷積層之前都添加了一層1*1卷積層。
1*1卷積即為卷積核尺寸為1的卷積,使用1*1卷積加在常規(guī)卷積后,加深加寬網(wǎng)絡(luò)結(jié)構(gòu),改進(jìn)網(wǎng)絡(luò)的特征提取抽象表示。
1*1卷積的具體作用有如下三點(diǎn):
(1)升(降)維
一般來說,對(duì)于尺寸大小為n*n(n>1)的卷積核,通常還要考慮邊緣補(bǔ)0的個(gè)數(shù)以及每次卷積移動(dòng)的步長,但是當(dāng)卷積核尺寸為1*1時(shí),可以根據(jù)具體的需求控制卷積核的數(shù)量,從而實(shí)現(xiàn)進(jìn)行降(升)維。
(2)增加非線性
1*1卷積核的卷積過程相當(dāng)于全連接層的計(jì)算過程,并且通過1*1卷積層還加入了非線性激活函數(shù),從而增加了網(wǎng)絡(luò)的非線性,使得網(wǎng)絡(luò)可以表達(dá)更加復(fù)雜的特征。
(3)減少模型參數(shù)
在常見的檢測模型中,由于需要進(jìn)行較多的卷積運(yùn)算,計(jì)算量十分龐大,因此可以通過引入1*1卷積,在保證精度的情況下減少計(jì)算量。
以GoogleNet中的Inception為例,圖4(a)是原始的Inception模塊,圖4(b)是加入1*1 卷積層進(jìn)行降維后的Inception。輸入的特征圖大小為28*28*192,左圖的各個(gè)卷積核大小分別為1*1*64、3*3*128、5*5*32,右圖中在3*3、5*5 卷積前加入的1*1的卷積核的通道數(shù)分別為96和16。
圖4
則圖a中該層的參數(shù)量大小為:
圖b中該層的參數(shù)量大小為:
由此可見整個(gè)參數(shù)量大約減少了三分之一。
2.1.4 BN層
BN層主要解決的問題是當(dāng)?shù)蛯泳W(wǎng)絡(luò)在訓(xùn)練時(shí)由于參數(shù)的更新導(dǎo)致后續(xù)網(wǎng)絡(luò)層輸入數(shù)據(jù)分布的變化。它對(duì)每一層的輸入數(shù)據(jù)先進(jìn)行歸一化的預(yù)處理以后,再進(jìn)入網(wǎng)絡(luò)的下一層。
假設(shè)某層神經(jīng)網(wǎng)絡(luò)具有d維的輸入數(shù)據(jù)為:
則對(duì)于該網(wǎng)絡(luò)層輸入數(shù)據(jù)的歸一化預(yù)處理方法為:
在上式中,網(wǎng)絡(luò)訓(xùn)練采用的是batch隨機(jī)梯度下降方法,x(k)表示該批次訓(xùn)練數(shù)據(jù)中第k個(gè)神經(jīng)元,E(x(k))表示網(wǎng)絡(luò)中每一批次的參與訓(xùn)練的神經(jīng)元x(k)的平均值,Var(x(k))表示每一批訓(xùn)練數(shù)據(jù)神經(jīng)元x(k)的方差。
為了防止上式的歸一化方法影響到本層學(xué)習(xí)到的特征,引進(jìn)了一對(duì)可學(xué)習(xí)的重構(gòu)參數(shù)γ、β,且每個(gè)神經(jīng)元x(k)都有一對(duì)參數(shù)γ(k)、β(k):
綜上所述,BN層的前向傳播的過程即為:
其中,m為mini-batch的大小。
在本文提出的RFB_Nano檢測模型中,一方面由于BN層具有快速訓(xùn)練收斂的特性,因此選擇了較大的初始學(xué)習(xí)率,學(xué)習(xí)率的衰減也很快,相較于RFBNet來說大幅度提升了訓(xùn)練速度,減少了對(duì)初始化的依賴程度;另一方面,由于BN層具有提高網(wǎng)絡(luò)泛化能力的特性,省去了drop out層以及參數(shù)的選取問題。
2.1.5 多尺度特征融合機(jī)制
在本文提出的RFB_Nano中,如表1所示,分別在conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2的特征圖上的每個(gè)單元取4、4、4、4、4、3個(gè)default box,對(duì)于300*300的輸入,則共會(huì)得到38*38*4+19*19*4+10*10*4+5*5*4+3*3*4+1*1*3=7759個(gè)default box。由此可見,每張圖片的default box數(shù)量有了一定幅度的減少,從而減少了網(wǎng)絡(luò)模型的計(jì)算量。
表1 SSD不同層的特征圖尺寸及Prior Box數(shù)量
2.2.1 RFBNet損失函數(shù)
RFBNet的損失函數(shù)與SSD一致,默認(rèn)框default box首先和真實(shí)框ground truth按照一定的原則進(jìn)行匹配,接著根據(jù)匹配到的一對(duì)boxes分別計(jì)算分類損失和定位損失。
2.2.2 RFB_Nano損失函數(shù)
本文基于RFBNET的損失函數(shù)進(jìn)行了改進(jìn),設(shè)計(jì)了RFB_Nano的損失函數(shù),RFB_Nano中的定位損失采用SmoothL1Loss, 為了平衡正負(fù)樣本的個(gè)數(shù),采用的方法是Hard Negative Mining。在RFB_Nano中除了Hard Negative Mining,還采用了類加權(quán)交叉熵進(jìn)行一定的分類性能上的改進(jìn)。
由于目標(biāo)檢測問題中背景占主導(dǎo)地位,因此需要處理不同類別之間的嚴(yán)重失衡問題。在圖像分類任務(wù)中,唯一可能的錯(cuò)誤是前景類別之間的錯(cuò)誤分類,但是在目標(biāo)檢測任務(wù)中,錯(cuò)誤多發(fā)生在前景和背景的區(qū)分中,而不是前景中幾類物體之間的分類中。在行人檢測中,由于行人這類物體在背景中所占比例較小,為了解決這個(gè)問題,采用類加權(quán)交叉熵作為分類損失:
在背景類中使用較大的權(quán)重,在其他類中使用相對(duì)較小的權(quán)重,例如,在本文選取的數(shù)據(jù)集上的實(shí)驗(yàn)中,背景類使用ω0=1.5,行人類使用ωi=1。
本文實(shí)驗(yàn)采取了英偉達(dá)公司推出的新一代人工智能計(jì)算機(jī)Jetson Nano,它是一款小型、低功耗但功能非常強(qiáng)大的AI系統(tǒng),如圖5所示,開啟了嵌入式物聯(lián)網(wǎng)應(yīng)用程序的新領(lǐng)域。
圖5
基于邊緣設(shè)備平臺(tái)的行人檢測系統(tǒng)應(yīng)該具有較低的延時(shí)、較高的準(zhǔn)確度和較少的內(nèi)存占據(jù)空間的特點(diǎn)。該行人檢測系統(tǒng)的工作流程圖如圖6所示。
圖6 行人檢測系統(tǒng)工作流程圖
在邊緣設(shè)備上基于深度學(xué)習(xí)的行人檢測系統(tǒng)的運(yùn)行大致分為以下步驟:
(1)視頻采集及預(yù)處理模塊:將攝像頭正確連接,系統(tǒng)獲取到該攝像頭的輸入后,通過攝像頭驅(qū)動(dòng)V4L2和視頻編解碼組件Gstreamer的作用有效處理視頻輸入,并使用openCV將實(shí)時(shí)視頻圖像分割為單幀圖像;
(2)行人檢測模塊:加載訓(xùn)練好的網(wǎng)絡(luò)模型文件,得到單幀圖片的檢測結(jié)果;
(3)預(yù)警決策模塊:當(dāng)行人目標(biāo)出現(xiàn)且行人檢測框大小面積占整張輸入圖片面積的比例超過閾值時(shí),行人檢測系統(tǒng)將發(fā)出預(yù)警信號(hào);
(4)完成行人檢測結(jié)果的輸出后,系統(tǒng)將繼續(xù)進(jìn)行下一幀的圖像的處理,重復(fù)上述步驟。
RFB_Nano算法的行人檢測原理流程圖如圖7所示,首先對(duì)不含標(biāo)簽的數(shù)據(jù)集進(jìn)行一定的圖像預(yù)處理,通過特征提取網(wǎng)絡(luò)以后,在conv4_3、conv7、conv8_2、conv9_2、conv10_2、conv11_2這六個(gè)特征層上通過3*3卷積對(duì)各個(gè)default box進(jìn)行類別置信度和邊界框位置的預(yù)測,每個(gè)box預(yù)測屬于每個(gè)類別的置信度和該box對(duì)應(yīng)的預(yù)測邊界框的坐標(biāo)信息。對(duì)于得到的每個(gè)預(yù)測框,取其類別置信度的最大值,若該最大值大于置信度閾值,則最大值所對(duì)應(yīng)的類別即為該預(yù)測框的類別,否則過濾掉此框;對(duì)于保留的預(yù)測框根據(jù)它對(duì)應(yīng)的先驗(yàn)框進(jìn)行解碼得到其真實(shí)的位置參數(shù),然后根據(jù)所屬類別置信度進(jìn)行降序排列,取top-k個(gè)預(yù)測框,最后進(jìn)行NMS,過濾掉重疊度較大的預(yù)測框,最后得到檢測結(jié)果。
圖7 RFB_Nano算法的行人檢測流程圖
為了驗(yàn)證本文提出算法的有效性,將RFB_Nano與RFBNet進(jìn)行對(duì)比實(shí)驗(yàn)。為了保證對(duì)比實(shí)驗(yàn)的公正性,兩種算法在服務(wù)器端的同一實(shí)驗(yàn)環(huán)境下,采用了相同的數(shù)據(jù)集進(jìn)行訓(xùn)練,訓(xùn)練均采用PyTorch深度學(xué)習(xí)框架,設(shè)定了相同的超參數(shù),并且訓(xùn)練了相同的次數(shù),分別得到各自的權(quán)重模型。在進(jìn)行測試時(shí),選用VOC2007測試集、BDD100K測試集以及自制數(shù)據(jù)集的融合測試集,選擇了相同的圖像輸入(300*300),以及相同的NMS閾值(0.5)。
本文從檢測精度指標(biāo)mAP、檢測速度指標(biāo)FPS、檢測模型的尺寸、檢測模型的參數(shù)量params和計(jì)算量FLOPs五個(gè)方面對(duì)算法進(jìn)行客觀評(píng)估(在服務(wù)器實(shí)驗(yàn)環(huán)境中),如表2所示。
表2 服務(wù)器端RFB_Nano與RFBNet的實(shí)驗(yàn)結(jié)果對(duì)比
從表中可見,在服務(wù)器端的同一實(shí)驗(yàn)條件下,基于改進(jìn)的RFB_Nano算法相比RFBNet而言,在模型尺寸被大大壓縮的情況下,仍具有更高的檢測精度、更快的檢測速率,且具有相對(duì)更小的參數(shù)量和計(jì)算量,實(shí)驗(yàn)證明將其作為嵌入式端部署的行人檢測算法更為合理,在各方面都具有一定的優(yōu)越性。
為了進(jìn)一步對(duì)本文設(shè)計(jì)的行人檢測系統(tǒng)進(jìn)行測試驗(yàn)證,實(shí)驗(yàn)選取場景1和場景2作為兩個(gè)特定測試路口,分別在白天和夜晚進(jìn)行拍攝,并且分別從這四段測試視頻序列中隨機(jī)抽取100張幀圖像進(jìn)行行人檢測系統(tǒng)的測試,其中在白天和晚上的兩個(gè)場景中分別選取一幀,實(shí)驗(yàn)結(jié)果如圖8所示。
圖8 兩個(gè)特定場景的白天及夜晚中某一幀的檢測結(jié)果
圖8 虛擬仿真實(shí)驗(yàn)的Web發(fā)布
根據(jù)行人檢測實(shí)驗(yàn)的客觀結(jié)果,分別對(duì)兩個(gè)路口的白天和夜晚這四個(gè)場景進(jìn)行召回率、漏檢率、準(zhǔn)確率以及誤檢率的數(shù)據(jù)統(tǒng)計(jì),如表3~表6所示。
表3 場景1白天的行人檢測結(jié)果數(shù)據(jù)統(tǒng)計(jì)
表6 場景2夜晚的行人檢測結(jié)果數(shù)據(jù)統(tǒng)計(jì)
表4 場景1夜晚的行人檢測結(jié)果數(shù)據(jù)統(tǒng)計(jì)
表5 場景2白天的行人檢測結(jié)果數(shù)據(jù)統(tǒng)計(jì)
由數(shù)據(jù)統(tǒng)計(jì)表可知,當(dāng)行人目標(biāo)距離攝像頭小于5米時(shí),不管是白天還是夜晚的檢測結(jié)果,召回率(檢測正確的行人目標(biāo)占實(shí)際行人目標(biāo)總數(shù)的百分比)都能夠保證在96.3%±0.5%的范圍內(nèi),準(zhǔn)確率保證在99.5%±0.5%范圍內(nèi)(算法輸出的行人目標(biāo)數(shù)與實(shí)際行人目標(biāo)數(shù)的比值);當(dāng)行人目標(biāo)距離攝像頭在5米至10米之間時(shí),召回率保證在86%±3%的范圍內(nèi),精確度在95%±2%的范圍內(nèi);當(dāng)行人目標(biāo)距離攝像頭大于10米小于20米時(shí),由于白天和夜晚的光照條件差異,兩個(gè)場景下白天的召回率在78%±2%的區(qū)間范圍內(nèi),精確度在94%±1%區(qū)間內(nèi),而夜晚的召回率范圍在67%左右,精確度在90%±2%范圍內(nèi);當(dāng)行人目標(biāo)距離攝像頭超過20米時(shí),召回率均在36%±4%范圍內(nèi),精確度在88%±2%左右。
RFB_Nano行人檢測算法在近、中距離能夠取得較好的檢測成果,檢測精度能夠達(dá)到90%±6%的百分比,檢測速度FPS為31.6幀/秒,并且根據(jù)檢測結(jié)果給出相應(yīng)的預(yù)警建議,因此通過實(shí)驗(yàn)驗(yàn)證,該行人檢測系統(tǒng)能夠進(jìn)行精確且流暢的行人檢測任務(wù)。而由于設(shè)備的計(jì)算力、攝像頭的分辨率和模型訓(xùn)練數(shù)據(jù)的影響,該行人檢測系統(tǒng)對(duì)于中、遠(yuǎn)距離的檢測效果有限,但是仍能夠在光照條件較好、背景較為單一的場景下起到一定的作用。