高建瓴,馮嬌嬌,王子牛,韓毓璐,孫 健
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴陽 550025)
目標(biāo)檢測(cè)[1-3]是計(jì)算機(jī)視覺領(lǐng)域中一個(gè)具有挑戰(zhàn)性的課題[4],主要目的是從視頻或者一些數(shù)據(jù)集中檢測(cè)并定位特定的目標(biāo)。由于目標(biāo)所在的環(huán)境影響,至今還沒有一種比較通用且成熟的檢測(cè)方法。傳統(tǒng)的目標(biāo)檢測(cè)算法已經(jīng)難以滿足現(xiàn)有數(shù)據(jù)的處理效率、速度和精度等各方面的要求。
隨著網(wǎng)絡(luò)的發(fā)展,陸陸續(xù)續(xù)出現(xiàn)很多基于深度學(xué)習(xí)[5]方法思想的目標(biāo)檢測(cè)模型。例如,一種是基于區(qū)域提取的R-CNN 系列[6-8]為代表的目標(biāo)檢測(cè),其次就是基于回歸的目標(biāo)檢測(cè)算法,包括YOLO[9](You Only Look Once)和SSD[10](Single Shot Multi-BoxDetector)。在基于回歸的方法中,YOLO 第一個(gè)采用了回歸思想,實(shí)現(xiàn)了one-stage 檢測(cè)的算法[11]。如今該算法已經(jīng)從YOLO 經(jīng)YOLO V2 發(fā)展到現(xiàn)在YOLO V3[12],不論在檢測(cè)速度方面還是在精度上,已遠(yuǎn)遠(yuǎn)超過第一代的YOLO。相比作為后輩的SSD法,性能也得以超越。但是YOLO 算法依舊存在一些問題,比如定位精度、召回率等較低,且對(duì)尺寸較小的物體檢測(cè)效果欠佳。
YOLO V3 利用特征金字塔[13](Feature Pyramid Network,F(xiàn)PN)的思想,將相鄰尺度的特征圖通過串聯(lián)(concat)操作進(jìn)行特征融合[14],通過特征融合可以有效提高目標(biāo)的檢測(cè)精度。
本文基于YOLO 存在的問題,以YOLO V3 模型為主要架構(gòu),提出了一種基于金字塔模型和注意力機(jī)制的YOLO V3 目標(biāo)檢測(cè)算法,建立了多尺度的目標(biāo)檢測(cè)算法。通過反卷積和金字塔模型,來融合不同尺度的淺層和高層的信息,從而提升對(duì)目標(biāo)的檢測(cè)精度。利用注意力機(jī)制,使得具有注意力效果的梯度能流入更深的網(wǎng)絡(luò)中。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLO V3 比原始的YOLO V3 在COCO 2014 數(shù)據(jù)集上具有更高的目標(biāo)檢測(cè)精度。
通過構(gòu)建特征金字塔網(wǎng)絡(luò),解決了眾多尺度檢測(cè)問題,代替了Faster R-CNN 之類的檢測(cè)模型的特征提取器,生成多層特征映射,信息的質(zhì)量比普通的用于特征檢測(cè)的特征金字塔更好。如圖1 所示。
圖1 預(yù)測(cè)網(wǎng)絡(luò)Fig.1 Predicting network
圖1 中(a)、(b)、(c)是現(xiàn)在常有的金字塔結(jié)構(gòu),(d)是本文采用的金字塔結(jié)構(gòu)。圖1(a)是檢測(cè)系統(tǒng)選擇使用于更快速檢測(cè)的單尺度特征,它自底向上卷積,使用最后一層特征圖進(jìn)行預(yù)測(cè)。如SPPNet、Faster R-CNN 就是采用這種方式,即僅采用網(wǎng)絡(luò)最后一層的特征。該方式雖然檢測(cè)速度快,但會(huì)造成檢測(cè)小目標(biāo)時(shí)的精度下降。圖1(b)的改進(jìn)是將圖片分成不同尺寸,然后進(jìn)行不同尺度的預(yù)測(cè),有效的改善了圖1(a)中的單一預(yù)測(cè)。圖1(c)是自底向上然后自頂向下的線路,橫向連接,同時(shí)融合了相鄰特征之間的信息。通過高層特征進(jìn)行上采樣和淺層特征進(jìn)行自頂向下的連接,而且每一層都會(huì)進(jìn)行預(yù)測(cè)。其問題是它忽略了高層和淺層的聯(lián)系。所以,針對(duì)于此提出了圖1(d)的改進(jìn)金字塔結(jié)構(gòu)模型。該模型采用跳躍連接的方式,同時(shí)采用4 倍和2 倍的反卷積進(jìn)行上采樣,從而得到相同的特征圖大小,有效的解決了圖1(c)的問題。改進(jìn)的金字塔詳細(xì)結(jié)構(gòu)如圖2 所示。
圖2 改進(jìn)的金字塔的細(xì)節(jié)結(jié)構(gòu)Fig.2 The detailed structure of the improved pyramid
從圖2 中可以清晰看到3 個(gè)預(yù)測(cè)層分別來自何處。YOLO V3 的融合通過catenate 進(jìn)行張量拼接,在進(jìn)行一個(gè)Convolutional Set 操作時(shí),其結(jié)構(gòu)如圖3所示。在大小為13*13 和52*52 的特征圖之間,采用步長(zhǎng)為4 的反卷積進(jìn)行上采樣,使其不同特征層的大小一致,最后輸出檢測(cè)結(jié)果。
注意力機(jī)制[15](Attention mechanism)可以按不同的形式分類。按照注意力產(chǎn)生的方式可分為兩種:一種是自頂向下的注意力或者稱聚焦式注意力,還有一種是自底向上的注意力,稱為基于顯著性的注意力。若按照注意力作用的特征形式,可分為基于項(xiàng)的注意力和基于位置的注意力。在計(jì)算機(jī)視覺領(lǐng)域中,基于位置的注意力是與任務(wù)相關(guān)、作用方法直接的注意力機(jī)制,其應(yīng)用比較廣泛。
1.2.1 空間注意力機(jī)制[16](Spatial Transformer Network,STN)
STN 網(wǎng)絡(luò)模型如圖3 所示。其中包含3 個(gè)部分:定位網(wǎng)絡(luò)(Localisation network)、網(wǎng)格生成器(Grid generator)、采樣器(Sampler)。
圖3 STN 模型結(jié)構(gòu)Fig.3 STN model structure
定位網(wǎng)絡(luò)用來生成仿射變換的系數(shù),其中輸入為U,輸出為θ,θ是一個(gè)可變換參數(shù),其維度大小根據(jù)變換類型而定。
網(wǎng)格生成器是根據(jù)上面生成的參數(shù)?,對(duì)輸入進(jìn)行變換。從而得到原始圖像或者是經(jīng)過平移、旋轉(zhuǎn)等變換的特征圖結(jié)果。
采樣器根據(jù)網(wǎng)格生成器得到的結(jié)果,生成一個(gè)新的輸出圖片或者特征圖V,用于下一步操作。
1.2.2 通道注意力(Channel Attention,CA)
通道注意力可以理解為讓神經(jīng)網(wǎng)絡(luò)看什么,典型的代表是SENet[17]。卷積網(wǎng)絡(luò)的每一層都有很多卷積核,每個(gè)卷積核對(duì)應(yīng)一個(gè)特征通道。相對(duì)于空間注意力機(jī)制,通道注意力在于分配各個(gè)卷積通道之間的資源。網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示。
圖4 SE 塊Fig.4 SE block
1.3.1 網(wǎng)絡(luò)結(jié)構(gòu)
相對(duì)YOLO V1 和YOLO V2 的特征提取網(wǎng)絡(luò),YOLO V3 的網(wǎng)絡(luò)結(jié)構(gòu)是Darknet-53。對(duì)比同期其它的特征提取網(wǎng)絡(luò)擁有較好的表現(xiàn)。YOLO V3 網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。
從圖5 中可以看出,YOLO V3 的Darknet-53 網(wǎng)絡(luò)不同于YOLO V2 的Darknet-19 網(wǎng)絡(luò)。Darknet-53 網(wǎng)絡(luò)中連續(xù)使用1x1 和3x3 的卷積核,一共有53個(gè)卷積層和5 個(gè)殘差塊。其中,YOLO V3 通過卷積層,對(duì)輸入圖片進(jìn)行了5 次下采樣,最后進(jìn)行了多尺度的預(yù)測(cè),處理過程借鑒了殘差神經(jīng)網(wǎng)絡(luò)的思想[18]。Darknet53 結(jié)構(gòu)單元如圖6 所示。
圖5 YOLO V3 網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 YOLO V3 network structure
圖6 Darknet53 結(jié)構(gòu)單元Fig.6 Structural unit of Darknet53
圖6(a)中,每個(gè)殘差塊由多個(gè)殘差單元組成,通過輸入兩個(gè)DBL 單元進(jìn)行殘差操作,構(gòu)建了殘差單元。其中,DBL 單元包含卷積、批歸一化和leaky relu 激活函數(shù),如圖6(b)所示。通過引入殘差單元使得網(wǎng)絡(luò)深度可以更深,避免梯度消失。
1.3.2 k-means 維度聚類算法
通過k-means 聚類算法得到更好的邊界框,對(duì)網(wǎng)絡(luò)來說,則能學(xué)習(xí)到準(zhǔn)確的預(yù)測(cè)方法。所以YOLO V3 繼續(xù)延用了YOLO V2 的思想,采用kmeans 的方式對(duì)訓(xùn)練集的邊界框做聚類,找到合適的邊界框。YOLO V3 在VOC 和COCO 數(shù)據(jù)集上聚類,邊界框的數(shù)量為9。因是對(duì)邊框做相應(yīng)的聚類,所以聚類方法中的距離公式定義為:
1.3.3 檢測(cè)過程
YOLO V3 是基于回歸的目標(biāo)檢測(cè),不需要預(yù)先生產(chǎn)感興趣區(qū)域。如圖7 所示,首先輸入尺寸為416x416 的圖片,經(jīng)過Darknet53 網(wǎng)絡(luò)進(jìn)行特征提取,可以獲得3 個(gè)不同尺寸的網(wǎng)格區(qū)域,其分別是13×13、26×26、52×52。經(jīng)過特征金字塔,在網(wǎng)絡(luò)后兩個(gè)特征圖上采樣,與網(wǎng)絡(luò)前期相應(yīng)尺寸的特征圖聚合,最后再預(yù)測(cè)輸出結(jié)果。
圖7 檢測(cè)流程圖Fig.7 Detection flow chart
通過對(duì)神經(jīng)網(wǎng)絡(luò)中傳遞的特征通道加以不同的權(quán)重,網(wǎng)絡(luò)可以更加重視權(quán)重較大的通道進(jìn)行參數(shù)更新。由于全局平均池化[19]不同于平均池化和最大池化,它是一種特殊的池化,通常用來聚集空間信息。它是對(duì)特征圖全局平均后輸出一個(gè)值,從而使其具有全局的感受野,使得網(wǎng)絡(luò)淺層也能利用全局信息。通道注意力機(jī)制的用途是通過對(duì)特征圖的各個(gè)通道之間的依賴性進(jìn)行建模,從而提高對(duì)于重要特征的表征能力。
在YOLOv3 的網(wǎng)絡(luò)結(jié)構(gòu)中含有很多的殘差連接,所以在殘差塊中加入通道注意力機(jī)制,它具有擠壓(Squeeze)和激活(Excitation)兩部分操作。設(shè)輸入注意力模塊的卷積核集合為Y=[y1,y2…,yc],卷積操作為Fconv,前一層的卷積核集為X=[x1,x2…,xc],H、W、C分別為特征圖的長(zhǎng)度、寬度、通道數(shù)。擠壓操作為Fsq,也就是全局池化過程。設(shè)輸出結(jié)果為長(zhǎng)度為c 的一維數(shù)組,具體操作公式如式(2):
然而激勵(lì)過程就是對(duì)各通道間的相關(guān)度進(jìn)行建模,公式如下:
式中,F(xiàn) C1和F C2是全連接層,s 是最終激活操作的輸出參數(shù)為向量。通過上述2 個(gè)公式,在經(jīng)過特征加權(quán),可以得出最終的輸出結(jié)果為:Y+yc×sc。
相對(duì)之前的YOLO V3,由于引入了注意力機(jī)制,增加了兩個(gè)全連接層和一個(gè)全局平均池化以及特征加權(quán),這大大的添加了算法的計(jì)算量,在速度上會(huì)比原YOLO V3 低。其算法流程如圖8 所示。
圖8 改進(jìn)算法流程圖Fig.8 Improved algorithm flow chart
在YOLO V3 中,引入了FPN 網(wǎng)絡(luò),將淺層的信息和高層的信息通過使用上采樣融合,從而得到3個(gè)不同尺度的特征圖,再進(jìn)行檢測(cè)輸出結(jié)果。由于原YOLO V3 中忽略了淺層信息和高層信息二者之間的聯(lián)系,所以本文對(duì)網(wǎng)絡(luò)進(jìn)行了相應(yīng)的改進(jìn),如圖9 所示。
圖9 改進(jìn)的YOLO V3 檢測(cè)模型圖Fig.9 Improved YOLO V3 detection model diagram
在原YOLO V3 的3 個(gè)尺度檢測(cè)上,把淺層的信息和高層的信息進(jìn)行反卷積。改進(jìn)的具體細(xì)節(jié)是:輸入圖片經(jīng)過Darknet-53 得到特征圖,在輸出尺度為13x13 時(shí)執(zhí)行上采樣操作,再和26x26 融合,得到新的特征信息,再把融合后的信息與52x52 的輸出融合。之后,對(duì)13x13 做反卷積與52x52 進(jìn)行融合,因此實(shí)現(xiàn)了淺層和高層二者信息的聯(lián)系。3 個(gè)尺度在經(jīng)過上采樣和反卷積以及特征融合,得到了新的3 組不同尺度的YOLO 特征層,并使用這3 組特征層進(jìn)行位置和類別的預(yù)測(cè)。
實(shí)驗(yàn)環(huán)境配置見表1。
表1 實(shí)驗(yàn)環(huán)境配置Tab.1 Experimental environment configuration
本實(shí)驗(yàn)的數(shù)據(jù)采用COCO_2014 數(shù)據(jù)集,使用該數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練得到該數(shù)據(jù)集的預(yù)測(cè)模型。數(shù)據(jù)集大約包含16 萬張圖片,圖片包括了動(dòng)物圖片、自然風(fēng)景圖片、生活街景圖片和人物圖片等。圖片中背景都較復(fù)雜,目標(biāo)數(shù)量較多,大量圖片樣本中具有多目標(biāo)物體。其中用于訓(xùn)練為117 263 張圖片,測(cè)試集共有5 000 張圖片。
在COCO 2014 上對(duì)已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)進(jìn)行測(cè)試,分別計(jì)算了YOLO-tiny、YOLO V3 和改進(jìn)的YOLO V3 模型的平均準(zhǔn)確率均值(mAP),作為檢測(cè)效果評(píng)價(jià)指標(biāo)。測(cè)試結(jié)果見表2。YOLO-tiny 和YOLO V3 模型的mAP 分別是16.3%和31.1%,改進(jìn)后的YOLO V3 模型的平均精準(zhǔn)度為32.4%,提升了1.3%。
表2 COCO 2014 測(cè)試集中平均準(zhǔn)確率(mAP%)測(cè)試結(jié)果Tab.2 COCO 2014 test set average accuracy rate(mAP%)test results
本文對(duì)特征金字塔融合的改進(jìn)以及添加的注意力機(jī)制,使其對(duì)數(shù)據(jù)集中的小目標(biāo)有了一定的提升。在80 類中選擇了7 類進(jìn)行做對(duì)比,結(jié)果見表3。
表3 COCO 2014 測(cè)試集中不同目標(biāo)的平均準(zhǔn)確率(mAP%)Tab.3 The average accuracy of different targets in the COCO 2014 test focuses(mAP%)
從表3 可知,改進(jìn)后的模型對(duì)目標(biāo)的精準(zhǔn)度有了相應(yīng)的提高,對(duì)于cat、bird、cow、bed 等目標(biāo)的精準(zhǔn)度均比原來的有所提高。其中每個(gè)小目標(biāo)分別提升了5.1%、0.7%、1.4%、2.7%、3.2%、1.1%、3.3%。相對(duì)于YOLO-tiny 來說,提升的較大,因?yàn)閅OLOtiny 簡(jiǎn)化了網(wǎng)絡(luò)架構(gòu)。
本文提出一種基于金字塔模型和注意力機(jī)制的YOLO V3 算法,保留了多尺度檢測(cè)的特點(diǎn),同時(shí)還把淺層特征圖的細(xì)節(jié)信息和高層的語義特征信息進(jìn)行融合,從而提高檢測(cè)效果。外加在殘差連接中加入通道注意力機(jī)制,整個(gè)網(wǎng)絡(luò)能更好地篩選出有利于后續(xù)檢測(cè)的特征向量。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的YOLO V3 在小目標(biāo)和精準(zhǔn)度上都有提高,但在速率上還不夠理想。究其原因,是在特征融合階段加入了反卷積以及對(duì)殘差網(wǎng)絡(luò)的改進(jìn)所致。下一步的工作是繼續(xù)研究如何在保持目標(biāo)精準(zhǔn)度的情況下,減輕網(wǎng)絡(luò)層,降低計(jì)算量,提升檢測(cè)速度。