葉召元,鄭建立
東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海 201620
眾所周知,自動(dòng)駕駛已經(jīng)成為目前最受關(guān)注的人工智能研究方向之一。無(wú)論從何種角度分析,自動(dòng)駕駛技術(shù)都是一項(xiàng)充滿(mǎn)挑戰(zhàn)性的研究工作。因此,針對(duì)自動(dòng)駕駛場(chǎng)景,研究更加精準(zhǔn)高效的目標(biāo)檢測(cè)算法具有重要的戰(zhàn)略意義。
傳統(tǒng)目標(biāo)檢測(cè)算法大致可以分為兩類(lèi),基于背景建模方法和基于前景建模方法[1]?;诒尘敖7椒╗2]主要用于動(dòng)態(tài)目標(biāo)檢測(cè),首先建立背景與時(shí)間的關(guān)系模型,然后利用當(dāng)前幀信息與背景模型進(jìn)行對(duì)比,從而獲取目標(biāo)的位置[3]?;谇熬敖7椒?,可以針對(duì)靜態(tài)圖像進(jìn)行目標(biāo)檢測(cè),傳統(tǒng)的做法就是利用滑窗,提取不同尺寸不同區(qū)域的特征,接著針對(duì)具體目標(biāo)訓(xùn)練相應(yīng)的分類(lèi)器,利用訓(xùn)練好的分類(lèi)器對(duì)提取的特征進(jìn)行分類(lèi),比如利用HOG[4(]Histogram of Oriented Gradient)+SVM[5](Support Vector Machine)進(jìn)行行人檢測(cè),利用Haar[6]+AdaBoost[7]進(jìn)行人臉檢測(cè)。由于傳統(tǒng)的特征都是人類(lèi)手工設(shè)計(jì)的特征[8],許多都是針對(duì)特定目標(biāo)檢測(cè)而設(shè)計(jì)的,使用具有局限性。人工設(shè)計(jì)特征在許多時(shí)候并不能刻畫(huà)出圖像的本質(zhì),因此在檢測(cè)時(shí)易受各種干擾因素的影響,模型魯棒性不高,無(wú)法在自動(dòng)駕駛場(chǎng)景中應(yīng)用。
自動(dòng)駕駛面臨的環(huán)境是開(kāi)放的、復(fù)雜的,為了保證駕駛安全,對(duì)檢測(cè)算法的性能要求極高。因此,目前大多數(shù)自動(dòng)駕駛方案采用的都是基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法。自2012 年AlexNet[9]使用卷積神經(jīng)網(wǎng)絡(luò)獲得ImageNet競(jìng)賽的冠軍之后,圖像領(lǐng)域便掀起了深度學(xué)習(xí)的研究熱潮。卷積神經(jīng)網(wǎng)絡(luò)具有較強(qiáng)的特征提取能力,能夠提取圖像的高層次特征,這對(duì)于圖像分類(lèi)和目標(biāo)檢測(cè)任務(wù)來(lái)說(shuō)十分重要。在當(dāng)前的研究成果中,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法可以分為兩類(lèi):一類(lèi)是基于候選區(qū)域的兩階段(two-stage)算法,將目標(biāo)檢測(cè)問(wèn)題轉(zhuǎn)化為分類(lèi)問(wèn)題?;诤蜻x區(qū)域分類(lèi)的目標(biāo)檢測(cè)流程一般可以分為兩步,首先提取候選區(qū)域(Region Proposal)[10],再對(duì)候選區(qū)域進(jìn)行分類(lèi)并且對(duì)位置坐標(biāo)進(jìn)行修正。這類(lèi)算法檢測(cè)精度高,但模型復(fù)雜度也高,運(yùn)行效率低,很難達(dá)到實(shí)時(shí)檢測(cè)的目的。此類(lèi)算法的代表有R-CNN[11](Region-based Convolutional Neural Network)、SPP-NET[12](Spatial Pyramid Pooling Network)、Fast-RCNN[13(]Fast Region-based Convolutional Neural Network)、Faster-RCNN[14(]Faster Region-based Convolutional Neural Network)以及各種改進(jìn)版本。另一類(lèi)是基于回歸的單階段(one-stage)算法,將目標(biāo)檢測(cè)問(wèn)題轉(zhuǎn)化為回歸問(wèn)題,檢測(cè)算法將整張圖片作為網(wǎng)絡(luò)的輸入,直接在輸出層回歸邊界框(bounding box)的位置及其所屬的類(lèi)別。one-stage 檢測(cè)算法數(shù)據(jù)管道簡(jiǎn)單,運(yùn)行效率高,可以達(dá)到實(shí)時(shí)檢測(cè)的目的,但算法精度一般略低于two-stage檢測(cè)算法。此類(lèi)算法的代表有SSD[15]、YOLO[16(]You Only Look Once)、YOLOV3[17]以及各種改進(jìn)版本。
自動(dòng)駕駛所面臨的交通場(chǎng)景十分復(fù)雜,人們所要檢測(cè)的關(guān)鍵目標(biāo)行人和車(chē)輛經(jīng)常會(huì)重疊在一起,或者被遮擋,這會(huì)給檢測(cè)算法帶來(lái)極大的挑戰(zhàn)。此外,在高速行駛的過(guò)程中,需要檢測(cè)很遠(yuǎn)處的目標(biāo),以便及早為駕駛決策做出規(guī)劃。然而,遠(yuǎn)處的目標(biāo)在圖像中只占據(jù)很少的像素點(diǎn),這同樣為目標(biāo)的檢測(cè)帶來(lái)了很大的困難。基于這些問(wèn)題,同時(shí)考慮到自動(dòng)駕駛對(duì)算法性能和效率的要求,本文針對(duì)one-stage目標(biāo)檢測(cè)算法SSD 進(jìn)行改進(jìn),提升其對(duì)于重疊、遮擋以及遠(yuǎn)景小目標(biāo)的檢測(cè)能力,使其能應(yīng)用于自動(dòng)駕駛場(chǎng)景之中。本文所做工作有:(1)基于SSD提出一種新的模型結(jié)構(gòu),以提高對(duì)小目標(biāo)的檢測(cè)能力。(2)提升小目標(biāo)檢測(cè)性能的同時(shí),保證算法的實(shí)時(shí)檢測(cè)性能。(3)引入一種新的訓(xùn)練方式,提升模型對(duì)復(fù)雜背景的抗干擾能力。為了比較算法性能的提升,本文所做實(shí)驗(yàn)都是基于公開(kāi)數(shù)據(jù)集PASCAL VOC 2007 和KITTI交通數(shù)據(jù)集。
圖1 是SSD300(模型輸入圖像分辨率為300×300)模型結(jié)構(gòu)。SSD 以VGG16[18(]Visual Geometry Group)作為特征提取網(wǎng)絡(luò),替換VGG16的兩個(gè)全連接層FC6、FC7為卷積層,同時(shí)在后面添加了四個(gè)卷積層。為了提高檢測(cè)精度,SSD 在不同尺度的特征圖上進(jìn)行檢測(cè),輸出固定數(shù)量的邊界框,然后通過(guò)置信度過(guò)濾和非極大抑制(Non-Maximum Suppression,NMS)等方法輸出最終檢測(cè)的目標(biāo)框和類(lèi)別。具體的做法是,在特征圖Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2 上設(shè)置不同尺度和不同寬高比的默認(rèn)框(default box),然后在特征圖上每一個(gè)位置使用3×3的小卷積核進(jìn)行卷積,輸出真值框(ground truth)相對(duì)于默認(rèn)框的偏移量和目標(biāo)種類(lèi)。SSD算法中的default box相當(dāng)于Faster-RCNN算法中的anchor,采取anchor的目的是為了使模型能夠更容易收斂。這對(duì)于SSD 和YOLO 這樣的單階段目標(biāo)檢測(cè)算法來(lái)說(shuō)更為重要。如果沒(méi)有anchor,SSD需要直接回歸出目標(biāo)的位置坐標(biāo)和寬高,數(shù)據(jù)集中各類(lèi)目標(biāo)的寬高差距較大,如果直接回歸,會(huì)導(dǎo)致模型很難收斂,甚至陷入一個(gè)較差的局部最優(yōu)狀態(tài)。因此目前大多數(shù)單階段目標(biāo)檢測(cè)算法都會(huì)采取設(shè)置anchor的策略。
圖1 SSD300模型結(jié)構(gòu)圖
假如使用m個(gè)特征圖進(jìn)行預(yù)測(cè),則第k個(gè)特征圖上的default box的尺寸計(jì)算公式為:
其中,Smin=0.2,為最底層的尺寸,Smax=0.9,為最高層的尺寸。default box 的寬高比標(biāo)記為ar∈{1,2,3,1/2,1/3},則第k層每一個(gè)default box 的寬高,對(duì)于寬高比ar=1,額外添加一個(gè)尺寸為的default box。這樣特征圖每一個(gè)位置就有6 個(gè)default box,并且設(shè)置每個(gè)default box 的中心為為第k個(gè)特征圖的尺寸。在實(shí)際實(shí)現(xiàn)時(shí),SSD對(duì)Conv4_3、Conv10_2和Conv11_2只設(shè)置了4個(gè)default box。因此,如圖1 所示,SSD 總共可以預(yù)測(cè) 38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=8 732 個(gè)bounding box。
SSD 模型并不是直接輸出邊界框的位置坐標(biāo)和寬高,而是輸出bounding box 相對(duì)于default box 的偏移量。假設(shè)default box的位置表示為d=(dcx,dcy,dw,dh),對(duì)應(yīng)的bounding box 表示為b=(bcx,bcy,bw,bh) ,其中cx、cy為中心位置坐標(biāo),w、h為框的寬和高,則模型預(yù)測(cè)bounding box的輸出可以表示為t:
假設(shè)預(yù)測(cè)類(lèi)別數(shù)為c,特征圖的尺寸為m×n,則特圖每個(gè)像素單元的default box數(shù)量為k,即每個(gè)單元需要預(yù)測(cè)k×(c+4) 個(gè)值,整個(gè)特征圖需要預(yù)測(cè)m×n×k×(c+4)個(gè)值。
SSD損失函數(shù)由兩部分組成,一部分是目標(biāo)框的位置損失,即目標(biāo)框的中心坐標(biāo)損失和目標(biāo)框的寬高損失,另一部分是類(lèi)別置信度損失,計(jì)算公式如下:
={0,1}作為一個(gè)標(biāo)識(shí),代表第i個(gè)默認(rèn)框與k類(lèi)的第j個(gè)默認(rèn)框匹配。Lconf為置信度損失,Lloc為位置損失。N為所有匹配的默認(rèn)框的個(gè)數(shù)。p、g分別為預(yù)測(cè)框和真值框的位置參數(shù)。λcoord是一個(gè)加權(quán)系數(shù),用來(lái)衡量位置損失在總損失中占的比例。位置損失使用平滑L1損失[11],網(wǎng)絡(luò)回歸相對(duì)于默認(rèn)框中心(cx,cy)和默認(rèn)框?qū)捀?w,h)的偏移量為:
置信度損失采用多類(lèi)別的softmax交叉熵?fù)p失:
SSD 算法無(wú)論是在mAP 指標(biāo)還是FPS 指標(biāo)上,都取得了不錯(cuò)的效果。同時(shí),SSD采用多尺度特征圖進(jìn)行預(yù)測(cè),這在一定程度上有利于提升對(duì)小目標(biāo)的檢測(cè)性能,但是從實(shí)驗(yàn)結(jié)果來(lái)看,SSD 對(duì)于小目標(biāo)的召回率(Recall)依然較低,與two-stage 檢測(cè)算法相比,仍有差距。此外,對(duì)于檢測(cè)出來(lái)的特別小的目標(biāo),容易出現(xiàn)錯(cuò)檢的現(xiàn)象。
SSD采用VGG16作為特征提取網(wǎng)絡(luò),因此Conv4_3層的特征圖分辨率就已經(jīng)下降為輸入的1/8,如果原圖中有一個(gè)16×16 的目標(biāo),則此目標(biāo)在Conv4_3層特征圖上只占據(jù)了幾個(gè)像素,這幾個(gè)像素所保留的信息自然不足以準(zhǔn)確地定位目標(biāo)的位置,甚至無(wú)法確定這是正樣本還是背景。其實(shí),SSD用距離頂層較遠(yuǎn)的Conv4_3層特征圖來(lái)預(yù)測(cè),目的就是想用大尺度的特征圖來(lái)預(yù)測(cè)小目標(biāo),只不過(guò)這個(gè)尺寸還是相對(duì)較小。另一方面,SSD 采用6個(gè)尺寸的特征圖獨(dú)立的預(yù)測(cè)目標(biāo),并沒(méi)有融合不同特征圖所蘊(yùn)含的信息。目前,許多研究表明,底層高分辨率的特征圖蘊(yùn)含著目標(biāo)的一些細(xì)節(jié)信息,這些信息有利于準(zhǔn)確地定位目標(biāo)。但是,由于底層的特征圖經(jīng)歷的卷積運(yùn)算較少,未能提取足夠多的高級(jí)特征,語(yǔ)義信息不足,這不利于區(qū)分目標(biāo)和背景。高層低分辨率的特征圖經(jīng)歷了大量的卷積運(yùn)算,能夠提取豐富的語(yǔ)義信息,但是由于下采樣過(guò)多,導(dǎo)致丟失大量的細(xì)節(jié)信息。此外,SSD在訓(xùn)練時(shí)是通過(guò)兩個(gè)框重疊部分的面積與兩個(gè)框總面積的比值IoU(Intersection over Union)來(lái)確定正負(fù)樣本的,小目標(biāo)所占據(jù)的像素點(diǎn)太少,與default box 的 IoU 小于閾值 0.5,很難與 default box 進(jìn)行匹配,因而被判定為負(fù)樣本,不能得到充分的訓(xùn)練。
針對(duì)SSD算法所存在的問(wèn)題,目前已經(jīng)有許多優(yōu)秀的改進(jìn)工作。這些改進(jìn)工作大部分是圍繞特征融合展開(kāi)的,而本文也是遵循特征融合這一角度展開(kāi)分析。
DSOD[19(]Deeply Supervised Object Detector)采取down to top的融合方式,在SSD結(jié)構(gòu)基礎(chǔ)上,對(duì)于相鄰的兩個(gè)特征圖,將前面的特征圖進(jìn)行池化(pooling)降采樣,使之與后面的特征圖具有相同的尺寸,然后將池化獲得的特征圖與后面的特征圖級(jí)聯(lián)在一起,二者各占據(jù)一半通道,共同作為目標(biāo)檢測(cè)器的輸入特征。DSOD采取的密集連接的方式,確實(shí)可以將大尺寸特征圖所具有的細(xì)節(jié)信息引入到后面小尺寸的特征圖,但是每一層都采取相同的操作,連接過(guò)于密集,并且會(huì)向后面的特征圖引入過(guò)多的冗余信息,同時(shí)增加模型的復(fù)雜度。FPN[20(]Feature Pyramid Networks)和FSSD[21(]Feature Fusion Single Shot Multibox Detector)都是采用top to down的融合方式,對(duì)于相鄰的兩個(gè)特征圖,將高層低分辨率的特征圖進(jìn)行上采樣,上采樣獲得的特征圖尺寸與底層高分辨的特征圖尺寸一致,然后進(jìn)行特征融合。二者之間不同的是,F(xiàn)PN 上采樣使用的是插值算法,不會(huì)增加模型的參數(shù)量,而FSSD 的上采樣使用的是反卷積(deconvolution),deconvolution會(huì)額外增加參數(shù)量,增加模型的尺寸和復(fù)雜度。RSSD[22(]Rainbow-SSD)既采用了down to top 的pooling 融合,又采用了top to down的deconvolution融合,這樣的深度融合方式確實(shí)帶來(lái)了mAP的提升,提高了小目標(biāo)的召回率,但付出的代價(jià)是增加了模型的體積和復(fù)雜度,引入了許多重復(fù)的特征信息。
為了便于比較DFSSD 模型結(jié)構(gòu)的有效性,本文沒(méi)有替換SSD的基礎(chǔ)網(wǎng)絡(luò)VGG16。許多改進(jìn)工作為了提升模型的特征提取能力,將基礎(chǔ)網(wǎng)絡(luò)替換為特征提取能力更強(qiáng)的深度殘差網(wǎng)絡(luò),DF-YOLOV3[23]便是將YOLOV3的特征提取網(wǎng)絡(luò)替換為深度殘差網(wǎng)絡(luò)以提升精度。DFSSD 模型結(jié)構(gòu)如圖2 所示,使用尺寸為38×38、19×19、10×10的特征圖來(lái)預(yù)測(cè)小目標(biāo),使用尺寸為5×5、3×3、1×1 的特征圖來(lái)預(yù)測(cè)尺寸較大的目標(biāo)。當(dāng)模型的輸入尺寸為300×300 時(shí),38×38 分辨率的特征圖已經(jīng)丟失了許多底層的細(xì)節(jié)信息,考慮到模型的效率,這里不增加額外的高分辨率的特征圖預(yù)測(cè)層。但是為了獲取更多細(xì)節(jié)信息,將分辨率為75×75 的特征圖通過(guò)池化下采樣,分別與 Conv4_3、Conv7、Conv8_2 層特征圖進(jìn)行融合,同時(shí)將Conv8_2、Conv9_2、Conv10_2 通過(guò)插值上采樣分別與 Conv4_3、Conv7、Conv8_2 融合。實(shí)驗(yàn)中發(fā)現(xiàn),將75×75 這樣的高分辨率特征圖引入到后面的Conv4_3、Conv7、Conv8_2 層,不僅能夠提升小目標(biāo)的recall,同時(shí)還能夠加速模型的收斂,說(shuō)明高分辨率特征圖所蘊(yùn)含的細(xì)粒度信息有利于bounding box 的坐標(biāo)回歸??紤]到Conv9_2、Conv10_2、Conv11_2 層特征圖已經(jīng)具備較為豐富的語(yǔ)義信息,因此不對(duì)它們進(jìn)行后向融合,只進(jìn)行前向融合引入細(xì)節(jié)信息,將Conv7、Conv8_2、Conv9_2 分別與 Conv9_2、Conv10_2、Conv11_2 層特征圖進(jìn)行融合。所有的融合都采用的是Concatenate的連接方式。與DSOD、FPN、FSSD、RSSD 相比,這樣跨越式的連接,既能實(shí)現(xiàn)特征的雙向融合,還不會(huì)引入冗余信息。實(shí)驗(yàn)表明,DFSSD 提升了SSD 算法的mAP 以及對(duì)小目標(biāo)的檢測(cè)能力,在不增加過(guò)多復(fù)雜度的情況下,與SSD 其他的改進(jìn)算法具有相當(dāng)?shù)男阅?。具體數(shù)據(jù)會(huì)在實(shí)驗(yàn)部分展示。
圖2 DFSSD300模型結(jié)構(gòu)圖
DFSSD 充分利用前向卷積過(guò)程計(jì)算得到的特征圖,沒(méi)有在SSD 基礎(chǔ)之上另外增加卷積通道,這有效限制了計(jì)算量的增加。值得注意的是,在不同層次的特征圖進(jìn)行級(jí)聯(lián)以后,使用1×1的卷積核進(jìn)行卷積可以使不同層次的特征進(jìn)行融合,同時(shí)降低通道數(shù)。在1×1卷積之后使用3×3的小卷積核進(jìn)行卷積,使得不同特征在整個(gè)特征空間中得到充分的融合。
在訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)時(shí),如果模型過(guò)于復(fù)雜,或者是數(shù)據(jù)量太少,都會(huì)引起模型的過(guò)擬合。過(guò)擬合表現(xiàn)為模型在訓(xùn)練集上的損失低,檢測(cè)精度高,但是在測(cè)試集上的檢測(cè)精度卻遠(yuǎn)遠(yuǎn)低于訓(xùn)練集上的精度。如果數(shù)據(jù)集中小目標(biāo)較多,或者背景比較復(fù)雜,這種現(xiàn)象更為明顯。由于小目標(biāo)占據(jù)的像素點(diǎn)十分少,模型不能提取足夠多的特征來(lái)準(zhǔn)確檢測(cè)小目標(biāo),很容易將其判別為背景,或者將某一類(lèi)目標(biāo)誤判為另一類(lèi)。為了提高模型的抗干擾能力和泛化能力,本文提出一種加入噪聲的訓(xùn)練方式。SSD在訓(xùn)練階段把與真值框IoU大于0.5的默認(rèn)框作為正樣本訓(xùn)練,將置信度損失進(jìn)行排序,篩選出一部分具有高置信度損失的默認(rèn)框作為負(fù)樣本參與訓(xùn)練,置信度損失的計(jì)算見(jiàn)式(8),保證正負(fù)樣本的比例為1∶3。在此基礎(chǔ)上,本算法隨機(jī)地加入一些未標(biāo)記的區(qū)域作為負(fù)樣本參與訓(xùn)練(注意這里的未標(biāo)記區(qū)域并非沒(méi)有目標(biāo),只是目標(biāo)距離較遠(yuǎn),尺寸很小)。一般情況下,未標(biāo)記的區(qū)域是不參與訓(xùn)練的。這部分實(shí)驗(yàn)是基于KITTI數(shù)據(jù)集的,因?yàn)镵ITTI 數(shù)據(jù)集記錄了許多未標(biāo)注區(qū)域。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),這樣的訓(xùn)練有利于提升模型的泛化能力,降低誤檢率。
為了驗(yàn)證本文提出的DFSSD 模型結(jié)構(gòu)的有效性,在PASCAL VOC2007 和KITTI 數(shù)據(jù)集上分別進(jìn)行實(shí)驗(yàn),在同一個(gè)數(shù)據(jù)集上DFSSD 和SSD 采取相同的數(shù)據(jù)增強(qiáng)策略,不對(duì)DFSSD 算法做額外的數(shù)據(jù)預(yù)處理。本文采取的數(shù)據(jù)增強(qiáng)措施有隨機(jī)顏色抖動(dòng)、隨機(jī)裁剪與縮放等。
實(shí)驗(yàn)所采取的評(píng)價(jià)指標(biāo)為目標(biāo)檢測(cè)領(lǐng)域標(biāo)準(zhǔn)的評(píng)價(jià)指標(biāo)平均精度(Average Precision,AP)和平均精度的均值(mean Average Precision,mAP)。AP 是針對(duì)某一種類(lèi)別而言的,是一種綜合的評(píng)價(jià)指標(biāo),AP值越高表明算法檢測(cè)目標(biāo)的精度和召回率越高,可以根據(jù)PR 曲線(xiàn)與坐標(biāo)軸所包圍的面積近似地計(jì)算出來(lái)。某一類(lèi)別的PR 曲線(xiàn)與坐標(biāo)軸所包圍的面積越大,代表這一類(lèi)別的AP 值越高。PR 曲線(xiàn)是精度(Prescision)關(guān)于召回率(Recall)的曲線(xiàn)。mAP 是所有類(lèi)別AP 的均值,可以評(píng)價(jià)一個(gè)模型檢測(cè)不同類(lèi)別的整體性能。
其中,tp(true positives)為正樣本被正確地識(shí)別為正樣本個(gè)數(shù);fp(false positives)為負(fù)樣本被錯(cuò)誤地識(shí)別為正樣本個(gè)數(shù);fn(false negatives)為正樣本被錯(cuò)誤地識(shí)別為負(fù)樣本個(gè)數(shù)。
本文在計(jì)算tp和fp時(shí)采用的IoU閾值為0.5,當(dāng)預(yù)測(cè)框與真值框的IoU 大于0.5 時(shí)即判定為tp,否則判定為fp,Precision和Recall反映的是模型單方面的性能,由Precision和Recall可以畫(huà)出圖3所示的PR曲線(xiàn)。
為了驗(yàn)證DFSSD 算法的有效性,首先在通用目標(biāo)檢測(cè)數(shù)據(jù)集PASCAL VOC 上進(jìn)行實(shí)驗(yàn),并與其他算法進(jìn)行比較。遵循大部分研究人員的做法,本部分實(shí)驗(yàn)使用PASCAL VOC2007 trainval+PASCAL VOC2012 trainval 作為訓(xùn)練集,PASCAL VOC2007 test 作為測(cè)試集。PASCAL VOC 數(shù)據(jù)集中共有20 類(lèi)目標(biāo),其中有些目標(biāo)樣本數(shù)量較少,并且尺寸很小,比如Boat、Bottle、PottedPlant、Chair、TvMonitor。許多算法在這些類(lèi)別上的平均精度比較低,從而導(dǎo)致算法整體的性能指標(biāo)mAP也降低。因此,可以通過(guò)計(jì)算這些類(lèi)別的AP值來(lái)比較DFSSD 算法對(duì)小目標(biāo)的檢測(cè)能力,通過(guò)mAP 還可以評(píng)價(jià)算法檢測(cè)各類(lèi)目標(biāo)的整體性能。
表1 列出了一些比較流行的目標(biāo)檢測(cè)算法和DFSSD算法在VOC2007測(cè)試集上的檢測(cè)結(jié)果。圖3(a)、(b)分別展示的是SSD300 和 DFSSD300 對(duì)VOC2007 數(shù)據(jù)集中五類(lèi)小目標(biāo)檢測(cè)結(jié)果的PR曲線(xiàn),由PR曲線(xiàn)可以直觀(guān)地比較算法的檢測(cè)性能。
由表1 中的數(shù)據(jù)可以看出,DFSSD 在VOC2007 測(cè)試集上的mAP 為78.0%,原SSD300 的mAP 為74.3%,DFSSD 在mAP 指標(biāo)上提升了3.7 個(gè)百分點(diǎn)。由表1 中加粗的數(shù)據(jù)以及圖3(a)、(b)中的PR 曲線(xiàn)對(duì)比可知,DFSSD對(duì)遠(yuǎn)景小目標(biāo)有較好的檢測(cè)能力。
圖3 SSD300與DFSSD300小目標(biāo)檢測(cè)PR曲線(xiàn)圖
表1 PASCAL VOC 2007測(cè)試結(jié)果 %
圖4(a)和圖4(c)為SSD300的檢測(cè)效果,可以看出SSD300對(duì)于遮擋或者重疊的小目標(biāo)漏檢嚴(yán)重。圖4(b)和圖4(d)為DFSSD 的檢測(cè)效果,對(duì)比可以看出DFSSD對(duì)小目標(biāo)的召回率和定位精度更高,且不易出現(xiàn)漏檢和定位不準(zhǔn)的問(wèn)題。
為了證明DFSSD 能夠適應(yīng)更復(fù)雜的自動(dòng)駕駛場(chǎng)景,本部分實(shí)驗(yàn)在KITTI交通數(shù)據(jù)集上進(jìn)行測(cè)試。KITTI數(shù)據(jù)集是在真實(shí)的交通場(chǎng)景采集的,數(shù)據(jù)集覆蓋各種場(chǎng)景和天氣狀況,并且數(shù)據(jù)集中存在大量重疊遮擋的小目標(biāo),這便于驗(yàn)證DFSSD的有效性。KITTI數(shù)據(jù)集中共有 8 類(lèi)目標(biāo),分別為 Car、Van、Truck、Pedestrian、Person(sitting)、Cyclist、Tram 和Misc。有些類(lèi)別在數(shù)據(jù)集中出現(xiàn)的次數(shù)非常少,官方提供的評(píng)測(cè)腳本也只對(duì)其中的3類(lèi)進(jìn)行評(píng)測(cè)。因此,為了方便實(shí)驗(yàn),并排除樣本類(lèi)別不均衡的影響,本實(shí)驗(yàn)將數(shù)據(jù)集中所有車(chē)輛合并為1 類(lèi),標(biāo)記為Car,只針對(duì)車(chē)輛目標(biāo)進(jìn)行評(píng)估。圖5 為Car 的PR曲線(xiàn)。圖5(a)為SSD300的評(píng)測(cè)結(jié)果,圖5(b)、(c)為DFSSD 算法的評(píng)測(cè)結(jié)果,圖5(b)在訓(xùn)練時(shí)未標(biāo)記區(qū)域不參與訓(xùn)練,圖5(c)在訓(xùn)練時(shí)隨機(jī)加入未標(biāo)記區(qū)域。KITTI 數(shù)據(jù)集將目標(biāo)分為簡(jiǎn)單、中等、困難3 個(gè)級(jí)別,困難目標(biāo)就是嚴(yán)重遮擋,在視野中尺寸特別小的目標(biāo)。由圖5(a)、(b)和(c)的PR曲線(xiàn)可以看出,圖5(b)、(c)中困難目標(biāo)的PR曲線(xiàn)與坐標(biāo)軸所圍的面積比圖5(a)中困難目標(biāo)的PR曲線(xiàn)與坐標(biāo)軸所圍的面積更大,說(shuō)明DFSSD算法對(duì)困難目標(biāo)的檢測(cè)性能提升更大,也就是對(duì)重疊或者小目標(biāo)檢測(cè)能力更強(qiáng)。圖5(c)中困難目標(biāo)的PR曲線(xiàn)比圖5(b)中困難目標(biāo)的PR曲線(xiàn)與坐標(biāo)軸所包圍的面積更大,表明提出的訓(xùn)練方式能夠提升對(duì)困難小目標(biāo)的檢測(cè)能力。
表2 是 Car 類(lèi)目標(biāo)的 AP 值,是通過(guò) PR 曲線(xiàn)計(jì)算出來(lái)的,由AP 值可以對(duì)模型性能進(jìn)行定量分析。由表2可以看出,與SSD相比,DFSSD對(duì)簡(jiǎn)單目標(biāo)的檢測(cè)性能未有明顯變化,但在困難目標(biāo)檢測(cè)中,DFSSD比SSD的AP 增加了5 個(gè)百分點(diǎn),中等困難目標(biāo)的AP 也增加了2個(gè)百分點(diǎn)。
圖4 困難樣例檢測(cè)結(jié)果對(duì)比圖
圖5 Car類(lèi)PR曲線(xiàn)對(duì)比圖
表2 Car類(lèi)目標(biāo)AP %
圖6是從KITTI數(shù)據(jù)集中挑選出來(lái)的具有代表性的困難樣本,圖片中的車(chē)輛或者是大量重疊在一起,或者是呈現(xiàn)在視野遠(yuǎn)處,尺寸較小。圖6左側(cè)一列為SSD300檢測(cè)結(jié)果,右側(cè)一列為DFSSD 算法檢測(cè)結(jié)果。通過(guò)兩列檢測(cè)結(jié)果可以直觀(guān)地看出DFSSD對(duì)困難目標(biāo)的檢測(cè)性能較好,很少有漏檢的現(xiàn)象。主要是因?yàn)镈FSSD 算法能夠在下采樣的過(guò)程中較為完整地保留目標(biāo)的細(xì)節(jié)信息,能夠充分合理地利用卷積過(guò)程所提取出來(lái)的各種尺寸的特征圖,使得卷積神經(jīng)網(wǎng)絡(luò)不同層次所蘊(yùn)含的信息能夠得到充分地融合,從而抽象出較為魯棒的特征作為目標(biāo)檢測(cè)器的輸入。
本文實(shí)驗(yàn)平臺(tái)為Ubuntu16.04,GPU 1080,深度學(xué)習(xí)框架KERAS。實(shí)驗(yàn)測(cè)試幀頻FPS 時(shí),batch size 統(tǒng)一設(shè)為 1。由表3 可知,DFSSD 算法比經(jīng)典 SSD300 的mAP提高了約4個(gè)百分點(diǎn),尤其是對(duì)小目標(biāo)的檢測(cè)能力提升明顯。這得益于選取合理的特征圖作為檢測(cè)器的輸入,同時(shí)對(duì)這些特征進(jìn)行高效的融合,最大程度地保留目標(biāo)的細(xì)節(jié)和語(yǔ)義信息。本文實(shí)驗(yàn)SSD300的FPS為25,DFSSD 算法的 FPS 為 24,在提高精度的同時(shí),DFSSD 還能保證運(yùn)行效率不被降低,仍然可以達(dá)到實(shí)時(shí)檢測(cè)的要求。這主要是因?yàn)镈FSSD在進(jìn)行上采樣時(shí)直接采用插值算法,沒(méi)有使用FSSD、RSSD和DSSD[25]算法中deconvolution上采樣方式,所以沒(méi)有引入額外的參數(shù)和一些重復(fù)的計(jì)算。
表3 VOC2007 test上模型精度與效率對(duì)比
本文DFSSD算法特征提取網(wǎng)絡(luò)部分的參數(shù)是利用預(yù)訓(xùn)練模型進(jìn)行初始化的,其他層的權(quán)重則是采用隨機(jī)初始化。算法采用的是Adam優(yōu)化器,batch size設(shè)置為24,如果顯存足夠大,還可以適當(dāng)增大batch size來(lái)穩(wěn)定梯度。為了不使模型發(fā)散,開(kāi)始的兩輪設(shè)置一個(gè)較小的學(xué)習(xí)率0.000 01,第三輪開(kāi)始調(diào)整學(xué)習(xí)率為0.001,加快模型收斂。分別在第30輪和第80輪將學(xué)習(xí)率縮小為前一輪的1/10,由圖7(a)可以看出,在第80輪降低學(xué)習(xí)率時(shí),模型進(jìn)一步收斂。因?yàn)镵ITTI 數(shù)據(jù)樣本較少,所以在第20輪和第40輪時(shí)降低學(xué)習(xí)率,由圖7(b)可以看出,模型在第50輪時(shí)基本上已經(jīng)收斂。由圖7(a)和圖7(b)中的訓(xùn)練損失曲線(xiàn)和驗(yàn)證損失曲線(xiàn)持續(xù)下降的趨勢(shì)可以看出,模型在整個(gè)訓(xùn)練過(guò)程中未發(fā)散,也未出現(xiàn)過(guò)擬合現(xiàn)象,從而說(shuō)明了DFSSD模型結(jié)構(gòu)的有效性。
圖6 Car類(lèi)困難樣例檢測(cè)結(jié)果對(duì)比圖
圖7 損失曲線(xiàn)圖
針對(duì)原SSD 算法對(duì)困難小目標(biāo)檢測(cè)能力不足的問(wèn)題,本文分析其原因,并提出了一種新的特征融合方式,以提高對(duì)困難目標(biāo)的檢測(cè)能力,同時(shí)還能保證模型的檢測(cè)效率。為了提高模型對(duì)困難目標(biāo)的泛化能力,本文還引入一種新的訓(xùn)練方式,讓未標(biāo)記的但含有目標(biāo)的區(qū)域隨機(jī)地參與訓(xùn)練。通過(guò)實(shí)驗(yàn)證明,本文提出的方法能夠有效提升SSD 算法對(duì)困難目標(biāo)的檢測(cè)能力。未來(lái)進(jìn)一步的研究重點(diǎn)是改進(jìn)特征提取網(wǎng)絡(luò),提升特征表達(dá)能力,降低參數(shù)和計(jì)算量,以保證模型有更高的精度和實(shí)時(shí)性,在應(yīng)用到自動(dòng)駕駛系統(tǒng)時(shí),能夠?yàn)槠渌到y(tǒng)模塊節(jié)約算力。