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