付佐毅,周世杰,李頂根
1.華中科技大學(xué) 能源與動力工程學(xué)院,武漢 430074
2.華中科技大學(xué) 中歐清潔與可再生能源學(xué)院,武漢 430074
近年來,深度卷積神經(jīng)網(wǎng)絡(luò)成為計算機視覺的主流技術(shù)手段,正在被廣泛應(yīng)用到各個領(lǐng)域。然而深度學(xué)習(xí)模型所設(shè)計和使用的神經(jīng)網(wǎng)絡(luò)通常是為了追求性能而忽略模型的體積和速度[1]。在將目標(biāo)識別深度神經(jīng)網(wǎng)絡(luò)應(yīng)用到各領(lǐng)域時,視覺目標(biāo)識別的各個功能模塊對神經(jīng)網(wǎng)絡(luò)的速度要求非常高,一些業(yè)界領(lǐng)先的深度神經(jīng)網(wǎng)絡(luò)并不能達到這種要求。RCNN 系列網(wǎng)絡(luò)模型(包括fast RCNN,faster RCNN)[2-4]不斷將識別的準(zhǔn)確率進行了提升,但都對幀速度沒有做很大的關(guān)注(幀速值較低)。Liu等人[5]提出的SSD模型具有較高的識別準(zhǔn)確率(74%map)以及幀速(TitanX GPU 上為59 幀/s),但沒有考慮模型的體積問題。YOLO[6-8]系列網(wǎng)絡(luò)模型在具備較高的識別準(zhǔn)確率的同時達到了較高的幀速(70 幀/s 左右,在不同的數(shù)據(jù)集有不同的表現(xiàn)),但沒有考慮網(wǎng)絡(luò)模型的體積問題。吳進等[9]設(shè)計了一種緊湊型卷積神經(jīng)網(wǎng)絡(luò),使用多個小型卷積層,減少了網(wǎng)絡(luò)的參數(shù)量并得到較高的準(zhǔn)確率。本文使用輕量化措施設(shè)計一種輕量級的深度卷積網(wǎng)絡(luò),并將其應(yīng)用到智能駕駛領(lǐng)域。輕量級深度卷積神經(jīng)網(wǎng)絡(luò)具有在保證準(zhǔn)確率的前提下,內(nèi)存占用小、模型體積小、運算速度快等特點,適合應(yīng)用于智能駕駛的目標(biāo)感知。
在智能駕駛汽車的檢測系統(tǒng)中,目標(biāo)檢測需要使用車上攝像頭捕獲汽車周圍環(huán)境,識別出障礙物,并利用雷達等傳感器確認障礙物的空間,然后路徑規(guī)劃決策系統(tǒng)再給出合理的路徑,使得智能駕駛汽車在行駛中繞開障礙物。受限于硬件性能和實時性等因素,在智能駕駛系統(tǒng)中使用的深度學(xué)習(xí)模型的體積不能太大,推理速度也不能太慢。所以此次設(shè)計方案設(shè)計的模型體積不能太大,推理速度必須足夠快。本文在設(shè)計網(wǎng)絡(luò)時采用單次檢測器的設(shè)計方式。
目標(biāo)檢測網(wǎng)絡(luò)按照功能可分為兩個子網(wǎng)絡(luò),一個是主干網(wǎng)絡(luò)(另稱backbone),主要功能是提取圖像特征;另一個是檢測網(wǎng)絡(luò)(另稱fronthead),主要功能是從主干網(wǎng)絡(luò)提取的特征中提取目標(biāo)的坐標(biāo)框和類別置信度。
在本文中,主干網(wǎng)絡(luò)自行設(shè)計,利用一系列輕量化措施設(shè)計輕量級的網(wǎng)絡(luò);檢測網(wǎng)絡(luò)前端獲取預(yù)測坐標(biāo)和置信度部分主要參照SSD網(wǎng)絡(luò)[5],充分利用卷積神經(jīng)網(wǎng)絡(luò)不同尺度的信息。
卷積神經(jīng)網(wǎng)絡(luò)中存在大量的參數(shù),前向推理時涉及大量的運算。其中,全連接層包含大量的參數(shù),計算量相對于其參數(shù)量比較小;池化層不包含參數(shù),由于池化層通常用來降低特征圖分辨率,在網(wǎng)絡(luò)中使用的數(shù)目不多,所以運算量相對比較小;卷積神經(jīng)網(wǎng)絡(luò)的運算量主要集中在卷積層。為了使網(wǎng)絡(luò)體積變小,應(yīng)當(dāng)少使用全連接層,使用小尺寸卷積核。為了提升模型速度,應(yīng)當(dāng)降低模型的運算量。網(wǎng)絡(luò)的運算量除了與卷積核本身相關(guān)外,還與輸入特征圖的尺寸相關(guān),在單層卷積運算中,特征圖尺寸減半,運算量將降低至原來的1/4。
全連接層占有大量參數(shù),訓(xùn)練時容易過擬合,且包含全連接層的網(wǎng)絡(luò)對數(shù)據(jù)輸入尺寸敏感;另外,相關(guān)研究表明,去掉部分全連接層,對模型的準(zhǔn)確率影響不大。所以在設(shè)計的網(wǎng)絡(luò)中,不使用全連接層。
卷積層提取特征時會產(chǎn)生大量運算,為了降低模型的運算量,在網(wǎng)絡(luò)的前幾層充分降低特征圖的分辨率尺寸,然后在小尺寸特征圖上進行大量卷積操作,來避免模型運算量過多。
在網(wǎng)絡(luò)中,包含有大量的模型參數(shù)設(shè)置,為了便于設(shè)計,設(shè)計幾個簡單的最簡模塊,然后使用這些模塊堆疊得到最終模型。設(shè)計的基本卷積模塊見圖1。在圖中,左圖為對特征圖進行不變分辨率提取特征,即特征圖通過卷積模型后,特征圖尺寸和深度都不發(fā)生變化。右圖為對特征圖進行下采樣,經(jīng)過下采樣后,特征的尺寸減半,通道數(shù)加倍。

圖1 降采樣模塊和不變分辨率模塊
不變分辨采樣模塊中使用殘差連接[10]來提升模型性能和加速訓(xùn)練過程,并且使用深度分離卷積來降低參數(shù)量和運算量;另外,還使用1×1卷積調(diào)整數(shù)據(jù)通道數(shù),控制運算規(guī)模。在下采樣模塊中,同樣使用深度分離卷積[11]和1×1卷積控制數(shù)據(jù)維度,與不變分辨率模塊不同的是,模塊輸入和輸出的特征圖分辨率發(fā)生了變化,不能簡單地使用殘差連接,所以使用卷積來替代原有的殘差連接,以控制數(shù)據(jù)分辨率。
主干網(wǎng)絡(luò)設(shè)計如表1。在表中,Output Size表示數(shù)據(jù)經(jīng)過每個卷積模塊后的分辨率,Output Channel表示數(shù)據(jù)的通道數(shù);Stride表示卷積或池化的滑動步長,步長為1 表示經(jīng)過該層后數(shù)據(jù)分辨率不變,步長為2 表示數(shù)據(jù)經(jīng)過該層后分辨率減半。Repeat 表示該模塊的堆疊次數(shù),只有不變分辨率卷積模塊的Repeat次數(shù)不是1,在網(wǎng)絡(luò)中,通過控制模塊重復(fù)次數(shù)來控制網(wǎng)絡(luò)的參數(shù)規(guī)模。

表1 網(wǎng)絡(luò)結(jié)構(gòu)示意表
在主干網(wǎng)絡(luò)中,接近輸入端的幾個卷積、池化和下采樣單元直接使特征圖分辨率下降到輸入圖像的1/8左右,充分降低了特征圖的分辨率,也預(yù)先降低了模型的運算量規(guī)模。降低特征圖尺寸后,進入每個分辨率前,首先使用下采樣模塊降低數(shù)據(jù)的分辨率,然后使用多個堆疊的不變分辨率卷積模塊提取特征。在網(wǎng)絡(luò)中,設(shè)計好不變分辨率卷積模塊和下采樣模塊后,模型中的超參數(shù)僅包括每個分辨率中模塊的堆疊次數(shù),輸出通道數(shù)等少量參數(shù)。
在檢測部分需要將主干網(wǎng)絡(luò)提取的特征轉(zhuǎn)化為預(yù)測的類別置信度和坐標(biāo)框。在這部分,主要參照SSD網(wǎng)絡(luò)結(jié)構(gòu),將多個分辨率的特征納入轉(zhuǎn)換范圍中(見圖2)。選取分辨率列表中每個分辨率的最后一個輸出進行轉(zhuǎn)換。假定某一層的分辨率為M×M。網(wǎng)絡(luò)為特征圖上每個特征像素點設(shè)置一系列預(yù)設(shè)目標(biāo)包圍框,這些包圍框以該像素為中心,擁有不同的高寬比,預(yù)設(shè)目標(biāo)數(shù)目和長寬比另設(shè)超參數(shù),通常稱這些包圍框為default box或anchor box。網(wǎng)絡(luò)在預(yù)測時,預(yù)測與這些預(yù)設(shè)目標(biāo)一一對應(yīng)的可能類別和偏置。將預(yù)測坐標(biāo)問題轉(zhuǎn)化為預(yù)測與預(yù)設(shè)包圍框的偏置問題。

圖2 目標(biāo)檢測網(wǎng)絡(luò)中的坐標(biāo)提取示意圖
網(wǎng)絡(luò)每個階段的數(shù)據(jù)分辨率用N×N來表示,網(wǎng)絡(luò)一共進行了7 次下采樣,其中,只有第二次使用池化層進行,其余地方均用滑動步長為2 的卷積來完成,這是為了避免過多的使用池化層,造成小目標(biāo)信息丟失的問題。
網(wǎng)絡(luò)在預(yù)測時,使用one hot編碼處理類別信息;預(yù)測目標(biāo)包圍盒時,預(yù)測包圍框與預(yù)設(shè)目標(biāo)框之間的偏置。圖中每條連接的實際意義見圖。每個轉(zhuǎn)換包含有對目標(biāo)類別的預(yù)測和坐標(biāo)框偏置的預(yù)測。由于檢測時使用了多個分辨率的特征圖,在訓(xùn)練時,圖像特征相當(dāng)于以不同的尺度被檢測器訓(xùn)練,可看作同時完成了多尺度訓(xùn)練。
如圖3所示,每個坐標(biāo)轉(zhuǎn)換分支使用兩個卷積來完成,一個是類別置信度卷積,另一個是物體坐標(biāo)卷積。圖中,M×M×C某個特征圖的分辨率;mbox表示該分辨率的特征圖中使用的不同長寬比的anchor box 的數(shù)目;Ncls表示數(shù)據(jù)集中包含的類別數(shù)目。類別置信度卷積的輸出通道數(shù)由訓(xùn)練數(shù)據(jù)集的類別數(shù)目和該分辨率特征圖使用的不同長寬比的anchor box 數(shù)目共同決定;位置坐標(biāo)卷積的輸出通道數(shù)由該分辨率特征圖使用的anchor box數(shù)目決定。

圖3 每個坐標(biāo)轉(zhuǎn)換分支的實際過程
在訓(xùn)練時,首先要判定每個預(yù)測是否正確,然后依此訓(xùn)練檢測器,判定過程稱為匹配。在訓(xùn)練階段,網(wǎng)絡(luò)首先尋找與每個anchor box的IoU最大的標(biāo)簽?zāi)繕?biāo)(IoU閾值通常設(shè)置為0.5)。如果一個anchor box 找到了匹配的標(biāo)簽?zāi)繕?biāo),則該default box 就是正樣本,該anchor box 的類別就是該ground truth 的類別,如果沒有找到,該anchor box就是負樣本。匹配完成后,獲得每個預(yù)測的正確性,然后就可以計算損失函數(shù),利用反向傳播算法進行訓(xùn)練。本文中損失函數(shù)與SSD相似,公式如下:

損失函數(shù)包含兩部分,一部分是分類預(yù)測損失,另一部分是坐標(biāo)預(yù)測損失。假定預(yù)測坐標(biāo)框為l,真實坐標(biāo)框為g;將預(yù)測的坐標(biāo)框轉(zhuǎn)換為中心寬高表示方式,即每個坐標(biāo)框用(cx,cy,w,h)表示。式中各項參數(shù)計算公式見表。其中,Pos 和Neg 分別表示匹配后的正樣本和負樣本。在訓(xùn)練時,類別損失使用交叉熵函數(shù)。坐標(biāo)預(yù)測損失使用Smooth L1函數(shù),計算預(yù)測坐標(biāo)和真實坐標(biāo)的偏差時,為了避免差值過大造成損失函數(shù)出現(xiàn)大波動,中心坐標(biāo)歸一化到0~1 區(qū)間;寬高使用對數(shù)函數(shù)進行歸一化。α的取值一般為1,但在一些特定的實驗中,會進行另外設(shè)置。
視覺識別模型設(shè)計好后,可以使用剪枝方法進一步優(yōu)化網(wǎng)絡(luò)內(nèi)部結(jié)構(gòu),壓縮模型體積和運算量,提升模型運行速度。本章中主要采用結(jié)構(gòu)化剪枝,為了便于實驗和分析,將主干網(wǎng)絡(luò)在CIFAR10和CIFAR100數(shù)據(jù)集上進行訓(xùn)練和剪枝,再將剪枝得到的網(wǎng)絡(luò)用到視覺識別任務(wù)中。
剪枝的核心任務(wù)是衡量卷積核對最終結(jié)果的重要性。在本文中,主要針對網(wǎng)絡(luò)中卷積核尺寸為3×3的卷積層進行分析和裁剪,裁剪完成后,調(diào)整特征提取模塊內(nèi)其他層的通道數(shù)來匹配剪枝結(jié)果。主要利用卷積層后的Batch Normalization 內(nèi)的訓(xùn)練參數(shù)來評估卷積核的重要性。
Batch Normalization層[12]主要作用是防止數(shù)據(jù)分布在多層之間發(fā)生偏移,主要方法是將數(shù)據(jù)的分布重新歸一化到均值為0方差為1的分布。為了維持模型的表達能力,給歸一化的數(shù)據(jù)賦予偏置β和系數(shù)γ。
Batch Normalization層的前向計算過程為:

其中,xi為BN 層輸入數(shù)據(jù),yi為BN 層輸出數(shù)據(jù),BN層在計算參數(shù)的均值和方差后,然后對數(shù)據(jù)進行歸一化,為了提升模型的非線性擬合能力,引入?yún)?shù)γ和β。
在BN層中,γ和β都是訓(xùn)練參數(shù),經(jīng)過訓(xùn)練后,每個BN 層的γ和β都有具體的值,由于網(wǎng)絡(luò)中BN 層和卷積層通常一一對應(yīng),那么訓(xùn)練得到的系數(shù)γ就可以大致表示對應(yīng)卷積核的重要性。γ越大,該卷積核對輸出結(jié)果貢獻越大;因此,可以通過分析BN層中的γ參數(shù)來剔除不重要的卷積核。
對于要剪枝的主干網(wǎng)絡(luò),為了便于分析,移除多余的BN層,只有3×3卷積后才配置卷積層;由于CIFAR數(shù)據(jù)集中圖像的分辨率只有32×32,不能進行過多的降采樣,所以只對主干網(wǎng)絡(luò)中的Feature 3 以前的階段納入剪枝網(wǎng)絡(luò)的范圍。在網(wǎng)絡(luò)的末端,加入一個卷積層、ReShape層和全連接層,卷積層的主要作用是降低數(shù)據(jù)通道數(shù),防止全連接層參數(shù)過多;Reshape層是為了變化數(shù)據(jù)維度,便于進行全連接。剪枝網(wǎng)絡(luò)的結(jié)構(gòu)示意見表2。
獲得剪枝網(wǎng)絡(luò)結(jié)構(gòu)后,將網(wǎng)絡(luò)在CIFAR-100數(shù)據(jù)集上進行訓(xùn)練。訓(xùn)練時,batchsize 設(shè)置為64,初始學(xué)習(xí)速率設(shè)置為1,使用SGD 優(yōu)化器控制權(quán)重參數(shù)更新,訓(xùn)練的總epoch 數(shù)為160。在訓(xùn)練輪數(shù)的50%和75%處,將學(xué)習(xí)速率減半。在訓(xùn)練時,對數(shù)據(jù)進行的增強處理和預(yù)處理包括隨機縮放裁剪、隨機水平翻轉(zhuǎn)及歸一化等。
訓(xùn)練完成后,分析網(wǎng)絡(luò)中的每個BN 層的參數(shù)。將每個BN層的γ參數(shù)按照絕對值進行排序,然后按照設(shè)定好預(yù)定剪枝比例獲得邊界值,參數(shù)γ低于邊界值的卷積核不納入剪枝后的網(wǎng)絡(luò)。剪枝后網(wǎng)絡(luò)中3×3 卷積層的卷積核數(shù)目見表3。在表中,layer 為每個層的索引值,對應(yīng)該層在網(wǎng)絡(luò)中的深度;before 為初始的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計;rate表示剪枝比例,表中后三列表示剪枝后每個卷積層應(yīng)該保留的卷積核數(shù)目。

表2 剪枝網(wǎng)絡(luò)結(jié)構(gòu)表

表3 剪枝后每個卷積層的卷積核數(shù)目
從表3可知,網(wǎng)絡(luò)的頭部和末端的卷積層的重要性更大,中間層次之;在每個分辨率階段,第一個特征提取層更重要,降分辨率采樣層次之,后面的其余特征提取模塊重要性更低。剪枝比例很大的時候會急劇減小模型的體積,但同時會使得識別準(zhǔn)確率降低很多,因此在保證識別準(zhǔn)確率的同時要盡量提高剪枝比例。剪枝實驗表明在剪枝比例為0.5 的時候,保證了較高的識別率的同時模型體積較小,若再增大剪枝比例,識別準(zhǔn)確率將急劇減小。因此在后續(xù)訓(xùn)練中,使用剪枝比例為0.5的模型進行訓(xùn)練。
本章模型訓(xùn)練所使用的圖片來自VOC 2007、VOC 2012、Udacity 和 KITTI 等數(shù)據(jù)集中的目標(biāo)檢測部分[13],以此創(chuàng)建數(shù)據(jù)集(為方便,下文統(tǒng)稱KITTI數(shù)據(jù)集)。為了便于訓(xùn)練和評估模型性能,統(tǒng)一將數(shù)據(jù)轉(zhuǎn)換為VOC格式,并使用VOC 的評估方式,模型的評估指標(biāo)mAP。另外,Udacity 和KITTI 兩個數(shù)據(jù)集要么沒有給出測試集,要么沒有給出測試集的標(biāo)簽;處理方法是將所有的帶標(biāo)簽圖像按照6∶4的比例劃分訓(xùn)練集和測試集。
在網(wǎng)絡(luò)中,包含有大量的參數(shù),需要使用大量數(shù)據(jù)進行訓(xùn)練,否則容易過擬合。數(shù)據(jù)集的采集和標(biāo)注成本限制了數(shù)據(jù)集的規(guī)模,而數(shù)據(jù)增強技術(shù)能夠以極小的成本豐富數(shù)據(jù)集,有效防止過擬合。數(shù)據(jù)增強一方面能夠以極小成本增加訓(xùn)練的數(shù)據(jù)量,提升了模型的泛化能力;另一方面,數(shù)據(jù)增強給圖像增加了噪聲數(shù)據(jù),提高了模型的魯棒性。實驗中使用的數(shù)據(jù)增強方法包括光學(xué)畸變、水平翻轉(zhuǎn)、平移等。
雖然設(shè)計的模型沒有使用全連接層,對輸入尺寸并不敏感,但是,為了便于批量運算,送入網(wǎng)絡(luò)的圖像尺寸需要統(tǒng)一。在實驗中,首先對圖像進行數(shù)據(jù)增強變換,然后將數(shù)據(jù)增強后的圖像縮放至300×300,并對數(shù)據(jù)做去均值處理。
實驗中使用的硬件環(huán)境見表4。其中至強CPU 共有兩塊,每塊有 8 個核心,16 個邏輯處理器;GPU 為1080Ti,每塊GPU的顯存為11 GB;內(nèi)存64 GB。

表4 硬件參數(shù)表
卷積網(wǎng)絡(luò)的前向計算和反向傳播過程都可以矩陣化表示,在訓(xùn)練時可用并行計算加速訓(xùn)練過程。GPU內(nèi)包含有大量的并行計算單元,非常適用于訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)。本文在實驗中使用GPU來加速訓(xùn)練過程。
本文使用的深度學(xué)習(xí)計算框架為pytorch,其余軟件工具包括opencv、pillow、matplotlib 等。相關(guān)的網(wǎng)絡(luò)定義代碼和訓(xùn)練代碼均由Python編寫完成。
在進行遷移學(xué)習(xí)時,對于與預(yù)訓(xùn)練模型對應(yīng)層匹配的部分,直接利用預(yù)訓(xùn)練模型進行初始化。不能直接從預(yù)訓(xùn)練模型獲取的權(quán)重再使用Xavier[14]進行初始化。
在訓(xùn)練時,使用隨機梯度下降算法進行訓(xùn)練,即使用SGD 優(yōu)化器。在訓(xùn)練過程中,所有訓(xùn)練參數(shù)都有SGD 優(yōu)化器進行統(tǒng)一維護和更新,使用統(tǒng)一的學(xué)習(xí)速率。當(dāng)訓(xùn)練進行到一定階段時,損失曲線可能不再下降,參數(shù)學(xué)習(xí)過程變得艱難,需要降低學(xué)習(xí)速率,使模型損失在訓(xùn)練中繼續(xù)下降。在訓(xùn)練目標(biāo)識別網(wǎng)絡(luò)時,使用SGDR來調(diào)整學(xué)習(xí)速率。
在訓(xùn)練中,數(shù)據(jù)集每完成一個epoch的訓(xùn)練,記錄一組損失函數(shù)的值。訓(xùn)練完成后,繪制網(wǎng)絡(luò)損失和時間的變化關(guān)系圖,見圖4 及圖5。在圖中橫軸表示數(shù)據(jù)訓(xùn)練的輪數(shù)。

圖4 置信度損失變化曲線

圖5 坐標(biāo)定位損失變化曲線
從圖4 及圖5 可看出,置信度損失和坐標(biāo)定位損失都隨著訓(xùn)練時間的增加而不斷下降,當(dāng)訓(xùn)練接近終止時,損失已收斂。訓(xùn)練完后,用測試數(shù)據(jù)集對網(wǎng)絡(luò)的性能進行評估。對于模型給出的每張測試圖片的預(yù)測結(jié)果,按照預(yù)測的置信度進行排序,然后按照預(yù)測坐標(biāo)框與真實坐標(biāo)框的IoU 值判定一個預(yù)測結(jié)果屬于正例還是反例,如果一個預(yù)測結(jié)果與某個真實坐標(biāo)框閾值符合要求,但是已經(jīng)有某個置信度更高的預(yù)測與這個真實標(biāo)注坐標(biāo)框匹配,那么該預(yù)測同樣屬于反例。對每個預(yù)測結(jié)果進行歸類后,計算預(yù)測的精確率向量和召回率向量。然后取不同的召回率閾值,繪制Precision-Recall曲線。模型在KITTI數(shù)據(jù)集上的PR曲線見圖6。

圖6 模型在測試集上的Percison-Recall曲線
圖6 中可知,模型在“car(汽車)”,“tram(電車)”,“truck(卡車)”中都有很好的精確率和召回率;在“van(面包車)”中的召回率一般,不是特別好。在“person(人)”和“cyclis(t騎自行車的人)”中的召回率較低,這主要是由于數(shù)據(jù)中的大多數(shù)行人和自行車在圖像中占有的像素空間太小,模型在對這類目標(biāo)進行預(yù)測時很容易誤判,使得模型在追求高召回率的時候,預(yù)測精度下降。繪制好PR 曲線后,計算每個類別PR 曲線下的面積,所得面積即為模型在每個類別下的平均準(zhǔn)確率AP,然后對所有類別的AP 取均值,即可獲得模型在測試集上的mAP,具體參數(shù)值見表5。最終,模型在KITTI測試集上獲得meanAP為0.727。作為對比,使用VGG-SSD、YOLO、MobileNet[15]網(wǎng)絡(luò)模型在數(shù)據(jù)集上進行實驗,最終的對比結(jié)果如表6所示。

表5 各個類別的AP值

表6 模型性能對比表
通過對比可知,本文模型在識別精度上比VGG-SSD模型相差9 個百分點;但是模型的速度是VGG-SSD 的兩倍,體積僅是VGG-SSD模型的1/5。而對比于YOLO和MobileNet來說,本文模型體積大量減少,運算速度大量提升。本文提出的模型體積僅有19 MB,處理速度可以達到66.67 幀/s,將其應(yīng)用到智能駕駛時,能夠?qū)崟r地對道路上的目標(biāo)進行檢測識別。部分樣例識別結(jié)果見圖7。

圖7 識別結(jié)果展示
基于深度分離卷積和殘差連接等思想,設(shè)計了一個不變分辨率特征提取模塊和一個降分辨率下采樣模塊,通過堆疊設(shè)計的特征提取模塊和降分辨率下采樣模塊,獲得了主干網(wǎng)絡(luò)。初始主干網(wǎng)絡(luò)設(shè)計完成后,修改網(wǎng)絡(luò)的末端,加入分類器,在CIFAR100數(shù)據(jù)集上對網(wǎng)絡(luò)進行訓(xùn)練,通過BatchNormalization 層的參數(shù)γ來衡量每個卷積核的重要性,然后將不重要的卷積核從網(wǎng)絡(luò)中剔除出去,進一步優(yōu)化網(wǎng)絡(luò)的結(jié)構(gòu)。對主干網(wǎng)絡(luò)進行剪枝后,在構(gòu)建的KITTI 數(shù)據(jù)集上(由VOC 2007、VOC 2012、Udacity 和KITTI 數(shù)據(jù)集中目標(biāo)識別圖片構(gòu)成)對整個識別網(wǎng)絡(luò)進行訓(xùn)練。最終,設(shè)計的模型在構(gòu)建的數(shù)據(jù)集上取得了72.7%的mAP,速度為66.7 幀/s,達到實時,能夠很好地應(yīng)用到智能駕駛領(lǐng)域。