石先讓,蘇 洋,提 艷,宋廷倫,2,戴振泳
(1.南京航空航天大學(xué) 能源與動力學(xué)院,南京 210001;2.奇瑞前瞻與預(yù)研技術(shù)中心,安徽 蕪湖 241006)
基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體檢測方法已經(jīng)在各種數(shù)據(jù)集[1-3]上取得了較好的成果,其中很多方法都有一個共同的、重要的組成結(jié)構(gòu)——錨框(Anchor),錨框是各種大小的預(yù)選框。當(dāng)單階段(One-stage)方法[4-6]使用錨框后,可以實(shí)現(xiàn)與兩階段(Two-stage)目標(biāo)檢測方法[7-8]極具競爭力的結(jié)果,同時檢測速度更快。One-stage 方法將錨框密集地放置在圖像上,根據(jù)對錨框評分并通過回歸方法修正坐標(biāo)來生成最終的預(yù)測框。需要錨框的方法稱之為Anchor-based 方法。One-stage 目標(biāo)檢測算法將可能的邊界框(稱為錨框)復(fù)雜地排列在圖像上,并采用滑動窗口的方法直接對其進(jìn)行分類,而無需指定框的內(nèi)容。Two-stage 目標(biāo)檢測算法是為每個潛在的框重新計算圖像特征,然后對這些特征進(jìn)行分類。當(dāng)檢測方法對潛在的錨框進(jìn)行檢測和分類后,一般都需要進(jìn)行非最大值抑制(NMS)[9]后處理才能得到最終的檢測目標(biāo)的各種屬性。
雖然在近年來該方法取得了一定的成功,但是錨框還存在缺點(diǎn)。首先,在目前錨框的目標(biāo)檢測算法中,通常使用基于滑動窗口的方法,這就需要大量的錨框,如DSSD 算法[10]中超過4 萬,而在RetinaNet算法[11]中超過10 萬。當(dāng)采用錨框時,只有小部分的錨框滿足于標(biāo)注的真實(shí)值重疊程度,這會造成正錨框與負(fù)錨框的失衡,往往都是負(fù)錨框的數(shù)量遠(yuǎn)多于正錨框,同時還會增加訓(xùn)練時間。其次,錨框的使用會引入很多超參數(shù),以及增加如何選擇這些超參數(shù)的難點(diǎn),這些超參數(shù)的選擇很大程度上是通過經(jīng)驗(yàn)和啟發(fā)式方法[5-8]得到的,當(dāng)與多尺度目標(biāo)檢測結(jié)合使用時會變得更加復(fù)雜。
鑒于錨框存在的缺點(diǎn),考慮設(shè)計一個不需要錨框同時可以取得良好的目標(biāo)檢測速度和準(zhǔn)確度的目標(biāo)檢測方法顯得很有必要,即Anchor-free 方法。
目前已經(jīng)產(chǎn)生了許多不需要錨框的方法[12-14]。2019 年,ZHOU 等[15]提 出CenterNet 目標(biāo)檢測算法。該算法通過對一張圖片進(jìn)行全卷積操作,輸出熱值圖,直接檢測目標(biāo)的中心和大小,不需要NMS 方法,減少了計算量。CenterNet 目標(biāo)檢測算法通過3 個網(wǎng)絡(luò)構(gòu)造來輸出預(yù)測值,分別輸出目標(biāo)的類、中心點(diǎn)與大小,完全實(shí)現(xiàn)了Anchor-free。CenterNet 算法[15]采用了4 種Backbone,在不同的Backbone 下,其最終的目標(biāo)檢測性能有著明顯的差異。因此,設(shè)計同時兼顧目標(biāo)檢測速度和準(zhǔn)確度的Backbone,顯得很有必要。在原CenterNet 目標(biāo)檢測方法中,只采用一個特征圖進(jìn)行目標(biāo)檢測,這樣不可避免地會造成圖像特征丟失。為充分利用深度卷積神經(jīng)網(wǎng)絡(luò)提取后的特征,采用特征圖融合非常重要。
本文在Hour-glasss-104 模型的基礎(chǔ)上,構(gòu)建Hourglass-208 模型。該模型基于原CenterNet 算法減少參數(shù)量和計算量,在此基礎(chǔ)上給出特征圖融合方法,并設(shè)計一種新的Backbone,通過對損失函數(shù)進(jìn)行改進(jìn),提出一種T_CenterNet 目標(biāo)檢測算法。
在Hourglass-104 模型[15]中,輸入為原始圖像大小的4 倍下采樣,依次經(jīng)過8 倍、16 倍、32 倍、64 倍、128 倍的下采樣,然后再依次經(jīng)過上采樣,最后只輸出一個特征圖,大小為輸入圖像的4 倍下采樣。
與CenterNet[15]相比,本文設(shè) 計的Hourglass-208模型最后進(jìn)行特征圖的輸出數(shù)量和大小不同于原Hourglass-104。在Hourglas-208 模型中,輸入圖像的大小為416×416×3,在進(jìn)行卷積預(yù)處理后,再輸入Hourglass-208 模型。Hourglass-208 輸入的張量的大小為208×208×128,經(jīng)過全卷積[16]操作后輸出4 個特征圖,分別為P1、P2、P3、P4。對于特征圖Pi,對應(yīng)為原輸入圖像的2i倍下采樣,即輸出特征圖的寬和高分別為輸入圖像的1/2i。最大特征圖P1的寬和高的大小為208,相對于輸入圖像寬和高的大小416,只有2 倍的下采樣,相比原Hourglass-104,保留了更多的特征圖和特征圖更高的分辨率。
在Hourglass-208 模型中,主要計算為卷積操作以及殘差網(wǎng)絡(luò)[17]的短接,由7 個殘差塊構(gòu)成,只經(jīng)過了2 倍、4 倍、8 倍和16 倍下采 樣,和hourglass-104 相比,省去了32 倍、64 倍和128 倍的下采樣。同時,基于Hourglass-208 模型,在旁路卷積中,直接采用短接連接,省去了卷積操作,減少了參數(shù)量和計算量。Hourglass-208 模型如圖1 所示。
圖1 Hourglass-208 模型Fig.1 Hourglass-208 model
在圖1 中,Conv 表示卷積層,BN 表示BN層[18],Leaky relu表示Leaky relu 激活函數(shù)層,Upsample 表示上采樣層,圓形為張量的相加操作,斜杠矩形表示由卷積層、BN 層和激活函數(shù)層構(gòu)成的卷積塊,為Hourglass-208 的主要組成結(jié)構(gòu)。
在CenterNet 中,使用最大的特征圖進(jìn)行目標(biāo)檢測,不可避免地?fù)p失了圖像的一些特征。為充分利用經(jīng)過卷積操作后產(chǎn)生的特征圖,本文將Hourglass-208 輸出的4 個特征圖進(jìn)行融合。文獻(xiàn)[19]提出特征金字塔網(wǎng)絡(luò)(FPN)的特征圖融合方法,隨后FPN廣泛運(yùn)用于各種卷積網(wǎng)絡(luò)中。
傳統(tǒng)特征圖融合方法都是平等對待各個特征圖,未考慮不同特征圖對最后目標(biāo)檢測性能的區(qū)別。但通過研究發(fā)現(xiàn),各個特征圖對最后融合輸出特征圖的貢獻(xiàn)是不平等的,TAN 等[20]在EfficientDet 中提出一種對各個特征圖的加權(quán)特征融合方法BiFPN。在對特征圖進(jìn)行融合時,對每個輸入的特征圖增加可以學(xué)習(xí)的權(quán)重,以便網(wǎng)絡(luò)在學(xué)習(xí)時,通過學(xué)習(xí)改變各個特征圖的融合權(quán)重,研究每個特征圖的最后目標(biāo)檢測性能的重要性。
對每個特征圖進(jìn)行學(xué)習(xí)的權(quán)重融合,可采用快速歸一化融合,計算公式為:
其中:ωi可用ReLU 函數(shù)保證其ωi≥0,同時設(shè)置一個極小值ε=0.000 1,避免分母為零的數(shù)值不穩(wěn)定;Ii為輸入的特征圖;O為融合輸出的特征圖,每個歸一化權(quán)重的值范圍為0~1。
本文通過2 種方法進(jìn)行特征圖的加權(quán)融合:
1)雙特征金字塔網(wǎng)絡(luò)(TFPN)方法
TFPN 結(jié)構(gòu)如圖2 所示。在圖2 中,圓形為卷積操作,點(diǎn)劃線箭頭代表上采樣,虛線箭頭表示跳層連接。
圖2 雙特征金字塔網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Structure of twin feature pyramid network
具體計算實(shí)例如式(2)所示:
在圖2 所示的融合方法中,由高層到低層的特征圖經(jīng)過的卷積操作逐漸增加,整體呈三角形結(jié)構(gòu),所以對該融合方法命名為雙特征金字塔網(wǎng)絡(luò)(TFPN)。
TFPN 特征圖融合不同于BiFPN[20],只有單向連接和跳層連接,因?yàn)樽詈笫峭ㄟ^熱值圖來實(shí)現(xiàn)目標(biāo)的檢測和定位,考慮一張?zhí)卣鲌D實(shí)現(xiàn),所以只采用了上采樣操作,沒有下采樣。在TFPN 中,最后輸出的只有一個融合后的特征圖Pout。不同于CenterNet 只用了最后一層單個特征圖進(jìn)行目標(biāo)檢測,本文用于目標(biāo)檢測的特征圖是通過更高層的特征圖通過上采樣以及可學(xué)習(xí)的權(quán)重融合得到的。
2)FPN_o1 方法
FPN_o1 結(jié)構(gòu)如圖3 所示。在圖3 中,圓形為卷積操作,點(diǎn)劃線箭頭代表上采樣。
圖3 FPN_o1 結(jié)構(gòu)Fig.3 FPN_o1 structure
具體計算實(shí)例如式(3)所示:
在圖3 所示的融合方法中,由高層到低層的特征圖是經(jīng)過上采樣后,然后通過相加得到,最后輸出的只有一個融合后的特征圖Pout,原理類似TFPN,但結(jié)構(gòu)相對于TFPN 較簡單,所以對該融合方法命名為FPN_o1。
對輸出的特征圖進(jìn)行權(quán)重融合時也采用快速歸一融合法,計算公式如式(4)所示:
權(quán)重融合示意圖如圖4 所示。
圖4 權(quán)重融合結(jié)構(gòu)Fig.4 Structure of weight fusion
在圖4 中,輸出的特征圖經(jīng)過卷積,該卷積不改變特征圖維度的大小,然后通過可學(xué)習(xí)的權(quán)重相加,其中:Pij代表第i個Hourglass-208 模型中第j個特征圖;ωij代表第i個Hourglass-208 模型中第j個特征圖的權(quán)重;Pij′為融合后的輸出,即式(4)中的Pout;Add代表特征圖的相加。
熱值圖(heatmap)主要通過顏色去表現(xiàn)數(shù)值的大小,熱值圖中的顏色越暖,表示值越大,顏色越冷,表示值越小,熱值圖示意圖如圖5 所示。
圖5 熱值圖示意圖Fig.5 Schematic diagram of heatmap
本文需要將卷積神經(jīng)網(wǎng)絡(luò)提取到的中心點(diǎn)的特征轉(zhuǎn)化為熱值圖。在熱值圖中,顏色越暖,表示該處存在目標(biāo)中心點(diǎn)的概率越大;顏色越冷,表示該處為背景的概率越大(彩圖效果見《計算機(jī)工程》官網(wǎng)HTML 版)。
本文通過端到端堆棧多個Hourglass-208 模型,將上一個Hourglass-208 模型的輸出作為下一個Hourglass-208 模型的輸入。這種方式為網(wǎng)絡(luò)提供了一種重復(fù)的自下而上、自上而下推理的機(jī)制,從而允許重新評估整個輸入圖像的初始估計和特征。
每個Hourglass-208 模型的輸出特征圖融合后,都生成一個由關(guān)鍵點(diǎn)構(gòu)成的熱值圖。在訓(xùn)練時,每個熱值圖都進(jìn)行目標(biāo)檢測,生成損失函數(shù)。這種方法就可以對中間產(chǎn)生的熱值圖進(jìn)行預(yù)測和監(jiān)督,即中繼監(jiān)督[21-22]。中繼監(jiān)督可以減輕深度神經(jīng)網(wǎng)絡(luò)帶來的梯度消失和梯度爆炸等[23-24]問題。因?yàn)橥ㄟ^對每個Hourglass-208 模型的輸出都添加中繼監(jiān)督,所以可以保證底層的神經(jīng)網(wǎng)絡(luò)參數(shù)正常更新。
預(yù)測是通過每個Hourglass-208 模型在本地和全局環(huán)境下對輸入圖像或者特征圖處理之后產(chǎn)生的。后續(xù)的Hourglass-208 模塊再次處理上一個Hourglass-208 模塊輸出的特征圖,以進(jìn)一步評估和重新評估更高階的特征信息。這種方法類似于一些人體姿勢估計方法[21-22],在多個迭代階段和中間監(jiān)督下均表現(xiàn)出出色的性能。
在進(jìn)行中繼監(jiān)督后,將中間產(chǎn)生的熱值圖映射到更大數(shù)量的通道(通過額外的1×1 卷積),然后重新集成到特征空間中,并將這些熱值圖從Hourglass-208 中添加到特征空間中,以及前一個Hourglass-208模型輸出的特征圖中,最后輸出到下一個Hourglass-208 模塊中,將該Hourglass-208 模塊生成下一組熱值圖進(jìn)行預(yù)測。
基于錨框與基于中心點(diǎn)目標(biāo)檢測都是將目標(biāo)從背景中分離出來,但是采用的方法不同,區(qū)別如圖6所示。
圖6 基于標(biāo)準(zhǔn)錨框的檢測與基于中心點(diǎn)的檢測的區(qū)別Fig.6 Difference of standard anchor-based detection and center point-based detection
在圖6(a)中,當(dāng)錨框與標(biāo)注的目標(biāo)邊界框的IoU>0.7 時,記該錨框包含的內(nèi)容為前景;當(dāng)IoU<0.3 時,記該錨框包含的內(nèi)容為背景;否則忽略該錨框忽略[7-8]。在圖6(b)中,將目標(biāo)中心像素表示檢測的目標(biāo)對象,周圍的像素點(diǎn)為背景,目標(biāo)對象的大小回歸得到。
設(shè)輸入圖片為I?RW×H×3,其中,W為圖片的寬;H為圖片的高。最后輸出預(yù)測為圖像關(guān)鍵點(diǎn)構(gòu)成的熱值圖,該熱值圖的值為。這里圖像的中心點(diǎn)為關(guān)鍵點(diǎn)。在關(guān)鍵點(diǎn)構(gòu)成的熱值圖中,其熱值圖的值,其中:R為圖像下采樣倍數(shù),在本文中R=2;C為關(guān)鍵點(diǎn)的類型,即目標(biāo)的類型,在MS COCO 數(shù)據(jù)集[3]上C=80。當(dāng)=1 時表示該點(diǎn)為目標(biāo)中心點(diǎn),當(dāng)=0 時為該點(diǎn)為背景。
CenterNet 算法原理如圖7 所示。
圖7 CenterNet 算法原理Fig.7 Principle of CenterNet algorithm
目標(biāo)的中心點(diǎn)如圖7(a)所示。在訓(xùn)練時,每一個標(biāo)注的真實(shí)點(diǎn)為p?R2,根據(jù)輸出的下采樣倍數(shù)R,將真實(shí)點(diǎn)變換成,然后將真實(shí)值通過一個高斯核,如式(5)所示:
其中:α、β為Focal loss 損失函數(shù)的超參數(shù);N為每張圖片上關(guān)鍵點(diǎn)的數(shù)量,以進(jìn)行歸一化將所有損失值歸一化為1。根據(jù)Cornernet[13]目標(biāo)檢測算法,取α=2,β=4。
在最后輸出熱值圖時,因?yàn)檫M(jìn)行了下采樣,所以輸出的特征圖不可避免地產(chǎn)生了偏移。為解決產(chǎn)生的偏移,可以通過對偏移進(jìn)行預(yù)測,最后進(jìn)行平衡,抵消輸出偏移的影響。對所有的類C進(jìn)行偏移預(yù)測,則設(shè)輸出偏移為。如圖7(b)所示。
在訓(xùn)練時,采用L1損失函數(shù),如式(7)所示:
為對目標(biāo)大小進(jìn)行預(yù)測,可通過增加預(yù)測輸出分支,設(shè)輸出的目標(biāo)大小為,同時使 用smoothL1損失函數(shù)[7]進(jìn)行目標(biāo)大小學(xué)習(xí)和訓(xùn)練,smoothL1如式(8)所示:
目標(biāo)大小的損失函數(shù)如式(9)所示:
由2.2 節(jié)~2.4 節(jié)可知,總損失函數(shù)包括中心點(diǎn)的損失函數(shù)、中心點(diǎn)的偏移損失函數(shù)和目標(biāo)大小的損失函數(shù)。總損失函數(shù)表示如下:
在本文的算法模型中,設(shè)置λsize=0.1,λoff=1。
本文中的網(wǎng)絡(luò)所有輸出共享一個通用的全卷積Backbone 網(wǎng)絡(luò),使用該Backbone 網(wǎng)絡(luò)來預(yù)測目標(biāo)的關(guān)鍵 點(diǎn)、偏移和大小,每個特征圖上的 點(diǎn)輸出維度為C+4,C為目標(biāo)類型數(shù)量。
在進(jìn)行目標(biāo)檢測時,首先提取每個類的熱值圖的峰值,選取所有值大于或等于其8 個連通鄰居的響應(yīng),并保持前100 個峰值,通過3×3 的最大池化層實(shí)現(xiàn)。
所有輸出都是直接從關(guān)鍵點(diǎn)預(yù)測產(chǎn)生的,而無需基于IoU 的非最大值抑制(NMS)或其他后處理。因?yàn)榉逯店P(guān)鍵點(diǎn)提取可以作為NMS 的替代方案,并且可以使用3×3 最大池化操作實(shí)現(xiàn)。
在本文的實(shí)驗(yàn)中,實(shí)驗(yàn)條件均為:Ubuntu16.04系統(tǒng),CPU 為Intel Core i7-8086K,GPU 采用英偉達(dá)的TITAN XP 12 GB 的獨(dú)立顯卡,安裝CUDA8.0、CUDNN5.1、OpenCV3.2 等。
為了對新設(shè)計Hourglass-208 的性能進(jìn)行測試,在這里對單個的Hourglass-208 模型進(jìn)行圖像的分類實(shí)驗(yàn)和測試并與原來的Hourglass 模型[15]進(jìn)行比較。為了在ImageNet 數(shù)據(jù)集[1]上進(jìn)行圖像分類實(shí)驗(yàn),在模型最后增加Softmax 全連接層。測試結(jié)果如表1所示。其中,Top-1 表示在ImageNet 數(shù)據(jù)集上的分類準(zhǔn)確率,t表示模型對一張圖片的識別時間。
表1 Hourglass 性能測試Table 1 Hourglass performance test
從表1 可以看出,雖然Hourglass-208 的準(zhǔn)確率降低了19.9%,但是運(yùn)算速度卻提高了47.8%,這對于提高目標(biāo)檢測的實(shí)時性具有很大的優(yōu)勢。因此,為提高目標(biāo)檢測的速度,本文采用Hourglass-208 模型。
為得到最佳的網(wǎng)絡(luò)架構(gòu)設(shè)計,本文設(shè)計了一系列實(shí)驗(yàn)進(jìn)行測試和驗(yàn)證。在驗(yàn)證測試時,采用PASCAL VOC 數(shù)據(jù)集[2]進(jìn)行實(shí)驗(yàn),該數(shù)據(jù)集遠(yuǎn)小于MS COCO 數(shù)據(jù)集[3],為了能更快地得到實(shí)驗(yàn)結(jié)果,選擇PASCAL VOC 數(shù)據(jù)集進(jìn)行訓(xùn)練和測試,根據(jù)結(jié)果對算法的架構(gòu)進(jìn)行評估,并選擇最優(yōu)的架構(gòu)結(jié)果。本文實(shí)驗(yàn)將對是否考慮中繼監(jiān)督、特征圖融合、綜合考慮2 個Hourglass-208 模型輸出特征圖的歸一化融合以及采用soomthL1損失函數(shù)來選擇最優(yōu)的網(wǎng)絡(luò)架構(gòu)。
在PASCAL VOC 數(shù)據(jù)集上進(jìn)行目標(biāo)檢測實(shí)驗(yàn)。訓(xùn)練時在訓(xùn)練圖像集上進(jìn)行算法模型訓(xùn)練,采用數(shù)據(jù)增強(qiáng)技術(shù),對訓(xùn)練集的圖像進(jìn)行隨機(jī)翻轉(zhuǎn)、隨機(jī)縮放、裁剪和色彩抖動等方法,算法模型的優(yōu)化器選擇Adam[25]優(yōu)化,批量大?。˙atch size)為32,學(xué)習(xí)率設(shè)置為指數(shù)衰減,初始值設(shè)置為1.0e-3,每經(jīng)過5epoch,學(xué)習(xí)率下降0.96 倍。以416像素×416像素的分辨率進(jìn)行輸入訓(xùn)練,在進(jìn)行2 倍下采樣后輸入到Hourglass-208 模型中,最后模型的輸出分辨率為208像素×208像素。
本文實(shí)驗(yàn)將從中繼監(jiān)督、Hourglass-208 輸出特征圖的選擇、FPN_o1、TFPN 及smoothL1損失函數(shù)等方面選擇出最優(yōu)的構(gòu)件,設(shè)計了12 種不同的算法架構(gòu),進(jìn)而篩選出目標(biāo)檢測算法的最優(yōu)架構(gòu)。本文設(shè)計的12 種架構(gòu),都使用了2 個Hourglass-208,其中對第1 個Hourglass-208 模型進(jìn)行了外部短接,2 個Hourglass-208 模塊之間沒有共享權(quán)重,對每個Hourglass-208 模型輸出的特征圖進(jìn)行權(quán)重融合、FPN_o1 及TFPN 融合等操作,然后通過1×1 卷積層生成熱值圖。在進(jìn)行模型的訓(xùn)練時,每個中繼監(jiān)督都使用相同的目標(biāo)真實(shí)值計算損失函數(shù),其中目標(biāo)大小的損失函數(shù)采用L1或者smoothL1損失函數(shù)。在模型的測試時,只需要將熱值圖進(jìn)行目標(biāo)中心點(diǎn)以及大小的預(yù)測即可。如果使用中繼監(jiān)督,則需將2 個熱值圖進(jìn)行相加求平均值,重新生成一個熱值圖進(jìn)行目標(biāo)檢測。
本文設(shè)計的12 種目標(biāo)檢測算法架構(gòu)如圖8 所示。
圖8 目標(biāo)檢測算法架構(gòu)Fig.8 Architecture of target detection algorithm
在圖8 中,空白矩形表示輸入圖像;Conv 表示卷積層;BN 表示BN 層;Leaky relu 表示Leaky relu 激活函數(shù)層;1×1Conv 表示1×1 卷積層;Add 表示張量的相加;熱值圖表示預(yù)測生成的熱值圖;斜杠矩形表示由卷積層、BN 層和激活函數(shù)層構(gòu)成的卷積塊;交叉矩形表示Hourglass-208 模塊;TFPN 表示TFPN 特征圖融合方法;FPN_o1 表示FPN_o1 特征圖融合方法;圓角雙點(diǎn)劃線矩形表示權(quán)重融合。
測試結(jié)果如表2 所示,其中:√表示采用。在表2中,中繼監(jiān)督表示是否采用中繼監(jiān)督方法;P1 表示只采用Hourglass-208 輸出的分辨率最高的特征圖進(jìn)行目標(biāo)檢測,即P1 特征圖,如圖8 架構(gòu)1~架構(gòu)4 所示;FPN_o1 表示采用FPN_o1 特征圖融合方法,如架構(gòu)5~架構(gòu)8 所示;TFPN 表示采用TFPN 特征圖融合方法,如圖8 架構(gòu)9~架構(gòu)12 所示;加權(quán)融合表示是否考慮將2 個Hourglass-208 模型輸出的特征圖進(jìn)行歸一化融合;SmoothL1表示是否采用smoothL1損失函數(shù)。
表2 12 種架構(gòu)的測試結(jié)果Table 2 Test results of twelve architecture
通過表2,在類似結(jié)構(gòu)下可得到如下結(jié)論:
1)通過對比實(shí)驗(yàn)架構(gòu)11、12 可知,采用中繼監(jiān)督后,mAP 值最高可以提高18.2 個百分點(diǎn)。
2)通過對比實(shí)驗(yàn)架構(gòu)4、12 可知,采用特征圖融合方法相比只采用P1 特征圖,mAP 值最高可以提高17.1 個百分點(diǎn)。
3)通過對比實(shí)驗(yàn)架構(gòu)8、12 可知,采用TFPN 特征圖融合方法相比采用FPN_o1 特征圖融合方法,mAP 值最高可以提高2.9 個百分點(diǎn)。
4)通過對比實(shí)驗(yàn)架構(gòu)10 和12 可知,采用smoothL1損失函數(shù)代替L1損失函數(shù)時,mAP 值最高可以提高1.1 個百分點(diǎn)。
綜上所述,考慮中繼監(jiān)督、TFPN、加權(quán)融合和smoothL1時,架構(gòu)12 在VOC 數(shù)據(jù)集上得到了最優(yōu)的結(jié)果,mAP 值達(dá)到了85.4%。
根據(jù)實(shí)驗(yàn)結(jié)果,架構(gòu)12 為最優(yōu)的架構(gòu),即在最終選擇的網(wǎng)絡(luò)架構(gòu)計中,使用了2 個Hourglass-208,其中對第3 個Hourglass-208 模型進(jìn)行了外部短接,2 個Hourglass-208 模塊之間沒有共享權(quán)重,對每個Hourglass-208 模型輸出的特征圖進(jìn)行權(quán)重融合以及TFPN 融合,然后通過1×1 卷積層生成熱值圖。在進(jìn)行模型的訓(xùn)練時,每個中繼監(jiān)督都使用相同的目標(biāo)真實(shí)值計算損失函數(shù),其中目標(biāo)大小的損失函數(shù)采用smoothL1損失函數(shù)。
因?yàn)樵撍惴軜?gòu)采用了本文設(shè)計的TFPN 特征圖融合方法,所以命名為T_CenterNet。架構(gòu)模型如圖9 所示(圖例含義同圖8)。
圖9 T_CenterNet 架構(gòu)模型Fig.9 T_CenterNet architectural model
下文將在MSCOCO 數(shù)據(jù)集上對該架構(gòu)目標(biāo)檢測的速度和準(zhǔn)確度進(jìn)行評估,并與知名的目標(biāo)檢測算法進(jìn)行比較。
本文實(shí)驗(yàn)在Ubuntu16.04 系統(tǒng)下進(jìn)行,CPU 為Intel Core i7-8086K,GPU 采用英偉達(dá)的TITAN XP 12 GB 的獨(dú)立顯卡,安裝CUDA8.0、CUDNN5.1、OpenCV3.2 等。數(shù)據(jù)集采用更大的ImageNet 圖像分類數(shù)據(jù)集[1]和MS COCO 目標(biāo)檢測數(shù)據(jù)集[3]。
為提高Hourglass-208 特征提取能力,本次實(shí)驗(yàn)在ImageNet 數(shù)據(jù)集上進(jìn)行圖像分類的預(yù)訓(xùn)練。在預(yù)訓(xùn)練時,由于ImageNet 數(shù)據(jù)集的目標(biāo)種類遠(yuǎn)多于MS COCO 數(shù)據(jù)集,因此選取和MS COCO 具有相同的物體類型進(jìn)行預(yù)訓(xùn)練,從ImageNet 數(shù)據(jù)集中選取約80 種和MS COCO 數(shù)據(jù)集具有相同物體的圖片集。對于預(yù)訓(xùn)練,需要將原T_CenterNet 目標(biāo)檢測模型進(jìn)行改進(jìn)。對于每一個Hourglass-208 的輸出,經(jīng)過TFPN 處理后,只需將2 個TFPN 的輸出Pout特征圖進(jìn)行拼接(Concat)處理,然后經(jīng)過一個卷積塊的處理,再經(jīng)過平均池化層(Avgpool),最后通過Softmax 全連接層進(jìn)行分類輸出,共輸出80 個類別,如圖10 所示。其中:空白矩形表示輸入圖像;Conv表示卷積層;BN 表示BN層;Leaky relu 表示Leaky relu 激活函數(shù)層;Add 表示張量的相加;Concat 表示張量的拼接操作,Avgpool 表示平均池化層;Softmax表示Softmax 全連接層;Hourglass 模型表示Hourglass-208 模塊;TFPN 表示TFPN 特征圖融合方法;雙點(diǎn)劃線圓角矩形表示權(quán)重融合;斜杠矩形表示由卷積層、BN層和激活函數(shù)層構(gòu)成的卷積塊。
圖10 Hourglass-208 特征提取預(yù)訓(xùn)練模型Fig.10 Hourglass-208 feature extraction pre-training model
在ImageNet 數(shù)據(jù)集上訓(xùn)練完成后,去掉拼接層、池化層和全連接層,添加熱值圖和中繼監(jiān)督,然后在MS COCO 數(shù)據(jù)集上進(jìn)行目標(biāo)檢測訓(xùn)練和測試。
在MS COCO 數(shù)據(jù)集上進(jìn)行訓(xùn)練和測試,該數(shù)據(jù)集包含118k 訓(xùn)練圖像(train201-7)、5k 驗(yàn)證圖像(val2017)和20k 支持測試圖像(test-dev)。
在訓(xùn)練圖像集(train2017)上進(jìn)行算法模型訓(xùn)練,以416像素×416像素的分辨率進(jìn)行輸入訓(xùn)練,模型的輸出分辨率為208像素×208像素。采用數(shù)據(jù)增強(qiáng)技術(shù),對訓(xùn)練集的圖像進(jìn)行隨機(jī)翻轉(zhuǎn)、隨機(jī)縮放、裁剪、色彩抖動等方法,算法模型的優(yōu)化器選擇Adam。學(xué)習(xí)率設(shè)置為指數(shù)衰減,初始值設(shè)置為1.0e-3,每經(jīng)過5epoch,學(xué)習(xí)率下降0.96 倍,批量大小(Batch size)設(shè)置為32。
損失函數(shù)的收斂趨勢如圖11 所示。從圖11 可以看出,其損失函數(shù)L(size)、L(off)、L(k)和L(det)分別在迭代數(shù)(Iteration)為1.35×107、1.24×107、2.4×107和2.5×107時趨于收斂,其損失函數(shù)值分別收斂于0.2、0.1、0.78 和0.9。另一方面可以得出L(off)的收斂速度最快,L(size)其次,最后是L(k),總損失函數(shù)L(det)最后在迭代數(shù)為2.5×107時最后收斂。其總損失函數(shù)的值最終穩(wěn)定在0.9 左右,即T_CenterNet 模型達(dá)到穩(wěn)定和最優(yōu)。
圖11 損失函數(shù)的收斂曲線Fig.11 Convergence curve of loss function
對于測試,同樣是在MS COCO 數(shù)據(jù)集上評估了目標(biāo)檢測的性能。最后的測試結(jié)果的指標(biāo)為FPS(Frame Per Second),表示每秒檢測圖像的幀數(shù),是實(shí)時性的衡量參數(shù)。AP、AP50、AP75、APs、APM、APL為對MS COCO 數(shù)據(jù)集圖像上目標(biāo)檢測準(zhǔn)確性的評價指標(biāo),如表3 所示。其中:AP(Average Precision)為目標(biāo)檢測的平均精度:APs為小目標(biāo)的檢測精度;APM為中等大小目標(biāo)的檢測精度:APL為大目標(biāo)的檢測精度。具體請參考MS COCO 數(shù)據(jù)集官網(wǎng)(http://cocodataset.org/#detections-eval)。在表3 中:加粗?jǐn)?shù)字代表排名第1;加粗斜體數(shù)字代表排名第2;斜體數(shù)字代表排名第3;R_T_CenterNet 為未對T_CenterNet目標(biāo)檢測算法預(yù)訓(xùn)練;T_CenterNet/off 為不考慮對目標(biāo)中心點(diǎn)的偏移的預(yù)測,即去掉T_CenterNet 中對目標(biāo)中心點(diǎn)預(yù)測的分支(經(jīng)過預(yù)訓(xùn)練);T_CenterNet為本文設(shè)計的目標(biāo)檢測算法。
通過表3 可以得知:
1)T_CenterNet 算法模型的AP50達(dá)到63.6%,APS達(dá)到31.6%,APM達(dá)到45.8%,在表2 中的目標(biāo)檢測算法中排名第1。
2)雖 然T_CenterNet 算法模型的FPS 值低于EfficientDet-D0 的47,但是也達(dá)到了36%,排名第3,具有實(shí)時性。
3)T_CenterNet 算法模型的目標(biāo)檢測各項(xiàng)指標(biāo)均高于EfficientDet-D2,雖然AP、AP75和APL指標(biāo)低于 EfficientDet-D3,但是FPS值卻遠(yuǎn)高于EfficientDet-D3 的28 frame/s。
4)T_CenterNet 算法模型的目標(biāo)檢測各項(xiàng)指標(biāo)均高于原CenterNet 算法模型。這個結(jié)果與改進(jìn)的Hourglass-208 和采用了加權(quán)特征圖融合方法有關(guān)。
5)從T_CenterNet/off 的檢測結(jié)果可以看出,去掉中心點(diǎn)偏移的預(yù)測后,對目標(biāo)的檢測速度影響不大,只有1 幀的速率的提升。各個檢測精度的指標(biāo)均有降低,其中AP 值降低了5.49 個百分點(diǎn),特別是對大目標(biāo)和中等大小的目標(biāo)影響很大,分別降低了11.3、7.86 個百分點(diǎn),但對小目標(biāo)的檢測準(zhǔn)確度影響很小,只降低了0.1個百分點(diǎn)??傮w來講,增加對目標(biāo)中心點(diǎn)偏移的預(yù)測有利于增加目標(biāo)檢測的準(zhǔn)確性。
通過實(shí)驗(yàn)可知,本文提出的T_CenterNet 算法模型在進(jìn)行目標(biāo)檢測之前先在ImageNet 數(shù)據(jù)集上對Hourglass-208 進(jìn)行了預(yù)訓(xùn)練,通過預(yù)訓(xùn)練的方法,可以很好地提高目標(biāo)檢測的性能。從表3 可以看出,T_CenterNet 目標(biāo)檢測算法最后的測試結(jié)果超過了原CenterNet 算法模型,也優(yōu)于最新的EfficientDet 目標(biāo)檢測算法,總體上達(dá)到了理想的結(jié)果。但是在目標(biāo)檢測的準(zhǔn)確度上,T_CenterNet 算法模型的部分指標(biāo)稍落后于EfficientDet-D3 算法模型,由于EfficientDet 算法模型綜合考慮了復(fù)合模型縮放方法[20]。
表3 在MS COCO 數(shù)據(jù)集測試圖像上的目標(biāo)檢測結(jié)果Table 3 Object detection results on test images of MS COCO dataset
該算法模型采用TFPN 特征圖融合策略后,對于原CenterNet 中多個中心點(diǎn)在同一位置的目標(biāo)檢測效果不是很理想,改善不明顯,這是因?yàn)樽詈蟮哪繕?biāo)檢測還是在一個特征圖上進(jìn)行的(TFPN 的目標(biāo)檢測并不是嚴(yán)格意義上的用特征金字塔網(wǎng)絡(luò)(FPN)進(jìn)行目標(biāo)檢測)。關(guān)于該問題解決,還要考慮使用多個分辨率不同的特征圖進(jìn)行目標(biāo)檢測。同時發(fā)現(xiàn),當(dāng)不考慮在ImageNet 數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練時,T_CenterNet 算法模型在目標(biāo)檢測準(zhǔn)確度的各項(xiàng)指標(biāo)均有5%~20%的降低。因此,該算法模型經(jīng)過預(yù)訓(xùn)練后,可以取得更好的效果。另一方面也可以得到,當(dāng)模型考慮對目標(biāo)中心點(diǎn)偏移的預(yù)測時,有利于增加該模型進(jìn)行目標(biāo)檢測的準(zhǔn)確率。
本文針對CenterNet 算法中以Hourglass 為Backbone 的目標(biāo)檢測模型檢測速度慢的問題,提出改進(jìn)的T_CenterNet 算法。在原CenterNet 算法的基礎(chǔ)上對Hourglass 以及特征圖融合等方法進(jìn)行改進(jìn),將目標(biāo)大小的損失函數(shù)改進(jìn)為smoothL1。在MS COCO 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,本文提出的T_CenterNet 算法與One-stage 和Two-stage 算法相比具有競爭優(yōu)勢,綜合性能優(yōu)于EfficientDet 系列目標(biāo)檢測算法。下一步將對本文所提模型進(jìn)行輕量化設(shè)計,以應(yīng)用于嵌入式設(shè)備與移動設(shè)備。