陳海燕,賈明明,趙文力,王嬋飛
(蘭州理工大學 計算機與通信學院,蘭州 730050)
高原鼠兔作為青藏高原生態(tài)系統(tǒng)的關(guān)鍵物種,對維持高原草地的生態(tài)平衡起著重要作用[1-3]。用人工智能的方法監(jiān)測、統(tǒng)計其種群密度可以節(jié)省大量財力、人力以及物力[4]。但這類方法中的智能檢測設(shè)備規(guī)模比較大,一旦部署完成將不易調(diào)整,因此迫切得需要一種移動性強的便攜式目標檢測設(shè)備實現(xiàn)對高原鼠兔的隨機監(jiān)測。
近年來,隨著嵌入式領(lǐng)域的技術(shù)進步,NVIDIA Jetson TX2因具有便攜性與低功耗的特點被廣泛應用于無人機檢測、室內(nèi)監(jiān)測等場景[5-6]。Rabah 等[5]將一階段的目標檢測方法SSD(Single Shot Multi Box Detector)作為基礎(chǔ)模型,并將其部署到嵌入式設(shè)備Jetson TX2 中,實現(xiàn)了對地面目標的檢測與跟蹤。Cai 等[6]將一階段的目標檢測模型作為基礎(chǔ)模型,通過重新設(shè)計主干網(wǎng)絡(luò),增強了模型的特征表達能力,該改進模型部署到Jetson TX2中,能實現(xiàn)對魚池中魚類的目標檢測。上述方法表明:采用嵌入式Jetson TX2 作為便攜式的目標檢測設(shè)備能夠?qū)崿F(xiàn)不同場景的目標檢測;但上述方法在目標檢測模型部署時未對模型做輕量化處理,導致檢測設(shè)備能耗高、檢測速度慢。針對高原鼠兔目標檢測問題,陳海燕等[7]通過語義分割模型獲得感興趣區(qū)域的位置,實現(xiàn)了準確檢測,召回率達到了95%;但該模型相較于一階段的檢測模型有更深的網(wǎng)絡(luò),引入了更多參數(shù),并不適用在嵌入式設(shè)備上部署。
本文以一階段的YOLOv3(You Only Look Once version 3)模型為基礎(chǔ)目標檢測模型,為降低模型的網(wǎng)絡(luò)深度,使用輕量級的MobileNet[8]替 換YOLOv3 的主干網(wǎng)絡(luò)DarkNet53,再利用裁剪、微調(diào)和Tensor RT 加速的方法進一步輕量化目標檢測模型,并部署到Jetson TX2。
本文目標檢測模型結(jié)構(gòu)如圖1 所示:由輸入模塊、主干網(wǎng)絡(luò)(MobileNet)、多尺度特征融合模塊以及分類與回歸模塊構(gòu)成。輸入模塊實現(xiàn)對高原鼠兔圖像的預處理;主干網(wǎng)絡(luò)提取輸入圖像中目標的特征信息;多尺度特征融合模塊實現(xiàn)主干網(wǎng)絡(luò)中不同尺度特征圖的融合,增強用于檢測的特征;分類與回歸模塊實現(xiàn)對目標定位和分類。
圖1 MobileNet網(wǎng)絡(luò)框架Fig.1 MobileNet network framework
本文以YOLOv3[9]目標檢測模型為基礎(chǔ)模型,YOLOv3 的主干網(wǎng)絡(luò)DarkNet53 由53 層標準卷積構(gòu)成,具有較強的特征提取能力,但也帶來大量浮點運算[10]。Howard 等[8]提出的MobileNet 由28 層深度可分離卷積(包括深度卷積與逐點卷積兩部分)構(gòu)成,基本卷積單元如圖2(a)。深度卷積的作用是利用特征圖與卷積核通道的對應關(guān)系降低卷積的計算量,逐點卷積的作用是對深度卷積輸出的特征圖作特征融合,從卷積層數(shù)與卷積計算方式兩方面降低浮點運算[8]。為降低模型運算量,本文利用MobileNet 替換DarkNet53 作為本文目標檢測模型的主干網(wǎng)絡(luò),參數(shù)量在理論上減少了8/9~9/10。
替換YOLOv3 的主干網(wǎng)絡(luò)在降低主干網(wǎng)絡(luò)參數(shù)量的同時,也導致主干網(wǎng)絡(luò)的特征表達能力降低。文獻[11]中的ResNet 證明,使用1×1、3×3、1×1 堆疊卷積作為基本卷積單元能夠增強特征圖的特征表達能力,文獻[12]證明在堆疊卷積結(jié)構(gòu)中,先提升特征圖的通道維度、再降低特征圖的通道維度,能夠減少特征圖信息的丟失。為提高本文目標檢測模型主干網(wǎng)絡(luò)特征圖的表達能力,借鑒文獻[11-12]的思想,在深度卷積之前添加一層1×1 的標準卷積,并提升特征圖的通道維度,具體如圖2(b)所示。其中:BN(Batch Normalization)為批歸一化;激活函數(shù)為修正線性單元(Rectified Linear Unit,ReLU);DWconv 表示深度卷積,Gconv 表示逐點群卷積,conv表示標準卷積;CSO 表示通道混洗操作(Channel Shuffle Operation)[13]。
圖2 基本卷積單元Fig.2 Basic convolution unit
特征圖的通道數(shù)較多時,1×1 的標準卷積會帶來較多的運算量,文獻[14]中證明分組卷積可以降低卷積計算量,因此用1×1 的逐點群卷積(1×1Gconv)代替1×1 的標準卷積對特征圖的通道進行分組,達到降低1×1 的標準卷積計算量的同時增強主干網(wǎng)絡(luò)特征圖的特征表達能力的目的。逐點群卷積也會帶來輸出特征圖信息較為單一的問題,因此在逐點群卷積后做通道混洗操作,通過重新組合逐點群卷積的輸出特征圖的通道,增強特征圖的信息交互能力,提高主干網(wǎng)絡(luò)的特征表達能力。CSO 操作過程如圖3 所示。
圖3 通道混洗操作Fig.3 Channel shuffle operation
對構(gòu)建的目標檢測模型按照2.3 節(jié)中的方法訓練,得到高原鼠兔目標檢測模型,并對模型做卷積通道剪枝。首先對需要做剪枝的目標檢測模型作參數(shù)分析,獲得該模型需要剪枝的卷積層名稱;其次采用文獻[15]提出的方法評定卷積核的重要程度,按重要程度對卷積核進行排序,并按比例(0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9)丟棄每層卷積所對應的卷積核,進而裁剪對應的通道,記錄裁剪后的目標檢測模型在測試集中的精度損失,記為敏感度信息;最后用需要做剪枝的目標檢測模型作為微調(diào)訓練的預訓練權(quán)重,并使用記錄的敏感度信息輔助模型的裁剪、微調(diào)訓練,通過反復測試,確定一組裁剪率(確定每層卷積所對應的卷積核裁剪比例),對需要裁剪的卷積層按確定的裁剪比例進行剪枝并按2.3節(jié)中的方法作微調(diào)訓練,得到用于Jetson TX2 上部署的目標檢測模型。
模型剪枝過程如圖4,其中參數(shù)A 表示輸入特征圖,C 表示卷積核。先計算C 中每個卷積核的所有權(quán)值的絕對值之和,并按大小排序,若C 中虛線部分的所有權(quán)值的絕對值之和最小,則丟棄該卷積核,而經(jīng)過A 與C 的卷積運算,B 中的虛線通道也將被丟棄。
圖4 剪枝原理示意圖Fig.4 Schematic diagram of pruning principle
用于訓練高原鼠兔目標檢測模型的實驗數(shù)據(jù)采用課題組在青藏高原東北部甘南草原拍攝的高原鼠兔圖像,圖像像素為:5 742×3 648。因高原鼠兔的警惕性高,近距離采集目標難度較大,所以拍攝距離遠,導致采集的圖像中高原鼠兔目標較小。對部分高原鼠兔圖像進行交疊切分,獲得原圖像的6 部分子圖像,切分后子圖像像素大小為:608×608,手動將含有高原鼠兔目標的子圖像挑選出來,不做壓縮處理,使其組成新的、背景不同的高原鼠兔圖像,作為原始數(shù)據(jù)集的一部分。對組成的新數(shù)據(jù)集作清洗操作,采用文獻[16]中定義的模糊度和文獻[17]中定義的相似度的概念,去除模糊度、相似度高于0.8 的高原鼠兔圖像,避免訓練過程中出現(xiàn)過擬合現(xiàn)象。數(shù)據(jù)集格式為VOC(Visual Object Classes),經(jīng)數(shù)據(jù)預處理之后共3 520 幅高原鼠兔圖像,將其以9∶1 的比例隨機劃分成訓練集與測試集。
實驗環(huán)境:掛載V100 處理器的Linux18.4 操作系統(tǒng),深度學習框架是Paddle。網(wǎng)絡(luò)參數(shù)配置:優(yōu)化器為隨機梯度下降(Stochastic Gradient Descent,SGD),動量設(shè)置為0.9,總共訓練270 epoch。在1~10 epoch 學習率從0 線性增長到0.000 375,在210、250 epoch 處學習率分別開始衰減為原來的1/10 和1/100,Batch_size 為24。
測試實驗環(huán)境:NVIDIA Jetson TX2、Quad ARM A57/2 MB L2 處理器、8 GB RAM、Jetpack4.4 包、Python 3、Numpy、Matplotlib、OpenCV4.1.1、CUDA10.2、CUDNN8.0、Paddle、Paddle Inference 預測庫。
利用K 均值聚類算法對高原鼠兔圖像數(shù)據(jù)集進行105次聚類分析,計算適合高原鼠兔目標大小的錨框,取錨框的個數(shù)為9,分別為:(28,29),(29,43),(42,45),(67,48),(49,69),(91,63),(72,97),(121,83),(137,145)。
本文模型訓練分兩個階段,模型訓練前采用隨機擴張、圖像裁剪、隨機圖像調(diào)整、隨機水平翻轉(zhuǎn)、圖像像素變換和圖像疊加等方法對用于訓練的高原鼠兔圖像數(shù)據(jù)進行數(shù)據(jù)增強。第一階段在數(shù)據(jù)增強后的高原鼠兔數(shù)據(jù)集上訓練目標檢測模型;第二階段微調(diào)裁剪后的目標檢測模型。在第二階段訓練中,裁剪率設(shè)置為0.844,其余參數(shù)設(shè)置與第一階段保持一致。敏感度計算結(jié)果如圖5 所示。
圖5 敏感度分析結(jié)果Fig.5 Sensitivity analysis results
將微調(diào)訓練后的高原鼠兔目標檢測模型部署到嵌入式設(shè)備Jetson TX2 的方案如圖6 所示,包含兩個步驟:第一步,微調(diào)之后的高原鼠兔目標檢測模型轉(zhuǎn)為部署模型文件(包括模型結(jié)構(gòu)文件、參數(shù)權(quán)重文件和網(wǎng)絡(luò)配置文件);第二步,對嵌入式Jetson TX2 做基礎(chǔ)環(huán)境配置并引入深度學習框架和C++預測庫。在預測庫中設(shè)置配置文件,確定使用CPU 或GPU 作前向計算并為其分配確定顯存、開啟內(nèi)存優(yōu)化和Tensor RT 加速,根據(jù)配置文件完成模型預測器(Predictor)加載,通過設(shè)置輸入將預測數(shù)據(jù)讀入并作數(shù)據(jù)預處理進而執(zhí)行Predictor,將結(jié)果輸出。
圖6 模型部署Fig.6 Model deployment
為了評價本文模型的性能,采用平均精度(Average Precision,AP)、幀率、模型大小作為評價指標,AP 是P-R(Precision-Recall)曲線與坐標軸圍成的面積,計算如式(1)所示,其中交并比值取0.5。
其中:Pinterp()R為從P-R 曲線中取n個不同等距召回率R區(qū)間時,當召回率滿足≥R時的精度最大值,為獲得精度最大值時的召回率;TP(True Positive)、FP(False Positive)和FN(False Negative)分別是真正例、假正例和假負例。P-R 曲線如圖7 所示。
圖7 模型裁剪前后的P-R曲線Fig.7 P-R curves before and after model pruning
接著驗證分組數(shù)對本文方法的影響。由文獻[13]證明可知,模型的運算量會隨著分組數(shù)的增多而減少,但分組數(shù)的增多也會使計算機存儲訪問效率降低,增加運算時間。因此本組實驗將分組數(shù)設(shè)置為1、2、3 和4,在不大幅增加運算時間的基礎(chǔ)上,驗證分組數(shù)對本文模型AP 的影響,結(jié)果如表1 所示。從表1 可知,不同分組情況下,本文方法對高原鼠兔目標檢測的平均精度相差不大,網(wǎng)絡(luò)的分組數(shù)取3 時AP 值最大,因此,在后續(xù)研究中設(shè)置網(wǎng)絡(luò)的分組數(shù)為3。
表1 分組數(shù)對本文方法AP的影響 單位:%Tab.1 Influence of number of groups on AP of proposed method unit:%
為驗證逐點群卷積、通道混洗分別對本文方法的影響,表2 給出了在YOLOv3 主干網(wǎng)絡(luò)替換之后增加不同模塊時的AP 值。由表2 可知,當添加逐點群卷積操作之后,模型的平均精度有所降低,原因是分組阻礙了特征圖通道之間的信息流通;而對特征圖通道之間的信息進行混洗操作可以提升模型的性能。
表2 群卷積、通道混洗對本文方法AP的影響 單位:%Tab.2 Influence of group convolution and channel shuffle on AP of proposed method unit:%
表3 為不同裁剪比例下的模型性能指標值。其中浮點運算數(shù)(FLOating Point operations,F(xiàn)LOPs)指標用于衡量模型的復雜程度。在本文方法中,模型裁剪前的浮點運算數(shù)為:24 106 944,從表3 可知,在不同的裁剪比例下,模型的浮點運算數(shù)都從千萬級別降到了百萬級別,有明顯的改變。隨著裁剪率的增大,浮點運算數(shù)呈遞減規(guī)律,模型占用的存儲空間變小,但模型的平均精度變化不大。當裁剪比例取0.844 時,微調(diào)之后模型的AP 值最大。
表3 不同裁剪率下的模型性能指標值Tab.3 Model performance indicator values under different pruning rates
表4 對比了一階段主流模型與本文模型在Jetson TX2 上部署后的檢測結(jié)果?;A(chǔ)模型YOLOv3 在在剪枝后獲得了98.34%的AP 值,占用了156 MB 的內(nèi)存,每秒檢測幀數(shù)(Frames per Second,F(xiàn)PS)為13。與剪枝前的基礎(chǔ)模型YOLOv3 相比,在AP 值降低0.07 個百分點的基礎(chǔ)上,模型大小由235 MB 降低為156 MB,釋放了79 MB 的內(nèi)存,且檢測速度由5 FPS 變?yōu)?3 FPS,有160%的提升。采用剪枝的方法,雖然可以裁剪掉一些對模型不重要的特征圖通道,減少模型參數(shù)與運算量,提升模型的檢測速度;但因YOLOv3 具有較多的殘差網(wǎng)絡(luò),帶來較大的運算量,致使YOLOv3 對Jetson TX2 不夠友好,檢測速度較低。
表4 不同高原鼠兔目標檢測模型結(jié)果對比Tab.4 Result comparison of different Ochotona curzoniae target detection models
YOLOv3_MobileNet 模型的AP 值、模型大小、檢測速度分別為97.30%、92.8 MB、14 FPS,與剪枝前YOLOv3相比,在AP值降低1.11 個百分點的基礎(chǔ)上,模型大小壓縮了60.5%,檢測速度提升了180%,模型性能有一定的提升。因為通過替換基礎(chǔ)模型YOLOv3 的主干網(wǎng)絡(luò),降低了網(wǎng)絡(luò)深度,減少了模型參數(shù)量與運算量,因而提升了檢測速度。在替換主干網(wǎng)絡(luò)之后,YOLOv3_MobileNet 模型的AP 值并沒有隨著網(wǎng)絡(luò)層的精簡而大幅降低,這是因為本文方法對YOLOv3 的主干網(wǎng)絡(luò)的基本卷積單元做了以下操作:首先對輸入特征圖通道維度進行升維;其次對通道數(shù)進行分組卷積,通道混洗;最后對深度卷積輸出特征圖通道維度進行降維。這樣的處理方式減少了特征圖信息的丟失,提升了主干網(wǎng)絡(luò)特征表達能力。
本文模型是通過對YOLOv3_MobileNet 模型進行剪枝得到的,在占用Jetson TX2 14 MB 內(nèi)存的基礎(chǔ)上,最終AP 值達到了97.36%,檢測速度為36 FPS。與剪枝前的原YOLOv3 相比,在平均檢測精度僅降低1.05 個百分點的基礎(chǔ)上,節(jié)省了220.12 MB 的內(nèi)存空間,模型大小壓縮了93.67%,檢測速度提升了620%;相較于輕量級模型YOLOv3_tiny 和SSD_MobileNet_v1,本文模型在模型大小、檢測精度、檢測速度這3 個指標中,均有明顯優(yōu)勢;相較文獻[19]中的MSFAN(輸入圖像:416×416,檢測速度:38 FPS,模型大?。?2.43 MB)方法,雖然檢測速度降低了2 FPS,但節(jié)省了47.55 MB的存儲空間;檢測速度降低的原因為本文所輸入的圖像尺寸更大,在處理過程中需要更多的時間。
圖8(a)為對采集到的不同季節(jié)的高原鼠兔圖像的目標檢測的結(jié)果;圖8(b)為便攜式檢測設(shè)備對高原鼠兔視頻的目標檢測的結(jié)果。對高原鼠兔圖像和視頻的目標檢測結(jié)果表明該便攜式檢測設(shè)備能夠滿足對自然場景下高原鼠兔目標的準確檢測。
圖8 對獲取的高原鼠兔圖像與視頻的目標檢測結(jié)果Fig.8 Target detection results in Ochotona curzoniae images and videos
本文提出一種對高原鼠兔目標進行檢測的便攜式目標檢測方法??紤]到該方法中的便攜式檢測設(shè)備具有弱存儲、功耗低的特點,本文采用一階段目標檢測模型作為基礎(chǔ),首先替換模型主干網(wǎng)絡(luò),減少主干網(wǎng)絡(luò)層數(shù),降低模型參數(shù)量;其次采用堆疊卷積、逆殘差卷積的方法構(gòu)建主干網(wǎng)絡(luò)基本卷積單元,減少主干網(wǎng)絡(luò)特征圖的信息丟失,增強主干網(wǎng)絡(luò)的特征表達能力,提高目標檢測模型的檢測能力;最后采用剪枝的方法對訓練得到的目標檢測模型進行剪枝,丟棄模型中不重要的通道,進一步輕量化模型,減少模型的運算量,提高模型的正向推理速度;最后將模型部署在Jetson TX2 中,在NVIDIA 提供的Tensor Rt 助推下,實現(xiàn)對目標的實時檢測。實驗表明,該方法具有較好的魯棒性,檢測速度為36 FPS,檢測平均準確率為97.36%,模型大小變?yōu)樵瓉淼?/16,優(yōu)于傳統(tǒng)的算法。輕量化后的目標檢測模型可以克服便攜式檢測設(shè)備弱存儲、低功耗的缺陷,實現(xiàn)對自然場景下高原鼠兔目標的實時檢測。
本文方法的不足之處是雖然通過構(gòu)建輕量化的目標檢測模型來降低模型的參數(shù)量、提升模型的檢測速度,但最終的檢測速度是在單精度浮點模式(FP32)下測試的,相較于半精度浮點模式(FP16)和整型模式(int8),檢測速度較慢。在后續(xù)的研究中,將考慮便攜式檢測設(shè)備搭載在無人機平臺中,驗證在無人機運動的狀態(tài)下,本文模型能否滿足對高原鼠兔目標的實時檢測問題。因此,將考慮對模型作量化操作,進一步提升檢測速度。