劉 寬,郎 磊
(1.鄭州輕工業(yè)大學 計算機與通信工程學院,鄭州 450001;2.華中師范大學 物理科學與技術(shù)學院,武漢 430079)
近年來,深度學習作為人工智能技術(shù)中發(fā)展最快、應(yīng)用最廣、效果最佳的技術(shù),受到廣泛關(guān)注[1].目前這項技術(shù)被廣泛應(yīng)用于計算機視覺、自然語言處理、數(shù)據(jù)挖掘等領(lǐng)域中,并在各個領(lǐng)域之中均取得了十分優(yōu)異的成績[2~5].目標檢測作為計算機視覺領(lǐng)域的研究重點[6~7],一直以來也是研究的重中之重,尤其是基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標檢測技術(shù).
基于深度卷積神經(jīng)網(wǎng)絡(luò)的目標檢測算法通過學習用戶標定的訓(xùn)練集,不斷優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)中各項參數(shù),最終實現(xiàn)自動提取圖像特征信息的目的,獲得目標的位置和種類.這種算法具有較強的學習能力,精度相對于其他方法提升較大且魯棒性強.如今,該算法主要分為兩大類:一類是基于區(qū)域的目標檢測算法,另一類是基于回歸的目標檢測算法[8].其中,第1類算法的典型模型為Faster R-CNN(Faster region based convolutional neural network)模型[9]和R-FCN(region-based fully convolutional networks)模型[10],該類算法往往是兩個階段的,首先需要得到候選區(qū)域,然后進行分類與回歸的預(yù)測,具有較高的檢測準確度,尤其對小目標的檢測,但此類算法往往單個模型體積過大,不適用于嵌入式平臺的設(shè)備中.第2類算法的典型模型為YOLO(You Only Look Once)模型[11]和SSD(Single Shot mulitibox Detecor)模型[12],該類算法僅用一步直接實現(xiàn)對目標位置的預(yù)測和分類,模型體積相對較小,但參數(shù)對于嵌入式平臺來說,還是未達到應(yīng)用標準.
基于回歸的目標檢測算法主要由基礎(chǔ)網(wǎng)絡(luò)層和回歸檢測層兩部分組成,基礎(chǔ)網(wǎng)絡(luò)層的主要任務(wù)是提取輸入圖像中的重要特征信息,再由回歸檢測層完成對目標位置和類別的預(yù)測與識別.基礎(chǔ)網(wǎng)絡(luò)層對整個網(wǎng)絡(luò)模型的影響最大,尤其體現(xiàn)在檢測速度、識別精度和尺寸大小等方面.當前,谷歌公司、曠視科技公司、伯利克大學等公司或高校的研發(fā)人員[13]提出的基于不同卷積運算的緊湊的卷積神經(jīng)網(wǎng)絡(luò),縮小了網(wǎng)絡(luò)尺寸,極大地降低了模型所需運算量,同時保證了具有較高的預(yù)測準確度.
為了在嵌入式平臺上實現(xiàn)目標檢測精度和檢測速度方面的良好平衡,本文對經(jīng)典目標檢測模型SSD進行了深入研究,基于SSD模型結(jié)構(gòu)特點,結(jié)合輕量級卷積神經(jīng)網(wǎng)絡(luò)ESPNet[14]和輕量化后的反卷積模塊[15],搭建了輕量化目標檢測模型,在網(wǎng)絡(luò)尺寸和準確度上進行均衡,為目標檢測應(yīng)用于資源匱乏的嵌入式設(shè)備提供可能性.
SSD模型是以VGG(visual geometry group)圖像分類算法[16]為基礎(chǔ)卷積層,一種直接預(yù)測目標位置和類別的經(jīng)典目標檢測模型.算法首先利用基礎(chǔ)網(wǎng)絡(luò)層提取圖像特征的優(yōu)勢,快速定位重要信息特征;隨后設(shè)計并使用回歸檢測層對目標的位置和類別信息的特征進一步預(yù)測,回歸檢測層由4個額外卷積層組成,用于輸出不同尺度的特征圖,每層通過兩個3×3卷積運算預(yù)測目標的位置和類別,SSD網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示.
圖1 SSD模型結(jié)構(gòu)
SSD網(wǎng)絡(luò)模型深層特征尺度小,濾波器感受野大,語義特征信息豐富,可以有效地檢測較大物體;而淺層模型特征尺度大,濾波器感受野小,細節(jié)信息較多,更適合檢測小物體.此外,網(wǎng)絡(luò)中引入先驗框(prior box),與Faster R-CNN 中的Anchor boxes[17]運行機制相似,不斷改進框體位置,接近真實框位置.雖然SSD網(wǎng)絡(luò)作為經(jīng)典模型,其結(jié)構(gòu)設(shè)計一直以來是學習對象,但是其對較小目標檢測準確度低,主要由于淺層語義特征信息較弱,有效特征信息較少.
ESPNet是專門設(shè)計的緊湊神經(jīng)網(wǎng)絡(luò)模型,與MobileNet[18-19]和ShuffleNet[20-21]相似,廣泛應(yīng)用于移動端或嵌入式設(shè)備之中,具有參數(shù)少、計算量低和響應(yīng)速度快等特點.該類網(wǎng)絡(luò)是在卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上,改變基本運算方法,重新設(shè)計基礎(chǔ)構(gòu)建塊,按照構(gòu)建塊堆疊的思想,搭建網(wǎng)絡(luò)結(jié)構(gòu),直接設(shè)計出具有較小計算復(fù)雜度和參數(shù)量的新型網(wǎng)絡(luò).
ESPNet中使用深度可膨脹可分離卷積(depth-wise dilated separable)代替標準卷積運算,引入膨脹率r,用于表示卷積運算膨脹大小,即卷積核運算時值與值之間的間隔大小[22],如圖2為不同膨脹率的3×3卷積計算示意圖.假設(shè)輸入通道數(shù)為m,輸出通道數(shù)為n,卷積核大小為k×k,標準卷積參數(shù)量為k2mn,而深度可膨脹可分離卷積參數(shù)量為k2m+mn,其計算量也僅為標準卷積的1/n+1/k2倍.同時,膨脹卷積帶來更大的有效感受野(receptive field),標準卷積的有效感受野值為k×k,深度可膨脹可分離卷積的有效感受野值為[(k-1)×r+1]×[(k-1)×r+1].這種基礎(chǔ)運算方式不僅降低了所需參數(shù),減少了計算量,同時也提高了單次運算的有效感受野.
圖2 不同膨脹率下的3×3卷積計算
隨后,根據(jù)深度可膨脹可分離卷積特點,設(shè)計了模型的核心構(gòu)建塊EESP(Efficient Spatial Pyramid of Depth-wise Dilated Separable Convolutions)單元,其結(jié)構(gòu)如圖3所示.圖3(a)和圖3(b)分別表示不同步長下的EESP單元.圖3(a)中EESP單元步長為1,首先對輸入圖像進行深度可膨脹可分離卷積運算,即分組卷積和深度膨脹卷積,其中深度膨脹卷積核大小均為3;采用層次特征融合(hierarchical feature fusion,HFF)對輸出進行拼接,消除由膨脹卷積引起的gridding artifacts[23-24]問題;最后使用分組卷積混合各通道信息,并與輸入特征圖元素相加,緩解梯度消失問題.圖3(b)是帶有Stride的EESP單元,即步長為2的EESP單元,與基礎(chǔ)EESP單元不同的是,深度膨脹卷積操作中的步長均設(shè)置為2,并直接建立與輸入圖像間的連接,防止圖像在向下采樣過程中造成信息損失.圖3中各卷積層表示含義如下:Conv-n為n×n標準卷積;GConv-1為逐點卷積;DDConv-3為3×3的深度膨脹卷積;括號內(nèi)數(shù)值分別為輸入通道數(shù)、輸出通道數(shù)和膨脹率.
(a) EESP單元(b) 帶有Stride的EESP單元
最終,ESPNet采用基礎(chǔ)構(gòu)建塊堆疊的方式,逐步搭建了網(wǎng)絡(luò),本文主要使用ESPNet應(yīng)用于圖像分類上基礎(chǔ)網(wǎng)絡(luò)的模型,整體網(wǎng)絡(luò)結(jié)構(gòu)如表1所示.ESPNet圖像分類模型多次交替使用不同步長的EESP單元,提高網(wǎng)絡(luò)深度,并在首尾采用基礎(chǔ)卷積和分組卷積混合各通道信息.相較于VGG網(wǎng)絡(luò),該網(wǎng)絡(luò)模型更加緊湊,參數(shù)量和計算復(fù)雜度更少;與其他緊湊的神經(jīng)網(wǎng)絡(luò)模型相比,如MobileNet和ShuffleNet,在相同的預(yù)測精度上,具有相對小的尺寸和較快的預(yù)測速度.
表1 ESPNet整體網(wǎng)絡(luò)結(jié)構(gòu)
針對SSD算法在嵌入式設(shè)備應(yīng)用方面和小目標檢測方面的不足,本文使用輕量化卷積神經(jīng)網(wǎng)路ESPNet作為基礎(chǔ)網(wǎng)絡(luò)層,降低整體模型尺寸大小,加快模型預(yù)測速度;引入反卷積模塊,提高網(wǎng)絡(luò)深度,并充分融合淺層細節(jié)特征信息和深層語義信息,增強網(wǎng)絡(luò)對小目標的檢測能力.同時,對額外特征層和反卷積模塊進行輕量化處理,在模塊尺寸和提取特征值效果方面做了權(quán)衡,進一步降低網(wǎng)絡(luò)參數(shù),提高網(wǎng)絡(luò)預(yù)測速度,本文稱改進后的網(wǎng)絡(luò)模型為FA-SSD(Fast and Accurate Single Shot Detector).
FA-SSD網(wǎng)絡(luò)模型結(jié)構(gòu)如圖4所示,以ESPNet圖像分類模型前5層作為基礎(chǔ)網(wǎng)絡(luò)層,快速提取圖像特征信息,最后輸出大小為10×10的特征圖;隨后,添加改進的額外特征層,即僅有3個卷積的額外特征層,分別為Conv6_2、Conv7_2、Conv8,輸出大小為1×1的特征圖;最后,輸入由多個輕量級反卷積模塊組成“倒三角”,得到不同尺寸的特征表示層.
圖4 改進網(wǎng)絡(luò)模型結(jié)構(gòu)
為了均衡模型的準確度和尺寸大小,在模型的額外特征層中,對SSD額外層進行改造.Conv6_2和Conv7_2是由步長為2、卷積核為3的分組卷積和步長為1,卷積核為1的逐點卷積組成,每次卷積后,均進行BN(Batchnormal)和PReLU(Paramaetric Rectified Linear Unit)操作,且整個過程重復(fù)運行2次;Conv8由平均池化層、步長為2且卷積核為3的分組卷積和PReLU 3部分組成,用于進一步提取大尺寸的圖像特征.
對于模型的“倒三角”部分,從Conv8開始,由前一層的結(jié)果和上層網(wǎng)絡(luò)擁有相同尺寸的層作為輸入,組成反卷積模塊的輸入,即Conv9由Conv8與Conv7_2融合得到,Conv10由Conv9與Conv6_2融合得到,Conv11由Conv10與Conv5融合得到,Conv12由Conv11與Conv4融合得到,Conv13由Conv12與Conv3融合得到,這種上下采樣信息融合方式,降低了上采樣所帶來的信息丟失的問題,同時增加了網(wǎng)絡(luò)深度.
本文中反卷積模塊使用了多次,若采用標準卷積運算,則網(wǎng)絡(luò)的計算復(fù)雜度和參數(shù)量呈線性提升,因此本文提出的FA-SSD模型對反卷積模塊進行改進.假設(shè)改進反卷積模塊的輸入特征圖分別為H×W×D′和2H×2W×D,反卷積核大小為k×k,輸出特征圖為2H×2W×D,其結(jié)構(gòu)如圖5所示.反卷積模塊由反卷積部分和卷積部分兩塊組成,通過元素操作連接輸出,卷積層輸入特征圖的大小為反卷積層的“兩倍”.為了保證二者輸出特征圖尺寸和通道數(shù)一致,反卷積部分需要先通過反卷積操作,再經(jīng)過深度可分離卷積操作后進入下一階段;卷積部分僅通過兩次深度可分離卷積操作即可.二者結(jié)果進行元素求和操作(Eltw sum),再經(jīng)ReLU層實現(xiàn)上下采樣的信息融合.改進反卷積模塊具體參數(shù)如表2所示.
表2 反卷積模塊參數(shù)設(shè)置
模型采用這種“寬-窄-寬”的“沙漏”結(jié)構(gòu),是由于“窄”層(即標準模型的底層)具有較高的語義信息,但分辨率較低,而“寬”層(即標準模型的高層)相反,反卷積得到的特征與相應(yīng)尺寸的特征圖融合,在目標檢測方面具有更好的效果,實現(xiàn)方式與FPN網(wǎng)絡(luò)[25]有異曲同工之妙.
模型訓(xùn)練采用的硬件設(shè)備如下:組裝Windows 1 064位操作系統(tǒng)的臺式機,處理器型號為AMD Ryzen5 1 400,內(nèi)存為16 G,顯卡為NVIDIA GTX1660Super.軟件使用開發(fā)環(huán)境版本如下:Anaconda3、Pytorch 1.6.0、CUDA 10.2、cuDNN 7.4、Python 3.6.10、Tensorflow-gpu 2.3.0.為了進一步節(jié)省開發(fā)時間,安裝了numpy、Keras、tqdm等第三方資源庫.
數(shù)據(jù)集采用PASCAL VOC 2007和PASCAL VOC 2012,共21個類別,滿足具體任務(wù)對于目標檢測和準確度測試的需求,同時極大地降低了模型訓(xùn)練所需的時間成本和硬件配置成本.超參數(shù)設(shè)定為單次訓(xùn)練樣本數(shù)(Batch Size)為16、動量(Momentum)為0.9、權(quán)重衰減(Weight decay)為0.000 5、初始化學習率(Learning rate)為0.001,學習率隨著迭代次數(shù)的增加而逐漸降低.為了提高預(yù)測準確度,每個尺寸輸出均設(shè)置有6個先驗框.此外,網(wǎng)絡(luò)采用圖像分類網(wǎng)絡(luò)ESPNet的參數(shù)加速收斂,訓(xùn)練損失值如圖6所示,實驗共執(zhí)行了400個echo,每個echo訓(xùn)練整個數(shù)據(jù)集.
圖6 網(wǎng)絡(luò)訓(xùn)練損失值圖像
模型訓(xùn)練集選用VOC 07+12的方式,基本SSD模型、基礎(chǔ)網(wǎng)絡(luò)為ESPNet的SSD模型和改進SSD模型訓(xùn)練的后在VOC 2007上進行測試,并做出對比,圖像預(yù)測結(jié)果如圖7所示.
(a) 改進算法(b) ESPNet (c) 原SSD算法
圖7(a)為改進算法的物體檢測圖;圖7(b)為基礎(chǔ)網(wǎng)絡(luò)ESPNet的SSD算法物體檢測圖;圖7(c)為原SSD算法物體檢測圖.對比圖7(b)和圖7(c)可以發(fā)現(xiàn),基礎(chǔ)網(wǎng)絡(luò)由vgg更改為ESPNet后,其檢測準確度有一定影響,尤其在被遮蓋部分較多的物體檢測上,膨脹卷積在一定程度上影響了網(wǎng)絡(luò)性能,使得網(wǎng)絡(luò)不能有效檢測到物品,但在對于輪廓清晰的物體,網(wǎng)絡(luò)性能表現(xiàn)良好;對比圖7(a)和圖7(b),采用改進反卷積模塊,在一定程度上解決了遮蓋所引起的不良后果,且隨著網(wǎng)絡(luò)深度增加,檢測精度有了顯著提升;最后觀察改進算法檢測圖和原SSD算法,改進算法在被遮擋比例較大的物體仍有提升空間,總體來講,二者檢測效果相差不大,但改進算法的模型在各尺寸目標檢測方面表現(xiàn)均衡,相比于原SSD算法在檢測精度上有一定的提高.
由于本文研究著重點在于網(wǎng)絡(luò)模型應(yīng)用于資源受限的移動端設(shè)備或嵌入式設(shè)備中,因此重點關(guān)注模型的大小和預(yù)測速度快慢,為了更好地評價網(wǎng)絡(luò)性能優(yōu)劣,主要對比了各網(wǎng)絡(luò)以下4個參數(shù)值,分別是模型參數(shù)量(Params)、計算復(fù)雜度(floating point operations,F(xiàn)LOPs)、每秒幀數(shù)(frame per second,F(xiàn)PS)和平均精度均值(mean average precision,mAP),如表3所示.通過基本SSD模型結(jié)果和改進后的模型結(jié)果,對照DSSD網(wǎng)絡(luò)、不包含反卷積模塊的ESPNet和添加了反卷積模塊的ESPNet模型結(jié)果,將這些結(jié)果進行比較,評價模型的準確性和魯棒性.
表3 不同算法的測試結(jié)果
從表3可以看到,基本SSD模型的mAP為74.6%,其參數(shù)量和計算復(fù)雜度相對較高,預(yù)測速度較慢,相比之下,DSSD模型的mAP值增加了4.0%,但參數(shù)量增加了3倍有余,計算量提高了0.12倍,采用反卷積模塊能夠提升一部分準確度,但是對參數(shù)的消耗較大.僅改進了基礎(chǔ)網(wǎng)絡(luò)的ESPNet雖然具有較少的參數(shù)量和較低的計算復(fù)雜度,其準確度為65.3%,相對SSD網(wǎng)絡(luò)低了很多.添加了標準反卷積模塊的ESPNet雖然得到了與SSD相匹敵的精確度,參數(shù)量和計算量激增.優(yōu)化改進后的網(wǎng)絡(luò)模型精確度可達73.6%,參數(shù)量為SSD模型的0.6倍,為標準反卷積模塊的ESPNet模型的0.2倍;計算復(fù)雜度為SSD模型的1/15,且預(yù)測速度提高了4倍;若與原ESP-Net網(wǎng)絡(luò)相比,參數(shù)量和計算復(fù)雜度均有提升,但預(yù)測速度并沒有降低太多,而且預(yù)測mAP增加了8.3%,提升頗為明顯.對比標準反卷積模塊的ESPNet模型,參數(shù)量和計算復(fù)雜度均有大幅降低,預(yù)測速度也有一定提升,最重要的預(yù)測精度僅僅降低了0.4%,做到了模型尺寸與預(yù)測精確度上的均衡,在符合硬件設(shè)備運行網(wǎng)絡(luò)的需求的基礎(chǔ)上,可用于較高準確度的場景.
在同樣的訓(xùn)練集、驗證集和測試集的條件下,對SSD模型、基礎(chǔ)網(wǎng)絡(luò)為ESPNet的SSD網(wǎng)絡(luò)模型以及改進后的算法模型進行比較,不同類別下的目標檢測精度結(jié)果如表4所示.從表4中可以看出,以ESPNet為基礎(chǔ)的SSD網(wǎng)絡(luò)模型精度與基本SSD模型,不論是大目標、中目標以及小目標檢測精度方面,均存在較大差距.改進后的模型相比于ESPNet模型提升很大,尤其對小目標檢測方面的提升較多,相較于原SSD模型,其在某些類別的精度已經(jīng)大大領(lǐng)先,總體精確度已經(jīng)能夠與原SSD模型相抗衡.
表4 單類別測試結(jié)果
綜合以上實驗結(jié)果,本文提出的FA-SSD模型作為一種輕量化的改進SSD目標檢測網(wǎng)絡(luò),在檢測速度方面比經(jīng)典SSD更好.由于網(wǎng)絡(luò)使用以上幾個參數(shù)作為網(wǎng)絡(luò)尺寸的主要判斷依據(jù),現(xiàn)階段嵌入式或移動端設(shè)備在部署時對基礎(chǔ)卷積計算的方式不同,會造成不同平臺及不同算法的應(yīng)用上存在一定的誤差.故本文在算法改進階段中,只以計算機上的模擬結(jié)果和網(wǎng)絡(luò)參數(shù)量、計算量和計算精度作為網(wǎng)絡(luò)性能判斷的主要依據(jù),但仍能證明未來本改進方法在硬件設(shè)備上對性能改進的普適性.
為了提高目標檢測移值至嵌入式和移動平臺的可能性,本文采用SSD網(wǎng)絡(luò)框架,改變基礎(chǔ)網(wǎng)絡(luò)模型為輕量化神經(jīng)網(wǎng)絡(luò)ESPNet,并引入輕量級反卷積模塊,實現(xiàn)了輕量級目標檢測網(wǎng)絡(luò)的搭建.實驗結(jié)果表明,改進后的模型在檢測精度方面與SSD網(wǎng)絡(luò)模型相差無幾,且具有較小的網(wǎng)絡(luò)尺寸和較高的預(yù)測速度,證明了改進方法的有效性.隨著硬件設(shè)備部署技術(shù)的進步,本方法可以在一定程度上提高目標檢測的適用性.