林封笑,陳華杰,姚勤煒,張杰豪
(杭州電子科技大學(xué) 自動化學(xué)院,杭州 310018)
目標(biāo)檢測與識別是通過分析目標(biāo)的幾何或統(tǒng)計特征,在未知圖像中能夠準(zhǔn)確地檢測并識別出目標(biāo)。目前,目標(biāo)檢測算法比較復(fù)雜、耗時且缺乏魯棒性,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)已成為目標(biāo)檢測與識別領(lǐng)域的研究熱點[1-3]。
卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)模型[4-5]的一種,能從大量數(shù)據(jù)中自動學(xué)習(xí)目標(biāo)特征。文獻(xiàn)[6]提出R-CNN目標(biāo)檢測框架,實現(xiàn)CNN的目標(biāo)檢測算法。文獻(xiàn)[7]提出Fast R-CNN目標(biāo)檢測框架,減少在R-CNN檢測框架中存在的冗余計算。文獻(xiàn)[8]提出Faster R-CNN目標(biāo)檢測框架,降低檢測框架中候選區(qū)域算法的復(fù)雜度。文獻(xiàn)[9]提出基于YOLO的目標(biāo)檢測框架,該框架提高了檢測速度,但消耗較多的檢測精度?;贑NN的目標(biāo)檢測算法在應(yīng)用中性能穩(wěn)定,但模型規(guī)模較為龐大,存在大量的參數(shù),帶來沉重的計算開銷,影響網(wǎng)絡(luò)的檢測速度。
基于CNN的目標(biāo)檢測算法的基本流程為特征提取網(wǎng)絡(luò)、區(qū)域建議生成、感興趣區(qū)域分類。其中,區(qū)域建議生成模塊不完全占用參數(shù)規(guī)模與計算開銷,分類模塊能通過壓縮方法進(jìn)行有效壓縮,如采用奇異值分解策略[10]。采用卷積神經(jīng)網(wǎng)絡(luò)作為特征提取網(wǎng)絡(luò),對檢測算法的檢測性能具有顯著影響。通常采用的卷積神經(jīng)網(wǎng)絡(luò)有:AlexNet[11],ZF[12],VGG[13],GoogLeNet[14],ResNet[15]等,這一系列網(wǎng)絡(luò)通過逐步加深網(wǎng)絡(luò)提高性能。然而,深度的增加會帶來大規(guī)模的參數(shù)數(shù)量。因此,研究人員進(jìn)行了針對小型卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計,增加網(wǎng)絡(luò)寬度的SqueezeNet[16],簡化卷積計算結(jié)構(gòu)的MobileNet[17],增強(qiáng)單層卷積特征提取的NIN[18]。小型卷積神經(jīng)網(wǎng)絡(luò)實現(xiàn)網(wǎng)絡(luò)參數(shù)規(guī)模的縮減,具有較好的特征提取性能,但其仍存在網(wǎng)絡(luò)深度或計算開銷的制約,影響網(wǎng)絡(luò)的速度。
針對上述研究存在的不足,本文提出一種基于混合結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)快速檢測算法,將Faster R-CNN目標(biāo)檢測框架特征提取的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行替換,采用混合結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò),并利用小型卷積神經(jīng)網(wǎng)絡(luò)設(shè)計卷積層結(jié)構(gòu),在保持較淺網(wǎng)絡(luò)深度的情況下,減少網(wǎng)絡(luò)參數(shù)的同時降低計算開銷。
本文目標(biāo)快速檢測網(wǎng)絡(luò)框架基于Faster R-CNN目標(biāo)檢測算法,如圖1所示,該框架將區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)和目標(biāo)識別網(wǎng)絡(luò)Fast R-CNN相拼接,2個網(wǎng)絡(luò)均采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取。因此,將共有的卷積特征提取部分參數(shù)共享,使2個網(wǎng)絡(luò)結(jié)合得到一個端到端的檢測網(wǎng)絡(luò)。
圖1 Faster R-CNN目標(biāo)檢測網(wǎng)絡(luò)
RPN網(wǎng)絡(luò)用于生成區(qū)域候選窗口,利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,在最后一層特征圖上采用一個滑動窗口平移遍歷,每次移動滑窗后,以滑窗位置中心為基準(zhǔn),通過尺度與寬高比生成候選區(qū)域窗口,對產(chǎn)生的所有候選區(qū)域窗口采用非極大值抑制算法存在的冗余窗口進(jìn)行剔除,并選取前K個候選區(qū)域作為最終生成的候選區(qū)域窗口,用于Fast R-CNN網(wǎng)絡(luò)的訓(xùn)練。
Fast R-CNN網(wǎng)絡(luò)用于對候選區(qū)域分類和邊框回歸,獲得目標(biāo)檢測結(jié)果。以輸入圖像以及通過RPN網(wǎng)絡(luò)得到的區(qū)域候選窗作為輸入,通過卷積神經(jīng)網(wǎng)絡(luò)提取到最后一層輸出的特征圖,然后對區(qū)域候選窗在特征圖上進(jìn)行映射,并采用RoI池化操作將映射區(qū)域池化到同一大小,通過全連接層得到特征向量,利用特征向量實現(xiàn)邊框回歸以及目標(biāo)分類。
卷積神經(jīng)網(wǎng)絡(luò)作為RPN網(wǎng)絡(luò)和Fast R-CNN網(wǎng)絡(luò)的共享部分,作用是對輸入圖像進(jìn)行特征提取。典型卷積神經(jīng)網(wǎng)絡(luò)通常由輸入層、卷積層、池化層、全連接層、輸出層組成。其中,卷積層是核心部件,且網(wǎng)絡(luò)采用多層卷積層串聯(lián)的結(jié)構(gòu)組合方式構(gòu)成深層網(wǎng)絡(luò),每一層卷積層中的不同卷積核能夠?qū)W習(xí)不同的目標(biāo)特征,多層卷積層實現(xiàn)對輸入信息的分層特征提取與融合。低層卷積層主要提取低級特征,如邊緣、角落、顏色組合等,高層卷積層主要對低級特征的抽象,獲取更高級的特征,如形狀或目標(biāo)的顯著變化[12]。
卷積神經(jīng)網(wǎng)絡(luò)中的參數(shù)源于每層卷積層的卷積核數(shù)量。卷積層結(jié)構(gòu)示意圖如圖2所示,其中,單層卷積層的結(jié)構(gòu)如圖2(a)所示。
圖2 卷積層結(jié)構(gòu)示意圖
一幅通道數(shù)為M的特征圖經(jīng)過卷積層時,與每個卷積核分別進(jìn)行卷積操作,通過激活函數(shù)f(·)形成對應(yīng)輸出特征圖中的一個通道信息,多個卷積核使輸出特征圖仍保持多通道。為獲得完備的特征信息,需要網(wǎng)絡(luò)采用更深的層次,每層擁有更多的卷積核數(shù)目,導(dǎo)致網(wǎng)絡(luò)具有龐大的計算開銷,影響其提取速度。因此,本文對卷積神經(jīng)網(wǎng)絡(luò)優(yōu)化改進(jìn)的設(shè)計方向是當(dāng)網(wǎng)絡(luò)層數(shù)較淺時仍具有良好的特征提取性能。此外,根據(jù)參數(shù)來源分析,層之間的通道數(shù)對參數(shù)數(shù)量以及計算開銷有直接影響,降低卷積層之間的通道數(shù),通過低通道數(shù)來減少參數(shù)規(guī)模,降低計算開銷。
本文采用全卷積結(jié)構(gòu),利用6層卷積層進(jìn)行串聯(lián),減少池化層造成的信息丟失及全連接層過多的參數(shù)規(guī)模。為減少網(wǎng)絡(luò)的參數(shù)規(guī)模,根據(jù)結(jié)構(gòu)優(yōu)化的主要設(shè)計原則,CR-mlpconv(Channel Reduction Multilayer Perceptron Convolutional)卷積層結(jié)構(gòu)替換原有卷積層,并采用C.ReLU策略協(xié)同作用,混合卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如表1所示,第1層為標(biāo)準(zhǔn)的卷積層,其余5層采用CR-mlpconv卷積層結(jié)構(gòu)。同時在網(wǎng)絡(luò)的前3層中,采用C.ReLU策略,第2、3層為CR-mlpconv結(jié)構(gòu)和C.ReLU策略的混合。
表1 混合卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
根據(jù)卷積層結(jié)構(gòu)與整體網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計原則,本文提出CR-mlpconv卷積層結(jié)構(gòu),其網(wǎng)絡(luò)結(jié)構(gòu)如圖2(c)所示,其中,圖2(b)~圖2(d)采取單卷積核描述。mlpconv結(jié)構(gòu)應(yīng)用于NIN網(wǎng)絡(luò)中,網(wǎng)絡(luò)結(jié)構(gòu)形式如圖2(b)所示。通過在每個卷積核中添加微型多層感知器網(wǎng)絡(luò),對每個局部感受器的神經(jīng)元進(jìn)行非線性抽象,增強(qiáng)該層特征的表達(dá)。采用mlpconv結(jié)構(gòu)能夠使整體卷積神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)深度與特征提取性能之間取得較好的平衡,即不需要很深的網(wǎng)絡(luò)結(jié)構(gòu),仍具有較好的特征提取性能。
CR-mlpconv結(jié)構(gòu)采用文獻(xiàn)[16]提出的點卷積預(yù)先降低通道數(shù),將上層得到的輸出特征圖輸入到mlpconv結(jié)構(gòu)。點卷積由卷積核大小為1×1的多個卷積核組成,其個數(shù)是點卷積的通道數(shù),決定了點卷積在通道數(shù)上的變化尺度。
為實現(xiàn)低通道操作,點卷積通道數(shù)小于輸入特征圖以及卷積層的通道數(shù)。卷積層的通道數(shù)與參數(shù)數(shù)量呈現(xiàn)正相關(guān)關(guān)系,CR-mlpconv結(jié)構(gòu)在保持其特征提取性能的基礎(chǔ)上,能有效減少卷積層的卷積參數(shù)規(guī)模,降低由參數(shù)數(shù)量帶來復(fù)雜的計算開銷。
本文采用級聯(lián)修正線性單元(Concatenated Rectified Linear Units,C.ReLU)策略,應(yīng)用在卷積神經(jīng)網(wǎng)絡(luò)的淺層結(jié)構(gòu)中,對卷積層參數(shù)通過降低通道數(shù)進(jìn)行縮減。卷積神經(jīng)網(wǎng)絡(luò)的淺層網(wǎng)絡(luò)中,其卷積層的卷積核存在一定程度上的相位成對現(xiàn)象[19],且相位相反,即存在一個卷積核的激活則存在與之相位相反的另一個激活卷積核,導(dǎo)致在學(xué)習(xí)過程中得到的淺層卷積核存在冗余。
根據(jù)冗余卷積核的相位成對現(xiàn)象,C.ReLU策略在網(wǎng)絡(luò)中加入相位的先驗信息,消除卷積核中的冗余。在結(jié)構(gòu)上,C.ReLU策略將卷積層的輸出取反操作,將其與輸出進(jìn)行通道上的連接合并,得到輸出特征圖,如圖3所示。因此,在剔除冗余卷積核的同時,為得到與網(wǎng)絡(luò)結(jié)構(gòu)相同的特征圖輸出,將結(jié)構(gòu)中的卷積層通道數(shù)設(shè)置為原有結(jié)構(gòu)通道數(shù)的一半。
圖3 C.ReLU策略結(jié)構(gòu)示意圖
在卷積神經(jīng)網(wǎng)絡(luò)中,第k層卷積層如圖2(a)所示,其輸入特征圖尺寸為DM×DM×M,其中,M為輸入圖像通道數(shù),經(jīng)卷積操作后輸出特征圖尺寸為DN×DN×N,其中,N為輸出通道數(shù),則該卷積層由N個卷積核組成,假設(shè)每個卷積核的尺寸為DK×DK×M,則有:
(1)
其中,P表示邊緣填充的寬度,S表示卷積核的滑動步長。設(shè)典型卷積神經(jīng)網(wǎng)絡(luò)的輸入長寬均相等,且不帶偏置項,則第k層卷積層的參數(shù)數(shù)量pk與計算開銷ck分別為:
pk=M×N×DK×DK
ck=M×N×DK×DK×DN×DN=pk×DN×DN
(2)
由式(2)可以看出,通道數(shù)與參數(shù)數(shù)量、計算開銷成正相關(guān)關(guān)系,表明降低通道數(shù)能夠減少網(wǎng)絡(luò)模型的參數(shù)規(guī)模。
(3)
根據(jù)N′的選擇,采用CR-mlpconv層結(jié)構(gòu)能夠減少約45%~80%的參數(shù)數(shù)量及計算開銷。
(4)
假設(shè)典型卷積神經(jīng)網(wǎng)絡(luò)為K層網(wǎng)絡(luò),則該網(wǎng)絡(luò)的總參數(shù)數(shù)量與總計算開銷為:
(5)
若網(wǎng)絡(luò)采用混合CR-mlpconv卷積層結(jié)構(gòu)和C.ReLU策略的結(jié)構(gòu)設(shè)計,則K層網(wǎng)絡(luò)擁有總參數(shù)數(shù)量與總計算開銷分別為:
(6)
其中,c?k=p?k×DN×DN和p?k=M×N′×1×1+N′×N″×DK×DK分別表示第k層的計算開銷與參數(shù)數(shù)量。若假定選擇N′=0.5N=0.5M,DK=3,則與K層典型卷積神經(jīng)網(wǎng)絡(luò)相比,該網(wǎng)絡(luò)能減少約70%的參數(shù)數(shù)量及計算開銷。
本文實驗環(huán)境如下:操作系統(tǒng)為Ubuntu14.04,GPU型號為NVIIDA Titan X,開發(fā)框架采用caffe深度學(xué)習(xí)框架。實驗采用GPU加速。
訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)需大量的數(shù)據(jù)集,防止出現(xiàn)過擬合[20],采用預(yù)訓(xùn)練網(wǎng)絡(luò)對目標(biāo)分類或目標(biāo)檢測網(wǎng)絡(luò)微調(diào),保證網(wǎng)絡(luò)性能較好。本文目標(biāo)快速檢測網(wǎng)絡(luò)的訓(xùn)練采用2次訓(xùn)練策略,通過大數(shù)據(jù)集訓(xùn)練得到特征提取部分的預(yù)訓(xùn)練網(wǎng)絡(luò),采用預(yù)訓(xùn)練網(wǎng)絡(luò)對目標(biāo)快速檢測網(wǎng)絡(luò)訓(xùn)練。其中,預(yù)訓(xùn)練網(wǎng)絡(luò)通過實現(xiàn)分類任務(wù)對網(wǎng)絡(luò)進(jìn)行性能評價。
預(yù)訓(xùn)練網(wǎng)絡(luò)采用已有的網(wǎng)絡(luò)數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集,如ImageNet數(shù)據(jù)集,該數(shù)據(jù)集含有近1 400多萬張圖像,涵蓋2萬多個類別。圖像在輸入網(wǎng)絡(luò)前剪裁至224×224,并把圖像順序隨機(jī)打亂。預(yù)訓(xùn)練網(wǎng)絡(luò)中層的待學(xué)習(xí)參數(shù)用均值為0,標(biāo)準(zhǔn)差為0.01的高斯分布隨機(jī)采樣進(jìn)行初始化。預(yù)訓(xùn)練網(wǎng)絡(luò)的初始學(xué)習(xí)率base_lr設(shè)置為0.01,學(xué)習(xí)率策略為poly策略,其函數(shù)形式為:
lr=base_lr×(1-i/max_i)∧(power)
(7)
其中,i表示當(dāng)前迭代次數(shù),max_i表示最大迭代次數(shù),power為超參數(shù)。本文取max_i=300 000,power=0.5。
檢測網(wǎng)絡(luò)采用帶有邊框信息的數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)集,如Pascal VOC2007數(shù)據(jù)集,該數(shù)據(jù)集含有20類檢測目標(biāo),共5 011張圖像,且每張圖像含有多目標(biāo)或多類目標(biāo)。檢測網(wǎng)絡(luò)將輸入圖像縮放,使圖像最短邊長設(shè)置為640。檢測網(wǎng)絡(luò)的特征提取層參數(shù)利用預(yù)訓(xùn)練網(wǎng)絡(luò)得到的參數(shù)初始化,待學(xué)習(xí)參數(shù)以均值為0,標(biāo)準(zhǔn)差為0.01的高斯分布隨機(jī)采樣初始化。檢測網(wǎng)絡(luò)的初始學(xué)習(xí)率base_lr設(shè)置為0.001,并且在第50 000次迭代時,將學(xué)習(xí)率調(diào)整為0.000 1,最大迭代次數(shù)設(shè)置為70 000次。
本節(jié)通過多組模型的對比實驗驗證單一結(jié)構(gòu)對卷積神經(jīng)網(wǎng)絡(luò)的性能影響。實驗采用已有的網(wǎng)絡(luò)模型作為基準(zhǔn),在基準(zhǔn)網(wǎng)絡(luò)模型上重新設(shè)計每一種基本構(gòu)建單元的網(wǎng)絡(luò)模型,具體如下:模型1采用文獻(xiàn)[12]提出的典型5層ZFnet網(wǎng)絡(luò);模型2采用文獻(xiàn)[13]提出的16層VGG網(wǎng)絡(luò);模型3采用文獻(xiàn)[18]提出的4層NIN網(wǎng)絡(luò);模型4卷積層采用CR-mlpconv卷積層結(jié)構(gòu)替換,整體網(wǎng)絡(luò)的層數(shù)與層參數(shù)與模型3相同;模型5基于模型4,在網(wǎng)絡(luò)前3層采用C.ReLU策略。
通過實現(xiàn)分類任務(wù)[11]對每一個網(wǎng)絡(luò)進(jìn)行性能評價,每一個網(wǎng)絡(luò)的訓(xùn)練策略采用3.1節(jié)中預(yù)訓(xùn)練網(wǎng)絡(luò)的訓(xùn)練策略,對24類目標(biāo)分類,訓(xùn)練數(shù)據(jù)集源于ILSVRC2012數(shù)據(jù)集,共含有30 000張圖像,實驗結(jié)果如表2所示。
表2 單一結(jié)構(gòu)對網(wǎng)絡(luò)的性能影響
從表2可以看出,采用mlpconv結(jié)構(gòu)構(gòu)成深度較淺的卷積神經(jīng)網(wǎng)絡(luò),其分類準(zhǔn)確率分別達(dá)到了73.3%和94.3%,與模型1相比分別提高10.2%和3.1%,與模型2保持相近的準(zhǔn)確率,網(wǎng)絡(luò)具有較好的性能,其參數(shù)數(shù)量及計算開銷與淺層模型相近,但相較于深層模型有顯著降低。在保持網(wǎng)絡(luò)性能的同時,采用CR-mlpconv層結(jié)構(gòu)的網(wǎng)絡(luò),參數(shù)數(shù)量減少58.6%,計算開銷降低47.4%,采用C.ReLU策略的網(wǎng)絡(luò),其參數(shù)數(shù)量減少13.0%,計算開銷降低27.0%,結(jié)合CR-mlpconv層結(jié)構(gòu)和C.ReLU策略的網(wǎng)絡(luò),2項降幅分別為64.0%和61.6%。綜上分析,本文提出的結(jié)構(gòu)設(shè)計在網(wǎng)絡(luò)較淺時能保持其特征提取性能,并且能有效減少網(wǎng)絡(luò)的參數(shù)數(shù)量,降低計算開銷。
本文對5類常見目標(biāo)進(jìn)行目標(biāo)檢測任務(wù),該5類分別為飛機(jī)、船只、轎車、火車、人,其中預(yù)訓(xùn)練網(wǎng)絡(luò)通過24類目標(biāo)的分類任務(wù)訓(xùn)練得到。預(yù)訓(xùn)練網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)集來源ILSVRC2012數(shù)據(jù)集,含有30 000張圖像,目標(biāo)檢測網(wǎng)絡(luò)的訓(xùn)練集與測試集數(shù)據(jù)來源于VOC2007數(shù)據(jù)集,訓(xùn)練集含有3 105張圖像。
本文采用相同的數(shù)據(jù)集以及訓(xùn)練模式,對文獻(xiàn)[8]提供的2種常用網(wǎng)絡(luò)模型訓(xùn)練,將得到的網(wǎng)絡(luò)模型與本文目標(biāo)快速檢測網(wǎng)絡(luò)模型對比,結(jié)果如表3所示。
表3 檢測網(wǎng)絡(luò)性能對比實驗結(jié)果
從表3可以看出,目標(biāo)快速檢測網(wǎng)絡(luò)算法的檢測性能為45.2%,與其余2個模型的檢測性能相比差值為-11%和+1.7%。但在參數(shù)數(shù)量與計算開銷方面,目標(biāo)快速檢測網(wǎng)絡(luò)算法優(yōu)勢較為明顯,能夠分別減少69%和95%的參數(shù)數(shù)量,同時也分別降低69%和95%的計算開銷。
較少的參數(shù)數(shù)量降低網(wǎng)絡(luò)的資源消耗,提升了網(wǎng)絡(luò)的檢測速度,目標(biāo)快速檢測網(wǎng)絡(luò)在測試時占用的運行內(nèi)存為895 MB,與其余2個模型相比分別減少30%和83%。在對網(wǎng)絡(luò)檢測速度測試時,目標(biāo)快速檢測網(wǎng)絡(luò)算法對單幅圖像測試時間為32 ms,比其他2個模型分別提升1.5倍和4倍。因此,本文算法能夠有效地減少網(wǎng)絡(luò)的參數(shù)規(guī)模,提高目標(biāo)檢測網(wǎng)絡(luò)的檢測速度,同時有效地減少檢測網(wǎng)絡(luò)的資源消耗。
本文提出混合結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)快速檢測算法。該算法利用CR-mlpconv結(jié)構(gòu)降低通道數(shù),網(wǎng)絡(luò)淺層應(yīng)用C.ReLU策略,通過級聯(lián)兩者,得到結(jié)構(gòu)優(yōu)化的混合結(jié)構(gòu)卷積神經(jīng)網(wǎng)絡(luò)。實驗結(jié)果表明,本文算法能夠減小網(wǎng)絡(luò)模型的參數(shù)規(guī)模,提高網(wǎng)絡(luò)的實時性,降低網(wǎng)絡(luò)模型的內(nèi)存消耗。如何進(jìn)一步降低模型規(guī)模和提高檢測性能是下一步的研究方向。