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