劉 丹,吳亞娟,羅南超,鄭伯川
(1. 西華師范大學(xué)計(jì)算機(jī)學(xué)院,四川南充637009; 2. 阿壩師范學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川阿壩623002;3. 西華師范大學(xué)數(shù)學(xué)與信息學(xué)院,四川南充637009)
先進(jìn)駕駛輔助系統(tǒng)(Advanced Driver Assistant System,ADAS)利用安裝于車上的各種傳感器,如攝像頭、雷達(dá)、激光和超聲波等,實(shí)時(shí)采集車內(nèi)外場(chǎng)景數(shù)據(jù),實(shí)時(shí)分析判斷,提醒駕駛者注意異常交通和道路情況,使駕駛者盡早察覺可能的危險(xiǎn),提高駕駛安全性。對(duì)車輛和行人等的目標(biāo)檢測(cè)是ADAS 中重要的任務(wù)之一。ADAS 中不僅對(duì)目標(biāo)檢測(cè)的準(zhǔn)確性要求高,而且不能漏掉對(duì)小目標(biāo)的檢測(cè)。
目標(biāo)檢測(cè)的任務(wù)是識(shí)別出圖像或視頻中的感興趣物體,同時(shí)檢測(cè)出它們的位置,被廣泛應(yīng)用于機(jī)器人導(dǎo)航、智能視頻監(jiān)控、工業(yè)檢測(cè)、航空航天等諸多領(lǐng)域。同時(shí),目標(biāo)檢測(cè)也是身份識(shí)別領(lǐng)域的一個(gè)基礎(chǔ)性算法,其效果直接影響后續(xù)的特征識(shí)別、步態(tài)識(shí)別、流量計(jì)數(shù)、實(shí)例分割等任務(wù)。
目前,目標(biāo)檢測(cè)已經(jīng)廣泛采用基于深度神經(jīng)網(wǎng)絡(luò)的檢測(cè)方法,如兩階段的Faster R-CNN(Faster Region-Convolutional Neural Networks)系列方法[1-4],一階段的單次多框檢測(cè)(Single Shot multibox Detector,SSD)系列方法[5-10]和 YOLO(You Only Look Once)系列方法[11-13]。YOLO v3[13]由于采用了更多尺度檢測(cè)框和更簡(jiǎn)潔的網(wǎng)絡(luò)結(jié)構(gòu),因而具有檢測(cè)速度快、能檢測(cè)小目標(biāo)等優(yōu)點(diǎn)。隨后的 Gaussian-YOLO v3[14]利用 Gaussian 模型來對(duì)網(wǎng)絡(luò)輸出進(jìn)行建模,使得網(wǎng)絡(luò)對(duì)輸出每個(gè)檢測(cè)框的不確定性進(jìn)行抑制,提高了檢測(cè)位置的準(zhǔn)確性。
基于駕駛者角度觀察到的前方道路情況復(fù)雜多變,目標(biāo)種類多,大小目標(biāo)都有。距離遠(yuǎn)的圖像區(qū)域內(nèi)目標(biāo)物體通常尺寸小,特征不明顯,難以對(duì)其準(zhǔn)確檢測(cè)定位。YOLO v3雖然具有檢測(cè)小目標(biāo)的能力,但是對(duì)遠(yuǎn)距離多個(gè)小目標(biāo)的檢測(cè)能力不夠理想,容易漏檢;而Gaussian-YOLO v3雖然抑制了檢測(cè)框的不確定性,但沒有能提升對(duì)小目標(biāo)的檢測(cè)能力。
注意力機(jī)制[15]通過三元組(key,query,value)提供一種有效捕捉全局上下文信息的建模方式。近年來,注意力機(jī)制被廣泛應(yīng)用于自然語言處理和計(jì)算機(jī)視覺領(lǐng)域。文獻(xiàn)[16]中指出人類看東西時(shí)不是將目光放在整張圖片上,而是根據(jù)需求將注意力集中到圖像的特定部分。如果在計(jì)算機(jī)視覺處理中對(duì)人的注意力機(jī)制進(jìn)行建模,將其應(yīng)用到一些視覺任務(wù)中,將更有利于完成這些任務(wù),如圖像分割、目標(biāo)檢測(cè)等。Google Mind 團(tuán)隊(duì)提出在循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[17]模型上使用注意力機(jī)制來進(jìn)行圖像分類,取得了較好的結(jié)果;Xu 等[18]將注意力機(jī)制引入到了圖像描述領(lǐng)域,也取得了不錯(cuò)的效果;文獻(xiàn)[19]中提出的注意力mask 通過給每個(gè)特征元素都找到其對(duì)應(yīng)的注意力權(quán)重,同時(shí)形成了空間域和通道域的注意力機(jī)制;文獻(xiàn)[20]中運(yùn)用注意力設(shè)計(jì)了一個(gè)通用的非局部神經(jīng)網(wǎng)絡(luò)來描述圖像每個(gè)像素對(duì)前后幀圖像的貢獻(xiàn)關(guān)系,從而改善與可視化理解相關(guān)視覺任務(wù)的可解釋性;文獻(xiàn)[21]中提出的一種輕量、通用的注意力模型(Convolutional Block Attention Module,CBAM)更關(guān)注目標(biāo)物體本身,比基準(zhǔn)模型有著更好的性能和更好的解釋性??梢?,注意力機(jī)制能提高計(jì)算機(jī)視覺任務(wù)的性能。
圖1 整體網(wǎng)絡(luò)結(jié)構(gòu)Fig. 1 Overall network structure
目標(biāo)檢測(cè)是對(duì)圖像中特定關(guān)注的區(qū)域進(jìn)行識(shí)別并定位。在應(yīng)用目標(biāo)檢測(cè)算法時(shí),如果在需要關(guān)注的目標(biāo)區(qū)域投入更多的注意力資源,獲取更多的細(xì)節(jié)信息,抑制其他區(qū)域信息,從而使目標(biāo)檢測(cè)算法從大量信息中快速獲取到高價(jià)值信息,將有利于提升目標(biāo)檢測(cè)的性能。
本文通過借鑒SENet(Squeeze-and-Excitation Networks)[22]網(wǎng)絡(luò)中的注意力機(jī)制,在Gaussian-YOLO v3 中嵌入注意力機(jī)制和特征交織模塊,從而提升Gaussian-YOLO v3 的目標(biāo)檢測(cè)性能。主要改進(jìn)包括以下兩點(diǎn):
1)引入文獻(xiàn)[21]中的注意力模型,自適應(yīng)校準(zhǔn)每個(gè)通道的特征響應(yīng)值,自動(dòng)獲取每個(gè)特征通道的權(quán)重,根據(jù)通道權(quán)重增強(qiáng)有用特征,抑制不重要特征;
2)引入文獻(xiàn)[23]中的特征交織模塊,通過不同通道的特征交織混合,豐富特征信息,有效解決網(wǎng)絡(luò)前向傳遞信息丟失、小目標(biāo)難檢測(cè)的問題,提高網(wǎng)絡(luò)對(duì)小目標(biāo)的特征提取能力。
本文方法在Gaussian-YOLO v3 中添加通道注意力機(jī)制,自主學(xué)習(xí)每個(gè)通道的權(quán)重,從而增強(qiáng)關(guān)鍵特征、抑制冗余特征;同時(shí)在Gaussian-YOLO v3中增加特征交織模塊,提高對(duì)小目標(biāo)特征的提取能力。嵌入注意力和特征交織模塊的Gaussian-YOLO v3的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示(參照文獻(xiàn)[14]),圖中虛線框部分是嵌入注意力和特征交織的改進(jìn)模塊。
YOLO v3 的主干網(wǎng)絡(luò)是Darknet53,該網(wǎng)絡(luò)使用步長(zhǎng)為2的卷積來實(shí)現(xiàn)5 次下采樣,降低了池化帶來的梯度負(fù)面效果。同時(shí)使用了23 個(gè)殘差模塊,在增加網(wǎng)絡(luò)深度的同時(shí)降低產(chǎn)生過擬合的風(fēng)險(xiǎn)。Convolutional layer 層是YOLO v3 的基本組件,該組件由 Darknetconv2d+BN+Leaky ReLU 構(gòu)成。85、97 層是上采樣層,通過上采樣提升深層特征圖大小,并與淺層特征圖進(jìn)行級(jí)聯(lián)形成 Router 層[24]。如 85 層將 16 × 16 × 256 的特征上采樣得到32 × 32 × 256的特征,再將其與61層32 × 32 ×512 的特征級(jí)聯(lián)得到 32 × 32 × 768 的特征。82、94、106 特征圖為檢測(cè)層,在三條預(yù)測(cè)支路采用全卷積結(jié)構(gòu)。三個(gè)檢測(cè)層的大小分別為:16 × 16 × 45、32 × 32 × 45 和 64 × 64 × 45,由于感受野大小不同,因此用于分別檢測(cè)不同尺度大小的目標(biāo)。檢測(cè)層每個(gè)網(wǎng)格單元設(shè)置3個(gè)檢測(cè)框,因此每個(gè)網(wǎng)格單元預(yù)測(cè)向量長(zhǎng)度為:3 × (10 + 4 + 1) = 45,其中 10 對(duì)應(yīng) BDD100K 數(shù)據(jù)集[25]的 10 類,3 表示每個(gè)網(wǎng)格單元包含 3 個(gè)檢測(cè)框,4 是每個(gè)檢測(cè)框4 個(gè)位置偏移量,1 是每個(gè)檢測(cè)框包含目標(biāo)的置信值。9個(gè)檢測(cè)框的大小采用文獻(xiàn)[14]對(duì)BDD100K數(shù)據(jù)集聚類得到的結(jié)果。
為了進(jìn)一步提升特征表達(dá)能力,本文在主干網(wǎng)絡(luò)的每個(gè)殘差模塊中的相鄰兩個(gè)卷積層之間加入一個(gè)同時(shí)融合了通道注意力和特征交織的特征融合模塊構(gòu)成新的殘差模塊。通道注意力模塊有利于提取重要特征[26],而特征交織模塊有利于豐富特征信息。通道注意力模塊和特征交織模塊將在后面作更詳細(xì)的介紹。
YOLO v3的輸出結(jié)果中,目標(biāo)類別是概率值,但目標(biāo)框位置是確定值,不是概率值,無法獲得每個(gè)預(yù)測(cè)框的可靠性。Choi 等[14]利用 Gaussian 模型來對(duì)網(wǎng)絡(luò)輸出進(jìn)行建模,在基本不改變YOLO v3 結(jié)構(gòu)和計(jì)算量的情況下,建模之后能夠輸出每個(gè)預(yù)測(cè)框的可靠性。如圖2 所示(圖像來源于文獻(xiàn)[14]),Gaussian-YOLO v3 通過增加預(yù)測(cè)框位置的概率輸出和改進(jìn)網(wǎng)絡(luò)的損失函數(shù),實(shí)現(xiàn)了對(duì)預(yù)測(cè)框可靠性的輸出。
圖2 基于Gaussian分布的YOLO v3網(wǎng)絡(luò)輸出[14]Fig. 2 Output of YOLO v3 network based on Gaussian distribution[14]
采用的Gaussian模型為:
其中μ(x)為均值函數(shù),Σ(x)為方差函數(shù)。
預(yù)測(cè)框位置所采用的損失函數(shù)為:
其中:γijk為是否是最合適的預(yù)測(cè)框,值為1 表示是,0 表示否。預(yù)測(cè)框的可靠性C由三部分的乘積構(gòu)成:
圖1中的通道注意力模塊如圖3所示。
圖3 通道注意力模塊Fig. 3 Channel attention module
通道注意力模塊完成下列公式的計(jì)算:
其中:F ∈ RH×W×C為輸入特征圖,F(xiàn)′∈ RH×W×C為經(jīng)過注意力提升后的特征圖;H、W、C 分別表示特征圖的長(zhǎng)度、寬度和通道數(shù);?表示逐元素乘法;Mc(F)表示對(duì)F 在通道維度上作注意力提取操作。Mc(F)的計(jì)算公式為:
圖4 展示了添加注意力模塊和沒有注意力模塊時(shí),第一個(gè)檢測(cè)層(82 層)中目標(biāo)置信值的情況(只顯示高于閾值0.8的置信值,并映射到原圖上)。圖4 中深色部分是目標(biāo)置信值較高的地方,可以看出,本文設(shè)計(jì)的通道注意力模塊使深色區(qū)域部分更多,而沒有添加注意力模塊的Gaussian-YOLO v3 對(duì)部分真實(shí)目標(biāo)物體給予相對(duì)更低的置信值(部分低于閾值,沒有顯示出來)。這說明添加注意力模塊增強(qiáng)了特征圖中目標(biāo)區(qū)域的信息,抑制了非目標(biāo)區(qū)域的信息,提升了網(wǎng)絡(luò)對(duì)前景目標(biāo)和背景的區(qū)分能力。
圖4 目標(biāo)置信值對(duì)比Fig. 4 Comparison of object confidence
目前常見的卷積神經(jīng)網(wǎng)絡(luò)提取特征的方法大多都以分層方式進(jìn)行,即每層各個(gè)通道采用相同的方式提取。這種分層方式要么對(duì)每一層使用多個(gè)尺度的卷積核進(jìn)行提取特征,如SPPNet(Spatial Pyramid Pooling Network)[27],要么是對(duì)每一層提取的特征進(jìn)行融合,如 FPN(Feature Pyramid Network)[28]。本文在加入通道注意力的同時(shí)加入了一種特征交織模塊。通過在同一層特征圖內(nèi)不同通道之間建立連接,交織不同通道的特征,解決網(wǎng)絡(luò)前向傳遞信息丟失、小目標(biāo)難檢測(cè)的問題,提高網(wǎng)絡(luò)對(duì)小目標(biāo)的特征提取能力。特征交織模塊結(jié)構(gòu)如圖5所示。
圖5 特征交織模塊Fig. 5 Feature interwine module
特征交織模塊將輸入特征圖按通道分為s 個(gè)通道組,分別由x1,x2,…,xs表示,每組都有相同的寬和高,通道數(shù)為輸入特征圖的1/s。每組的輸出yi通過如下公式計(jì)算。
其中:Ki為3× 3的卷積核;s為比例尺寸控制參數(shù),設(shè)置s= 4。在同一個(gè)特征圖的不同通道組包含了不同感受野大小的特征,相比一個(gè)原始的3× 3 的卷積核,進(jìn)行特征交織后的特征圖具有更加豐富的特征。
實(shí)驗(yàn)電腦硬件配置為:雙核Intel Xeon CPU E5-2650 v4@2.20 GHz,內(nèi)存大小為264 GB,4 塊Tesla P40 顯卡,每塊顯存24 GB。軟件系統(tǒng)配置為:Ubuntu 16.04LTS,CUDA 9.0,CUDNN 7.3,Python3.6編程語言,Darknet深度學(xué)習(xí)框架。
為驗(yàn)證本文方法的有效性,在BDD100K 數(shù)據(jù)集上對(duì)YOLO v3、Gaussion-YOLO v3和本文方法進(jìn)行對(duì)比。BDD100K數(shù)據(jù)集由伯克利大學(xué)AI 實(shí)驗(yàn)室發(fā)布,包含10 萬段高清視頻、10萬張關(guān)鍵幀(每個(gè)視頻的第10 s關(guān)鍵幀)以及相應(yīng)的標(biāo)注信息。本文實(shí)驗(yàn)使用10 萬張關(guān)鍵幀圖像以及每幀圖像的道路目標(biāo)邊界框標(biāo)注數(shù)據(jù)。道路目標(biāo)共有10 個(gè)類別,分別為:Bus、Light、Sign、Person、Bike、Truck、Motor、Car、Train、Rider,總共約有184 萬個(gè)標(biāo)定框。針對(duì)目標(biāo)邊界框標(biāo)注,10 萬張圖像數(shù)據(jù)集分為7萬張訓(xùn)練集、2萬張測(cè)試集和1萬張驗(yàn)證集。
在訓(xùn)練階段,主干網(wǎng)絡(luò)采用在ImageNet 上預(yù)訓(xùn)練好的模型參數(shù)。訓(xùn)練時(shí),采用動(dòng)量為0.9,初始學(xué)習(xí)率為0.001,學(xué)習(xí)率下降參數(shù)為0.000 1,衰減系數(shù)為0.000 5,圖像輸入尺寸為512 × 512。通過調(diào)整飽和度、曝光量、色調(diào)增加訓(xùn)練樣本。使用小批量隨機(jī)梯度下降進(jìn)行優(yōu)化,每次迭代的批量大小為512,經(jīng)過45 000 次左右迭代后網(wǎng)絡(luò)收斂。圖6 是本文改進(jìn)網(wǎng)絡(luò)訓(xùn)練過程中的損失函數(shù)變化曲線,縱軸為平均損失值,可以看出網(wǎng)絡(luò)損失處于穩(wěn)定下降狀態(tài)后最終收斂。模型收斂后,交并比(Intersection over Union,IoU)的值穩(wěn)定在0.8 左右,意味著檢測(cè)準(zhǔn)確,獲得了相對(duì)可靠和有效的目標(biāo)檢測(cè)網(wǎng)絡(luò)模型。
圖6 網(wǎng)絡(luò)訓(xùn)練損失函數(shù)曲線Fig. 6 Loss function curve of network training
圖7 是三種方法在BDD100K 數(shù)據(jù)集的部分圖像上的檢測(cè)效果。圖7 中淺色箭頭所指的目標(biāo)是YOLO v3 或者Gaussion-YOLO v3 漏檢,但是卻被本文方法檢測(cè)到的目標(biāo)。深色箭頭所指目標(biāo)是在GT(Ground Truth)中誤檢目標(biāo)。從圖7中可以看出本文方法對(duì)目標(biāo)的檢測(cè)與GT中標(biāo)注更一致。
測(cè)試測(cè)試集時(shí),采樣平均精確率均值(mean Average Precision,mAP)和F1分?jǐn)?shù)評(píng)價(jià)檢測(cè)性能,計(jì)算公式如下:
其中:TP(True Positive)是正確檢測(cè)目標(biāo)數(shù)量,F(xiàn)P(False Positive)是誤檢目標(biāo)數(shù)量,F(xiàn)N(False Negative)是漏檢目標(biāo)數(shù)量;AP(Average Precision)是每類物體平均精確率,其值等于Precision-recall 曲線下方的面積;N是總的類別數(shù)量。精確率(P)和召回率(R)在實(shí)際中是相互制約的,單獨(dú)比較會(huì)有失平衡,所以使用了F1分?jǐn)?shù)作為綜合評(píng)價(jià)指數(shù),F(xiàn)1分?jǐn)?shù)同時(shí)兼顧精確率和召回率,是兩者的調(diào)和平均數(shù)。
表1 列出了三種對(duì)比方法對(duì)10 類目標(biāo)的平均精確率AP,表2 列出了三種對(duì)比方法的mAP、F1分?jǐn)?shù)、模型運(yùn)算所耗費(fèi)的十億次浮點(diǎn)運(yùn)算量BLFOPs(Billion Float Operations)和檢測(cè)速度FPS(Frames per second)??梢钥闯霰疚姆椒ǖ膶?duì)每類目標(biāo)的AP值都高于其他兩種方法;本文方法的mAP和F1分?jǐn)?shù)分別為20.81%、18.17%,也高于其他兩種方法;在相同設(shè)備情況下,本文模型復(fù)雜度稍有提高,但檢測(cè)速度FPS 與Gaussian-YOLO v3幾乎保持一致。
表1 目標(biāo)的平均精確率比較 單位:%Tab.1 Average precision comparison of objects unit:%
表2 三種方法性能比較Tab.2 Performance comparison of three methods
本文對(duì)小目標(biāo)進(jìn)行了定義:設(shè)定目標(biāo)面積占圖像總像素比例小于等于0.3%的物體為小目標(biāo)。由于網(wǎng)絡(luò)輸入圖像大小為512 × 512,因此設(shè)定的小目標(biāo)都不超過786 個(gè)像素。圖8 為圖7 原圖GT中去除大目標(biāo)后的小目標(biāo)樣例。從圖8 可以觀察到,本文方法能夠檢測(cè)到更多的小目標(biāo)。
分別統(tǒng)計(jì)三種方法對(duì)小目標(biāo)的檢測(cè)情況,包括:真實(shí)標(biāo)定GT數(shù)量、真正例TP數(shù)量、假正例FP數(shù)量,統(tǒng)計(jì)結(jié)果如表 3 所示。從表3 中可以看出,本文方法檢測(cè)出的TP數(shù)量最多,同時(shí)FP數(shù)量最少。與YOLO v3相比,本文方法對(duì)小目標(biāo)的檢出率提高了13.49%,誤報(bào)率降低了8.7%;與Gaussian-YOLO v3相比,對(duì)小目標(biāo)的檢出率提高了7.27%,誤報(bào)率由降低了3.5%。
表3 小目標(biāo)檢測(cè)統(tǒng)計(jì)對(duì)比Tab. 3 Statistic comparison of small object detection
圖7 檢測(cè)定位效果Fig. 7 Detection and positioning effect
圖8 小目標(biāo)檢測(cè)樣例Fig. 8 Detection examples for small object
本文提出的Gaussian-YOLO v3改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu)通過嵌入注意力和特征交織模塊不僅使特征圖的不同通道學(xué)習(xí)到了通道權(quán)重,而且使通道間的特征進(jìn)一步交織,從而提升了原Gaussian-YOLO v3 的目標(biāo)檢測(cè)性能,特別是對(duì)小目標(biāo)的檢測(cè)性能也得到了提升。同時(shí)也注意到,不管是YOLO v3、Gaussian-YOLO v3,還是本文的改進(jìn) Gaussian-YOLO v3,對(duì)DBB100K數(shù)據(jù)集的10類目標(biāo)的平均精確率均值都較低,因此還需要開展進(jìn)一步的研究。在汽車自動(dòng)駕駛中,遠(yuǎn)處目標(biāo)由于距離遠(yuǎn),形成的目標(biāo)圖像小,經(jīng)過多級(jí)網(wǎng)絡(luò)卷積后,特征不明顯甚至消失,因此今后將繼續(xù)探索如何提升小目標(biāo)的特征表達(dá),提升網(wǎng)絡(luò)對(duì)小目標(biāo)的檢測(cè)能力。