麻森權(quán) 周 克
(貴州大學(xué)電氣工程學(xué)院 貴州 貴陽 550025)
目標(biāo)檢測是計(jì)算機(jī)視覺的基本任務(wù)之一,廣泛應(yīng)用于無人駕駛、安全系統(tǒng)和瑕疵檢測等領(lǐng)域。隨著卷積神經(jīng)網(wǎng)絡(luò)(CNN)的快速發(fā)展,Girshick等[1]提出了一個(gè)R-CNN框架,將目標(biāo)檢測問題轉(zhuǎn)化為分類問題。在此框架中,使用選擇性搜索[2]提取候選區(qū)域提議,然后,CNN從候選區(qū)域提議中提取特征,最后,R-CNN通過支持向量機(jī)(SVM)分類器對(duì)這些特征進(jìn)行分類,并對(duì)候選區(qū)域提議執(zhí)行邊界框回歸。R-CNN是目標(biāo)檢測的開創(chuàng)性工作。結(jié)果表明,R-CNN比使用手工設(shè)計(jì)功能的傳統(tǒng)方法要好得多。為了提高效率并處理任何大小輸入,Gir-shick進(jìn)一步提出了FastR-CNN[3]框架,該框架顯著提高了R-CNN的效率和準(zhǔn)確性。FastR-CNN采用感興趣區(qū)域(ROI)池化策略,允許網(wǎng)絡(luò)以更快的速度提取任何大小的提議窗口上的高級(jí)特征。然而FastR-CNN也使用選擇性搜索來提取候選提議,并且特征提取和對(duì)象分類的過程是分開的。Ren等[4]提出了FasterR-CNN網(wǎng)絡(luò),其中候選區(qū)域提議由RPN(RegionProposalNetwork)提供。該方法可以訓(xùn)練端到端網(wǎng)絡(luò),并實(shí)現(xiàn)更好的檢測性能。但是,在一組卷積和池化層之后,F(xiàn)asterR-CNN中最后一個(gè)卷積層的特征映射很小。在最后的特征映射中,原始圖像中的對(duì)象也小得多,難以定位,因此FasterR-CNN無法很好地解決小對(duì)象檢測問題。同時(shí),完全卷積網(wǎng)絡(luò)(FCN)[5]已經(jīng)被提出并被證明擅長語義分割任務(wù)。FCN中,結(jié)合卷積和池化的網(wǎng)絡(luò)接收?qǐng)D像并輸出特征圖,特征圖使用解卷積圖層來獲取與輸入圖像大小相同的輸出圖像。最后,比較輸入圖像和輸出圖像以獲得基于像素的分割結(jié)果。FCN在PASCALVOC分割方面取得了良好的效果[6]。通過FCN網(wǎng)絡(luò),輸入圖像將被下采樣,最后一個(gè)特征圖比輸入圖像小32倍。因此,不可能直接進(jìn)行語義分割。但是,它使用反卷積層將要素圖上采樣到與原始圖像相同的大小。最后,它對(duì)最后一個(gè)特征圖的每個(gè)像素進(jìn)行分類,以獲得分割結(jié)果。從FCN的網(wǎng)絡(luò)結(jié)構(gòu)中,反卷積層將恢復(fù)在提取特征的過程中容易丟失的信息。
Redmon等[7]提出了YOLO(YouOnlyLookOnce)算法,該算法是端到端網(wǎng)絡(luò)架構(gòu),網(wǎng)絡(luò)的輸入是圖像內(nèi)容,輸出是邊界框和相關(guān)類概率的信息。YOLO的第三個(gè)版本——YOLOv3[8],將高級(jí)網(wǎng)絡(luò)與低級(jí)網(wǎng)絡(luò)連接起來,從高級(jí)功能和早期功能圖中的細(xì)粒度信息中獲取更有意義的語義信息。這種信息融合方式在一定程度上提高了小物體的檢測性能。然而,這樣的設(shè)計(jì)沒有充分利用低級(jí)信息,并且缺乏多樣的接受領(lǐng)域。因此,它在檢測小尺寸和易于聚類的對(duì)象方面很弱。
在端到端的單級(jí)目標(biāo)檢測算法中,Liu等[9]提出一種SSD算法,該算法兼顧了YOLO算法的檢測速度和FasterRCNN算法的檢測精度。但是由于SSD使用conv4_3低級(jí)feature在應(yīng)用于小目標(biāo)檢測時(shí)的低級(jí)特征卷積層數(shù)較少,存在特征提取不充分的問題,從而對(duì)小目標(biāo)檢測的效果一般。
受注意力機(jī)制[10]思想的啟發(fā),本文在DSSD算法的框架中引入注意力通道,保留更多的目標(biāo)特征信息,抑制無關(guān)信息,進(jìn)一步提升DSSD算法應(yīng)用于小目標(biāo)的檢測效果。
SSD(SingleShotMultiBoxDetector)是目前較流行的檢測框架之一,相比于FasterR-CNN算法在檢測速度上有明顯優(yōu)勢,而相比于YOLO又有明顯的精度優(yōu)勢[9]。SSD網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。SSD使用預(yù)先訓(xùn)練的VGG16神經(jīng)網(wǎng)絡(luò)作為核心,然后將具有小濾波器的卷積層添加到神經(jīng)網(wǎng)絡(luò)的頂部,因此可以使用不同的卷積操作對(duì)多個(gè)不同尺度的目標(biāo)進(jìn)行檢測,并在SSD網(wǎng)絡(luò)頂部的卷積層中產(chǎn)生固定尺度目標(biāo)的預(yù)測結(jié)果。SSD算法中設(shè)計(jì)了不同寬高比的默認(rèn)檢測框,并應(yīng)用于多個(gè)特征圖中,在每個(gè)特征圖中使用3×3的卷積核提取目標(biāo)預(yù)測框的特征信息,其中包含類別信息和位置信息,并在網(wǎng)絡(luò)訓(xùn)練過程中通過不斷調(diào)整相對(duì)于默認(rèn)框的類別置信度和位置偏移量,使得預(yù)測框可以更加準(zhǔn)確地表達(dá)出預(yù)測目標(biāo)的類別和位置信息。SSD算法的網(wǎng)絡(luò)設(shè)計(jì)可以進(jìn)行簡單的端到端的模型訓(xùn)練,使得低分辨率輸入的圖像上也能達(dá)到很高的檢測精度。
圖1 SSD神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
DSSD[11]算法是對(duì)SDD算法的優(yōu)化,其目的是通過解決多尺度融合問題用于快速地檢測目標(biāo)物體。在網(wǎng)絡(luò)框架上,DSSD的主干特征提取網(wǎng)絡(luò)使用ResNet替代了SSD中的VGG16網(wǎng)絡(luò),并且將網(wǎng)絡(luò)層中的特征圖用乘法(EltwProduct)完成信息融合,將上層特征圖的語義信息與下層特征圖的語義信息融合成多尺度的特征圖,使得預(yù)測回歸位置框和分類任務(wù)的輸入特征圖多樣化。這不僅提高了目標(biāo)檢測的精度,也使得DSSD網(wǎng)絡(luò)模型對(duì)小目標(biāo)物體的檢測有了一定的提升。
注意力在人類感知中起著重要作用[12]。人類視覺系統(tǒng)的一個(gè)重要特性是不會(huì)同時(shí)處理整個(gè)場景。相反,為了更好地捕捉視覺結(jié)構(gòu),人類利用了一系列的局部掃視并選擇性地聚焦于突出的部分[13]。
最近在目標(biāo)檢測領(lǐng)域有人提出將注意力機(jī)制引入到CNN網(wǎng)絡(luò)中來提高大規(guī)模分類任務(wù)的性能。Wang等[14]提出使用編碼器式注意模塊的剩余注意網(wǎng)絡(luò)。通過細(xì)化特征圖,該網(wǎng)絡(luò)不僅性能良好,而且對(duì)噪聲輸入具有魯棒性。Hu等[15]引入一個(gè)緊湊的注意力特征提取庫,使用全局平均匯集特征來計(jì)算通道關(guān)注的信息權(quán)重。Woo等[16]基于一個(gè)有效的體系結(jié)構(gòu)同時(shí)利用空間和通道注意模塊來關(guān)注更多信息,取得了很好的效果。徐誠極等[17]將注意力機(jī)制引入到Y(jié)OLO算法中,提高了檢測精度。受此啟發(fā),本文結(jié)合DSSD算法的特點(diǎn),引入注意力模塊做進(jìn)一步研究。
對(duì)于常規(guī)物體,SDD算法兼顧檢測精度和檢測速度,但是在對(duì)小目標(biāo)低分辨率的物體檢測中,SSD算法以及改進(jìn)過的DSSD算法都存在漏檢的情況。這是由于SSD使用conv4_3低級(jí)feature去檢測小目標(biāo),而低級(jí)特征卷積層數(shù)少,存在特征提取不充分的問題。對(duì)此本文在SSD網(wǎng)絡(luò)框架中引入力模塊,保留更多的目標(biāo)特征,并且進(jìn)一步通過特征融合,抑制無關(guān)信息,提高檢測精度。引入注意力模塊的DSSD算法的模型結(jié)構(gòu)如圖2所示。
圖2 引入注意力特征融合模塊的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
在該網(wǎng)絡(luò)中,首先通過注意力模塊增強(qiáng)低層網(wǎng)絡(luò)的信息表征能力,使得感受野更關(guān)注目標(biāo)特征,然后與高層網(wǎng)絡(luò)中的上下文信息進(jìn)行融合,增強(qiáng)對(duì)檢測目標(biāo)的定位能力。
注意力模塊的結(jié)構(gòu)如圖3所示,主要由通道注意力和空間注意力兩部分組成。
圖3 注意力模塊結(jié)構(gòu)圖
Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=
(1)
式中:σ表示是Sigmod激活函數(shù);W0和W1分別為共享全連接層MLP的權(quán)重。
第二步利用特征間的空間關(guān)系生成空間注意力特征圖,空間注意力特征圖主要關(guān)注目標(biāo)所在位置的特征信息,它是對(duì)通道注意力特征圖的一個(gè)補(bǔ)充。為計(jì)算空間注意力特征圖,沿通道應(yīng)用平均池化和最大池化操作,并將它們連接起來以生成有效的特征描述符。在信息區(qū)域中,應(yīng)用池化操作可以有效地提高通道中目標(biāo)特征的顯著程度[18]。
Ms(F)=σ(f7×7([AvgPool(F);MaxPool(F)])=
(2)
式中:f7×7為卷積操作,卷積核為7×7的卷積層。對(duì)于一個(gè)輸入特征圖F∈RC×H×W,其中C、H、W表示的是特征圖的長度、寬度和通道數(shù),經(jīng)過注意模塊的計(jì)算過程為:
F′=Mc(F)?F
F″=Ms(F)?F′
(3)
式中:?表示元素乘法,在乘法過程中注意特征值被相應(yīng)地傳播;F″為最終確定的輸出。
參考文獻(xiàn)[19]對(duì)DSSD網(wǎng)絡(luò)的改進(jìn)方法,本文設(shè)置三個(gè)高低層網(wǎng)絡(luò)融合模塊直接對(duì)檢測目標(biāo)進(jìn)行分類和位置回歸,以簡化復(fù)雜運(yùn)算,提升網(wǎng)絡(luò)模型的效率。融合模塊的結(jié)構(gòu)如圖4所示,以融合Conv3_3特征圖和Conv15_2特征圖為例,首先對(duì)Conv15_2特征圖進(jìn)行卷積核大小為2×2、通道數(shù)為256的上采樣操作,輸出結(jié)果通過卷積核為3×3的卷積層映射輸出至修正激活函數(shù)層(Rectified Linear Unit,ReLU)和正則化層NB后再次卷積,為防止過擬合再進(jìn)行一次正則化。Conv3_3特征圖直接經(jīng)過卷積、激活函數(shù)修正和正則化后與采樣后的Conv15_2特征圖進(jìn)行求和操作(Eltw Sum),隨后添加一個(gè)3×3的卷積層以確保檢測的特征具有可分辨性,最后在一個(gè)ReLU層后實(shí)現(xiàn)融合功能。
圖4 特征融合模塊結(jié)構(gòu)圖
本文采用SDD算法的訓(xùn)練方式對(duì)模型進(jìn)行訓(xùn)練,首先,將一組默認(rèn)框與設(shè)定的目標(biāo)真實(shí)框進(jìn)行匹配,對(duì)于每個(gè)真實(shí)框,將其與最佳重疊的默認(rèn)框以及JacCard系數(shù)大于閾值(比如0.5)的任何默認(rèn)框匹配。然后在沒有匹配的默認(rèn)框中,根據(jù)置信度損失值選擇某些框作為負(fù)樣本,負(fù)樣本與匹配框的比率為3∶1。最后將聯(lián)合定位損失值(比如平滑損失函數(shù)L1)和置信損失值最小化。
模型訓(xùn)練在ImageNet數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,該數(shù)據(jù)包含了1400萬幅圖像,2萬多個(gè)類別,其中至少100萬幅圖像提供了邊界框,提高模型的泛化能力。實(shí)驗(yàn)環(huán)境在Ubuntu16.04LTS操作系統(tǒng)下進(jìn)行,深度學(xué)習(xí)框架為Tensorflow,開發(fā)語言為Python3.6。硬件配置包括CPU為Intel i7-7700,主頻3.6GHz,內(nèi)存為36GB;GPU為Nvida GTX1080Ti,顯存11GB。
將預(yù)訓(xùn)練好的模型分別應(yīng)用于含有大量小目標(biāo)的紡織物瑕疵檢測和遙感圖像目標(biāo)檢測。紡織圖片選用的TILDA數(shù)據(jù)集,其中共有3200幅圖片,包括的瑕疵有污漬、破洞、斷緯等。遙感圖像使用的是VEDAI航拍圖像數(shù)據(jù)集,圖片中包括飛機(jī)、汽車等目標(biāo)。對(duì)兩個(gè)數(shù)據(jù)集分別隨機(jī)抽取80%圖像進(jìn)行訓(xùn)練,其余20%圖像進(jìn)行測試,并與DSSD算法進(jìn)行對(duì)比。實(shí)驗(yàn)中發(fā)現(xiàn),影響檢測效果的因素主要有兩個(gè),分別是錯(cuò)檢和漏檢。圖5是在TILDA數(shù)據(jù)集上某幅圖片的檢測情況,其中:(a)中標(biāo)注了8個(gè)待檢目標(biāo);(b)為DSSD算法的檢測效果,共檢測出了4個(gè)目標(biāo),漏檢4個(gè)目標(biāo);(c)為本文算法的檢測效果,共檢測出了6個(gè)目標(biāo),漏檢2個(gè)目標(biāo)。圖6是在VEDAI數(shù)據(jù)集上某幅圖片中航拍目標(biāo)檢測情況,其中:(a)中標(biāo)注了9個(gè)待檢目標(biāo);(b)為DSSD算法的檢測效果,共檢出了6個(gè)目標(biāo),漏檢3個(gè)目標(biāo);(c)為本文本算法的檢測效果,共檢出7個(gè)目標(biāo),漏檢2個(gè)目標(biāo),錯(cuò)檢1個(gè)目標(biāo)。
(a) 原圖待檢目標(biāo)
(b) DSSD算法檢測效果
(c) 本文算法檢測結(jié)果圖5 TILDA紡織物瑕疵檢測效果對(duì)比圖
(a) 原圖待檢目標(biāo)
(b) DSSD算法檢測效果
(c) 本文算法檢測結(jié)果圖6 VEDAI遙感圖像物體檢測效果對(duì)比圖
本文實(shí)驗(yàn)統(tǒng)計(jì)了10次在進(jìn)行模型測試時(shí)對(duì)小目標(biāo)檢測的平均檢測數(shù)據(jù),包括正確檢測率、漏檢率和錯(cuò)檢率,如表1所示。本文算法相對(duì)于DSSD算法在TILDA數(shù)據(jù)集上和VEDAI數(shù)據(jù)集上的漏檢率分別降低了7.8%和4.7%,有效提高了對(duì)小目標(biāo)的檢測效果。本文算法的不足之處是在錯(cuò)檢率上分別有7.8%和10.9%,相比于DSSD算法增加了0.6%和1.3%。下一步將研究錯(cuò)檢率增加的原因并通過改進(jìn)來降低錯(cuò)檢率提高算法的檢測效果。
表1 10次模型測試時(shí)的小目標(biāo)平均檢測數(shù)據(jù) %
綜合實(shí)驗(yàn)結(jié)果,分別在兩個(gè)數(shù)據(jù)集上采用平均精度均值(Mean Average Precision,mAP)和每秒幀率(Frame Per Second,F(xiàn)PS)兩個(gè)指標(biāo),對(duì)比評(píng)價(jià)本文算法和DSSD算法的對(duì)于包含小目標(biāo)的檢測精度和檢測效率。各項(xiàng)數(shù)據(jù)如表2所示,可以看出,本文算法相對(duì)于DSSD算法在TILDA數(shù)據(jù)集和VEDAI數(shù)據(jù)集上目標(biāo)檢測的平均精度均值分別提高了2.5%和4.4%,每秒幀率提高了1.7和1.4。結(jié)果表明,本文算法在DSSD算法的基礎(chǔ)上加入了注意力機(jī)制模塊進(jìn)行特征整合,有效提取了小目標(biāo)的特征信息,提高了目標(biāo)檢測精度,同時(shí)提升了的檢測效率。
表2 評(píng)價(jià)指標(biāo)對(duì)比
為解決SSD系列算法在檢測小目標(biāo)中的不足,本文在DSSD算法的框架中引入了注意力機(jī)制模塊,可以有效提取小目標(biāo)的特征信息,并且通過特征融合的方式對(duì)小目標(biāo)進(jìn)行位置回歸,提高了原算法的檢測精度,證明了注意力模塊可以有效提升深度學(xué)習(xí)網(wǎng)絡(luò)的性能。下一步將參考本文方法對(duì)其網(wǎng)絡(luò)進(jìn)行改進(jìn),尋找最優(yōu)的網(wǎng)絡(luò)模型用于圖像中的小目標(biāo)檢測。