吳天成, 王曉荃, 蔡藝軍, 荊有波, 陳鋮穎
(1. 廈門理工學院 光電與通信工程學院,福建 廈門 361024; 2. 中國科學院 微電子研究所,北京 100029)
邊防指的是維護國家領(lǐng)土主權(quán)和邊疆的安定與發(fā)展,由邊防武裝力量在邊境地區(qū)實施的武裝防御和保衛(wèi)活動[1]。隨著信息技術(shù)發(fā)展的快速發(fā)展,邊防管控技術(shù)的重心也逐漸向信息技術(shù)領(lǐng)域轉(zhuǎn)移。本文依托中國科學院微電子研究所的邊緣計算終端項目,針對邊防監(jiān)控中目標尺度較小、檢測難度高等問題,主要研究提升目標檢測算法的檢測精度和小目標物體的檢測能力,設(shè)計了應用于網(wǎng)絡(luò)邊緣嵌入式設(shè)備的目標檢測算法,協(xié)助邊防管控。
傳統(tǒng)目標檢測算法通過手工設(shè)計特征的方法并結(jié)合SVM[2]、Adaboost[3]等分類器的方法獲得檢測結(jié)果,但是該類方法在精度和速度上都不理想。隨著深度學習技術(shù)的快速發(fā)展,依靠大量的訓練數(shù)據(jù),自動獲取特征的目標檢測技術(shù)已經(jīng)代替了傳統(tǒng)的目標檢測方法[4-6]。基于深度學習的目標檢測算法主要分為有兩大類:一是雙階段目標檢測算法,包括R-CNN[7]、Fast R-CNN[8]和Faster R-CNN[9]。上述幾種方法的檢測精度高,但耗時較大,且對硬件設(shè)備要求較高,部署到移動端設(shè)備上也存在較大困難;二是單階段目標檢測算法,單階段算法直接在圖片的多個位置進行分類和回歸,從而大幅度提高算法的檢測速度。包括YOLO[10]、 SSD[11]。SSD算法在整體回歸的思想上,借鑒了YOLO,同時參考了Faster-RCNN的錨點框設(shè)計,在運行速度與檢測精度上有了較好的平衡。
邊緣計算終端主要由嵌入式設(shè)備構(gòu)成,執(zhí)行邊防管控任務(wù)。針對嵌入式設(shè)備中的目標檢測任務(wù),MobileNetV2是Google提出的優(yōu)秀的輕量級神經(jīng)網(wǎng)絡(luò)[12]。使用MobileNetV2對SSD網(wǎng)絡(luò)進行優(yōu)化,在犧牲部分檢測精度的情況下大幅優(yōu)化了其計算量和參數(shù)量,實現(xiàn)了在嵌入式設(shè)備中執(zhí)行目標檢測任務(wù)。本文在MobileNetV2-SSD的基礎(chǔ)上,使用特征融合的概念對該模型對各個尺度目標的檢測精度進行優(yōu)化,并在邊緣計算終端中的Jetson AGX Xavier設(shè)備中對模型進行測試。
2.1.1 深度可分離卷積
使用深度可分離卷積減小模型參數(shù)量是輕量化網(wǎng)絡(luò)MobileNet的核心思想[13]。深度可分離卷積標準卷積分為深度卷積和逐點卷積兩個過程,在輸出和標準卷積一致的情況下,大幅減小了參數(shù)量。
圖1所示為標準卷積過程。圖2和圖3分別為深度卷積和逐點卷積過程。
圖1 標準卷積Fig.1 Standard convolution
圖2 深度卷積 Fig.2 Depthwise convolution
圖3 逐點卷積Fig.3 Pointwise convolution
圖中D為卷積大小,M是卷積通道數(shù),N表示卷積的個數(shù),M為卷積核的個數(shù)。假設(shè)輸入F的大小為(DF,DF,M),采用的傳統(tǒng)卷積核K的大小為(DK,DK,M,N)。
深度卷積和逐點卷積的參數(shù)量相加為深度可分離卷積的參數(shù)量,其結(jié)果與標準卷積參數(shù)量相比如式(1)所示:
(1)
由公式(1)比較發(fā)現(xiàn),MobileNet網(wǎng)絡(luò)模型參數(shù)數(shù)量大幅減少,降低了計算開銷。由此,深度可分離卷積方法改進了采用傳統(tǒng)卷積的YOLO、SSD網(wǎng)絡(luò)的參數(shù)冗余等問題,更適合部署至嵌入式設(shè)備。
2.1.2 線性瓶頸層
線性瓶頸層是MobileNetV2相對于MobileNetV1做出的改進[12]。MobileNetV2中在深度分解卷積之前使用逐點卷積用于擴張輸入數(shù)據(jù)的維度,使得網(wǎng)絡(luò)后續(xù)的卷積操作可以在高維空間提取更多特征信息。引入線性瓶頸層將低維度信息映射到高緯度中,避免了MobileNetV1中由于ReLU非線性激活函數(shù)造成的特征信息損失。
2.1.3 倒殘差塊
倒殘差塊結(jié)構(gòu)是基于ResNet中殘差塊所提出的一種操作方法[12]。ResNet殘差塊和 MobileNetV2的倒殘差塊結(jié)構(gòu)圖如圖4所示。
圖4中 MobileNet V2的倒殘差塊使特征圖的維度先升后降,與殘差塊的功能正好相反,因此后者被稱為倒殘差結(jié)構(gòu)。倒殘差塊結(jié)構(gòu)可以使深度分離卷積在高維度空間上提取更多的特征,以此來獲取更多語義特征。
圖4 Residual Block和Inverted Residual Block結(jié)構(gòu)對比Fig.4 Comparison between Residual Block and Inverted Residual Block
SSD算法采用VGG-16網(wǎng)絡(luò)結(jié)構(gòu)為特征提取網(wǎng)絡(luò),并在ⅤGG-16后接入多個大小依次減小的特征提取層,生成不同尺寸特征金字塔以檢測不同大小的目標。尺寸較大的特征圖檢測體積比較小的目標物,尺寸較小的特征圖檢測體積較大的目標物[14]。SSD還使用了不同寬高比錨點框,使其能夠高效地檢測不同尺度的目標。SSD的結(jié)構(gòu)圖如圖5所示。
圖5 SSD結(jié)構(gòu)圖[14]Fig.5 Structure map of SSD[14]
SSD舍棄了VGG16最后的全局池化部分和全連接層(FC6、FC7)并且分別用3×3×1 024的conv6卷積層和1×1×1 024的conv7卷積層替代VGG-16中的FC6和FC7作為基礎(chǔ)分類網(wǎng)絡(luò)的最終特征抽取部分。通過不同尺度的卷積層在圖像上做特征提取,然后回歸得到錨點框的具體位置以及各類型分類的置信度,最終通過非極大值抑制算法得到最終結(jié)果。
Tsung-Yi Lin等人提出了特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network, FPN)的概念,F(xiàn)PN的原理是融合不同尺寸的特征圖,并在融合后的特征圖上進行預測[15]。FPN能夠很好地利用卷積神經(jīng)網(wǎng)絡(luò)中不同層級的語義特征和特征細節(jié),對特征圖自上到下進行連接,將帶有更多局部特征細節(jié)的高分辨率特征圖和帶語義信息較強的低分辨率特征圖連接起來。圖6是FPN的結(jié)構(gòu)示意圖。
圖6 FPN框架[15]Fig.6 Frame of FPN
MobileNetV2-SSD以300×300×3尺寸的圖像作為輸入,使用MobileNetV2提取特征圖,然后使用SSD模型中的6個檢測層對不同尺度的目標進行多尺度的檢測。其中在步長為1的卷積層之間均采用了shortcut結(jié)構(gòu)來加快訓練。該網(wǎng)絡(luò)采用了Inverted Residual Block結(jié)構(gòu)使卷積層能夠在更高維度獲取更多的語義信息。使用Linear線性激活函數(shù)避免了MobileNetV1中非線性激活函數(shù)對特征圖信息的破壞。刪去了MobilenetV2全連接層,以4組倒殘差塊結(jié)構(gòu)作為替換,即bottleneck。并使用主干網(wǎng)絡(luò)中的Conv13_expand、Conv16_pw以及在Conv19_2、Conv19_3、Conv19_4和Conv19_5這4層進行多尺度的目標檢測。其中expand代表對特征通道的擴張,擴張可以在特征信息不損失和參數(shù)量不增加的前提下加大卷積層的感受野范圍,pw代表逐點卷積。MobileNetV2-SSD網(wǎng)絡(luò)結(jié)構(gòu)圖如圖7所示。
圖7 MobileNetV2-SSD結(jié)構(gòu)圖Fig.7 Structure map of MobileNetV2-SSD
本文基于FPN特征融合的思想,設(shè)計了一種輕量級特征融合方式,在MobileNetV2-SSD網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上實現(xiàn)特征融合,提升模型的檢測精度。
MobileNetV2-SSD會將輸入的圖片特征提取成不同尺度的特征圖進行預測,但是僅是在不同的特征圖上完成預測,并沒有融合不同尺度的特征圖,不能充分利用深層語義特征和局部特征的細節(jié),對于小目標的檢測效果并不好(小目標指像素區(qū)域小于30×30的目標)。FPN 為逐層特征融合機制,新生成的特征金字塔上每層特征圖,將同層和高層的特征信息融合,網(wǎng)絡(luò)結(jié)構(gòu)復雜,整體操作耗時,加強了檢測精度的同時犧牲了過多的檢測速度,難以達到實時檢測的效果。
3.2.1 設(shè)計思路
FPN為逐層特征融合機制,同層和高層的特征信息融合,生成新的特征金字塔,整體操作耗時大且網(wǎng)絡(luò)結(jié)構(gòu)復雜。不同于FPN中的逐層融合,本文在原FPN模型的基礎(chǔ)上新增了特征融合模塊,使特征融合只在一個位置發(fā)生。
3.2.1 特征層選取
原模型采用Conv13,Conv16_pw,Conv19_2,Conv19_3,Conv19_4,Conv19_5上進行邊框回歸和分類,其對應的分辨率分別為38×38,19×19,10×10,5×5,3×3,1×1。Conv19_3,Conv19_4,Conv19_5這3層的特征層過小,語義信息不豐富,與原始上一層特征圖融合之后不會得到太多的語義信息,對模型精度并無提升,甚至還會降低檢測速度,因此不對這3層進行特征融合。分別對Conv13,Conv16_pw,Conv19_2這3層網(wǎng)絡(luò)進行特征融合。
3.2.2 特征融合
如圖8所示,分別對Conv13,Conv16_pw,Conv19_2這3層網(wǎng)絡(luò)進行特征融合。使用1×1 卷積統(tǒng)一輸入通道,bilinear interp意為雙線性插值,實現(xiàn)上采樣操作,將不同大小的特征圖轉(zhuǎn)換成統(tǒng)一大小,融合的不同網(wǎng)絡(luò)層。
圖8 本文特征融合示意圖Fig.8 Schematic diagram of feature fusion in this paper
FPN中使用的 element操作融合不同尺度的特征圖,element要求特征圖的大小和通道數(shù)均保持統(tǒng)一,F(xiàn)PN中使用 1×1 卷積統(tǒng)一融合時的通道數(shù)。在本文模型中,1×1 卷積只負責降低通道,融合時選用了Concat操作(圖(9)),簡單有效,可以不改變其原有的值,將兩張?zhí)卣鲌D的通過維度相加結(jié)合,不需要特征圖通道統(tǒng)一。
圖9 Concat操作示意圖Fig.9 Concat operation diagram
(a)原圖 (a)Original image
(b)特征融合前圖像 (b) Image before feature fusion
(c)特征融合后圖像 (c)Feature fusion image圖10 特征融合效果圖Fig.10 Feture fusion effect picture
我們輸出不同層級的特征圖使其可視化,展示特征融合前后的對比,結(jié)果如圖 10 所示。圖10中(a)為原圖,(b)分別為特征融合前Conv13,Conv16_pw,Conv19_2三層卷積層輸出的特征圖像,(c)為融合這3層后輸出的特征圖像。從圖10可以得出,低層特征層分辨率較高,包含更多圖像細節(jié),但是由于經(jīng)過的卷積更少,語義信息較弱,噪聲更多。高層特征更為抽象,具有更強的語義信息,但是分辨率很低,對細節(jié)的表達更差。特征融合后的特征圖像中重要的特征信息更加明顯,有助于提高目標檢測精度。
圖11 改進后的網(wǎng)絡(luò)結(jié)構(gòu)Fig.11 Improved network structure
使用BN(Batch Normalization)正則化Concat融合后的特征圖,BN層可以實現(xiàn)歸一化處理,改善網(wǎng)絡(luò)的梯度,防止梯度爆炸。完成改進后的網(wǎng)絡(luò)結(jié)構(gòu)如圖11所示。當輸入圖像的分辨率為 300×300時,使用Conv13,Conv16_pw,Conv19_2三層進行特征融合。經(jīng)過融合得到Conv20,對融合的特征圖進行下采樣,重新生成類似SSD的多尺度金字塔型特征層,Conv20~Conv25一起用于預測。
為了檢驗優(yōu)化后MobileNetV2-SSD算法的有效性,本文使用PASCAL VOC2007和VOC2012數(shù)據(jù)集共16 551張圖片對模型進行聯(lián)合訓練,并用VOC2007測試集共4 953張圖片進行測試,并將測試結(jié)果與原始MobileNetV2-SSD算法結(jié)果進行比較和分析。
本文使用平均精度均值(mean average precision,mAP)、FPS(rames per second)、MB(MByte)這3類指標分別評估模型的精度、速度和模型大小,以驗證模型的性能。其中mAP是評估目標檢測模型精度的重要指標,其計算公式如公式(2)、(3)、(4)所示。
(2)
(3)
(4)
其中:TP表示圖像中當前類別正確檢測的次數(shù),TotalObjection表示當前圖像中類別的實際目標數(shù)量,TotalImg表示包含當前類別目標在所有圖像的數(shù)量,P表示準確率,C表示需要識別目標的總類別數(shù),AP表示單個目標的平均精度值,最后計算出mAP為所有目標類別的平均精度均值。
模型訓練時將每次迭代輸入的樣本數(shù)量batch_size設(shè)置為64。Learning _rate學習率用于控制模型訓練速度,取值過大會導致參數(shù)越過最優(yōu)值,取值過小會導致模型收斂速度慢,將學習率初始化為0.001,權(quán)重衰減weight_decay設(shè)置為 0.000 1,防止產(chǎn)生過擬合現(xiàn)象。
對模型的大小和精度進行對比,在該部分實驗中加入了SSD模型進行比較,3種模型性能的比較如表1所示。
表1 目標檢測模型性能比較Tab.1 Object detection model performance comparison
3種模型的輸入圖像大小同為300×300,本文改進的模型大小稍大于MobileNetV2- SSD,在mAP上提升了3.6%,接近了原SSD模型。同時模型大小也遠小于傳統(tǒng)的SSD模型,與MobileNetV2-SSD相差僅為8.8 MB。表2列舉了部分不同尺寸的目標,分別使用本文改進模型和MobileNetV2- SSD的檢測精度試驗結(jié)果。如表2所示,本文改進模型在不同尺度目標的檢測精度均好于MobileNetV2-SSD,尤其是sheep、bird、bottle以及potted plant等較小的目標,精度有了較大提升。這是由于改進后的模型融合了不同尺度的特征層,能夠獲取圖像中更多小目標的特征信息。選擇了帶有小目標的檢測結(jié)果圖進行對比,圖12為MobileNetV2-SSD的檢測效果,圖13為本文改進模型的檢測效果。上述實驗證明了特征融合的方法可以增強多尺度檢測模型的目標檢測精度。
表2 不同尺寸目標檢測性能比較Tab.2 Comparison of detection performance of different size targets (%)
圖12 MobileNetV2-SSD檢測效果Fig.12 MobileNetV2-SSD detection results
圖13 本文模型檢測效果Fig.13 Improved model detection results
將模型部署至邊緣計算終端中的Jetson AGX Xavier設(shè)備中,測試MobileNetV2-SSD和本文改進后的模型在嵌入式設(shè)備中的檢測速度,驗證其在嵌入式設(shè)備中執(zhí)行實時目標檢測任務(wù)的可行性。Jetson AGX Xavier上部署了Ubuntu 18.04 LTS aarch64操作系統(tǒng),并具有512核高性能Volta GPU。測試中FPS代表模型在設(shè)備中的解析速度。
表3 目標檢測模型性能比較Tab.3 Object detection model performance comparison
由于采取了輕量級的特征融合策略,本文改進后的模型在FPS上相對于原模型僅下降了4幀/s左右的速率(表3)。在精度提升的同時,依然可以在嵌入式設(shè)備實現(xiàn)實時檢測,協(xié)助邊緣計算終端完成邊防管控。
本文依托邊緣計算終端項目,設(shè)計了一種可以部署在嵌入式設(shè)備的目標檢測模型。介紹了輕量級神經(jīng)網(wǎng)絡(luò)MobileNetV2、SSD目標檢測模型和FPN特征金字塔網(wǎng)絡(luò),指出了MobileNetV2-SSD和FPN特征融合存在的問題,提出了一種輕量級的特征融合方案用于改進MobileNetV2-SSD。改進后的模型與MobileNetV2-SSD在VOC2007測試集上進行測試比較,獲得了更高的模型精度,相對于MobileNetV2-SSD提升了3.6%,達到了76.5%,并且,在小目標的檢測效果上獲得了顯著提升。此外將模型部署至嵌入式設(shè)備比較檢測效果,改進的模型在網(wǎng)絡(luò)結(jié)構(gòu)更加復雜的情況下,在檢測速度上并沒有較大損失。從而驗證了本文方法的有效性。本文方法可以協(xié)助邊緣計算終端完成邊防管控,在嵌入式設(shè)備上實現(xiàn)更高效的目標檢測。