基于Grad-CAM與KL損失的SSD目標(biāo)檢測算法
來源:《電子學(xué)報》,作者侯慶山等
摘 要:?鑒于Single Shot Multibox Detector (SSD)算法對中小目標(biāo)檢測時會出現(xiàn)漏檢甚至錯檢的情況,提出一種改進(jìn)的SSD目標(biāo)檢測算法,以提高中小目標(biāo)檢測的準(zhǔn)確性.運用Gradient-weighted Class Activation Mapping (Grad-CAM)技術(shù)對檢測過程中的細(xì)節(jié)作可視化處理,并以類激活圖的形式呈現(xiàn)各檢測層細(xì)節(jié),分析各檢測層的類激活圖發(fā)現(xiàn)SSD算法中待檢測目標(biāo)的錯檢以及中小目標(biāo)的漏檢現(xiàn)象與回歸損失函數(shù)相關(guān).據(jù)此,采用Kullback-Leibler (KL)邊框回歸損失策略,利用Non Maximum Suppression (NMS)算法輸出最終預(yù)測框.實驗結(jié)果表明,改進(jìn)算法相較于已有檢測算法具有更高的準(zhǔn)確率以及穩(wěn)定性.
關(guān)鍵詞:?目標(biāo)檢測;可視化;類激活圖;Grad-CAM;SSD;KL損失
1 引言
目標(biāo)檢測技術(shù)的不斷完善和發(fā)展,引起智能化交通系統(tǒng)[1]、智能監(jiān)控系統(tǒng)[2]、軍事目標(biāo)檢測[3]及醫(yī)學(xué)導(dǎo)航手術(shù)中手術(shù)器械定位[4]等領(lǐng)域的廣泛關(guān)注,是計算機視覺領(lǐng)域的核心技術(shù)之一.在國內(nèi)外相關(guān)研究機構(gòu)的努力下,高效的目標(biāo)檢測算法如雨后春筍般層出不窮,如基于單階段過程的You Only Look Once (YOLO)算法[5]、SSD算法[6]、基于雙階段過程的Region with CNN features (R-CNN)算法[7]等.
針對SSD算法在中小目標(biāo)檢測中漏檢甚至錯檢的問題,Wen,Zhan[8]等人改進(jìn)原SSD算法的激活函數(shù),并引入Atrous濾波器.Wu[9]等人在傳統(tǒng)的SSD檢測算法中加入轉(zhuǎn)置卷積結(jié)構(gòu),將低分辨率、高語義與高分辨率、低語義的輸出特征圖進(jìn)行融合.針對圖像中某些待檢測目標(biāo)被遮擋的情況,Xing[10]等人根據(jù)檢測目標(biāo)的分布規(guī)律調(diào)整了輸出特征層的縮放系數(shù),一定程度上解決了漏檢問題.Tang[11]等人提出了多視窗的方法,但由于該方法存在目標(biāo)被拆分檢測等問題,使得其準(zhǔn)確性及穩(wěn)定性受到影響.針對SSD模型的低特征層,Chen[12]等人采用區(qū)域放大提取的方法提升了算法的中小目標(biāo)檢測能力.Fu[13]等人提出Deconvolutional Single Shot Detector (DSSD)模型,但其網(wǎng)絡(luò)結(jié)構(gòu)也隨之變得更復(fù)雜,導(dǎo)致模型的檢測實時性下降.Jeong?[14]等人提出的Rainbow Single Shot Multibox Detector (RSSD)模型改進(jìn)了特征融合的方式,對各輸出層特征更加充分的利用,提升算法對中小目標(biāo)的檢測效果.Li[15]等人通過特征融合與下采樣的方法獲取更多輸出特征層細(xì)節(jié)信息,從而提出Feature fusion Single Shot multibox Detector (FSSD)目標(biāo)檢測模型.
為了方便對SSD算法在中小目標(biāo)檢測方面性能的提高,本文引入可視化技術(shù)[16]對原算法的檢測過程進(jìn)行分析,優(yōu)化了原算法的損失函數(shù).改進(jìn)后的檢測算法對中小目標(biāo)的檢測能力更強,總體檢測效果更好,并且目標(biāo)漏檢、錯檢問題也得到相應(yīng)改善.
2 相關(guān)研究
2.1 SSD模型
SSD算法使用多尺度特征層進(jìn)行目標(biāo)檢測,是一種直接預(yù)測目標(biāo)類別和邊界框的多目標(biāo)檢測算法.與雙階段過程的目標(biāo)檢測算法相比SSD算法將所有計算在單階段過程中進(jìn)行,沒有候選框區(qū)域的生成和后續(xù)特征重采樣階段的過程,提升了SSD算法的檢測速度.該算法以Visual Geometry Group 16 (VGG-16)[17]為基礎(chǔ)網(wǎng)絡(luò),中上部分采用采樣金字塔結(jié)構(gòu)[18],將最后兩個全連接層替換為卷積層,并在其后增加四個卷積層.
2.2 KL損失函數(shù)
現(xiàn)有的目標(biāo)檢測算法在大規(guī)模數(shù)據(jù)集上進(jìn)行某些邊界框標(biāo)定時存在歧義.KL損失[19]針對邊界框的移動與位置間的方差進(jìn)行學(xué)習(xí),在同等計算量下提升不同結(jié)構(gòu)定位的準(zhǔn)確率.KL邊界框回歸損失可以獲取到數(shù)據(jù)集中的模糊,從而降低預(yù)測邊界框的回歸損失.
基于對Faster R-CNN[20],Mask R-CNN[21]檢測網(wǎng)絡(luò)的認(rèn)知,KL損失將原本的回歸框參數(shù)由(x,y,w,h)替換為(x1,y1,x2,y2),這樣便于在每個維度上單獨優(yōu)化,預(yù)測邊界框與真實邊界框的偏差可由式(1)表達(dá).
(1)
(x1,y1,x2,y2)表示預(yù)測邊界框左上角和右下角的坐標(biāo),
表示真實邊界框左上角以及右下角的坐標(biāo).(x1a,x2a,y1a,y2a,wa,ha)是由真實邊界框聚類產(chǎn)生的錨框.
KL損失重點評估位置的置信度,在預(yù)測位置的同時給出置信度.假設(shè)坐標(biāo)間互相獨立并使用單變量高斯模型,將邊界框坐標(biāo)表示為x,單獨對每個坐標(biāo)進(jìn)行獨立優(yōu)化,可由式(2)表達(dá).
(2)
式(2)中Θ表示一組要學(xué)習(xí)的參數(shù),xe表示預(yù)測邊界框的位置,xe∈(x1,y1,x2,y2),σ表示位置估計的置信度.
真實邊界框也可以表示為σ→0的高斯分布,如式(3)所示.式(3)中的xg表示真實邊界框的位置.
PD(x)=δ(x-xg)
(3)
選取N個樣本,將這些樣本的預(yù)測邊界框分布PΘ(x)和真實邊界框分布PD(x)之間的誤差最小化,進(jìn)而對
進(jìn)行評估,獲取位置定位的目標(biāo),可由式(4)表達(dá).
(4)
基于KL損失的檢測算法中,邊界框回歸的損失函數(shù)采用KL損失,對于單個樣本的邊界框回歸損失由式(5)定義.
Lreg=DKL(PD(x)‖PΘ(x))
(5)
xe表示預(yù)測邊界框的位置,當(dāng)預(yù)測邊界框的坐標(biāo)位置不準(zhǔn)確時,網(wǎng)絡(luò)通過預(yù)測更大的方差σ2,使回歸損失降低,由于式(5)中的后兩部分與參數(shù)Θ無關(guān),得式(6).
(6)
當(dāng)σ=1時,損失變?yōu)闅W氏距離,如式(7).
(7)
對式(6)中預(yù)測邊界框的位置估計和定位標(biāo)準(zhǔn)偏差σ分別求偏導(dǎo),如式(8)、(9)所示.
(8)
(9)
為了防止在訓(xùn)練開始時發(fā)生梯度爆炸,令α=log(σ2),在進(jìn)行測試時,將α重新變回為σ,變換后的損失可由式(10)表達(dá).
(10)
用隨機高斯分布對全連接層初始化,KL損失在開始訓(xùn)練時類似于smooth?L1損失,當(dāng)│xg-xe│>1時,損失可定義為式(11).
(11)
2.3 類激活圖
為解決卷積神經(jīng)網(wǎng)絡(luò)模型中的不可見問題,通過Grad-CAM技術(shù)[22]可將網(wǎng)絡(luò)模型對輸入圖像中感興趣的區(qū)域表示出來,將網(wǎng)絡(luò)模型可視化,直觀的表達(dá)了算法得出分類結(jié)果的原因.在Grad-CAM技術(shù)中,利用類別輸出結(jié)果對卷積層的輸出特征圖求導(dǎo)獲取特征激活圖,由式(12)計算得到權(quán)重值
將
與特征圖累加得到可視化結(jié)果,權(quán)重
說明了類別c對特征映射的重要度.
(12)
通過ReLU函數(shù)除去特征圖上負(fù)值對分類結(jié)果的影響,最終的分類任務(wù)由式(13)、(14)表達(dá).
(13)
(14)
3 改進(jìn)框架設(shè)計
3.1 SSD檢測算法的可視化
Grad_CAM技術(shù)根據(jù)輸入圖像中各目標(biāo)的類別標(biāo)簽判別目標(biāo)區(qū)域.將該技術(shù)運用到SSD檢測算法,使該算法的執(zhí)行過程可視化,針對用于目標(biāo)檢測的各卷積層,對這些層的特征輸出層進(jìn)行分析,構(gòu)建各檢測層的類激活圖.
SSD檢測算法的可視化,能夠更好的理解網(wǎng)絡(luò)的目標(biāo)檢測過程,通過分析類激活圖,得出中小目標(biāo)檢測不準(zhǔn)確或漏檢的原因,針對該原因做出相應(yīng)的改進(jìn)策略,提高檢測效率.SSD 300目標(biāo)檢測算法的可視化過程如圖1所示.
3.2 基于KL損失的SSD算法
3.2.1 默認(rèn)框設(shè)定
檢測算法沿用了原SSD算法中默認(rèn)框的設(shè)定方法,針對多個目標(biāo)檢測層的輸出特征圖進(jìn)行設(shè)定,對于特征圖中的每個像素點生成大小不同的兩個正方形及多個長方形默認(rèn)框.比例值ar的數(shù)目決定了特征輸出圖中某一像素點下默認(rèn)框的數(shù)目,默認(rèn)框的大小取決于Sk值的設(shè)定,默認(rèn)框的長和寬可由式(15)、(16)進(jìn)行表達(dá).
(15)
其中m為特征圖的個數(shù),Smin=0.2 ,Smax=0.9.
(16)
其中默認(rèn)框長寬比ar∈(1,2,3,1/2,1/3),另外設(shè)置一個
的默認(rèn)框.默認(rèn)框中心點的位置可由式(17)計算.
(17)
其中│fk│為第k個特征圖的大小,i,j∈[0,│fk│].
3.2.2 正負(fù)樣本標(biāo)定
利用檢測算法對輸入圖像中的目標(biāo)進(jìn)行檢測時,需要對默認(rèn)邊界框進(jìn)行類別標(biāo)定.通過IoU值進(jìn)行匹配,IoU值由式(18)定義.對于每一個待檢測目標(biāo)的真實邊界框,對應(yīng)默認(rèn)邊界框的匹配規(guī)則如下:設(shè)定IoU的閾值為0.5,當(dāng)默認(rèn)邊界框與真實邊界框的IoU值大于0.5時,將此默認(rèn)邊界框標(biāo)定為正例樣本,否則標(biāo)定為負(fù)例樣本.
(18)
其中Areadb,Areagt分別表示默認(rèn)邊界框與真實邊界框的面積.
3.2.3 損失策略
改進(jìn)的SSD目標(biāo)檢測算法的訓(xùn)練損失由目標(biāo)分類損失和預(yù)測邊界框的回歸損失兩部分組成,改進(jìn)算法訓(xùn)練損失可由式(19)表達(dá).
(19)
式中N為正例樣本數(shù),α表示用于控制分類損失和回歸損失的比重.
目標(biāo)分類損失采用交叉熵?fù)p失[23],損失由式(20)表達(dá).
(20)
表示的是第i個默認(rèn)邊界框與第j個真實邊界框關(guān)于目標(biāo)類別p是否匹配,當(dāng)
時不匹配,
時匹配.
預(yù)測邊界框的回歸損失采用KL損失,回歸損失由式(21)定義.
(21)
式中p,g分別表示預(yù)測邊界框和真實邊界框與默認(rèn)邊界框之間的偏移量,在邊界框的回歸損失中,通常期望p和g差距較小.
對經(jīng)過NMS算法處理后所選中的邊界框位置投票,選擇最大得分邊界框M{x1,y1,x2,y2,s,σx1,σy1,σx2,σy2},根據(jù)自身和相鄰邊界框的參數(shù)更新坐標(biāo)位置,鄰近邊界框權(quán)重值Pi和新坐標(biāo)的計算式由式(22)定義.
pi=e-(1-IoU(bi,b))2/σt
?
(22)
式中σt表示變量投票表決時的可調(diào)參數(shù).
4 圖像數(shù)據(jù)預(yù)處理
為增強檢測算法的通用性和穩(wěn)定性,采取數(shù)據(jù)增廣的方法對數(shù)據(jù)預(yù)處理.通常將圖像目標(biāo)區(qū)域分割掩碼中像素數(shù)量小于1024的目標(biāo)定義為小目標(biāo),大于1024且小于9216的目標(biāo)定義為中等目標(biāo).為此,針對改進(jìn)的SSD算法制定如下數(shù)據(jù)增廣規(guī)則:
(a)對原始的輸入圖像進(jìn)行隨機位置的采樣,采樣圖像與原始圖像的比例取1/64、1/32、1/16、1/8、1/4、1/2、1.
(b)對采樣圖像以一定的概率作翻轉(zhuǎn)和裁剪處理.
(c)對采樣圖像以一定的概率添加色彩變換.
與原SSD算法的采樣比例相比,更小的采樣比例可以使得由隨機采樣得到的小目標(biāo)經(jīng)過圖像尺寸恢復(fù)后被更明顯的表示出來.
5 實驗設(shè)計
5.1 實驗數(shù)據(jù)集說明
以PASCAL VOC和MS COCO 2017三種數(shù)據(jù)集為基礎(chǔ),設(shè)計相關(guān)實驗數(shù)據(jù)集,數(shù)據(jù)集的說明如下:
選取MS COCO數(shù)據(jù)集中的30類目標(biāo)作為檢測類別.分別從MS COCO和PASCAL VOC數(shù)據(jù)集的訓(xùn)練集中選取3000張和2000張帶有檢測類別的圖像,將選取的5000張圖像作為訓(xùn)練集;從MS COCO數(shù)據(jù)集的驗證集中選取1000張圖像作為驗證集,用于調(diào)控模型的超參數(shù),監(jiān)測過擬合現(xiàn)象;分別從MS COCO和PASCAL VOC數(shù)據(jù)集的測試集中選取800張圖像作為檢測算法的測試集.
5.2 實驗相關(guān)過程描述
基于設(shè)計好的實驗數(shù)據(jù)集,對改進(jìn)的SSD目標(biāo)檢測算法進(jìn)行訓(xùn)練測試.改進(jìn)的SSD目標(biāo)檢測算法采用了隨機梯度下降的方法,對改進(jìn)算法的初始學(xué)習(xí)率、動量、權(quán)重大小、批量等參數(shù)進(jìn)行設(shè)定.檢測算法在訓(xùn)練數(shù)據(jù)時將初始學(xué)習(xí)率設(shè)定為0.001,對訓(xùn)練集中的圖像進(jìn)行30000次的迭代訓(xùn)練;進(jìn)一步將學(xué)習(xí)率設(shè)定為0.0001,對訓(xùn)練集中的圖像進(jìn)行10000次的迭代訓(xùn)練;最后將學(xué)習(xí)率下降至0.00005,對訓(xùn)練集中的圖像進(jìn)行10000次的迭代訓(xùn)練.此外,設(shè)置IoU閾值為0.5,利用驗證集對超參數(shù)進(jìn)行調(diào)節(jié),監(jiān)測過擬合現(xiàn)象.
利用測試集對訓(xùn)練好的改進(jìn)目標(biāo)檢測算法進(jìn)行測試,與原算法的mPA及fps值作對比,體現(xiàn)改進(jìn)檢測算法的優(yōu)勢,驗證算法改進(jìn)的合理性和有效性.
5.3 實驗結(jié)果分析
5.3.1 各檢測層結(jié)果對比
檢測算法的低檢測層對小目標(biāo)特征進(jìn)行提取,對原SSD目標(biāo)檢測算法中各檢測層的檢測效果進(jìn)行測試,與原檢測算法相比,改進(jìn)算法對小目標(biāo)檢測的準(zhǔn)確度明顯提升,檢測精度提升約12%.計算原算法和改進(jìn)算法各檢測層的mPA值和fps值,如表1所示.
表1 目標(biāo)檢測算法各檢測層mPA值和fps值對比
由表1數(shù)據(jù)可知,改進(jìn)后的低特征層對小目標(biāo)的檢測效果提升明顯,能夠收集到更豐富的語義信息.通過fps值的對比,改進(jìn)后的SSD目標(biāo)檢測算法保持了良好的檢測實時性,SSD算法得到明顯改進(jìn).
5.3.2 SSD相關(guān)改進(jìn)算法對比
對現(xiàn)有的一些SSD改進(jìn)算法在相關(guān)數(shù)據(jù)集上訓(xùn)練和預(yù)測, 將訓(xùn)練和預(yù)測結(jié)果與改進(jìn)的SSD 300目標(biāo)檢測算法做對比,對比結(jié)果如表2所示。
分析表2可知,與選取的SSD改進(jìn)算法相比,本文提出的改進(jìn)算法檢測精度有較明顯的提高,算法的檢測實時性得到較好保持.
表2 SSD相關(guān)改進(jìn)算法mPA和fps對比
5.3.3 常見目標(biāo)檢測算法框架對比
對現(xiàn)有的一些目標(biāo)檢測算法在實驗設(shè)計數(shù)據(jù)集上訓(xùn)練和預(yù)測,將訓(xùn)練和預(yù)測結(jié)果與改進(jìn)的SSD目標(biāo)檢測算法做對比,對比結(jié)果如表3所示.
將改進(jìn)算法訓(xùn)練過程的mPA值與YOLO、YOLOv2算法訓(xùn)練過程的mPA值對比,對比結(jié)果如圖2所示.另外選取基于兩階段過程的Fast R-CNN、Faster R-CNN算法,訓(xùn)練過程的mPA值對比結(jié)果如圖3所示.
對比改進(jìn)算法與原SSD算法訓(xùn)練過程的mPA值,對比結(jié)果如圖4所示.
與現(xiàn)有的目標(biāo)檢測算法對比,改進(jìn)后的SSD目標(biāo)檢測算法檢測精度有較明顯的提高,算法的檢測實時性較好.一方面,對原SSD目標(biāo)檢測算法的損失策略進(jìn)行改進(jìn),進(jìn)一步縮小了檢測算法訓(xùn)練時的損失;另一方面,針對圖像中的中小目標(biāo)做出相應(yīng)的圖像增廣策略,
表3 目標(biāo)檢測算法mPA和fps對比
使得檢測算法對中小目標(biāo)特征的收集更加全面,提高了對輸入圖像上中小目標(biāo)的檢測精度.
5.3.4 效果圖對比
將改進(jìn)算法的檢測效果圖與原算法的檢測效果圖進(jìn)行對比,對比效果圖如圖5、6所示.改進(jìn)后的SSD目標(biāo)檢測算法對輸入圖像中的中小目標(biāo)能夠更加精準(zhǔn)的檢測和分類,對由于遮擋現(xiàn)象造成的目標(biāo)漏檢問題有良好改善.在復(fù)雜場景中,與原SSD檢測算法相比,改進(jìn)的SSD目標(biāo)檢測算法能夠檢測到更多的目標(biāo);在簡單場景中,改進(jìn)算法對待檢測目標(biāo)類型的判別更加精確,目標(biāo)的正確分類得分更高。此外,在處理模糊場景及小目標(biāo)場景時,改進(jìn)算法能夠檢測到更多的模糊目標(biāo)與小目標(biāo)。
6 結(jié)束語
改進(jìn)的SSD目標(biāo)檢測算法提高了原SSD目標(biāo)檢測算法的穩(wěn)定性和準(zhǔn)確率,改善了在遮擋情況下造成的目標(biāo)錯檢現(xiàn)象,對中小目標(biāo)的檢測效果有明顯的提升.改進(jìn)算法的貢獻(xiàn)主要體現(xiàn)在以下方面:
(1)對SSD目標(biāo)檢測算法進(jìn)行可視化,分析SSD目標(biāo)檢測算法的檢測過程.
(2)針對原算法的不足,改進(jìn)了輸入圖像的增廣策略.
(3)基于對可視化結(jié)果的分析,優(yōu)化了傳統(tǒng)SSD目標(biāo)檢測算法的邊界框回歸損失.
(4)利用改進(jìn)的NMS算法輸出目標(biāo)的預(yù)測邊界框.
審核編輯:符乾江
評論
查看更多