劉笑楠,武德彬,劉振宇,戚 雪
(沈陽工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110870)
近年來,基于深度學(xué)習(xí)的目標(biāo)檢測算法飛速發(fā)展,已經(jīng)應(yīng)用于醫(yī)療、生活、交通等領(lǐng)域,主要分為兩階段目標(biāo)檢測算法和一階段目標(biāo)檢測算法。兩階段目標(biāo)檢測算法先基于候選區(qū)域生成候選框再進(jìn)行分類和回歸得到檢測結(jié)果,包括R-CNN[1]、Fast-RCNN[2]、Faster-RCNN[3]等;單階段目標(biāo)檢測算法直接進(jìn)行預(yù)測的端到端目標(biāo)檢測,如SSD(Single Shot Multibox Detector)[4]、YOLO[5]、YOLOv2[6]、YOLOv3[7]、YOLOv4[8]等。單階段目標(biāo)檢測算法相較于兩階段目標(biāo)檢測算法具有更快的檢測速度,但是檢測精度略低于后者。在目標(biāo)檢測中,將面積尺寸小、分辨率低的目標(biāo)歸為小目標(biāo)。除了以上特征,小目標(biāo)還具備容易被噪聲影響以及被漏檢和誤檢的特點,故提高小目標(biāo)檢測精度成為目標(biāo)檢測中不可或缺的重要部分。
雖然傳統(tǒng)SSD算法采用了多尺度特征檢測,但是沒有考慮到不同卷積層之間的空間關(guān)系,整個模型傳遞過程是單向卷積傳遞信息,隨著卷積層數(shù)增多,細(xì)節(jié)語義信息逐漸丟失,所以未充分利用各層之間的關(guān)系,導(dǎo)致不同層的特征信息未得到充分利用,從而影響模型對小目標(biāo)的檢測效果。針對上述問題,Li等人[9]和Liu等人[10]利用不同尺度特征融合的思想分別提出FSSD(Feature Fusion Single Shot Multibox Detector)算法和RFB-Net算法。FSSD算法將3個淺層特征層進(jìn)行拼接融合,有效提高了小目標(biāo)檢測效果。而RFB-Net算法則是結(jié)合Inception結(jié)構(gòu)構(gòu)造RFB模塊,增強(qiáng)網(wǎng)絡(luò)感受野的同時增強(qiáng)了檢測效果。Fu等人[11]將主干網(wǎng)絡(luò)更換成ResNet101并利用反卷積傳遞信息以提高識別小目標(biāo)的檢測精度。楊艷紅等人[12]利用特征金字塔(Feature Pyramid Network,FPN)[13]的思想,將特征層上采樣與上一層特征層融合保持了較高的檢測精度。張震等人[14]利用輕量級網(wǎng)絡(luò)與層級特征融合的方法,提高了算法對小目標(biāo)檢測的有效性。陳鴻坤等人[15]利用淺層特征重利用模塊將特征進(jìn)行重利用后再進(jìn)行特征融合,旨在強(qiáng)化小目標(biāo)的檢測效果。
由于淺層特征層包含許多空間位置信息,深層特征層有豐富的語義信息,而上述方法未充分利用兩者之間的關(guān)系,故本文提出一種改進(jìn)的自上向下進(jìn)行特征融合的TTB-SSD(Top to Bottom SSD)小目標(biāo)檢測方法。該方法先利用PANet[16]多尺度特征融合網(wǎng)絡(luò)構(gòu)造自低層向高層和自高層向低層的兩條特征提取路徑,并反復(fù)提取淺層特征信息得到豐富的語義信息;再將淺層特征層的位置信息與細(xì)節(jié)信息利用空洞卷積[17]下采樣傳向深層特征層,并在各輸出特征層的外部利用FPN特征金字塔整合不同層的語義信息,構(gòu)造自上向下的特征傳遞路徑;最后進(jìn)行特征融合,獲得新的特征圖。上述方法能將深層特征層豐富的語義信息傳到各層,從而增強(qiáng)對小目標(biāo)的檢測效果。
針對傳統(tǒng)SSD算法采用單向傳遞未充分利用各特征層之間關(guān)系的問題,本文在原SSD算法的基礎(chǔ)上提出TTB-SSD改進(jìn)算法,整體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 TTB-SSD算法網(wǎng)絡(luò)結(jié)構(gòu)
該算法采用與SSD算法相同的VGG16主干網(wǎng)絡(luò),其6個特征層分別命名為Conv4_3、Conv5_3、Fc7、Conv8_2、Conv9_2、Conv10_2。為了克服原網(wǎng)絡(luò)淺層特征層對小目標(biāo)檢測精度不高的問題,先將Conv4_3、Conv5_3、Fc7、Conv8_2這4個不同尺度的特征層經(jīng)過PANet模塊進(jìn)行特征融合,將更多多尺度語義信息傳遞到淺層特征層,從而使提取到的特征具有更多的細(xì)節(jié)信息。為了增強(qiáng)深層特征信息,將Conv9_2特征層進(jìn)行3×3卷積特征提取,并與PANet自下向上傳播路徑中的特征信息進(jìn)行Concat特征拼接,使深層特征層獲得淺層特征層的空間信息和多尺度語義信息。為了強(qiáng)化每一層小目標(biāo)的語義信息,本文方法利用FPN的思想,將Conv4_3、Fc7、Conv8_2、Conv9_2和Conv10_2這5個特征層融合后的特征圖結(jié)果進(jìn)行1×1卷積平滑,并得到平滑后的新特征圖。Conv11_2層特征圖由于已經(jīng)具有豐富的語義信息則直接輸出。最后,進(jìn)行分類回歸預(yù)測并利用非極大值抑制篩選預(yù)測框得到最終預(yù)測結(jié)果。
PANet多尺度特征融合模塊僅針對Conv4_3、Conv5_3、Fc7、Conv8_2這4個特征層進(jìn)行特征反復(fù)提取以及融合,未考慮利用全局語義信息。為了增強(qiáng)小目標(biāo)特征信息,TTB-SSD算法利用FPN思想構(gòu)建了一種自上向下的特征融合結(jié)構(gòu),即將高層特征層的語義信息逐層傳遞到低層特征層中,如圖1所示。Conv11_2深層特征層豐富的語義信息通過雙線性插值上采樣,再進(jìn)行3×3卷積特征提取,然后依次與前一個特征層進(jìn)行特征融合。通過上述方法構(gòu)造一個自上向下的特征傳播路徑,旨在將深層語義信息傳遞到每一個輸出特征層,從而增強(qiáng)每一個輸出特征層對小目標(biāo)檢測的準(zhǔn)確率。最后,在特征信息傳遞到每一個特征層后進(jìn)行Concat特征拼接得到特征融合后的新特征圖。
為了解決淺層特征層缺少語義信息的問題,TTB-SSD算法引入了PANet多尺度特征融合模塊,如圖2所示。首先將Conv4_3、Conv5_3、Fc7、Conv8_2這4個特征層進(jìn)行3×3卷積特征提取。為了增強(qiáng)多尺度語義信息,將卷積后的Conv8_2的特征圖進(jìn)行上采樣并進(jìn)行3×3卷積,構(gòu)造自上向下的特征增強(qiáng)路徑,并與卷積后的Fc7、Conv4_3的特征圖進(jìn)行特征融合,旨在將深層特征層的語義信息保留并傳遞到淺層特征層。而為了將淺層特征層的空間信息傳遞到深層特征層,構(gòu)造自下向上的正向傳遞路徑,為保證融合的特征圖尺寸相同,將Conv4_3層的新特征圖利用空洞卷積進(jìn)行下采樣,擴(kuò)大感受野的同時能夠獲得多尺度的上下文語義信息,并在Fc7和Conv8_2特征層進(jìn)行特征融合得到新的特征圖。
圖2 PANet多尺度特征融合模塊
Conv9_2深層特征層雖然在多層卷積后具備豐富的語義信息,但是容易造成小目標(biāo)的位置空間信息的損失。本文使用多尺度特征信息避免這種損失,先對Conv9_2的特征圖進(jìn)行3×3卷積來減少通道數(shù)從而提取上下文信息,再將PANet特征提取網(wǎng)絡(luò)中自下向上路徑中的多尺度語義信息與空間信息通過空洞卷積下采樣與批歸一化(Batch Normalization,BN)層并經(jīng)過ReLU激活函數(shù)激活,將兩者進(jìn)行Concat特征拼接融合。深層特征融合模塊結(jié)構(gòu)如圖3所示,該結(jié)構(gòu)在增強(qiáng)了Conv9_2的位置空間信息與多尺度語義信息的同時增強(qiáng)了自下向上的特征傳播路徑,有助于提高對目標(biāo)位置和分類的檢測準(zhǔn)確率。
圖3 特征融合模塊
本文算法的損失函數(shù)由分類損失函數(shù)和位置損失函數(shù)兩部分構(gòu)成,公式如下:
(1)
式中:N表示匹配正樣本候選框的個數(shù);x表示預(yù)測框類別信息;c表示該類別置信度;l表示預(yù)測框的位置信息;g表示實際框的位置信息;Lconf和Lloc分別表示分類損失函數(shù)和位置損失函數(shù);α通常設(shè)置為1。
分類損失函數(shù)采用softmax多類別損失函數(shù),如式(2)所示:
(2)
(3)
1.2.1.2.1整理由護(hù)士長助理每日負(fù)責(zé)對心血管內(nèi)科治療室所有物品,藥品進(jìn)行整理,采取優(yōu)先合理放置必需品,清理放置在現(xiàn)場的非必需品。根據(jù)用藥頻率由近及遠(yuǎn)的放置,常用藥品使用頻率高,需放置于易取區(qū)域內(nèi),每日及時補(bǔ)充藥品,經(jīng)常檢查藥品有效期,及時銷毀將過期及質(zhì)變藥品。
位置損失函數(shù)采用smoothL1損失函數(shù),計算公式如下:
(4)
(5)
(6)
(7)
(8)
本文實驗配置與環(huán)境條件為Windows10操作系統(tǒng),NVIDIA GeForce RTX3060;編譯環(huán)境為torch-1.8.0,torchvision-0.9.0,python3.8。
實驗根據(jù)PASCAL官方劃分的PASCAL VOC2007和PASCAL VOC2012兩個訓(xùn)練數(shù)據(jù)集共16 551張圖片進(jìn)行混合訓(xùn)練,在PASCAL VOC2007test數(shù)據(jù)集共4 952張圖片進(jìn)行算法性能評估,并在輸入圖像尺寸為300 pixel×300 pixel大小下進(jìn)行實驗。該數(shù)據(jù)集包含aeroplane、bicycle、boat、bus、car、motorbike、train、bird、cat、cow、dog、horse、sheep、bottle、chair、diningtable、potteplant、sofa、tvmonitor、person共20個類別。
實驗使用的預(yù)訓(xùn)練模型為VGG16模型。訓(xùn)練采用SGD優(yōu)化器,模型總共迭代120 000次共116個訓(xùn)練周期。模型訓(xùn)練Batch size為16,初始學(xué)習(xí)率設(shè)為0.001,并在迭代80 000次和100 000次學(xué)習(xí)率依次下降10倍生成新的學(xué)習(xí)率0.000 1和0.000 01,最后在120 000次得到最終的模型。整個訓(xùn)練過程中根據(jù)分類損失函數(shù)和位置損失函數(shù)以及總損失繪制的損失函數(shù)曲線如圖4所示,可以發(fā)現(xiàn)TTB-SSD的分類損失值、位置損失值以及總損失值都小于SSD損失值,證明TTB-SSD預(yù)測目標(biāo)更接近于真實目標(biāo),從而證明了本文算法性能的優(yōu)越性。
圖4 損失函數(shù)曲線
2.3.1 PASCAL VOC2007測試集性能檢測對比
為驗證模型的有效性,表1展示了TTB-SSD算法與近些年流行的目標(biāo)檢測算法在PASCAL VOC2007測試集上的實驗結(jié)果,采用整體平均精度(Mean Average Precision,mAP)作為評價指標(biāo),公式如下:
表1 在PASCAL VOC2007測試集本方法與其他方法對比(IOU=0.5)
(9)
(10)
式中:r表示選取的閾值;P表示各閾值下的精度;N表示類別總數(shù)量。通過表1可以發(fā)現(xiàn),TTB-SSD算法相較于Faster R-CNN[3]目標(biāo)檢測算法在VGG16和ResNet101的主干網(wǎng)絡(luò)下,mAP分別提高了5.7%和2.5%;相較于目標(biāo)檢測算法YOLOv1[5]和YOLOv2[6],mAP分別提高了15.5%和5.2%,而與原始SSD[4]算法相比提高了1.7%;與其他改進(jìn)的SSD算法如FSSD[9]、DSSD[11]、RSSD[18]相比都有所提高,分別提升0.1%,0.3%和0.4%。通過以上實驗對比,證明TTB-SSD算法在目標(biāo)檢測精度上有明顯優(yōu)勢。
2.3.2 小目標(biāo)檢測性能評估
為了更全面驗證TTB-SSD算法性能,以及對小目標(biāo)檢測精度進(jìn)行評估,實驗沿用了MS COCO數(shù)據(jù)集的評價指標(biāo),面積小于32 pixel×32 pixel的物體為小目標(biāo),面積大于96 pixel×96 pixel的為大目標(biāo),而面積介于兩者之間的為中等目標(biāo)。
實驗使用在IOU閾值為0.5條件下檢測整體平均精度和在IOU=0.5∶0.05∶0.95的條件下檢測小目標(biāo)的平均精度兩個評價指標(biāo)對原始SSD算法、基于ResNet50主干網(wǎng)絡(luò)的SSD算法以及TTB-SSD算法進(jìn)行了對比,結(jié)果如表2所示,可見在IOU閾值為0.5的條件下,TTB-SSD整體檢測精度較原始SSD算法和基于ResNet50主干網(wǎng)絡(luò)的SSD算法的精度分別提高了2%和6.7%,有明顯的提升優(yōu)勢。而對于小目標(biāo)的檢測精度,TTB-SSD較原始SSD算法和基于ResNet50主干網(wǎng)絡(luò)的SSD算法的精度分別提升了5.7%和6.8%,證明TTB-SSD算法對小目標(biāo)檢測精度有較大提高。
表2 小目標(biāo)算法性能比較
2.3.3 單類別實驗結(jié)果及分析
為驗證TTB-SSD方法對各類別目標(biāo),尤其是小目標(biāo)的檢測效果,本文對數(shù)據(jù)集中20個類別進(jìn)行了單類別比較,實驗結(jié)果如表3所示。由表3可以發(fā)現(xiàn)TTB-SSD算法對16個類別物體的檢測精度都超過原始SSD算法以及基于ResNet50主干網(wǎng)絡(luò)的SSD算法,其余4個類別僅以微弱的差距落后,尤其對于bird、bottle、potteplant、chair等這樣的小目標(biāo)檢測結(jié)果有著明顯優(yōu)勢。其可視化對比結(jié)果如圖5所示。
表3 單類別精度比較
圖5 單類別檢測結(jié)果可視化
2.3.4 定性結(jié)果分析
為了更直觀地說明TTB-SSD算法的有效性,圖6展示了原始SSD算法與TTB-SSD算法在PASCAL VOC2007測試集的部分檢測效果圖,可以發(fā)現(xiàn)SSD算法對小目標(biāo)檢測精度并不理想,圖(a)所示圖例中均存在漏檢的小目標(biāo)船只、遠(yuǎn)處的車輛或小盆栽,而這些目標(biāo)在圖(b)所示的結(jié)果圖中均被正確檢出。由此可見,TTB-SSD算法在復(fù)雜背景下對小目標(biāo)具有更強(qiáng)的檢測能力。
為了解決原始SSD算法對小目標(biāo)檢測效果不夠理想的問題,本文將PANet多尺度特征提取網(wǎng)絡(luò)和深層特征融合模塊相結(jié)合,并構(gòu)造了一種采用自上向下語義信息傳播路徑的TTD-SSD算法。實驗結(jié)果表明,該方法在原數(shù)據(jù)集評價指標(biāo)下目標(biāo)檢測精度高達(dá)78.9%,在COCO數(shù)據(jù)集中的小尺寸目標(biāo)的評價指標(biāo)下小目標(biāo)檢測精度高達(dá)16.3%,較原始SSD算法提高5.7%,可見TTD-SSD算法在小目標(biāo)檢測方面具有明顯優(yōu)勢。但是,由于本文方法引入了多尺度特征融合模塊,造成模型變大,故今后還需在保證精度的條件下研究模型輕量化問題。