白 創(chuàng),王英杰,閆 昱,DJUKANOVIC Milena
(1. 長沙理工大學(xué) 物理與電子科學(xué)學(xué)院,湖南 長沙 410114;2. 柔性電子材料基因工程湖南省重點(diǎn)實(shí)驗(yàn)室,湖南 長沙 410114;3. 黑山大學(xué) 電氣工程學(xué)院,黑山共和國 波德戈里察 81000)
目標(biāo)檢測(cè)是機(jī)器視覺領(lǐng)域的研究熱點(diǎn)之一,因其快速、準(zhǔn)確、可識(shí)別性高等特點(diǎn)廣泛應(yīng)用于無人駕駛、行人檢測(cè)和視頻監(jiān)控等領(lǐng)域。傳統(tǒng)的目標(biāo)檢測(cè)方法[1]主要是根據(jù)先驗(yàn)知識(shí)建立數(shù)學(xué)模型并求解該模型得到檢測(cè)結(jié)果,而此種人工設(shè)計(jì)特征加淺層分類器的方案只能提取細(xì)節(jié)信息較少的低層特征,檢測(cè)精度和魯棒性受到極大限制[2]。由于卷積神經(jīng)網(wǎng)絡(luò)能夠自動(dòng)學(xué)習(xí)到更深層次的特征表達(dá),與傳統(tǒng)方法相比,學(xué)習(xí)到特征的魯棒性更強(qiáng)、精度與速度更高,因此廣泛應(yīng)用于目標(biāo)檢測(cè)領(lǐng)域。
目前基于卷積神經(jīng)網(wǎng)絡(luò)的檢測(cè)方法主要包括兩大類:基于區(qū)域的雙階段目標(biāo)檢測(cè)方法,如R-CNN系列[3-5];基于回歸的單階段目標(biāo)檢測(cè)方法,如RetinaNet[6]、SSD[7]、YOLO[8-10]等。雙階段檢測(cè)器使用生成建議網(wǎng)絡(luò)提取特征后送入分類器得到類別,而單階段檢測(cè)器不需要額外的區(qū)域分類步驟,直接對(duì)特征映射圖上每個(gè)位置的目標(biāo)進(jìn)行分類預(yù)測(cè)。雙階段檢測(cè)器較單階段檢測(cè)器檢測(cè)精度更高但實(shí)時(shí)性明顯降低,故YOLO作為檢測(cè)精度與速度均衡發(fā)展的單階段檢測(cè)器得到更加廣泛的研究與應(yīng)用。YOLO是一種端到端的實(shí)時(shí)目標(biāo)檢測(cè)框架,將物體檢測(cè)作為回歸問題進(jìn)行求解,不需要預(yù)先通過生成建議網(wǎng)絡(luò)(RPN)得到感興趣區(qū)域(ROI),而是直接將圖片送入特征金字塔網(wǎng)絡(luò)[11](FPN)提取特征經(jīng)過分類回歸器得到輸出。輕量級(jí)目標(biāo)檢測(cè)模型Tiny YOLOv3較YOLOv3減少了大量的特征提取卷積層與殘差塊,同時(shí)僅使用FPN簡單級(jí)聯(lián),忽略了更深層次的語義特征及梯度消失問題,損失了較多的有效信息從而檢測(cè)精度明顯下降;其次,網(wǎng)絡(luò)模型尺寸雖然隨著卷積層的減少而降低,但仍然存在著計(jì)算量(FLOPs)冗余影響檢測(cè)速度的問題;最后,在計(jì)算損失函數(shù)時(shí)未考慮坐標(biāo)點(diǎn)之間的相關(guān)性及關(guān)鍵指標(biāo)IOU(Intersection over Union)的影響,導(dǎo)致邊界框定位不夠準(zhǔn)確,回歸精度明顯下降。
本文針對(duì)Tiny YOLOv3存在的特征提取不充分、檢測(cè)速度受限、邊界框回歸精度低的問題,通過改進(jìn)金字塔特征提取網(wǎng)絡(luò)、使用深度可分離卷積與引入CIOU loss函數(shù),提出實(shí)時(shí)高精度MTYOLO檢測(cè)模型。
Tiny YOLOv3以回歸的方式訓(xùn)練由7層類Darknet-19構(gòu)成的主干網(wǎng)絡(luò),同時(shí)通過 K-means 聚類算法對(duì)樣本數(shù)據(jù)集進(jìn)行聚類學(xué)習(xí),分別在13×13和26×26兩個(gè)尺度上得到兩組 anchor box 作為先驗(yàn)框進(jìn)行后續(xù)的回歸操作。在針對(duì)多目標(biāo)問題時(shí),使用logistic分類器取代softmax分類器,解決了同一物體屬于多個(gè)類別的表征問題。
在Tiny YOLOv3中,將輸入圖像送入卷積神經(jīng)網(wǎng)絡(luò)提取特征并劃分為S×S的網(wǎng)格,每個(gè)網(wǎng)格包含3個(gè)預(yù)測(cè)框,每個(gè)預(yù)測(cè)框產(chǎn)生4個(gè)用于回歸的參數(shù)(x,y,w,h) 與 1 +n個(gè)用于分類的參數(shù)(c,p1,p2,...,pn),送入預(yù)測(cè)層產(chǎn)生預(yù)測(cè)框返回值參數(shù)(ox,oy,ow,oh,oc,op1,op2,...,opn),可以表示為:
ox=σ(x) +cx,
(1)
oy=σ(y) +cy,
(2)
ow=pwew,
(3)
oh=pheh,
(4)
(5)
opi=σ(pi),
(6)
式中:ox、oy、ow、oh為預(yù)測(cè)框的中心點(diǎn)坐標(biāo)和寬高,σ()代表sigmoid函數(shù),σ(x)、σ(y)為預(yù)測(cè)框中心對(duì)應(yīng)網(wǎng)格左上角的橫坐標(biāo)、縱坐標(biāo),cx與cy為當(dāng)前網(wǎng)格相對(duì)于左上角網(wǎng)格偏移的網(wǎng)格數(shù),pw與ph為邊界框的寬度與高度,ew與eh為橫縱方向上的縮放因子。c代表該邊界框的置信度,當(dāng)網(wǎng)格中存在目標(biāo)時(shí)Pr為1,否則為為預(yù)測(cè)框和真實(shí)框的交并比;bpi為n個(gè)類別通過分類器的概率,當(dāng)bpi大于0.5時(shí),表示該邊界框負(fù)責(zé)的目標(biāo)屬于此類。最后,將多個(gè)邊界框的參數(shù)通過非極大值抑制(Non-maximum suppression,NMS)運(yùn)算得到最終的位置信息和類別預(yù)測(cè)值。
改進(jìn)的MTYOLO檢測(cè)模型包括主干網(wǎng)絡(luò)、特征融合網(wǎng)絡(luò)、預(yù)測(cè)層與輸出層。如圖1所示,主干網(wǎng)絡(luò)將輸入圖像經(jīng)過一系列卷積操作得到不同感受野的特征圖,特征融合網(wǎng)絡(luò)將生成的各層特征圖通過多向級(jí)聯(lián)得到兩種尺度的特征向量,送入預(yù)測(cè)層產(chǎn)生大量帶有位置與類別信息的預(yù)測(cè)框,最后由NMS得到輸出層的檢測(cè)結(jié)果。
圖1 MTYOLO檢測(cè)模型Fig.1 MTYOLO test model
特征提取網(wǎng)絡(luò)是影響目標(biāo)檢測(cè)算法性能的關(guān)鍵因素之一。Tiny YOLOv3使用傳統(tǒng)的FPN采用bottom-up跨層連接方式保留了高層特征的語義信息與低層特征的細(xì)節(jié)信息,提升了小物體的檢測(cè)效果。然而傳統(tǒng)的FPN只能學(xué)習(xí)相鄰尺度的特征,固有地接收單向信息流,導(dǎo)致網(wǎng)絡(luò)過多關(guān)注低層特征的優(yōu)化,累計(jì)更多的梯度從而不能充分學(xué)習(xí)高層特征。
MTYOLO采用MdFPN(Multi-directional feature pyramid network)結(jié)構(gòu)通過在傳統(tǒng)的FPN提取網(wǎng)絡(luò)上添加雙向交叉連接及側(cè)向級(jí)聯(lián)后充分地進(jìn)行多層間不同分辨率、不同語義特征的融合,緩解了原網(wǎng)絡(luò)在特征提取過程中對(duì)邊緣信息的忽略,極大地共享了網(wǎng)絡(luò)權(quán)重參數(shù),提高了網(wǎng)絡(luò)敏感度。此外,由于偶數(shù)卷積核因其感受野不對(duì)稱會(huì)在特征圖中累計(jì)位置像素的偏移,致使空間信息受到嚴(yán)重侵蝕,故選擇奇數(shù)卷積核作為核函數(shù)。與較大的卷積核相比,3×3的卷積核可在保證獲得相同感受野和更多特征信息的同時(shí)消耗更少的計(jì)算資源。因此,MdFPN選擇堆疊多個(gè)3×3卷積核代替較大的卷積核以便獲得更好的非線性判決網(wǎng)絡(luò)。算法的整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
(1)構(gòu)建了7層的主干網(wǎng)絡(luò),使用6個(gè)卷積模塊(包含卷積、標(biāo)準(zhǔn)化和Leaky ReLU激活3個(gè)過程)與最大池化提取復(fù)雜背景下的物體信息,將輸入圖像X1經(jīng)過32倍降采樣后得到Y(jié)6,保證在提取到(208,104,52,26,13,7 pixel)各尺度特征圖的情況下控制網(wǎng)絡(luò)層數(shù)。
(2)添加圖像融合與跨層連接運(yùn)算。將主干網(wǎng)絡(luò)特征圖Y2~Y6與跨層上采樣后的Y9~Y11進(jìn)行初次融合得到特征融合層C1~C5。
(3)利用3個(gè)深度可分離卷積與2個(gè) 3×3 卷積完成對(duì)初步融合圖像特征的再次提取,獲得更多有效的特征。此時(shí),由于C4、C5特征通道數(shù)過大故使用普通卷積防止計(jì)算量驟增。
(4)移除Tiny YOLOv3中單一特征融合與預(yù)測(cè)的卷積層,通過對(duì)(1)、(2)、(3)中各層特征圖進(jìn)行最大池化、深層卷積與特征融合操作得到不同尺度的輸出向量C6~C9,使其既包含池化聚焦的空間信息與前一層融合變換后的局部特征,又包含本層與后一層的全局特征。
(5)將特征融合后的Y12、Y13分別卷積后得到output1、output2,直接送入預(yù)測(cè)層用于多分類和回歸操作,不斷訓(xùn)練迭代模型,得到最終的檢測(cè)結(jié)果。
圖2 MdFPN特征提取網(wǎng)絡(luò)Fig.2 MdFPN feature extraction network
表1 Tiny YOLOv3與模型A在VOC2007/COCO數(shù)據(jù)集上的mAP
將僅使用MdFPN代替Tiny YOLOv3網(wǎng)絡(luò)的簡單級(jí)聯(lián),不改變其他結(jié)構(gòu)的檢測(cè)模型記為模型A。由表1可以看出,相對(duì)于傳統(tǒng)的Tiny YOLOv3網(wǎng)絡(luò),模型A在VOC2007和COCO數(shù)據(jù)集上的mAP分別提升了13.3%和14.1%,表明MdFPN可有效融合多層信息,提高檢測(cè)精度。
傳統(tǒng)的卷積計(jì)算每一步都需要關(guān)注所有通道的計(jì)算區(qū)域從而累積較多的參數(shù)。針對(duì)深層網(wǎng)絡(luò)導(dǎo)致模型計(jì)算復(fù)雜度過高與檢測(cè)速度受限的問題,可采用模型裁剪[12]與使用深度可分離卷積構(gòu)建網(wǎng)絡(luò)來減少參數(shù)占用內(nèi)存設(shè)計(jì)輕量級(jí)模型,但由于模型裁剪可能會(huì)帶來不可逆轉(zhuǎn)的細(xì)節(jié)丟失,故選擇深度可分離卷積對(duì)MTYOLO模型進(jìn)行簡化。
深度可分離卷積將標(biāo)準(zhǔn)卷積分解成兩層。一層用于濾波,在輸入的每個(gè)通道上獨(dú)立執(zhí)行空間卷積;一層用于組合,將深度卷積的通道混合后使用點(diǎn)卷積輸出。如圖3所示,輸入圖像為DF×DF×M,輸出圖像為DW×DH×N,當(dāng)采用標(biāo)準(zhǔn)卷積核DK×DK×M×N時(shí),此卷積層的計(jì)算量為DK×DK×M×N×DF×DF;而使用深度可分離卷積時(shí)卷積層的計(jì)算量為DK×DK深度卷積和1×1點(diǎn)卷積的計(jì)算量之和。故采用深度可分離卷積與使用標(biāo)準(zhǔn)卷積的網(wǎng)絡(luò)計(jì)算量之比為:
(7)
以MdFPN的第二層結(jié)構(gòu)為例,網(wǎng)絡(luò)中輸入特征圖為104×104×32,輸出特征圖為104×104×64。由(7)式可知,DK=3時(shí),網(wǎng)絡(luò)參數(shù)可被壓縮為原來的1/9。因此,MdFPN使用多個(gè)深度可分離卷積可構(gòu)建緊湊的模型,從而提升檢測(cè)速度。從理論上來說,模型的時(shí)間復(fù)雜度可以用來衡量檢測(cè)速度,即一張圖像送入模型進(jìn)行一次完整的前向傳播所需的浮點(diǎn)運(yùn)算個(gè)數(shù)(FLOPs)。由于普通卷積相比于深度可分離卷積而言,在進(jìn)行卷積運(yùn)算時(shí)的數(shù)據(jù)調(diào)用的邏輯更加繁瑣,且在對(duì)每個(gè)特征圖的卷積操作完成后還會(huì)對(duì)這些特征圖進(jìn)行累加操作,大量的中間數(shù)據(jù)需要更多的寄存器來存儲(chǔ),故在前向傳播時(shí)將花費(fèi)更多的時(shí)間。
圖3 標(biāo)準(zhǔn)卷積和深度可分離卷積Fig.3 Standard convolution and depthwise separable convolution
表2 Tiny YOLOv3與模型B的參數(shù)總量、FLOPs及FPSTab.2 Total parameters,FLOPs and FPS of Tiny YOLOv3 and Model B
將僅使用深度可分離卷積代替部分標(biāo)準(zhǔn)卷積,其他網(wǎng)絡(luò)結(jié)構(gòu)均不改變的檢測(cè)模型記為模型B。由表2可知,相比傳統(tǒng)的Tiny YOLOv3網(wǎng)絡(luò),模型B的參數(shù)總量下降了12.3%,模型尺寸減小了68.5%,F(xiàn)PS在GPU和CPU上分別提升了40.6%和49.2%。結(jié)果表明,使用深度可分離卷積代替標(biāo)準(zhǔn)卷積極大地節(jié)省了計(jì)算資源,提高了檢測(cè)速度。
Tiny YOLOv3僅使用MSE函數(shù)作為網(wǎng)絡(luò)的回歸函數(shù),獨(dú)立地計(jì)算邊界框4個(gè)坐標(biāo)點(diǎn)的損失,未考慮坐標(biāo)點(diǎn)之間的相關(guān)性與距離損失的尺度不變性,故存在收斂速度慢和回歸不準(zhǔn)確的問題。針對(duì)MSE函數(shù)存在的問題,充分考慮邊界框回歸的三要素:重疊區(qū)域、中心點(diǎn)距離和長寬比,MTYOLO采用CIOU損失代替MSE,通過引入IOU(圖4)、添加懲罰項(xiàng)αv來最小化兩個(gè)邊界框,進(jìn)一步明確了梯度優(yōu)化的方向。MSE函數(shù)與CIOU損失可描述為式(8)、(9):
(8)
(9)
式中,gt代表真實(shí)框,o與ogt分別為預(yù)測(cè)框與真實(shí)框的中心點(diǎn),d表示歐氏距離;c表示預(yù)測(cè)框和真實(shí)框最小外接矩形的對(duì)角線距離,與IOU共同實(shí)現(xiàn)對(duì)預(yù)測(cè)框相交面積的約束;ɑ是一個(gè)正的權(quán)衡參數(shù),控制梯度下降方向;而v約束兩框的相交比例,使模型能夠向區(qū)域重疊更密集的方向優(yōu)化,進(jìn)一步提高檢測(cè)結(jié)果。將ɑ與v表示如下:
(10)
(11)
對(duì)于分類損失與置信度損失,使用二值交叉熵?fù)p失函數(shù),則總損失可以表示為式(12):
(12)
Lconf=-tclogoc-(1-tc)log(1-oc) ,
(13)
Lcls=-tpilogopi-(1-tpi)log(1-opi) ,
(14)
表3 Tiny YOLOv3與模型C在VOC2007/COCO數(shù)據(jù)集上的mAP
將僅使用 CIOU損失代替MSE,其他網(wǎng)絡(luò)結(jié)構(gòu)均不改變的檢測(cè)模型記為模型C。由表3可以看出,相對(duì)于傳統(tǒng)的Tiny YOLOv3網(wǎng)絡(luò),模型C在VOC和COCO數(shù)據(jù)集上的mAP分別提升了10.3%和8.2%,表明使用CIOU loss可提高回歸框的檢測(cè)精度進(jìn)而提升mAP。
模型訓(xùn)練過程分為前向計(jì)算及反向傳播過程。在兩個(gè)過程交疊往復(fù)中持續(xù)對(duì)權(quán)值參數(shù)保持更新,使損失函數(shù)結(jié)果達(dá)到最小。在 MTYOLO 前向傳播的過程中第i個(gè)卷積層可以表示為式(15):
Yi=F(Xi)=F(Xi-1*wi+bi),
(15)
式中,Xi、Yi分別代表輸入與輸出張量,wi、bi表示第i層的權(quán)重信息與偏移量,F(xiàn)()是激活函數(shù)。將輸入圖像通過特征提取等操作得到網(wǎng)絡(luò)最后一層的輸出參數(shù)Yi。進(jìn)行后向傳播時(shí),第i層的損失函數(shù)的梯度信息可以表示為式(16)。其中,⊙為逐元素乘積(Hadamard乘積)。
(16)
此外,Lconf(Lcls)對(duì)Yj的梯度信息可以表示為式(17),則參數(shù)oj向著tj方向梯度更新時(shí)可以得到理想的置信度與分類誤差。
(17)
(18)
因此,對(duì)約束參數(shù)v進(jìn)行求導(dǎo)得到式(19)、(20),其中,對(duì)于每一輪訓(xùn)練的wgt與hgt均為已知常數(shù)。由式(19)、(20)可知,若預(yù)測(cè)框的長和寬?[0,1]時(shí),w2+h2的值會(huì)很小,可能導(dǎo)致梯度爆炸,因此應(yīng)將其替換成1。
(19)
(20)
圖4 IOU、c及d的示意圖。Fig.4 Schematic diagram of IOU, c and d.
研究基于上述理論與消融實(shí)驗(yàn)的分析,在網(wǎng)絡(luò)結(jié)構(gòu)上將Tiny YOLOv3原有的類Darknet-19替換為MdFPN特征提取網(wǎng)絡(luò),使用深度可分離卷積代替部分標(biāo)準(zhǔn)卷積,并在預(yù)測(cè)層利用CIOU loss取代MSE函數(shù),構(gòu)造新的MTYOLO檢測(cè)模型。實(shí)驗(yàn)環(huán)境為:Ubuntu 18.04;TensorFlow Version:1.13;CUDA Version: 10.1;內(nèi)存: 32 G;GPU:Tesla P4。實(shí)驗(yàn)采用的數(shù)據(jù)集為PASVAL VOC 2007/2012和COCO 2014。VOC數(shù)據(jù)集由20種不同類型的物體標(biāo)注的自然圖像組成,包含訓(xùn)練驗(yàn)證集train_val共16 551張,測(cè)試集test 4 952張;COCO數(shù)據(jù)集包含了80個(gè)種類的目標(biāo),包含訓(xùn)練驗(yàn)證集train_val共123 287張,測(cè)試集test 40 775張。
MTYOLO輸入圖片大小為416×416,批處理大小為64,最大迭代次數(shù)為 20 000,初始學(xué)習(xí)率為 0.001,動(dòng)量為0.9,權(quán)重衰減率為 0.000 5。訓(xùn)練過程中使用交叉熵?fù)p失(Cross entropy loss)和CIOU loss對(duì)網(wǎng)絡(luò)權(quán)重參數(shù)進(jìn)行反向隨機(jī)梯度下降更新權(quán)重,實(shí)現(xiàn)網(wǎng)絡(luò)的有效學(xué)習(xí)。當(dāng)?shù)螖?shù)到達(dá)5 000次,學(xué)習(xí)率降為0.000 1;當(dāng)?shù)螖?shù)達(dá)到10 000次,學(xué)習(xí)率進(jìn)一步降為0.000 01。
圖5為使用 VOC 2007+2012數(shù)據(jù)集進(jìn)行訓(xùn)練驗(yàn)證的回歸誤差(val_loss)與每2 500輪計(jì)算一次得到的分類準(zhǔn)確率(Accuracy)得到的曲線。由圖可知,經(jīng)過 20 000 次迭代后,val_loss逐步趨于穩(wěn)定,最終下降到 5.5左右,分類正確率上升至84.2%,與Tiny YOLOv3相比較,回歸誤差下降約50.9%,分類正確率上升約9.3%,表明訓(xùn)練得到的模型較為理想。同時(shí),當(dāng)MTYOLO的mAP達(dá)到56.9%時(shí),僅耗時(shí)1 036 800 s,較Tiny YOLOv3減少了近25.9%,訓(xùn)練速度得到了較大的提升。
圖5 回歸誤差與分類正確率Fig.5 Regression error and classification accuracy
為了評(píng)估改進(jìn)算法的準(zhǔn)確率,對(duì)MTYOLO及馬立[13-16]等人改進(jìn)的Tiny YOLOv3模型分別在VOC 2007與COCO數(shù)據(jù)集上進(jìn)行測(cè)試,結(jié)果如表4所示。
由表4可以看出,MTYOLO較Tiny YOLOv3在VOC和COCO數(shù)據(jù)集上mAP分別提升了25.3%和27.5%,模型尺寸下降了15.2%,F(xiàn)LOPs下降了5.6%,F(xiàn)PS在GPU與CPU分別提升了25.6%和36.2%。并且,與馬立等人改進(jìn)的模型及YOLO系列最新版本v4、v5相比,在損失較小精度的情況下,檢測(cè)速度更理想,更適用于嵌入式平臺(tái)。 因此,通過使用MdFPN網(wǎng)絡(luò)、深度可分離卷積和CIOU損失構(gòu)建目標(biāo)檢測(cè)模型,能在提升檢測(cè)精度的基礎(chǔ)上,有效地減少網(wǎng)絡(luò)參數(shù)和計(jì)算量,保證檢測(cè)速度提升到一個(gè)更高的水平。
表4 七種模型在VOC/COCO上的mAP和模型尺寸、FLOPs、FPSTab.4 mAP on VOC / COCO and Model size, FLOPs, FPS for seven models
基于Tiny YOLOv3改進(jìn)的檢測(cè)模型MTYO-LO,通過構(gòu)造多向特征金字塔與深度可分離卷積的特征提取網(wǎng)絡(luò)代替標(biāo)準(zhǔn)卷積堆疊級(jí)聯(lián)的網(wǎng)絡(luò)結(jié)構(gòu),并使用CIOU損失代替MSE作為該模型的回歸損失函數(shù),在保證檢測(cè)速度較理想的情況下提高了mAP。在PASCAL VOC和COCO數(shù)據(jù)集上與其他輕量級(jí)的目標(biāo)檢測(cè)算法進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果表明,MTYOLO具有更高的mAP,并且取得了較快的檢測(cè)速度。