張 童,譚南林,包辰銘
(北京交通大學(xué)機(jī)械與電子控制工程學(xué)院,北京 100044)
隨著智能駕駛和機(jī)器人在工業(yè)、軍事和科學(xué)研究方面的快速發(fā)展,目標(biāo)檢測(cè)技術(shù)的發(fā)展顯得尤為重要。智能駕駛的自動(dòng)導(dǎo)航和避障受到了越來(lái)越多的關(guān)注,為了保障無(wú)人駕駛和機(jī)器人運(yùn)動(dòng)的安全性,必須有實(shí)時(shí)的目標(biāo)檢測(cè)技術(shù)。不同環(huán)境下的障礙物檢測(cè)由于環(huán)境的不同、目標(biāo)形態(tài)的多變性、光照不同的外部條件變化等,檢測(cè)起來(lái)難度較高。
現(xiàn)有紅外行人檢測(cè)一般有兩種方法,一種是基于人工提取特征進(jìn)行特征學(xué)習(xí)并分類(lèi)的方法[1],一種是基于深度學(xué)習(xí)提取特征的方法[2]?;谌斯ぬ崛√卣鳈z測(cè)的方式,是在給定的一張圖像上選取固定大小的區(qū)域,利用選取的區(qū)域人工設(shè)計(jì)提取特征(比如HOG[3]、SIFT[4]),對(duì)于提取的特征進(jìn)行學(xué)習(xí)并用分類(lèi)器進(jìn)行分類(lèi)(比如SVM[3])。此類(lèi)方需通過(guò)滑動(dòng)窗口實(shí)現(xiàn),時(shí)間復(fù)雜度較高,且魯棒性不強(qiáng),很難保障紅外行人檢測(cè)的實(shí)時(shí)性。基于深度學(xué)習(xí)的方法是利用深度卷積網(wǎng)絡(luò)[5]從圖像中提取特征從而進(jìn)行目標(biāo)檢測(cè)的方法,其特征一般要強(qiáng)于人工提取的特征,可分為one-stage和two-stage兩大類(lèi)。先提出來(lái)的two-stage通過(guò)產(chǎn)生潛在候選區(qū)域,根據(jù)訓(xùn)練的分類(lèi)器來(lái)進(jìn)行分類(lèi),代表性的網(wǎng)絡(luò)為R-CNN[6]、SPPNet[7]、Fast R-CNN[8]和Faster R-CNN[9]等。One-stage的方法是直接通過(guò)神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)出行人的位置,代表性網(wǎng)絡(luò)有SSD[10]和YOLO[11]。隨著YOLO[11-13]的提出和不斷改進(jìn),YOLOv2[12]和YOLOv3[13]增強(qiáng)了模型的魯棒性和準(zhǔn)確率及檢測(cè)速度,且準(zhǔn)確率上已經(jīng)超過(guò)了SSD。
綜合考慮上述問(wèn)題,本文提出了一種新型紅外行人檢測(cè)方法,可以應(yīng)用于嵌入式設(shè)備。新方法的檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)以YOLOv3模型為基礎(chǔ),對(duì)其模型參數(shù)進(jìn)行優(yōu)化,并結(jié)合MobileNet[14]網(wǎng)絡(luò)將原始網(wǎng)絡(luò)層進(jìn)行壓縮、簡(jiǎn)化,學(xué)習(xí)MobileNet網(wǎng)絡(luò)的深度可分離卷積(Depth-wise Separable Convolutions)的思想壓縮網(wǎng)絡(luò)模型參數(shù),同時(shí)利用YOLOv3的框架思路來(lái)提升網(wǎng)絡(luò)的檢測(cè)能力。
YOLO(You Look Only Once)是由Redmon等人在2015年首先提出來(lái)的[11],該模型不需要生成建議區(qū)域,直接對(duì)圖像進(jìn)行卷積操作,是一個(gè)End-to-End的網(wǎng)絡(luò)。該模型利用整張圖作為整個(gè)神經(jīng)網(wǎng)絡(luò)的Input,直接在輸出層利用回歸的思想計(jì)算出Bounding Box(邊界框)的位置及其類(lèi)別,隨后通過(guò)非極大值抑制操作(NMS)去除多余的預(yù)測(cè)邊界框,最終得到預(yù)測(cè)結(jié)果。Redmon等人于2016年提出了改進(jìn)版YOLOv2[12],2018年提出 YOLOv3[13],對(duì)YOLO系列進(jìn)行了革命性的改造,作者設(shè)計(jì)出高效的Darknet-53網(wǎng)絡(luò),使用了大量的1×1、3×3的卷積核,圖像的大小縮減為1/32,即YOLOv3要求輸入圖片是32的倍數(shù)。
YOLOv3目標(biāo)檢測(cè)模型采用自主設(shè)計(jì)的Darknet-53網(wǎng)絡(luò)模型提取特征,但是該網(wǎng)絡(luò)模型有53層深度,且在卷積運(yùn)算過(guò)程中參數(shù)眾多,這導(dǎo)致在網(wǎng)絡(luò)運(yùn)行前向傳播的過(guò)程中,特征提取模型參數(shù)文件大,耗費(fèi)時(shí)間長(zhǎng),無(wú)法應(yīng)用于嵌入式平臺(tái)。
在紅外行人檢測(cè)中,檢測(cè)目標(biāo)單一(行人),紅外圖像的色彩豐富度較低??紤]到Y(jié)OLOv3的Darknet-53網(wǎng)絡(luò)模型是針對(duì)COCO和VOC多種類(lèi)目標(biāo)檢測(cè)而設(shè)計(jì),將其應(yīng)用于紅外圖像的行人檢測(cè)時(shí),可以通過(guò)減少部分網(wǎng)絡(luò)層數(shù)簡(jiǎn)化網(wǎng)絡(luò)來(lái)提升紅外行人檢測(cè)速度。
現(xiàn)有神經(jīng)網(wǎng)絡(luò)優(yōu)化方法多采用兩種方式來(lái)取得較小且有效的網(wǎng)絡(luò)。一種是壓縮預(yù)訓(xùn)練模型;另一種是直接設(shè)計(jì)一個(gè)小型有效的網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。代表性的研究有:Christian Szegedy提出Inception網(wǎng)絡(luò)[15],使用多尺寸卷積核去觀察輸入數(shù)據(jù),并加入1×1的卷積核對(duì)數(shù)據(jù)進(jìn)行降維處理;Bottleneck對(duì)Inception進(jìn)行了改進(jìn)[16],先用逐點(diǎn)卷積來(lái)降維,再進(jìn)行常規(guī)卷積,最后逐點(diǎn)卷積來(lái)升維,該方法大大減小了計(jì)算量。Howard A G在Bottleneck的基礎(chǔ)上提出了深度可分離卷積(Depth-Wise Separable Conv)[14],將標(biāo)準(zhǔn)卷積分解成深度卷積和逐點(diǎn)卷積,大幅度降低了模型的參數(shù)量和計(jì)算量,運(yùn)算分解圖如圖1所示。
圖1中,a為標(biāo)準(zhǔn)的卷積核,為Dk×Dk×M的標(biāo)準(zhǔn)卷積矩陣,b是Dk×Dk×1 的深度卷積矩陣,c為1×1×M的逐點(diǎn)卷積矩陣。
兩種不同方式的計(jì)算量如下:
標(biāo)準(zhǔn)卷積計(jì)算量為:
Gs=Dk×Dk×M×N×DF×DF
(1)
深度可分離卷積計(jì)算量為 :
Gds=Dk×Dk×M×DF×DF+M×N×DF×DF
(2)
將深度可分離卷積和標(biāo)準(zhǔn)卷積對(duì)比:
(3)
當(dāng)選取的Dk=3時(shí),計(jì)算量大概為標(biāo)準(zhǔn)卷積的1/9,計(jì)算示意圖如圖2所示。圖2中,a為標(biāo)準(zhǔn)卷積,b為深度可分離卷積,在深度卷積和逐點(diǎn)卷積之后都跟有一個(gè)BN和ReLU運(yùn)算,標(biāo)準(zhǔn)卷積和深度可分離卷積運(yùn)算之后的特征圖尺寸和維度都相同。
圖1 深度可分離卷積運(yùn)算
圖2 Dk=3時(shí)標(biāo)準(zhǔn)卷積和DW卷積計(jì)算對(duì)比圖
基于上述內(nèi)容和紅外圖像的特點(diǎn),我們結(jié)合改進(jìn)后的深度卷積結(jié)構(gòu)對(duì)YOLOv3模型主要進(jìn)行了以下改進(jìn):
①采用MobileNet網(wǎng)絡(luò)替換Darknet-53網(wǎng)絡(luò)模型減少網(wǎng)絡(luò)的計(jì)算參數(shù)和模型大小。針對(duì)Darknet-53網(wǎng)絡(luò)模型較大,層數(shù)教深,不適合移植至嵌入式設(shè)備的問(wèn)題,將其改進(jìn)為Andrew G.Howard在深度可分離卷積基礎(chǔ)上提出應(yīng)用于嵌入式設(shè)備的MobileNet[11]網(wǎng)絡(luò),并將其原本的MobileNet-224網(wǎng)絡(luò)修改為MobileNet-320以獲得更好的準(zhǔn)確率。
②將YOLOv3的輔助預(yù)測(cè)網(wǎng)絡(luò)部分的傳統(tǒng)卷積修改為深度可分離卷積。YOLOv3網(wǎng)絡(luò)模型輔助預(yù)測(cè)層有較多3×3傳統(tǒng)卷積,利用深度可分離卷積將傳統(tǒng)3×3卷積優(yōu)化為深度卷積和逐點(diǎn)卷積以獲得更小更快的模型。
③在進(jìn)行預(yù)測(cè)時(shí),在CVC-09和CVC-14兩個(gè)數(shù)據(jù)集上重新在三個(gè)尺度使用K-means方法聚類(lèi)出9個(gè)Bounding box,平均 IOU準(zhǔn)確率達(dá)到87.23 %。
改進(jìn)后的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。從圖3中可見(jiàn),基礎(chǔ)網(wǎng)絡(luò)采用改進(jìn)并去除最后全連接層的MobileNet-320網(wǎng)絡(luò),輔助預(yù)測(cè)的網(wǎng)絡(luò)層使用經(jīng)典的YOLOv3結(jié)構(gòu),在MobileNet-320中提取出三個(gè)不同尺度的特征圖的進(jìn)行多尺度特征融合進(jìn)行預(yù)測(cè)。
模型的原始圖片輸入尺寸是320×320,在網(wǎng)絡(luò)前向傳播中,提取出三個(gè)通道的特征圖輸入到預(yù)測(cè)網(wǎng)絡(luò),其特征圖尺寸為40×40×256、20×20×512和10×10×1024,圖3所示的網(wǎng)絡(luò)結(jié)構(gòu)中,通過(guò)跳躍連接的兩個(gè)特征圖具有相同的尺度,兩處的特征圖的跳躍連接分別是20×20大小的尺度連接和40×40大小的尺度連接。在模型預(yù)測(cè)時(shí),每一個(gè)Grid cell預(yù)測(cè)3個(gè)Bounding box,因?yàn)楦倪M(jìn)的紅外行人檢測(cè)模型采用的多尺度特征預(yù)測(cè),一共在三個(gè)尺度進(jìn)行預(yù)測(cè),分別是10、20和40,所以Grid cell共有(10×10+20×20+40×40)×3個(gè)預(yù)測(cè)框,每個(gè)預(yù)測(cè)框有四個(gè)坐標(biāo)參數(shù)(x,y,w,h)、一個(gè)置信度(obj_mask)和一個(gè)類(lèi)別概率(class),相對(duì)于YOLOv3來(lái)說(shuō),該模型只預(yù)測(cè)行人一個(gè)目標(biāo),每一Grid cell對(duì)應(yīng)的特征維數(shù)為3×(4+1+1)=18。
圖3 本文提出的紅外行人檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
在預(yù)測(cè)邊框的時(shí)候,總的損失函數(shù)Lloss是四個(gè)損失函數(shù)相加,四個(gè)損失函數(shù)分別是預(yù)測(cè)行人框的中心點(diǎn)坐標(biāo)誤差Lxy、預(yù)測(cè)框的寬和高損失Lwh、預(yù)測(cè)行人的置信度損失Lconfi和預(yù)測(cè)行人的類(lèi)別概率損失Lclass。
Lloss=Lxy+Lwh+Lconfi+Lclass
(4)
其中:
Lxy=∑[obj_mask×box_loss_scale×CEL(xygt,xypr)]
(5)
Lwh=∑[obj_mask×box_loss_scale×0.5×
(whgt-whpr)2]
(6)
Lconfi=∑[obj_mask×CEL(obj_mask,confi)
+(1-obj_mask)×CEL(obj_mask,confi)×
ignore_mask]
(7)
Lclass=∑[obj_mask×CEL(classgt,classpr)]
(8)
式中,obj_mask為預(yù)測(cè)的行人置信度;box_loss_scale為預(yù)測(cè)的行人框;CEL 代表二值交叉熵?fù)p失;xygt為行人框坐標(biāo)的真實(shí)值;xypr為預(yù)測(cè)行人框的中心坐標(biāo);whgt為行人框的寬高的真實(shí)值;whpr為行人框的寬高;confi為行人的實(shí)際置信度;ignore_mask為IOU低于0.5但真實(shí)存在的標(biāo)識(shí);classgt為行人真實(shí)類(lèi)別概率;classspr為預(yù)測(cè)的行人概率。
為了測(cè)試本文提出的實(shí)時(shí)紅外行人檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)的性能,我們首先選擇了CVC的紅外行人數(shù)據(jù)集進(jìn)行紅外行人檢測(cè)實(shí)驗(yàn),實(shí)驗(yàn)中使用到了三個(gè)數(shù)據(jù)集,分別是VOC 2007、CVC-09和CVC-14。本文將CVC-09和CVC-14數(shù)據(jù)集進(jìn)行混合,將訓(xùn)練集、驗(yàn)證集和測(cè)試集按照7∶2∶1的比例進(jìn)行重新劃分整個(gè)數(shù)據(jù)集作為本文模型的數(shù)據(jù)集。圖4中展示了CVC-09(如圖4(a)、(b)所示)和CVC-14(如圖4(c)、(d)所示)混合之后的紅外行人示例圖片。
圖4 數(shù)據(jù)集CVC-09和數(shù)據(jù)集CVC-14的示例圖片
在檢測(cè)本文提出的模型時(shí),因?yàn)槭菓?yīng)用于目標(biāo)檢測(cè)的模型檢測(cè),所以使用兩個(gè)參數(shù)來(lái)評(píng)價(jià)模型的優(yōu)劣,召回率(Recall)和平均準(zhǔn)確率(mAP)作為紅外行人檢測(cè)的評(píng)價(jià)指標(biāo)。
召回率、平均準(zhǔn)確率計(jì)算公式如下:
(9)
(10)
(11)
通過(guò)實(shí)驗(yàn)對(duì)本文提出的網(wǎng)絡(luò)模型進(jìn)行紅外行人檢測(cè)模型的訓(xùn)練和測(cè)試,將本文提出的模型和其他主流網(wǎng)絡(luò)模型進(jìn)行對(duì)比:YOLOv3和YOLOv3-Tiny。YOLOv3是YOLO系列最新的目標(biāo)檢測(cè)算法,也是現(xiàn)階段主流算法之一,而YOLOv3-Tiny是YOLO系列的作者提出的一個(gè)小型且快速的檢測(cè)網(wǎng)絡(luò)。在下述的模型訓(xùn)練和檢測(cè)都是在NVIDIA GTX1080顯卡Ubuntu16.04同一平臺(tái)下進(jìn)行,實(shí)驗(yàn)采用的是上文介紹的CVC紅外行人數(shù)據(jù)集進(jìn)行檢測(cè)。
實(shí)驗(yàn)共分為兩輪,首先使用VOC2007數(shù)據(jù)集中的person目標(biāo)類(lèi)別粗調(diào)進(jìn)行第一輪訓(xùn)練作為預(yù)訓(xùn)練模型。在預(yù)訓(xùn)練模型的基礎(chǔ)上,使用混合好的CVC-09和CVC-14的圖片集進(jìn)行訓(xùn)練及驗(yàn)證。分別采用YOLOv3、YOLOv3-Tiny和本文提出的行人檢測(cè)模型來(lái)進(jìn)行訓(xùn)練與測(cè)試,得到了如表1所示的結(jié)果。圖5展示的是在測(cè)試集的實(shí)驗(yàn)中,使用YOLOv3(圖5(a)~(d))進(jìn)行紅外行人檢測(cè)和使用本文模型進(jìn)行紅外行人檢測(cè)的對(duì)比圖(圖5(e)~(f))。
表1 使用CVC-09數(shù)據(jù)集進(jìn)行紅外行人檢測(cè)的實(shí)驗(yàn)結(jié)果
從模型的測(cè)試結(jié)果可以看出,本文所提出的模型,在檢測(cè)準(zhǔn)確率和召回率上比YOLO-Tiny好很多,但是和YOLOv3相比的話,準(zhǔn)確率和召回率有一些差距。主要原因是在網(wǎng)絡(luò)的深度上進(jìn)行了網(wǎng)絡(luò)模型的壓縮,基礎(chǔ)網(wǎng)絡(luò)由原來(lái)的53層網(wǎng)絡(luò)變成了28層的網(wǎng)絡(luò),壓縮了網(wǎng)絡(luò)的深度和參數(shù)造成部分精度損失。
圖5 模型CVC測(cè)試集效果圖
現(xiàn)如今主流的Two-stage和One-stage目標(biāo)檢測(cè)算法測(cè)試基于臺(tái)式機(jī)GPU,其功耗較大,難以做到嵌入式設(shè)備。在深度學(xué)習(xí)算法嵌入式設(shè)備移植中,本文所選取的是性能較好的NVIDIA Jetson TX2嵌入式GPU計(jì)算平臺(tái)來(lái)移植本文所提出的模型。
在本次的移植實(shí)驗(yàn)中,針對(duì)本文提出的模型的正向傳播的檢測(cè)速度進(jìn)行了對(duì)比實(shí)驗(yàn),將網(wǎng)絡(luò)模型部署在NVIDIA Jetson TX2嵌入式平臺(tái)上,選取CVC測(cè)試集中的400張紅外圖像,網(wǎng)絡(luò)模型中的輸入尺寸320×320,使用上述參數(shù)對(duì)網(wǎng)絡(luò)模型進(jìn)行檢測(cè)速度的測(cè)試,并使用HT35S遠(yuǎn)紅外相機(jī)進(jìn)行實(shí)時(shí)性驗(yàn)證,和現(xiàn)有的模型進(jìn)行了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)的過(guò)程和設(shè)備如圖6所示。圖6(a)采用YOLOv3檢測(cè),圖6(b)采用YOLOv3-Tiny檢測(cè),圖6(c)~(e)采及本文算法檢測(cè),實(shí)驗(yàn)結(jié)果如表2所示。
表2 紅外行人檢測(cè)速度在嵌入式設(shè)備TX2結(jié)果對(duì)比
從實(shí)驗(yàn)結(jié)果可以看出,在臺(tái)式機(jī)的GPU(GTX 1080)上能夠達(dá)到實(shí)時(shí)行人檢測(cè)的算法如YOLOv3,在性能較好的嵌入式平臺(tái)(Jetson TX2)上的檢測(cè)速度僅有3FPS左右,而YOLOv3-Tiny雖然能夠達(dá)到實(shí)時(shí)性的標(biāo)準(zhǔn),但紅外圖像中行人檢測(cè)的準(zhǔn)確率和召回率卻很低,難以實(shí)際應(yīng)用于無(wú)人駕駛或機(jī)器人中。本文所提出的行人檢測(cè)算法,準(zhǔn)確率較高,實(shí)時(shí)性達(dá)到了11幀,比較適合應(yīng)用于嵌入式系統(tǒng)如無(wú)人駕駛或機(jī)器人中進(jìn)行紅外行人檢測(cè)。
圖6 嵌入式平臺(tái)紅外行人檢測(cè)
本文基于YOLOv3提出了一種適用于嵌入式設(shè)備的實(shí)時(shí)紅外行人檢測(cè)方法,利用深度可分離卷積操作簡(jiǎn)化分解普通卷積操作,不僅簡(jiǎn)化了整個(gè)深度神經(jīng)網(wǎng)絡(luò)模型的大小,還加快了運(yùn)算的速度,使得其更適合移植至嵌入式設(shè)備。根據(jù)實(shí)驗(yàn)數(shù)據(jù)可以看出在嵌入式平臺(tái)基本實(shí)現(xiàn)了實(shí)時(shí)紅外行人檢測(cè)。通過(guò)文章中的實(shí)驗(yàn)可以看出,深度可分離卷積和減少網(wǎng)絡(luò)層數(shù)會(huì)影響紅外行人檢測(cè)的準(zhǔn)確率和召回率,說(shuō)明深度神經(jīng)網(wǎng)絡(luò)模型速度和精度是不可兼得的,提升速度是在損失一部分的準(zhǔn)確率的條件下實(shí)現(xiàn)的。