張麗瑩,龐春江,王新穎*,李國(guó)亮
(1.華北電力大學(xué)(保定)計(jì)算機(jī)系,河北保定 071003;2.國(guó)網(wǎng)山東省電力公司棗莊供電公司,山東棗莊 277800)
目標(biāo)檢測(cè)在計(jì)算機(jī)視覺(jué)領(lǐng)域的發(fā)展中發(fā)揮著不可或缺的作用,主要目標(biāo)是確定所研究的對(duì)象在圖像中所處的位置,并且表明所涉及對(duì)象的類(lèi)別。作為模式識(shí)別中最主要的算法,它的出現(xiàn)為自動(dòng)識(shí)別物體開(kāi)辟了一種創(chuàng)新方式,在許多領(lǐng)域和特定的應(yīng)用場(chǎng)景中都發(fā)展出較為成熟的解決方案。
近年來(lái),隨著計(jì)算機(jī)硬件技術(shù)的顯著提升和深度學(xué)習(xí)理論在圖像領(lǐng)域的不斷深入,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法的發(fā)展越來(lái)越成熟,因在特征表達(dá)能力和時(shí)間效率等方面都取得了突破性的進(jìn)展,具有更好的魯棒性和檢測(cè)精度,在大多應(yīng)用場(chǎng)景下已成為圖像識(shí)別的首選方法。目前常見(jiàn)的基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法一般分為兩類(lèi):主要是以R-CNN(Region-Convolutional Neural Network)為代表的基于候選區(qū)域提取的兩階段算法[1-3]和以YOLO(You Only Look Once)[4-7]、SSD(Single Shot multibox Detector)[8-10]、CenterNet[11]等為代表的基于回歸的一階段算法。其中,Redmon 等[6]創(chuàng)建了YOLOv3 算法,該算法使用了一種分類(lèi)效果更好的網(wǎng)絡(luò)結(jié)構(gòu)Darknet-53,利用更強(qiáng)大的網(wǎng)絡(luò)提取目標(biāo)特征并生成邊界回歸,利用殘差模塊進(jìn)一步深化了網(wǎng)絡(luò)結(jié)構(gòu),保證了模型檢測(cè)的準(zhǔn)確性和時(shí)效性。
雖然基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法在各領(lǐng)域得到廣泛應(yīng)用,但對(duì)于多尺度目標(biāo)檢測(cè)特別是小目標(biāo)檢測(cè)仍是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。隨著網(wǎng)絡(luò)層數(shù)的不斷加深,雖然在特征表達(dá)方面有所增強(qiáng),但是淺層信息卻未能得到充分利用,對(duì)目標(biāo)進(jìn)行精確定位的能力不足。同時(shí)小目標(biāo)的有效像素很少,只攜帶一些不完整的特征,經(jīng)過(guò)多次下采樣和池化操作后,相當(dāng)多的特征信息會(huì)丟失[12]。YOLOv3 作為一種代表性的單階段目標(biāo)檢測(cè)算法,當(dāng)目標(biāo)檢測(cè)背景復(fù)雜,多尺度且姿態(tài)多樣時(shí),YOLOv3 易造成小目標(biāo)的漏檢和誤檢,檢測(cè)能力有待提升。
從目前的研究來(lái)看,處理多尺度目標(biāo)檢測(cè)問(wèn)題可以分為以下幾種方法:
1)采用經(jīng)典的方法將網(wǎng)絡(luò)提取的特征信息進(jìn)行融合。文獻(xiàn)[6]通過(guò)特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)實(shí)現(xiàn)多尺度目標(biāo)的特征融合,來(lái)提升特征網(wǎng)絡(luò)對(duì)多尺度目標(biāo)的檢測(cè)能力;文獻(xiàn)[13]將注意力機(jī)制融入到改進(jìn)的Inception 結(jié)構(gòu)中,使網(wǎng)絡(luò)更加收斂,實(shí)現(xiàn)多尺度融合,從而提高檢測(cè)的精度;文獻(xiàn)[14]通過(guò)嵌入注意力和特征交織模塊使特征圖自主學(xué)習(xí)每個(gè)通道的權(quán)重,增強(qiáng)關(guān)鍵特征。
2)利用反卷積對(duì)深度特征圖進(jìn)行擴(kuò)展。文獻(xiàn)[15]在主干網(wǎng)絡(luò)中引入混合空洞卷積(Hybrid Dilated Convolution,HDC)增大淺層特征圖的感受野,并與深層網(wǎng)絡(luò)特征融合以改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),提升模型對(duì)小目標(biāo)的檢測(cè)能力;文獻(xiàn)[16]引入擴(kuò)張卷積和自我注意模塊(Self-Attention Module,SAM),提升網(wǎng)絡(luò)對(duì)上下文信息的利用率。
3)對(duì)損失函數(shù)的優(yōu)化。Focal loss[17]中利用平衡因子,來(lái)平衡正負(fù)樣本的損失,降低大量負(fù)樣本在訓(xùn)練過(guò)程中所占比重,使模型在訓(xùn)練時(shí)可以集中在難分及錯(cuò)分的樣本上;文獻(xiàn)[18]通過(guò)將預(yù)測(cè)框長(zhǎng)寬比擬合成目標(biāo)框的長(zhǎng)寬比的LOSSCIoU提升目標(biāo)的定位能力。
這些算法在一定程度上解決了目標(biāo)尺度變化的問(wèn)題,提高了對(duì)小目標(biāo)的檢測(cè)精度,但是沒(méi)能考慮到檢測(cè)時(shí)存在尺度變化差異的問(wèn)題,并且整體算法的計(jì)算量大、魯棒性差,不能滿(mǎn)足對(duì)小目標(biāo)精確的檢測(cè)要求。
針對(duì)上述問(wèn)題,本文在分析YOLOv3 算法優(yōu)缺點(diǎn)的基礎(chǔ)上,提出了一種基于改進(jìn)YOLOv3 的多尺度目標(biāo)檢測(cè)算法。首先,在特征提取網(wǎng)絡(luò)中,引入密集連接模塊,實(shí)現(xiàn)低高層特征的復(fù)用集成,減少模型參數(shù)數(shù)量,并采用殘差模塊進(jìn)一步深化網(wǎng)絡(luò)結(jié)構(gòu),添加注意力機(jī)制,利用高效的通道注意力模塊實(shí)現(xiàn)不降維的跨通道交互;在特征融合網(wǎng)絡(luò)中,考慮到多次下采樣后小目標(biāo)的大部分信息都會(huì)丟失,設(shè)計(jì)雙向的FPN,融合豐富的上下文信息,以彌補(bǔ)小目標(biāo)的缺失特征。為了實(shí)現(xiàn)準(zhǔn)確的邊界框回歸,將YOLOv3 算法中的位置損失函數(shù)替換為GIoU(Generalized Intersection over Union),訓(xùn)練過(guò)程中具有更快、更準(zhǔn)確的回歸,使檢測(cè)算法對(duì)小目標(biāo)更友好。
與YOLO 模型相比,YOLOv3 算法的主要改進(jìn)是網(wǎng)絡(luò)結(jié)構(gòu)的調(diào)整,采用新的主干網(wǎng)絡(luò)Darknet-53 進(jìn)行特征提取,它是由一個(gè)DBL(Darkbetconv2d-BN-Leaky)模塊和五個(gè)殘差模塊組成,如圖1 所示。殘差疊加的每個(gè)主體賦予不同的系數(shù),分別為1、2、8、8、4。殘差疊加完成后,將特征映射輸出到下一個(gè)殘差模塊,繼續(xù)進(jìn)行特征提取操作。殘差網(wǎng)絡(luò)的加入,一方面保證了網(wǎng)絡(luò)結(jié)構(gòu)在更復(fù)雜的情況下仍然收斂,網(wǎng)絡(luò)越深入,特征表達(dá)越好,有效改善了分類(lèi)檢測(cè)的效果,特別是對(duì)于小目標(biāo)的檢測(cè);另一方面,殘差網(wǎng)絡(luò)中的1×1 卷積在一定程度上減少了參數(shù)量和計(jì)算量,這與ResNet(deep Residual Network)結(jié)構(gòu)相似[19]。同時(shí),引入了特征金字塔網(wǎng)絡(luò)(FPN)的多層次預(yù)測(cè)結(jié)構(gòu)[6],輸出三種大小不同的特征圖,分別為13×13、26×26、53×53,實(shí)現(xiàn)多尺度檢測(cè)。網(wǎng)格單元越精細(xì),被檢測(cè)的物體就越精準(zhǔn)。YOLOv3 整體網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
圖1 DBL和殘差模塊的結(jié)構(gòu)Fig.1 Structure of DBL and residual modules
圖2 YOLOv3的整體結(jié)構(gòu)Fig.2 Overall structure of YOLOv3
損失函數(shù)用于判斷預(yù)測(cè)值與真實(shí)值的差值,它是代表模型性能的重要參數(shù)之一。在模型的訓(xùn)練中,不斷調(diào)整網(wǎng)絡(luò)中的參數(shù),將損失函數(shù)優(yōu)化到最小,損失值越小,模型的魯棒性越好。YOLOv3 算法的損失函數(shù)是在YOLOv2 的基礎(chǔ)上所作出的改進(jìn),其中最關(guān)鍵的變動(dòng)是分類(lèi)損失的替換,使用了二分交叉熵,計(jì)算公式如下:
其中:第一項(xiàng)目標(biāo)定位損失函數(shù)(中心坐標(biāo)預(yù)測(cè)誤差、邊界框預(yù)測(cè)誤差)使用均方差進(jìn)行對(duì)目標(biāo)框的回歸;在第二項(xiàng)置信度損失函數(shù)中,分為有目標(biāo)和無(wú)目標(biāo)兩種情況,在沒(méi)有包含目標(biāo)的損失中引入權(quán)重系數(shù);第三項(xiàng)分類(lèi)損失函數(shù)中,同樣使用交叉熵?fù)p失,降低計(jì)算的復(fù)雜度。LOSS函數(shù)如下所示:
傳統(tǒng)YOLOv3 算法通過(guò)輸出三幅大小不同特征圖像來(lái)融合深層特征和淺層特征,提高了目標(biāo)檢測(cè)能力,具有較高的檢測(cè)精度。但是對(duì)于多尺度尤其是小目標(biāo)的檢測(cè),YOLOv3 算法雖能檢測(cè)到大部分目標(biāo),但是檢測(cè)效果并不理想,存在誤檢和漏檢的問(wèn)題。由于攜帶的有效像素少,特征不明顯,YOLOv3 算法不能很好地提取圖像的特征信息。所以本文在特征提取網(wǎng)絡(luò)、多尺度特征融合、減少網(wǎng)絡(luò)層數(shù)等方面進(jìn)行改進(jìn),提高目標(biāo)檢測(cè)的精度。
在YOLOv3 算法中,Darknet-53 利用殘差網(wǎng)絡(luò)的思想,采用大量1×1 的卷積減少了每個(gè)卷積的通道,殘差模塊的設(shè)計(jì),降低了梯度爆炸的風(fēng)險(xiǎn),增強(qiáng)網(wǎng)絡(luò)對(duì)特征信息的學(xué)習(xí),在保持速度的同時(shí),減少了計(jì)算量,有效地提高了檢測(cè)的準(zhǔn)確性。但是隨著網(wǎng)絡(luò)結(jié)構(gòu)的加深,模型中的淺層特征信息并未得到充分利用,缺乏多尺度特征提取,導(dǎo)致了大量小目標(biāo)位置信息的丟失。此外,冗余的網(wǎng)絡(luò)結(jié)構(gòu)和過(guò)多的參數(shù)會(huì)導(dǎo)致模型的復(fù)雜訓(xùn)練,增加對(duì)數(shù)據(jù)需求,降低檢測(cè)速度。
密集連接網(wǎng)絡(luò)(Dense Convolutional Network,DenseNet)[20]是在保留特征信息的前提下將所有層直接連接在一起,即每一層的輸入是之前所有層的輸出,使整個(gè)網(wǎng)絡(luò)層與層之間的信息流最大化。DenseNet 的核心思想是通過(guò)通道級(jí)聯(lián)的方式,將淺層的特征映射轉(zhuǎn)移到后續(xù)連接緊密的模塊中,減輕梯度消失問(wèn)題,進(jìn)一步增強(qiáng)了特征復(fù)用,更加有效地利用特征;并且網(wǎng)絡(luò)很窄,減少了參數(shù)量,有助于抑制過(guò)擬合的問(wèn)題,以更少的參數(shù)和計(jì)算成本獲得比ResNet 更好的性能。YOLOv3 算法的特征提取網(wǎng)絡(luò)由5 個(gè)殘差模塊組成。本文將前兩個(gè)殘差模塊替換為兩個(gè)密集連接模塊,以增加層與層之間的信息流動(dòng)。通過(guò)從兩個(gè)密集模塊中提取特征,考慮到圖像的淺層語(yǔ)義特征和深層語(yǔ)義特征,將淺層特征傳遞到深層網(wǎng)絡(luò)中,實(shí)現(xiàn)特征的復(fù)用和融合;并通過(guò)殘差模塊進(jìn)一步深化網(wǎng)絡(luò)結(jié)構(gòu),減少模型參數(shù)的數(shù)量,保證模型檢測(cè)的準(zhǔn)確性和時(shí)效性。
密集連接網(wǎng)絡(luò)由密集模塊和過(guò)渡層組成,由圖3 所示。密集模塊中層與層之間的特征關(guān)系可以表示為:
圖3 密集連接網(wǎng)絡(luò)Fig.3 DenseNet
其中:[x0,x1,…,xl-1]表示將0 到l-1 層的輸出特征圖進(jìn)行通道的合并。此外,過(guò)渡層級(jí)聯(lián)多個(gè)密集模塊,由一個(gè)卷積單元和2×2 的平均池化組成,在不同卷積層生成的特征映射之間找到一個(gè)有效的組合,降低計(jì)算的復(fù)雜度。
為了實(shí)現(xiàn)通道間的特征加權(quán),確保更多有用的信息被發(fā)送到后續(xù)層進(jìn)行進(jìn)一步的特征提取,擠壓和激勵(lì)網(wǎng)絡(luò)[21]在2017 年由Hu 等提出。通過(guò)學(xué)習(xí)全局特征,對(duì)通道間的卷積特征進(jìn)行精確建模,重加權(quán)特征映射,從而提高了網(wǎng)絡(luò)的表達(dá)能力。SE Block(Squeeze-and-Excitation Block)的引入提升模型對(duì)通道的敏感性,聚焦于特征通道之間的關(guān)系,根據(jù)不同的權(quán)重增加對(duì)有用特征的關(guān)注程度。同時(shí)這種方式抑制了對(duì)當(dāng)前任務(wù)沒(méi)有用處的特征,使得在不增加網(wǎng)絡(luò)深度的前提下提高神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)任務(wù)的準(zhǔn)確性。SE Block 主要包括兩個(gè)操作,分別是Squeeze 和Excitation。Squeeze 通過(guò)全局平均池化的方式進(jìn)行特征壓縮,得到全局描述特征;隨后,對(duì)全局特征進(jìn)行Excitation,學(xué)習(xí)各個(gè)通道之間的關(guān)系,通過(guò)參數(shù)的設(shè)置,來(lái)為不同特征通道之間生成權(quán)重;最后Scale 操作利用Excitation 所獲得的結(jié)果乘到原始特征上,如圖4 所示。
圖4 SE Block的基本結(jié)構(gòu)Fig.4 Basic structure of SE Block
因此,本文對(duì)Darknet-53 的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行了改進(jìn),改進(jìn)的主干網(wǎng)絡(luò)如表1 所示。將疊加殘差模塊的數(shù)量改為5、5、2、2、2,降低模型的運(yùn)算量。在傳輸模塊中增加了1×1 卷積核。通過(guò)改進(jìn)網(wǎng)絡(luò)結(jié)構(gòu),提高目標(biāo)檢測(cè)分類(lèi)速度。同時(shí),利用深度可分離卷積代替普通卷積,顯著降低卷積層的計(jì)算成本,獲得更多的語(yǔ)義信息,提高網(wǎng)絡(luò)的檢測(cè)效果。
表1 改進(jìn)的主干網(wǎng)絡(luò)Tab.1 Improved backbone network
YOLOv3 算法采用FPN 結(jié)構(gòu),利用多尺度特征映射來(lái)進(jìn)行預(yù)測(cè)。特征金字塔集成了深淺層特征映射的優(yōu)點(diǎn),將低分辨率、語(yǔ)義較強(qiáng)的特征和高分辨率、語(yǔ)義較弱但空間信息豐富的特征進(jìn)行融合,使用不同分辨率的特征圖檢測(cè)不同大小的目標(biāo)。然而該結(jié)構(gòu)只包含了單向的特征融合過(guò)程,雖增強(qiáng)了語(yǔ)義信息,但對(duì)定位信息沒(méi)有傳遞,丟失了大量細(xì)節(jié)信息,難以滿(mǎn)足精確的目標(biāo)定位任務(wù)。因此本文改進(jìn)的FPN 增加了自上而下的特征融合信息流,將淺層的強(qiáng)定位特征傳遞下去,融合不同層次的特征使提取的特征更加豐富,對(duì)提高檢測(cè)性能,特別是小目標(biāo)的檢測(cè)性能非常重要。改進(jìn)后的特征融合網(wǎng)絡(luò)如圖5 所示。
從圖5 可以看出,本文引入了第二個(gè)Dense Block 提取的淺層特征信息,并在原YOLOv3 中存在的自下而上的特征融合策略上增加了自上而下的特征融合路徑。整體改進(jìn)的FPN 流程如下:首先,最底層的殘差模塊(13,13,1 024)提取的特征圖首先經(jīng)過(guò)5 次卷積并保留原特征Feature Map1,再進(jìn)行2 倍上采樣和1×1 的卷積擴(kuò)充通道,和上一個(gè)殘差模塊(26,26,512)進(jìn)行Concat;經(jīng)過(guò)3 次卷積并保留原特征Feature Map2,隨后進(jìn)行2 倍上采樣和1×1 的卷積擴(kuò)充通道,與上一個(gè)殘差模塊進(jìn)行Concat;經(jīng)過(guò)3 次卷積并保留原特征Feature Map3,隨后進(jìn)行2 倍上采樣和1×1 的卷積擴(kuò)充通道,與上一個(gè)密集模塊進(jìn)行Concat;進(jìn)行3 次卷積后保留原特征Feature Map4;3 次卷積后進(jìn)行下采樣并與Feature Map3 進(jìn)行concat,進(jìn)行3 次卷積保留原特征圖Feature Map5;經(jīng)過(guò)一次下采樣后與Feature Map2 進(jìn)行Concat 后進(jìn)行3 次卷積保留原特征Feature Map6;經(jīng)過(guò)下采樣與Feature Map1 進(jìn)行Concat,進(jìn)行3 次卷積保留原特征Feature Map7;最后將Feature Map4、Feature Map5、Feature Map6、Feature Map7 送入YOLO Head 得到四個(gè)不同尺度的特征預(yù)測(cè)層。
圖5 改進(jìn)的FPNFig.5 Improvd FPN
YOLOv3 算法采用多尺度檢測(cè),最終輸出三種特征尺度,分別是13×13、26×26、52×52。但當(dāng)面對(duì)尺度較大的目標(biāo)時(shí),由于小目標(biāo)的目標(biāo)區(qū)域較小,攜帶的有效信息在經(jīng)過(guò)多次卷積和下采樣后造成信息丟失,最終檢測(cè)準(zhǔn)確率降低。針對(duì)此問(wèn)題,本文在多尺度檢測(cè)基礎(chǔ)上進(jìn)行改進(jìn),通過(guò)增加低維的尺度檢測(cè)來(lái)增強(qiáng)對(duì)淺層特征的學(xué)習(xí)能力,由原來(lái)的3 尺度檢測(cè)變?yōu)? 尺度檢測(cè),添加一個(gè)104×104 層,在保留深層語(yǔ)義信息的基礎(chǔ)上獲得淺層特征信息。低維尺度預(yù)測(cè)層的加入雖增加了模型的復(fù)雜度,在訓(xùn)練時(shí)影響了檢測(cè)速度,但是最終實(shí)驗(yàn)結(jié)果表明,算法檢測(cè)的準(zhǔn)確率得到了一定程度的提升。
在YOLOv3 算法中,使用均方誤差(Mean-Square Error,MSE)作為目標(biāo)框定位損失函數(shù),但MSE 損失函數(shù)易受到目標(biāo)尺度的影響。交并比(Intersection over Union,IoU)作為目標(biāo)檢測(cè)中性能指標(biāo)常用的函數(shù),在位置回歸中,通過(guò)比較真實(shí)框和預(yù)測(cè)框框之間的并集和交集之比,達(dá)到反映預(yù)測(cè)框檢測(cè)效果的目的,且具有尺度不變性的特性,公式如下所示:
但是IoU 也存在一定的局限性。比如,當(dāng)真實(shí)框和預(yù)測(cè)框沒(méi)有重疊時(shí),根據(jù)IoU 的計(jì)算結(jié)果定義為0,無(wú)法通過(guò)IoU來(lái)預(yù)測(cè)兩框之間的距離;而且由于損失為0,網(wǎng)絡(luò)也無(wú)法進(jìn)行梯度回歸訓(xùn)練。如圖6 所示,三種情況下IoU 是相等的,但是每種重疊的形式是不同的,反映了IoU 不能準(zhǔn)確地反映兩框之間的覆蓋情況的局限性。
圖6 IoU相等的三種情況Fig.6 Three scenarios with the same IoU
為了解決此問(wèn)題,本文采用GIoU 代替IoU 來(lái)計(jì)算損失函數(shù)。GIoU 的計(jì)算方式如下所示:
其中:C表示包含A和B的最小矩形面積。根據(jù)計(jì)算公式,GIoU 與IoU 取值范圍不同,IoU 是[0,1],而GIoU 的取值范圍是(-1,1]。當(dāng)兩框完全重疊時(shí),最大值為1;當(dāng)兩者之間的距離為無(wú)窮大且無(wú)交集時(shí),最小值為-1,GIoU 仍然可以計(jì)算梯度,在一定程度上GIoU 克服了IoU 作為損失函數(shù)的缺點(diǎn)。同時(shí),由于GIoU 不僅關(guān)注重疊區(qū)域,也關(guān)注非重疊區(qū)域,因此能更好地反映預(yù)測(cè)框與真實(shí)框的重疊。綜上所述,在損失函數(shù)中使用GIoU 時(shí),可以達(dá)到比IoU 更好的效果,解決了IoU 不能反映重疊方式,無(wú)法優(yōu)化IoU 為0 時(shí)預(yù)測(cè)框的問(wèn)題,提高算法的檢測(cè)精度。
Pascal VOC 2007 和Pascal VOC 2012是由Pascal VOC(2005—2012)大賽提供的數(shù)據(jù)集。比賽的目標(biāo)主要是圖像目標(biāo)識(shí)別,它提供的數(shù)據(jù)集包含20 種不同的對(duì)象。
實(shí)驗(yàn)采用Pascal VOC 2007 和Pascal VOC 2012 數(shù)據(jù)集來(lái)進(jìn)行訓(xùn)練和測(cè)試模型的性能。數(shù)據(jù)集包含20 000 多張圖片。為了提高模型的泛化能力,滿(mǎn)足對(duì)多尺度目標(biāo)的檢測(cè)要求,所選數(shù)據(jù)集的圖像中包含尺寸大小不一的目標(biāo),其變化程度是不一樣的。同時(shí)增加COCO(Common Objects in Context)2014 數(shù)據(jù)集,其包含80 種類(lèi)別目標(biāo)。相較于Pascal VOC 數(shù)據(jù)集來(lái)說(shuō),COCO 數(shù)據(jù)集的評(píng)估標(biāo)準(zhǔn)更加嚴(yán)格。IoU 從0.5 到0.95 這一區(qū)間每變化0.05 就測(cè)試一次平均準(zhǔn)確率(Average Precision,AP)[22],最后求出10 次測(cè)量結(jié)果的平均值作為最終的AP。模型使用預(yù)先訓(xùn)練過(guò)的Darknet-53 的參數(shù)為模型特征提取網(wǎng)絡(luò)的初始化參數(shù)。在訓(xùn)練開(kāi)始時(shí),先凍結(jié)一部分進(jìn)行訓(xùn)練,加快速度,也可以防止在訓(xùn)練初期權(quán)值被破壞,初始學(xué)習(xí)率為0.001,訓(xùn)練140 個(gè)epoch,每次傳入網(wǎng)絡(luò)的圖片數(shù)量為8,解凍后學(xué)習(xí)率變?yōu)?.000 1,傳入網(wǎng)絡(luò)的圖片數(shù)量變?yōu)?,在訓(xùn)練前對(duì)圖片進(jìn)行適當(dāng)?shù)男D(zhuǎn)和飽和度變化,以增強(qiáng)訓(xùn)練樣本的穩(wěn)定性,防止過(guò)擬合。
本文實(shí)驗(yàn)所使用的配置環(huán)境如表2 所示。
表2 實(shí)驗(yàn)配置環(huán)境Tab.2 Experimental configuration environment
本文采用平均準(zhǔn)確率(AP)[22]、平均準(zhǔn)確率均值(mean Average Precision,mAP)、幀率等目標(biāo)檢測(cè)常用指標(biāo)評(píng)價(jià)模型性能的對(duì)比提升。
1)計(jì)算某一類(lèi)別的AP需要繪制出這一類(lèi)別的PR 曲線以進(jìn)一步說(shuō)明其性能,以召回率(Recall)為橫軸,準(zhǔn)確率(Precision)為縱軸,曲線下的面積即為AP值。準(zhǔn)確率和召回率兩者的值呈負(fù)相關(guān),在局部區(qū)域上下波動(dòng)。公式如下:
在目標(biāo)檢測(cè)中,一個(gè)模型通常會(huì)檢測(cè)出多種物體,那么多個(gè)類(lèi)別的AP的平均值就是mAP。公式如下:
2)評(píng)價(jià)目標(biāo)檢測(cè)網(wǎng)絡(luò)檢測(cè)速度的常用指標(biāo)是速率,即每秒內(nèi)可以處理的圖片數(shù)。
3.3.1 模型訓(xùn)練
評(píng)價(jià)一個(gè)模型的質(zhì)量不僅需要檢測(cè)的準(zhǔn)確率,而且需要損失函數(shù)的收斂速度。當(dāng)模型的精確度高、收斂速度快時(shí),模型才能對(duì)多尺度的目標(biāo)檢測(cè)保持魯棒性和穩(wěn)定性。本文分別對(duì)YOLOv3 算法和基于YOLOv3 改進(jìn)的目標(biāo)檢測(cè)算法進(jìn)行訓(xùn)練和測(cè)試。在整個(gè)訓(xùn)練過(guò)程中,采用分批隨機(jī)梯度下降法對(duì)函數(shù)進(jìn)行優(yōu)化。從圖7 所示的損失函數(shù)可以看出:這兩種算法在20 個(gè)epoch 之前的損失值都很大,損失值開(kāi)始呈現(xiàn)下降收斂的狀態(tài);隨著訓(xùn)練迭代次數(shù)的疊加,損失值不斷減小,網(wǎng)絡(luò)不斷擬合。與YOLOv3 算法相比,基于改進(jìn)YOLOv3的目標(biāo)檢測(cè)算法在訓(xùn)練過(guò)程中更加穩(wěn)定,損失值的波動(dòng)范圍更小,收斂效果更好。
圖7 損失函數(shù)Fig.7 Loss function
3.3.2 本文算法與YOLOv3算法實(shí)驗(yàn)對(duì)比
YOLOv3 算法、Tiny-YOLOv3 算法與基于改進(jìn)YOLOv3 的算法對(duì)不同目標(biāo)檢測(cè)準(zhǔn)確率的對(duì)比如表3 所示;不同算法在通用數(shù)據(jù)集Pascal VOC 數(shù)據(jù)集上的性能比較以及檢測(cè)一張圖片所用的時(shí)間如表4 所示。
表3 不同算法對(duì)不同目標(biāo)檢測(cè)準(zhǔn)確率對(duì)比 單位:%Tab.3 Comparison of different algorithms for different objects on detection precision unit:%
表4 三種算法在Pascal VOC數(shù)據(jù)集上的性能比較Tab.4 Performance comparison of three methods on Pascal VOC datasets
實(shí)驗(yàn)結(jié)果表明,與YOLOv3 算法、Tiny-YOLOv3 算法相比,基于改進(jìn)YOLOv3 的目標(biāo)檢測(cè)算法的mAP 值分別提高了5.89 個(gè)百分點(diǎn)和25.92 個(gè)百分點(diǎn)。在目標(biāo)檢測(cè)速率分析方面,Tiny-YOLOv3 算法明顯高于其他網(wǎng)絡(luò),但是其檢測(cè)精度較低,而本文算法雖檢測(cè)速率有所下降,但是保證了較高的檢測(cè)精度。
考慮到在COCO 數(shù)據(jù)集中,需要在IoU 為[0.50:0.95]上10 個(gè)取值上計(jì)算mAP,最后取平均得到最終結(jié)果,因此,COCO 的多IoU 評(píng)估方法能夠更好地說(shuō)明算法的檢測(cè)性能,本文算法在COCO 數(shù)據(jù)集上的檢測(cè)結(jié)果如表5 所示。實(shí)驗(yàn)結(jié)果表明,基于改進(jìn)YOLOv3 的目標(biāo)檢測(cè)算法高出原YOLOv3算法3.28 個(gè)百分點(diǎn),檢測(cè)性能有所提升。
表5 本文算法COCO數(shù)據(jù)集上的mAP@[0.50:0.95]測(cè)試結(jié)果 單位:%Tab.5 Detection results of mAP@[0.50:0.95]on COCO dataset unit:%
為了進(jìn)一步驗(yàn)證實(shí)驗(yàn)對(duì)不同尺度目標(biāo)檢測(cè)的有效性,在Pascal VOC 數(shù)據(jù)集上對(duì)目標(biāo)尺度進(jìn)行劃分,小尺度目標(biāo)(尺度大小為(0,110]),中尺度目標(biāo)(尺度大小為(110,230]),大尺度目標(biāo)(尺度大小為(230,400]),本文算法對(duì)不同尺度目標(biāo)的檢測(cè)結(jié)果如表6 所示,P-R 曲線如圖8 所示。
圖8 兩種模型對(duì)于不同尺度目標(biāo)的PR曲線Fig.8 PR curves of two models for objects with different scales
從表6 可以看出,本文算法對(duì)多尺度目標(biāo)進(jìn)行檢測(cè)的mAP 值分別是75.66%、87.70%、88.19%,和YOLOv3 算法相比,分別提高了6.38 個(gè)百分點(diǎn)、5.23 個(gè)百分點(diǎn)、3.44 個(gè)百分點(diǎn)。實(shí)驗(yàn)結(jié)果表明,基于改進(jìn)YOLOv3 的目標(biāo)檢測(cè)算法對(duì)多尺度的目標(biāo)有著更好的檢測(cè)效果。
表6 不同尺度目標(biāo)的檢測(cè)結(jié)果 單位:%Tab.6 Detection results of objects with different scales unit:%
3.3.3 本文算法與其他算法對(duì)比
為了進(jìn)一步驗(yàn)證本文算法的有效性,將本文算法和其他算法,包括一些典型的算法如兩階段的算法和其他文獻(xiàn)[23-24]中的算法進(jìn)行對(duì)比,來(lái)測(cè)試在同一測(cè)試集上改進(jìn)的YOLOv3 檢測(cè)性能的提升能力。其中:文獻(xiàn)[23]算法中包含了特征提取網(wǎng)絡(luò)、雙向金字塔和損失函數(shù)的改進(jìn);文獻(xiàn)[24]算法中進(jìn)行的改進(jìn)包括空洞卷積、引進(jìn)了Focal Loss 改進(jìn)損失函數(shù);同時(shí),在其他模型如SSD 模型上,通過(guò)增加雙向特征金字塔、注意力機(jī)制等部分改進(jìn)來(lái)實(shí)現(xiàn)對(duì)比實(shí)驗(yàn),算法性能結(jié)果如表7 所示。
表7 不同算法檢測(cè)結(jié)果對(duì)比Tab.7 Comparison of detection results of different algorithms
從表7 的算法檢測(cè)結(jié)果可以看出,所有目標(biāo)檢測(cè)算法在使用相同的數(shù)據(jù)樣本及參數(shù)進(jìn)行實(shí)驗(yàn)的背景下,本文算法的mAP 值相較于其他算法有所提升,相較于文獻(xiàn)[23]算法和文獻(xiàn)[24]算法分別提升了5.07%和2.15%。實(shí)驗(yàn)結(jié)果表明,基于改進(jìn)后YOLOv3 的目標(biāo)檢測(cè)算法有更好的性能。
3.3.4 消融實(shí)驗(yàn)結(jié)果對(duì)比
在驗(yàn)證模型性能的過(guò)程中,為了更好地定性定量地研究模型所作出的改進(jìn),經(jīng)常采用“消融實(shí)驗(yàn)”來(lái)進(jìn)行對(duì)比實(shí)驗(yàn),以便于更好地理解網(wǎng)絡(luò)中不同模塊對(duì)于網(wǎng)絡(luò)檢測(cè)性能的影響,因此本文設(shè)置了四組實(shí)驗(yàn)分別進(jìn)行實(shí)驗(yàn)。A 表示將前兩個(gè)殘差模塊替換成密集模塊,B 表示在殘差模塊中引入了SE Block,C 表示深度可分離卷積代替普通卷積,D 表示改進(jìn)的雙向的特征融合網(wǎng)絡(luò),E 表示優(yōu)化損失函數(shù)。實(shí)驗(yàn)結(jié)果如表8 所示,其中“√”表示包含所進(jìn)行改進(jìn)的模塊。
從表8 可以看出:在第2 組實(shí)驗(yàn)中,把前兩個(gè)殘差模塊更換為密集模塊之后,檢測(cè)精度有所下降,但小尺度檢測(cè)結(jié)果有所提升。第3 組實(shí)驗(yàn)增加了SE Block,和第2 組的對(duì)比發(fā)現(xiàn),不同尺度目標(biāo)的檢測(cè)精度都有所提升,表明增加通道間信息特征的作用是有效的,提高了卷積過(guò)程中特征提取的效率。第4 組實(shí)驗(yàn)增加了深度可分離卷積,檢測(cè)精度相差不大,但是運(yùn)行速度有所提升,相較于原網(wǎng)絡(luò)更加輕量高效。第5 組增加了自上而下的特征融合路徑,雖然增加了一定的參數(shù)量導(dǎo)致運(yùn)行速度略微下降,但是提升了對(duì)小目標(biāo)的檢測(cè)精度,提升了淺層特征的分類(lèi)能力和深層特征的定位能力。第6 組增加了損失函數(shù)的改進(jìn),在幾乎不增加參數(shù)量的情況下,整體的檢測(cè)精度有所提升,在一定程度上改善了小目標(biāo)的漏檢,有效避免了當(dāng)預(yù)測(cè)區(qū)域發(fā)生偏離無(wú)法進(jìn)行回歸的情況。綜上所述,基于改進(jìn)YOLOv3 的目標(biāo)檢測(cè)算法在性能上相比原YOLOv3 算法有了明顯的提升,更加適合多尺度目標(biāo)的檢測(cè)場(chǎng)景。
表8 消融實(shí)驗(yàn)結(jié)果對(duì)比Tab.8 Comparison of ablation experimental results
從圖9 可看出:原算法基本上存在一些小目標(biāo)的漏檢以及檢測(cè)精度不高問(wèn)題;而通過(guò)改進(jìn)模型,改進(jìn)算法成功檢測(cè)出了多尺度目標(biāo),檢測(cè)精度也有所提升。
圖9 YOLOv3與改進(jìn)的YOLOv3的多尺度目標(biāo)檢測(cè)結(jié)果Fig.9 Multi-scale object detection results of YOLOv3 and improved YOLOv3
從圖10 可以看出:YOLOv3 算法對(duì)圖像中的小目標(biāo)檢測(cè)結(jié)果不理想,容易漏檢和誤檢;改進(jìn)的YOLOv3 對(duì)密集的小目標(biāo)檢測(cè)效果更好,能有效解決特征獲取困難的問(wèn)題,降低漏檢率和誤檢率。
圖10 YOLOv3與改進(jìn)的YOLOv3的小目標(biāo)檢測(cè)結(jié)果Fig.10 Small object detection results of YOLOv3 and improved YOLOv3
在多尺度的目標(biāo)檢測(cè)任務(wù),針對(duì)存在漏檢,錯(cuò)檢以及重復(fù)檢測(cè)的問(wèn)題,本文在YOLOv3 算法的基礎(chǔ)上進(jìn)行改進(jìn),從網(wǎng)絡(luò)的特征提取和特征融合能力方面入手,增加密集連接模塊,充分利用各層特征,實(shí)現(xiàn)各層特征集成,同時(shí)增加了一層多尺度預(yù)測(cè),提高了網(wǎng)絡(luò)提取圖像深度特征的能力,注意力模塊的引入,使有效特征的權(quán)值變大,抑制無(wú)用特征,對(duì)圖像進(jìn)行增強(qiáng);在特征融合方面,雙向金字塔充分利用了多尺度特征,將淺層特征信息和深層特征信息充分融合,降低了目標(biāo)定位中目標(biāo)丟失的概率;最后是對(duì)損失函數(shù)的優(yōu)化,有效地減少了小目標(biāo)的漏檢情況。定性和定量實(shí)驗(yàn)結(jié)果表明,基于改進(jìn)YOLOv3 的目標(biāo)檢測(cè)算法具有更好的檢測(cè)效果,在Pascal VOC 的測(cè)試中顯示,算法整體mAP 達(dá)到83.26%。與傳統(tǒng)的YOLOv3 算法相比,本文算法提高了5.89 個(gè)百分點(diǎn),表明檢測(cè)性能的提高,更好地解決了面對(duì)多尺度的目標(biāo)檢測(cè)的問(wèn)題。
在未來(lái)的工作中,將對(duì)模型進(jìn)行壓縮,其中包括通道剪枝和參數(shù)量化等操作,目的是減少參數(shù),提高檢測(cè)速度,在保證參數(shù)數(shù)量盡可能少,檢測(cè)速度盡可能快的前提下進(jìn)一步提高模型的精度,從而在性能較低的嵌入式設(shè)備中獲得更好的結(jié)果。