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