袁志宏,孫 強(qiáng),李國祥,白書戰(zhàn),嚴(yán) 英,張振華
(1.山東大學(xué) 能源與動力工程學(xué)院,濟(jì)南 250061;2.天津職業(yè)技術(shù)師范大學(xué),天津 300222)
當(dāng)前,隨著市場需求變化和汽車行業(yè)的高速發(fā)展,自動駕駛成為汽車領(lǐng)域的研究熱點(diǎn)之一。在自動駕駛場景下,道路安全問題很大程度上依賴于對前方障礙物的檢測。障礙物檢測算法是由傳統(tǒng)算法逐步發(fā)展到深度學(xué)習(xí)算法[1]。深度學(xué)習(xí)目標(biāo)檢測算法可以歸納為3種算法。第一種是對于候選區(qū)域的目標(biāo)檢測算法,典型的網(wǎng)絡(luò)是R-CNN和FasterR-CNN[2];第二種是基于回歸的目標(biāo)檢測算法,典型代表有YOLO[3]和SSD[4]算法;最后一種是基于增強(qiáng)學(xué)習(xí)的目標(biāo)檢測算法,典型表現(xiàn)為深度Q-Learning學(xué)習(xí)網(wǎng)絡(luò)。
然而,在自動駕駛場景下,前方障礙物的檢測依然是一項(xiàng)具有挑戰(zhàn)的難題。王華秋等[5]利用深度哈希卷積網(wǎng)絡(luò)方法實(shí)現(xiàn)圖像檢索;張富凱等[6]利用深度殘差網(wǎng)絡(luò)的思想,提出一種快速檢測車輛的方法;呂爍等[7]提出一種改進(jìn)損失函數(shù)的Yolov3網(wǎng)絡(luò),加快了檢測速度。但深度學(xué)習(xí)應(yīng)用到自動駕駛汽車時(shí)受車規(guī)計(jì)算芯片的限制,使得實(shí)時(shí)性檢測十分困難。此外,車輛前方障礙物會受光照、遮擋等因素的干擾,使得檢測準(zhǔn)確率也面臨極大挑戰(zhàn)。因此,在自動駕駛領(lǐng)域中需要快速、準(zhǔn)確地對復(fù)雜交通場景下的障礙物完成目標(biāo)識別。本文結(jié)合自動駕駛交通場景以及Yolov3快速檢測的特點(diǎn),將空間金字塔思想與Yolov3主網(wǎng)絡(luò)相結(jié)合,并通過調(diào)整相關(guān)參數(shù)解決自動駕駛交通場景下障礙物檢測的難題。
Yolov3基于Yolo、Yolov2[8]算法的大量研究,通過改變模型結(jié)構(gòu)的大小來權(quán)衡檢測速度與檢測精度。相比于其他網(wǎng)絡(luò),Yolov3具有較大的優(yōu)勢。Yolov3目標(biāo)檢測算法利用Titan X在coco數(shù)據(jù)集上的計(jì)算結(jié)果與其他目標(biāo)檢測算法的計(jì)算結(jié)果如表1所示。
通過表1可以看出:Yolov2的檢測速度明顯優(yōu)于其他檢測算法,但Yolov2的檢測準(zhǔn)確度較低;Yolov3在Yolov2的基礎(chǔ)上進(jìn)行改進(jìn)后,速度有了明顯提升,且在目標(biāo)檢測準(zhǔn)確度方面與其他檢測算法相差不大。
表1 目標(biāo)檢測算法結(jié)果
Yolov3是在深度學(xué)習(xí)框架darknet上進(jìn)行開發(fā)。為使網(wǎng)絡(luò)能學(xué)習(xí)到好的特征,提升分類效果,Yolov3采用了大量有良好表現(xiàn)的3*3以及1*1的卷積層,同時(shí)增加了一些shortcut connection結(jié)構(gòu),共有53個卷積層,因此稱為darknet53。Darknet53作為Yolov3的主要網(wǎng)絡(luò)結(jié)構(gòu)見圖1所示。
對于卷積神經(jīng)網(wǎng)絡(luò),在一定程度上,網(wǎng)絡(luò)越深表達(dá)能力越強(qiáng),性能越好[9]。但網(wǎng)絡(luò)深度的增加會帶來優(yōu)化相關(guān)的問題,比如梯度消散、梯度爆炸。為避免這些難以優(yōu)化的問題,Yolov3借鑒殘差學(xué)習(xí)的思想,在網(wǎng)絡(luò)中添加大量的殘差塊[10]。在目標(biāo)檢測過程中,網(wǎng)絡(luò)輸入長*寬為416*416的圖像,經(jīng)過32倍下采樣,輸出13*13大小的圖像,由小尺度進(jìn)行檢測。由于小尺度的特征圖最小,對應(yīng)的感受野最大,因此小尺度對大目標(biāo)比較敏感,小尺度負(fù)責(zé)檢測大目標(biāo)。此外,將小尺度的特征圖進(jìn)行上采樣,輸出26*26大小的圖像,從而負(fù)責(zé)檢測中等大小的圖像。同理,第三預(yù)測層負(fù)責(zé)檢測小目標(biāo)。由于采用多尺度檢測的方法,Yolov3對目標(biāo)的檢測準(zhǔn)確率取得了明顯進(jìn)步。
盡管Yolov3對目標(biāo)的檢測取得了較好效果,但在自動駕駛場景下,必須兼顧檢測準(zhǔn)確率與實(shí)時(shí)性問題。對于實(shí)時(shí)性問題,Yolo系列中Yolov3-tiny等輕量級網(wǎng)絡(luò)在檢測速度上能滿足實(shí)時(shí)性要求,但檢測準(zhǔn)確率不符合自動駕駛交通場景下的目標(biāo)檢測要求。交通場景下,發(fā)現(xiàn)前方遠(yuǎn)距離目標(biāo)越及時(shí),自動駕駛的安全性越高。然而,Yolov3在自動駕駛交通場景下,對前方遠(yuǎn)距離目標(biāo)的檢測效果仍有待提高,對于實(shí)時(shí)性檢測問題也存在不足。因此,本文針對這些問題開展了一系列改進(jìn)工作。
根據(jù)上述Yolov3存在的不足之處,分別從網(wǎng)絡(luò)結(jié)構(gòu)以及輸入圖片分辨率方面對Yolov3進(jìn)行改進(jìn)。
SPPNet(空間金字塔池化)思想的提出進(jìn)一步豐富了卷積神經(jīng)網(wǎng)絡(luò)目標(biāo)檢測的方法。現(xiàn)有的CNN網(wǎng)絡(luò)大多包括卷積、池化、全連接的過程。其中,卷積與池化過程對圖片輸入的大小沒有要求,輸入任意大小的圖片均可進(jìn)行卷積池化的操作。與此不同,全連接層對圖片有特殊的要求。全連接的核心操作是矩陣向量的乘積,如式(1)所示。
式中:X為輸入圖片的像素矩陣;Y為輸出圖片的像素矩陣;W 為一個固定不變的矩陣。可以看出,如果輸入的X維數(shù)不等,則參數(shù)W 也會不同。因此,眾多的CNN網(wǎng)絡(luò)中要求輸入固定大小的圖片。SPP充當(dāng)卷積池化層與全連接層之間的橋梁,可以使網(wǎng)絡(luò)輸入任意的圖片,并生成固定大小的輸出。具體原理如圖2所示。將經(jīng)過卷積之后的特征圖輸入SPP網(wǎng)絡(luò)。SPP網(wǎng)絡(luò)層使用3層不同大小的金字塔池化層來提取特征,分別為(4*4)、(2*2)、(1*1),從而將1張?zhí)卣鲌D分為3層進(jìn)行最大池化處理。最后,將1張任意大小的圖片轉(zhuǎn)換成了1個固定大小的21維特征。將提取的21維特征向量輸入到全連接層進(jìn)行權(quán)重計(jì)算,完成卷積層到全連接層之間的過渡。因此,空間金字塔池化采用多尺度特征提取出固定大小的特征向量的方法,使得任意大小的特征圖都能轉(zhuǎn)換成固定大小的特征量。
在Yolov3基礎(chǔ)上,本文借鑒SPP的思想將兩者優(yōu)勢相結(jié)合,進(jìn)一步提高目標(biāo)檢測的性能。在主網(wǎng)絡(luò)darknet53中,有著一系列的1*1、3*3卷積,在darknet53之后,增加金字塔池化網(wǎng)絡(luò)層,使得任意大小的特征圖都能轉(zhuǎn)換成固定大小的特征向量。但引入SPP的同時(shí)會阻斷神經(jīng)網(wǎng)絡(luò)梯度下降的反向傳播。綜合以上因素,改進(jìn)后的網(wǎng)絡(luò)(Yolov3-bt)結(jié)構(gòu)如圖3所示。Darknet53網(wǎng)絡(luò)結(jié)構(gòu)使用一系列3*3和1*1的卷積層,這些卷積層是從各個主流網(wǎng)絡(luò)結(jié)構(gòu)選取性能較好的卷積層進(jìn)行整合得到。其中,每個卷積層后都有1個BN層和1個LeakyReLU。這也是Yolov3的優(yōu)勢所在。此外,darknet53主網(wǎng)絡(luò)中采用了殘差連接。經(jīng)過大量的卷積之后,在darknet53后加入空間金字塔網(wǎng)絡(luò)結(jié)構(gòu),金字塔設(shè)置為3層,分別為(5*5)、(9*9)、(13*13),并選擇最大池化,從而進(jìn)一步為多尺度檢測做鋪墊,增加網(wǎng)絡(luò)結(jié)構(gòu)的魯棒性,減少過擬合,從而提高模型的性能。
將深度學(xué)習(xí)應(yīng)用于自動駕駛領(lǐng)域,可使其感知技術(shù)有顯著提升。深度學(xué)習(xí)從本質(zhì)上來看是一次統(tǒng)計(jì)的運(yùn)算過程,大規(guī)模的訓(xùn)練樣本集對于深度學(xué)習(xí)尤為重要。為了使統(tǒng)計(jì)結(jié)果更加準(zhǔn)確,往往會設(shè)計(jì)一些復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型。在某種程度上,增加網(wǎng)絡(luò)深度能提高神經(jīng)網(wǎng)絡(luò)模型的性能。與此同時(shí),在神經(jīng)網(wǎng)絡(luò)計(jì)算的過程中對計(jì)算能力也有了更高的要求。此外,深度學(xué)習(xí)是迅速迭代的過程,對訓(xùn)練速度的要求高,因此進(jìn)一步優(yōu)化深度學(xué)習(xí)計(jì)算對于目標(biāo)檢測有著重要的意義。
計(jì)算量和參數(shù)量是Yolov3運(yùn)算過程的2個重要指標(biāo)。計(jì)算量決定著網(wǎng)絡(luò)運(yùn)算時(shí)間的長短,對應(yīng)著時(shí)間復(fù)雜度,可用浮點(diǎn)運(yùn)算次數(shù)(FLOPS)來衡量。單層時(shí)間復(fù)雜度計(jì)算為:
式中:M為每個卷積核輸出特征圖的邊長;K為卷積核的邊長;Cin為每個卷積層的輸入通道數(shù),即上一層通道數(shù);Cout為本卷積層具有的卷積核個數(shù),即輸出通道數(shù)。
由此可見,單層時(shí)間復(fù)雜度是由輸出特征面積M2、卷積核面積K2、輸入通道數(shù)Cin、輸出通道數(shù)Cout共同決定的。對于整個神經(jīng)網(wǎng)絡(luò)而言,每層之間進(jìn)行累加即可得到整體的時(shí)間復(fù)雜度,如式(3)所示。
式中:D表示神經(jīng)網(wǎng)絡(luò)的總層數(shù);L表示神經(jīng)網(wǎng)絡(luò)第L個卷積層。此外,參數(shù)量決定著網(wǎng)絡(luò)運(yùn)算過程中占用顯存的大小,因此參數(shù)量對應(yīng)空間復(fù)雜度??臻g復(fù)雜度由總參數(shù)量和各層輸出的特征圖量共同決定,如式(4)所示。
可以看出,總參數(shù)量與輸入特征圖面積M2無關(guān),而由卷積核面積K2、輸入通道數(shù)Cin、輸出通道數(shù)Cout決定。輸出特征圖的空間由輸出特征面積M2、輸出通道數(shù)Cl決定。
綜上所述,時(shí)間復(fù)雜度及空間復(fù)雜度均受特征圖的邊長M影響,故改變M的大小不僅能減少運(yùn)算時(shí)間,還能節(jié)省運(yùn)算所占顯存空間。本文對特征圖的邊長進(jìn)行更改,力求在識別準(zhǔn)確率以及運(yùn)算實(shí)時(shí)性之間尋找平衡。
數(shù)據(jù)集是分析深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型性能的基礎(chǔ)。自動駕駛交通場景下,行人及車輛是主要障礙物。本文選擇coco數(shù)據(jù)集作為訓(xùn)練集,主要選取行人、自行車、摩托車、汽車、公交車共5個種類對象進(jìn)行訓(xùn)練,提高模型在自動駕駛交通場景下的適應(yīng)能力??紤]到coco數(shù)據(jù)集在5類數(shù)據(jù)集樣本不夠充分的情況,本文擴(kuò)充了voc2007中同種類別的樣本圖片,進(jìn)一步提高模型的泛化能力。另外,模型訓(xùn)練完成后,在voc2007-test測試集上進(jìn)行測試,比較不同模型的檢測效果。實(shí)驗(yàn)平臺配置如表2表示。
表2 實(shí)驗(yàn)平臺配置
將訓(xùn)練出的Yolov3-bt模型與Yolov3模型進(jìn)行對比。在調(diào)整圖片輸入的分辨率均為608*608的情況下,對兩者的檢測速度以及檢測準(zhǔn)確度進(jìn)行比較。其中,IOU指目標(biāo)檢測框圖與實(shí)際框圖的交集與并集之比對比,見式(5)。
其中:A為檢測框的面積;B為實(shí)際框的面積?;谧詣玉{駛場景,檢測時(shí)間是目標(biāo)檢測的第一要素。對于前方障礙物,將其主要分為行人和交通類兩大類障礙物,將自行車、卡車等均看做交通類障礙物。選取1 000張圖片,分別用Yolov3與Yolov3-bt進(jìn)行檢測,兩者之間的檢測時(shí)間結(jié)果對比如表3所示。針對不同類別,IOU檢測結(jié)果如圖4~5所示。
表3 Yolov3與Yolov3-bt檢測時(shí)間對比 ms
通過表3可以看出:Yolov3-bt模型的檢測時(shí)間相比Yolov3慢0.9 ms。但圖4~5顯示,Yolov3-bt在不同的IOU值處,行人與交通障礙物的檢測率均高于Yolov3。如圖6、7所示,Yolov3-bt的檢測效果明顯優(yōu)于Yolov3。
此外,根據(jù)前文結(jié)論可知,特征圖邊長對時(shí)間復(fù)雜度以及空間復(fù)雜度都有一定的影響。因此,針對Yolov3-bt的訓(xùn)練參數(shù),通過調(diào)整網(wǎng)絡(luò)輸入圖片的分辨率來進(jìn)一步分析模型的性能。選取900張圖片進(jìn)行測試。由圖8可以看出,圖片分辨率越小,時(shí)間復(fù)雜度越小,對應(yīng)的目標(biāo)檢測時(shí)間越短。由圖9可以看出,圖片分辨率越小,所占內(nèi)存越小,越能滿足實(shí)時(shí)性要求。由圖10可以看出,目標(biāo)分辨率的減小不會造成目標(biāo)檢測準(zhǔn)確率的大幅降低。因此,減小圖片的分辨率一方面能大幅度降低檢測時(shí)間,另一方面能保證檢測準(zhǔn)確率。圖11為圖片分辨率為416*416時(shí)的檢測結(jié)果,與圖7進(jìn)行對比發(fā)現(xiàn),其檢測準(zhǔn)確率有所提高,且檢測時(shí)間相當(dāng)。
本文提出了一種在自動駕駛交通場景下的Yolov3-bt目標(biāo)檢測算法。將Yolov3主網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行修改,融合空間金字塔池化的網(wǎng)絡(luò)層,并調(diào)整網(wǎng)絡(luò)輸入圖像分辨率均為416*416,使得檢測1張圖片的時(shí)間為29.89 ms,能滿足自動駕駛目標(biāo)檢測的實(shí)時(shí)性要求。與此同時(shí),在coco以及voc2007數(shù)據(jù)集上的檢測結(jié)果表明:相比Yolov3的目標(biāo)檢測準(zhǔn)確率,改進(jìn)算法對于行人檢測準(zhǔn)確率提高了7%,對于交通類障礙物檢測準(zhǔn)確率提高了5%。同時(shí),針對行人的檢測準(zhǔn)確率可達(dá)87%,針對交通類障礙物的檢測準(zhǔn)確率可達(dá)92%,解決了自動駕駛交通場景下目標(biāo)檢測實(shí)時(shí)性和準(zhǔn)確性難以兼顧的問題。在后期工作中,將進(jìn)一步研究自動駕駛交通場景下目標(biāo)遮擋,目標(biāo)受光照、天氣等因素干擾時(shí)的檢測難題。