王 賀,樊 星
(山西大學 物理電子工程學院,山西 太原 030006)
目標檢測是計算機視覺和數(shù)字圖像處理的一個熱門方向,廣泛應用于機器人導航、無人自動駕駛、智能視頻監(jiān)控、航空航天等諸多領域。多年來,許多深度學習模型被提出用來替代傳統(tǒng)的手工特征來解釋圖像,卷積神經(jīng)網(wǎng)絡[1-2]就是其中之一,并且已經(jīng)取得了一定的成果。相較于傳統(tǒng)方法,卷積神經(jīng)網(wǎng)絡能自動學習更深層的特征信息,擁有更高的檢測精度和更快的檢測速度,具有重要的現(xiàn)實意義。
目前主流的基于卷積神經(jīng)網(wǎng)絡的目標檢測大概分為兩大類:(1)兩階段目標檢測算法,這類目標檢測算法分為兩個階段:首先產(chǎn)生候選區(qū)域(Region Proposals),其中包括目標的位置信息;其次,對候選區(qū)域進行分類和位置修正。這一類的經(jīng)典目標檢測算法有R-CNN[3],F(xiàn)ast R-CNN[4]等。這些算法檢測精度雖高,但模型尺寸大,難以達到實時性。(2)一階段目標檢測算法,這類目標檢測算法檢測不需要預先產(chǎn)生候選區(qū)域,而是在圖像上直接產(chǎn)生類別概率和位置信息,比較經(jīng)典的算法有SSD[5-6],YOLO[7-8]等,這類算法雖然損失了部分檢測精度,但模型靈活性高,便于和其他模型結合,因此,備受人們青睞。SSD算法吸取了YOLO速度快和RPN定位準確的優(yōu)點,使其在運行速度和檢測精度上有了較好的平衡。
針對目前目標檢測算法模型大,對設備要求高,難以應用到移動端和嵌入式設備[9]等問題,本文采用MobileNetV3輕量級神經(jīng)網(wǎng)絡[10-11]與SSD檢測器相結合,以此來滿足能夠移植到嵌入式設備的要求。由于輕量級神經(jīng)網(wǎng)絡在提取特征時減少了網(wǎng)絡深度,從而會損失較多的有效信息,使檢測精度下降,因此,本文加入了雙向特征金字塔進行特征融合,以提高檢測精度。
為了降低以VGG16為特征提取網(wǎng)絡的SSD算法的計算復雜度,進而滿足在移動端嵌入式平臺上運行的需求,采用MobileNetV3作為骨干網(wǎng)絡來代替VGG16網(wǎng)絡。但該網(wǎng)絡特征輸出層對小目標的特征提取能力不足,導致算法對小目標的檢測能力較差。因此,本文采用雙向特征金字塔(Bidirectional Feature Pyramid Networks,Bi-FPN)對多尺度的特征層進行特征融合,以此來提高檢測能力,系統(tǒng)框圖如圖1 所示。
圖1 系統(tǒng)框圖
整個模型共有29層網(wǎng)絡,其中,前17層為MobileNetV3提取特征層,剩余12層為第17層網(wǎng)絡的衍生層。從圖1中可以看出,模型中輸入320×320尺寸的圖像,先經(jīng)過MobileNetV3進行特征提取,共經(jīng)過17層卷積,將layer-14,layer-17送入下一層,同時也送入到雙向特征金字塔網(wǎng)絡。layer-17到layer-18是經(jīng)過逐點卷積(Pointwise Convolution,PW卷積)改變通道深度,從10×10×480變?yōu)?0×10×256;layer-18到layer-19是經(jīng)過逐通道卷積(Depthwise Convolution,DW卷積)改變特征層尺寸,從10×10×256變?yōu)?×5×256;layer-19到layer-20是經(jīng)過PW卷積進行通道擴張,從5×5×256變?yōu)?×5×512,然后送到下一層和雙向特征金字塔網(wǎng)絡,后面的特征層也是同樣的操作生成。經(jīng)過以上卷積得到layer-14,layer-17,layer-20,layer-23,layer-26和layer-29 6個尺度的特征層邊框回歸和分類。將這6種不同尺度的特征圖進行雙向特征融合(Bi-FPN),再經(jīng)過SSD檢測器的邊框檢測和分類檢測得到最終的檢測結果。
MobileNet網(wǎng)絡是一種輕量級卷積神經(jīng)網(wǎng)絡,為了減少計算量和參數(shù)量,使其能夠更好地在移動端和嵌入式平臺上部署,提出了深度可分離卷積。深度可分離卷積是輕量級網(wǎng)絡MobileNet的核心思想,由逐通道卷積(DW卷積)和逐點卷積(PW卷積)組成。逐通道卷積的每個通道只能被一個卷積核卷積,一個卷積核只負責一個通道,提取單個通道的特征,并且逐通道卷積后的特征圖通道與輸入特征圖通道保持一致。逐點卷積中每個卷積核的大小為1×1×M,M為卷積核深度,最終得到新的特征圖。圖2(a)為標準卷積的過程,圖2(b)為深度可分離卷積的過程。
(a)標準卷積
圖中DK為卷積核大小,M為輸入特征矩陣的深度,N為輸出特征矩陣的深度,即卷積核個數(shù),DF為輸入特征矩陣的高和寬,DG為輸出特征矩陣的高和寬。
(1)
在MobileNet里面卷積核大小DK一般為3,理論上普通卷積計算量是深度可分離卷積的8到9倍。
MobileNetV3中所用的SENet(Squeeze-and-Excitation Networks)是通道注意力的典型代表。如圖3 所示為SENet結構圖。該思想主要通過Squeeze和Excitiation兩個關鍵操作實現(xiàn)。Squeeze對特征進行壓縮,將原始特征圖維度H×W×C壓縮為1×1×C,即把原先的二維壓縮成一維,相當于這一維參數(shù)獲得了之前H×W全局的感受野。Excitation通過參數(shù)W為每個通道生成相應的權重,得到不同通道的重要性大小后再利用乘法逐通道激勵到之前的特征圖所對應的通道上。
圖3 MobileNetV3-SE模塊結構圖
(2)
其次,進行Fex操作,其輸入為SQ,輸出為與D相對應的權值,從SQ到EX的計算公式為:EX=Fex(SQ,W)=σ(W2δ(W1SQ)),W1為第1個 FC參數(shù),δ為Relu激活函數(shù),W2為第2個FC參數(shù),σ為Hard-sigmiod激活函數(shù),通過公式計算得到EX值。Relu激活函數(shù)公式為
(3)
Hard-Sigmiod激活函數(shù)公式為
(4)
將EX值作為權重,乘到輸入特征上,其運算為Fscale,最終SE整體公式可表示為
(5)
MobileNet的多尺度特征層如果直接與檢測器相連接,會導致淺層的特征提取能力不足,特征金字塔(Feature Pyramid Networks,F(xiàn)PN)連接在多尺度特征層之后以及檢測器之前,將深層特征層融合到淺層特征層,增加了淺層特征層的語義信息,從而使淺層的特征提取能力得到了改善。而Bi-FPN是基于FPN進行改進,對多尺度的特征融合得到了優(yōu)化與提升。Bi-FPN要將多尺度特征層進行兩次特征融合,通過上采樣和下采樣統(tǒng)一特征分辨率尺度,先將深層特征層向淺層特征層自上往下進行融合,后將淺層特征層向深層特征層自下往上進行融合,并在同一尺度的特征間添加雙橫向連接,緩解因網(wǎng)絡層級過多造成的特征信息丟失,使網(wǎng)絡在不增加計算額外參數(shù)的同時融合更多相同尺度的特征,并使不同尺度特征能夠更充分融合,對于只有一個輸入的結點,將減少此結點對特征網(wǎng)絡的貢獻,其結構如圖4 所示。
圖4 Bi-FPN結構圖
從圖4 中可看到,由MobileNet作為特征提取網(wǎng)絡所產(chǎn)生的layer-14,layer-17以及由layer-17所衍生的layer-20,layer-23,layer-26和layer-29 6個不同尺度的特征層,先經(jīng)過上采樣自上而下融合,接收上一層特征層與本層特征層進行卷積處理,得到新的特征信息送往下一特征層和右側自下而上通道。右側為下采樣自下而上融合,接受同一層特征層的輸入并接收高層級信息,送往上一層級或直接輸出預測。其中l(wèi)ayer-14和layer-29特征層沒有進行卷積操作直接連接最右側輸出,是因為這兩層處于最底層和最高層,若使用卷積層只會有一個輸入或輸出,對于特征融合貢獻不大,反而會增加計算量產(chǎn)生冗余。
實驗配置為:intel i7-11700CPU,64 b Windows 10操作系統(tǒng),Nvidia GeForce RTX 3060Ti,實驗框架為Pytorch深度學習框架。
為了驗證所改進的MobileNetV3-SSD算法的有效性,本文采用PASCAL VOC2007和VOC2012數(shù)據(jù)集共16 551張圖片對模型進行訓練,并且采用VOC2007的測試集共4 952張圖片對訓練完成的模型進行測試,最后將測試結果與SSD,MobileNetV3-SSD,Tiny-YOLOV3和文獻[8]算法結果進行對比。
本文使用平均精度均值(mean average precision,mAP)、FPS(Frames Per Second)和MB(MByte)這3個指標分別來評估模型的準確率、檢測速度和所占內存大小,以此來檢驗模型性能。平均精度均值(mAP)是評估目標檢測模型的重要指標,其計算式為式(6)~式(8)。
準確率
(6)
(7)
(8)
式中:TP為既是正樣本又被預測為正樣本的個數(shù),F(xiàn)P為負樣本被預測了正樣本的個數(shù),TO為當前圖像中類別的實際目標個數(shù),TI為包含當前類別目標在所有圖像的個數(shù),k為需要識別目標的總類別個數(shù)。AP為單個目標的平均精度,mAP為所有目標類別的平均精度均值。
本文設計的網(wǎng)絡在Pascal VOC2007和VOC2012數(shù)據(jù)集上訓練的損失函數(shù)曲線如圖5 所示,橫坐標為訓練迭代次數(shù),可以看出,經(jīng)過20個epoch網(wǎng)絡趨于收斂。在VOC2007測試集上的mAP曲線如圖6 所示。
圖5 訓練損失曲線
圖6 mAP曲線
在運行時間方面,本文算法的訓練時間達到了14 h,耗時較長,但訓練過程為線下操作。測試階段方面,采用VOC2007的測試集共計4 952張圖片進行測試,共耗時176 s完成。檢測每張測試圖僅需0.035 7 s,滿足實時性要求。
為了驗證本文算法性能,使各個算法分別在Pascal VOC2007和2012訓練集上訓練,在VOC2007測試集上測試,測試結果如表1 所示,并且分別得出各模型在Pascal VOC上20種類別的準確率,比較結果如表2 所示。
表1 各算法測試結果
表2 各算法不同類別準確率對比
從表1 中可以看出,本文所提出的模型準確率達到了73.65%,相比于MobileNetV3-SSD,加了雙向特征金字塔融合(Bi-FPN)后mAP提高了2.63%,相比于Tiny-YOLOV3提升了12.35%,比文獻[8]提升了7.95%。同時對模型檢測速度和模型大小進行了對比,從表1可以看出,本文所提出的模型FPS達到了28,相較于SSD, Tiny-YOLOV3和文獻[8]分別提高了10.6, 6.4和2.9,與MobileNetV3-SSD相比相差無幾。表1中也可以看出本文所提出的模型大小僅占34 MB,與原始SSD模型相比,模型所占內存在大小降低了64.3%,比Tiny-YOLOV3所占內存減少了0.9 MB。雖沒有文獻[8]所提出的模型所占內存小,但檢測精度和檢測速度都有很大的提升。相比于MobileNetV3-SSD模型,本文模型所占內存在大小不變的基礎上提升了檢測精度。
從表2 中可以看出,由于雙向特征融合網(wǎng)絡結合了不同尺度的特征圖,使本文模型檢測準確率在大中小各個類別上都有了明顯的提升。相較于SSD模型,mAP所差無幾,但bottle, cat, dog, person等中小目標的檢測上分別提高了2.16%, 3.2%, 8.2%和1.11%,并且在aeroplane, bus, train大型目標上分別提高了10.82%, 15.4%和6.71%。相較于MobileNetV3-SSD,加了Bi-FPN后,20個類別中有15個類別的準確率都有明顯的提升,并且本文提出的模型在各類別上相比于Tiny-YOLOV3和文獻[8]都有較好的提升。
為了更加直觀地體現(xiàn)模型的優(yōu)化,進行模型測試實驗,圖7 為測試效果圖。
圖7 測試效果圖
從圖7中可以看出,用SSD檢測圖中目標時,出現(xiàn)了漏檢和誤檢的情況,用MobileNet-SSD檢測目標時,出現(xiàn)了誤檢和重復檢測的情況,而加了Bi-FPN后的改進模型相比其他兩個模型具有更好的檢測效果。
本文在MobileNetV3為骨干網(wǎng)絡的基礎上,設計了一種可以應用于移動端和嵌入式設備中的輕量級目標檢測模型。介紹了模型整體框架以及MobileNetV3網(wǎng)絡的優(yōu)點,針對SSD模型大以及輕量級目標檢測模型準確率低的問題,提出了一種改進的輕量級目標檢測模型。把MobileNetV3與雙向特征金字塔網(wǎng)絡(Bi-FPN)相結合,不僅使模型所占內存得到很大程度的壓縮,僅占34 MB,相比SSD模型壓縮了64.3%,檢測速度FPS提高了10.6。同時在Pascal VOC數(shù)據(jù)集上訓練驗證,改進后的網(wǎng)絡模型mAP準確率達到了73.65%,與單獨的MobileNetV3-SSD模型相比,在沒有增加模型內存量的基礎上,準確率提升了2.63%,檢測效果更加準確。這些優(yōu)點表明所改進的MobileNetV3-SSD檢測模型更適用于移動端和嵌入式平臺。下一步研究將繼續(xù)優(yōu)化該目標檢測模型,壓縮模型大小的同時,使其具有更高的準確率、穩(wěn)定性以及檢測速度。