徐守坤,顧佳楠,莊麗華,李 寧,石 林,劉 毅
常州大學 計算機與人工智能學院,江蘇 常州 213164
目標檢測作為計算機視覺的一個基礎(chǔ)研究熱點,在許多領(lǐng)域內(nèi)進行應用,例如自動駕駛、智慧監(jiān)控、虛擬現(xiàn)實和增強現(xiàn)實等。小目標檢測是目標檢測研究任務之一,其在衛(wèi)星圖像和自動駕駛等領(lǐng)域有著非常廣泛的應用[1]。但是小目標攜帶的信息量相比常規(guī)目標要少,給小目標特征提取、識別、分類和定位都造成了很大的困難。
傳統(tǒng)的目標檢測方法通過人工提取目標特征,檢測的效果不佳。近年來,隨著深度學習技術(shù)不斷發(fā)展,目標檢測算法可以分為兩個類別:第一種是兩階段(Two-stage)算法,例如Faster R-CNN(faster region-based convolutional neural networks)[2]、OHEM(online hard example mining)[3]和MKLP(multi-scale location-aware kernel representation)[4]等。這些方法都是先通過區(qū)域建議網(wǎng)絡生成候選框,然后對候選區(qū)域進行分類和回歸,最終得到目標的準確分類和定位信息。另一種是一階段算法,例如SSD(single shot multibox detector)[5]、DSSD(deconvolutional single shot detector)[6]、YOLOv3(you only look once version 3)[7]、YOLOX(you only look once version X)[8]等,這些方法都是端到端的方法,直接通過網(wǎng)絡獲得目標的分類和定位信息。
目前現(xiàn)有的目標檢測方法對于清晰場景下的大尺寸目標都表現(xiàn)出良好的檢測效果,但是對于復雜場景中的小目標則會出現(xiàn)漏檢或錯檢問題。由于小目標的背景復雜度高、像素低本身的特征信息不明顯、易被遮擋等問題,小目標的檢測性能還有很大的提升空間。YOLOX 是一個端到端的一階段目標檢測算法,其創(chuàng)造性地提出解耦頭進一步提高了目標檢測的性能和收斂速度,但是其對于小目標檢測的性能不佳。圖1 展示了YOLOX 對于小目標檢測的失敗案例,左邊一張圖中對后面的汽車和人出現(xiàn)漏檢問題。右邊一張圖中對于兩匹在草原上奔跑的馬,只檢測出了前面一匹,后面的馬匹出現(xiàn)漏檢問題。因此,本文主要研究如何在檢測過程中有效增強小目標特征信息的鑒別性,保留并豐富小目標的淺層特征信息和上下文語義信息。
圖1 YOLOX算法中小目標檢測失敗案例Fig.1 Failure cases of YOLOX in detecting small objects
得益于Transformer 在自然語言處理(natural language processing,NLP)領(lǐng)域的有效性,其能高效捕獲長范圍依賴關(guān)系,學習全局自注意力權(quán)重并增強全局特征表達,將Transformer 應用于目標檢測成為了新的研究趨勢。現(xiàn)有小目標檢測方法中主干網(wǎng)絡(backbone)存在對小目標特征提取不充分或是小目標在特征提取過程中丟失特征信息,造成小目標漏檢的問題。本文提出了在backbone 的每一層特征提取后面增加兩階段計算Transformer(two-stage calculation Transformer,TCT),相比傳統(tǒng)CNN 方法,引入Transformer 機制的優(yōu)勢是能大幅擴大對小目標特征的感受野,從而更好地捕獲全局依賴關(guān)系和提高檢測性能。另一方面,相比應用于小目標檢測的傳統(tǒng)Transformer 方法,使用通道級全連接進行小目標特征提取容易丟失小目標空間特征信息,造成小目標漏檢問題。本文提出的兩階段Transformer 能自適應地調(diào)整自注意力的核心變量Query、Key 和Value,增強Query 和Key 之間的相關(guān)性,避免大范圍背景信息淹沒小目標的問題,進而突顯小目標特征信息,避免小目標漏檢。此外,本文總結(jié)了YOLOX中使用路徑聚合網(wǎng)絡(path aggregation network,PANet)[9]進行特征融合的局限性?,F(xiàn)有的CSPLayer層使用壓縮通道的卷積無法捕獲鄰域特征依賴關(guān)系,因此將其替換為不改變通道數(shù)的卷積,以進行帶感受野的迭代學習,從而更好地在空間層面上學習不同信息。同時,使用PReLU 激活函數(shù)進行非線性激活,提高特征的表達能力,并且使用多個殘差加法與殘差乘法進行特征細化與精煉。
本文主要貢獻如下:(1)提出了兩階段計算Transformer(TCT)改進現(xiàn)有的Transformer 結(jié)構(gòu),通過引入新穎的多分支一維空洞卷積以擴大感受野,從而準確捕獲空間層面鄰域依賴關(guān)系。并使用不同的融合方式以調(diào)整自注意力權(quán)重,增強全局自注意力機制的特征表達能力與信息交互能力。(2)提出了一個高效的殘差連接模塊,改進現(xiàn)有的CSPLayer 層中低效的卷積層與激活層,有利于促進信息流的交互,學習更豐富的上下文細節(jié)特征。(3)提出特征融合與精煉模塊以改進路徑聚合網(wǎng)絡,從而建立多層次之間的相互管理并精煉每層的特征細節(jié),提取到更加豐富的目標特征信息。
目標檢測一直是一個熱門的研究領(lǐng)域,隨著卷積網(wǎng)絡的不斷發(fā)展,出現(xiàn)了很多的檢測方法。目前最通用的兩個方法,一個是以R-CNN系列為代表的基于候選框的兩階段目標檢測算法,另一個是以YOLO系列為代表的基于回歸的一階段目標檢測算法。
R-CNN[10]、Fast R-CNN[11]、Faster R-CNN 這些方法都是基于候選框計算目標的分類置信度和目標具體檢測位置。趙珊等人[12]基于Faster R-CNN 提出了通道分離雙注意力機制的目標檢測算法,使得卷積神經(jīng)網(wǎng)絡自動學習特征間的重要性。R-FCN(regionbased fully convolutional networks)[13]引入了位置敏感分數(shù)圖共享每一個ROI(region of interest)的特征計算,緩解目標分類之間的平移不變性與目標檢測之間的平移變化性之間的矛盾。TSD(revisiting the sibling head in object detector)[14]將分類和邊界框預測的感知分類建議任務與計算具體特征任務解耦合。Dynamic R-CNN[15]動態(tài)調(diào)整標簽分配的IoU(intersection over union)閾值和回歸超參數(shù)以提高檢測精度。Sparse R-CNN[16]學習了一組固定的稀疏候選區(qū)域建議框。
YOLO 系列算法和SSD 算法都是經(jīng)典的一階段目標檢測算法。YOLO 算法的目的就是將檢測問題轉(zhuǎn)變成回歸問題,將整個圖像輸入到卷積網(wǎng)絡中,在輸出層同時預測邊界框的坐標和類別的概率。SSD算法采用不同尺度的特征圖進行檢測,并且直接使用卷積網(wǎng)絡預測檢測結(jié)果。YOLOv2[17]對YOLOv1[18]進行了改進,增加了批標準化處理并且同時引入錨框機制。YOLOv3采用Darknet53作為主干特征提取網(wǎng)絡,并且在分類器中使用Sigmoid 激活函數(shù),將輸出結(jié)果范圍約束到0 到1 之間,提高模型檢測速度。邵偉平等人[19]將MoblieNet 與YOLOv3 進行融合,提高模型的檢測速度。YOLOv4[20]使用Mish激活函數(shù),在不增加檢測時間的基礎(chǔ)上,提高了檢測精度。劉晉等人[21]基于YOLOv4使用MoblieNet作為主干特征提取網(wǎng)絡,引入通道注意力機制模塊提高特征提取能力?,F(xiàn)在YOLOX 的出現(xiàn),在某種程度上做到了最佳的檢測精度和檢測速度。
小目標檢測一直是一個具有挑戰(zhàn)性的計算機視覺任務,現(xiàn)有的檢測算法對于大尺寸目標的檢測都取得了很好的效果,但是小目標的檢測效果仍然不太理想。人們提出越來越多的方法用來提高小目標檢測的準確度,主要分為四個類別:(1)尺度感知訓練。為了提高小目標的檢測準確度,旨在生成具有統(tǒng)一表示能力的特定尺度特征圖。Liu等人[22]提出了多分支并行特征金字塔網(wǎng)絡(multi-branch parallel feature pyramid network,MPFPN)用于恢復深層次丟失的特征信息,從而提取更加豐富的小尺寸目標特征信息。(2)過采樣和強大的數(shù)據(jù)增強。文獻[23]研究了過采樣和數(shù)據(jù)增強對于目標檢測的影響,使用一種自動化的方式來尋求目標檢測的最佳數(shù)據(jù)增強策略。(3)結(jié)合上下文信息。Zhang 等人[24]通過交錯級聯(lián)架構(gòu)提出了多尺度特征預測和細化小目標的尺寸和位置。PANet[9]在特征金字塔(feature pyramid network,F(xiàn)PN)的基礎(chǔ)上增加了自上而下的路徑增強,在利用淺層特征精確定位目標信息的同時也縮短了信息傳輸路徑,進而提高小目標的檢測性能。奚琦等人[25]將SSD 中的主干網(wǎng)絡VGG16 替換為Densenet,使用連續(xù)3個3×3卷積生成特征圖,減小參數(shù)量的同時降低輸入圖像特征信息的消耗,盡可能地保留目標細節(jié)特征信息。(4)提高輸入圖像分辨率。陳幻杰等人[26]對SSD算法進行改進,在提取特征時使用不同的提取方式對淺層特征和深層特征進行提取,以此改善SSD 算法對于小目標的檢測效果。文獻[27]將圖像分割后進行超分辨率重建,再次分割送入目標檢測模塊,以此增強對小目標的檢測。
得益于Transformer 在自然語言處理中的成功應用,人們也在積極探索其在計算機視覺上代替卷積計算來捕獲圖像特征全局范圍內(nèi)的依賴關(guān)系。ViT(vision transformer)[28]是第一個基于Transformer的圖像分類方法,其分類性能優(yōu)于卷積神經(jīng)網(wǎng)絡。它提出了將圖像切分為尺寸為16×16 的圖像塊,將每個圖像塊看作一個整體,使用Transformer 對圖像進行全局自注意力。DETR(detection transformer)[29]提出了目標檢測的新范式,使用編碼器和目標查詢對特征圖和錨框進行編碼,使用解碼器和前饋神經(jīng)網(wǎng)絡獲得目標的預測框和類別分類。此方法雖然在檢測性能上提到了提升,但還是犧牲了很大的計算量和參數(shù)量。Swin Transformer[30]提出了一個基于滑動窗口的多頭注意力機制以平衡性能和效率。DAB_DETR[31]基于原始DETR 生成動態(tài)錨框,使得DETR 中的Q(Query)與傳統(tǒng)目標檢測方法中的錨框類似。該方法不僅增強了Q的可理解性,還加速了模型的收斂。
本文在現(xiàn)有的高性能目標檢測方法YOLOX 上進行改進,改進后的算法總體結(jié)構(gòu)如圖2 所示。TCT表示兩階段計算注意力,詳細結(jié)構(gòu)見圖3。整個算法由特征提取主干模塊、特征融合模塊和檢測頭模塊三部分組成。當傳入一張640×640×3 的圖像,首先對圖像進行Focus 操作,在圖像中間隔一個像素取值,這樣就可以獲得4 個獨立的特征層。將4 個特征層進行堆疊,輸入通道就擴充為原來的4 倍,圖像的寬高變?yōu)樵瓉淼囊话搿Mㄟ^Focus 操作可以減小模型推理的時間。再經(jīng)過卷積層和TCT 結(jié)構(gòu)的堆疊,獲得特征信息。在最后一個TCT 結(jié)構(gòu)輸出之后,通過SPPNeck 使用不同池化核大小的最大池化操作進行特征提取,提高網(wǎng)絡的感受野。網(wǎng)絡的特征融合模塊是基于PANet 結(jié)構(gòu)搭建的,通過FFRM(feature fusion and refinement module)進行帶感受野的迭代學習,更好地學習空間中不同尺度的特征,并且將不同尺度的特征進行融合,從而得到不同尺度目標的預測結(jié)構(gòu)。在網(wǎng)絡檢測頭部分使用解耦頭的方式,一個分支計算目標分類,另一個分支進行邊界框回歸和前景背景判斷。一方面,為了構(gòu)建更加高效的特征提取網(wǎng)絡,本文提出兩階段計算Transformer(TCT)用作增強特征,分兩階段自適應地調(diào)整Q(Query)、K(Key)和V(Value)以更好地計算全局自注意力權(quán)重。從而提高網(wǎng)絡模型自適應捕獲全局依賴關(guān)系的能力,提高訓練階段收斂速度,從而更準確地鑒定目標信息。另一方面,本文改進了多層次的特征融合過程,提出了一個簡單而強大的模塊,僅僅由3×3 卷積和PReLU 激活函數(shù)組成,在經(jīng)過不同形式的殘差連接之后,得到一個新的卷積神經(jīng)網(wǎng)絡模塊,名為特征融合精煉模塊(FFRM)。FFRM 在本模型中取得了優(yōu)異的檢測性能。
圖2 本文方法總體框架Fig.2 Proposed overall framework
圖3 傳統(tǒng)自注意力與兩階段計算自注意力的比較Fig.3 Comparison of conventional self-attention and two-stage computational self-attention
2.1.1 兩階段計算Transformer總體設計
本小節(jié)將詳細介紹提出的兩階段計算Transformer(TCT)模塊。本文遵循大多數(shù)Transformer 方法的做法,TCT 由兩階段計算自注意力(two-stage calculation self-attention,TCSA)和前饋神經(jīng)網(wǎng)絡(feed forward network,F(xiàn)FN)兩部分組成。二者分別經(jīng)過層歸一化(layer normalization,LN)進行穩(wěn)定梯度加速訓練,然后使用殘差加法用于保留原始信息與縮短反向傳播途徑。在目標檢測的backbone 特征提取階段中,將CSPLayer 輸出的特征圖X∈RH×W×C作為TCT 的輸入特征,所提出的兩階段計算Transformer總體公式如下所示:
其中,TCSA(?)表示兩階段計算自注意力方法,具體實現(xiàn)方法將在2.1.2小節(jié)詳細介紹。FFN(?)表示前饋神經(jīng)網(wǎng)絡計算操作,具體實現(xiàn)方法將在2.1.3 小節(jié)詳細介紹。Y則為TCSA 模塊計算得到的臨時變量,用于傳入FFN 進行前饋網(wǎng)絡計算。LN(?)表示層歸一化,對B×C×H×W尺寸的特征圖按Batch(B)劃分并對C×H×W的子特征所有數(shù)值減去均值并除以標準差。
2.1.2 兩階段計算自注意力
現(xiàn)有的基于目標檢測的多頭注意力機制,如圖3(a)所示。使用3 個不同的全連接計算獲得Q(query)、K(key)、V(value)三個值(公式):
其中,fWQ(?)、fWK(?)、fWV(?)表示不同的全連接層計算,其采用三個不同的全連接層,按通道進行全連接計算,互相不共享參數(shù),從而以不同的權(quán)重參數(shù)分別更新Q、K 和V 的所有層次特征到下一層特征的投影系數(shù)。
與現(xiàn)有的基于Transformer 的目標檢測方法不同,本文提出了兩階段計算模塊,用一維卷積替代全連接層,并設置不同的空洞率(dilated rate)以捕獲多尺度信息,同時將多尺度權(quán)重用于調(diào)整Q 與K。如圖3(b)所示,使用不同的計算方式得到Q、K、V的值,具體過程如下:
(1)計算Q、K、V
在視覺Transformer 中計算Q、K、V 的方法通常使用三個通道級別全連接計算得到,其好處在于對不同層次特征信息進行稠密連接,捕獲跨層次信息關(guān)聯(lián)性。然而目標檢測任務中,真實標簽更多體現(xiàn)在視覺空間層面上而非通道層面,這使得捕獲鄰域關(guān)系比捕獲跨層次通道信息更為重要。為此,本文避免使用通道級別全連接層,改進為使用一維卷積和空洞率為3 的一維空洞卷積。在不增加網(wǎng)絡參數(shù)量的同時,盡可能地擴大特征圖的感受野,以準確捕獲空間層面領(lǐng)域依賴關(guān)系,減少卷積過程中語義信息與細節(jié)信息丟失,提高目標檢測性能。
式中,fchunk(?)表示的是對特征圖按通道數(shù)拆分成兩半;表示的是第i次進行1×1 一維卷積操作;fWD(?)表示的是空洞率為3 的3×3 空洞卷積操作;Y′表示的是層歸一化后的張量。
(2)計算Q′、K′、V′
為了增強全局自注意力機制的特征表達能力與信息交互能力,相比傳統(tǒng)Transformer方法,本文提出的TCT 模塊引入第二階段對Q、K、V 進行自適應調(diào)整,Query 作為自注意力的原始特征表達,需要適當引入大感受野的空間細節(jié)以調(diào)整增加Query 的特征查詢能力。而Key作為自注意力的目標位置特征,僅采用全連接層或全空洞卷積容易丟失原本特征信息,因而引入Value 早期特征尤為必要。在一階段計算得到Key 和Value 分支后,二階段分別對其進行2倍通道膨脹并拆分。Key 分支得到Q1和K1,Q1以矩陣乘法的方法融合Query 分支特征Q以調(diào)整其特征權(quán)重,K1則是作為原始Key分支信息。
其中,Q′表示經(jīng)過兩階段自適應調(diào)整之后Query 結(jié)果,用于計算自注意力權(quán)重。
Value 分支得到K2和V′,K2以矩陣加法的方式融合Key 分支的K1信息以微調(diào)信息表征。與Query 分支乘法不同的原因在于,Query 分支將多尺度特征以乘法方式特征融合,有利于訓練階段成倍增長梯度和加速收斂。而Value 分支融合的是早期信息與當前層目標關(guān)鍵特征,以殘差加法方式有利于穩(wěn)定學習目標區(qū)域自注意力權(quán)重。
經(jīng)過上述方法求得Q′、K′和V′之后,最終的注意力計算方式如下:
式中,K′T表示將K′進行轉(zhuǎn)置,dk是一個縮放因子,遵循多頭操作的計算公式dk=C/k,本文多頭分組k取值為8,主干網(wǎng)絡特征圖通道數(shù)C為{128,256,512,1 024},因而dk={16,32,64,128}。
得益于兩次跨分支信息流的特征融合,在訓練階段有效地避免了信息阻塞,促進了淺層特征與深層特征的信息交互,有效提升全局自注意力的準確性。3.5節(jié)消融實驗進一步證明了該結(jié)論。
2.1.3 前饋神經(jīng)網(wǎng)絡
前饋神經(jīng)網(wǎng)絡(feed forward network,F(xiàn)FN)在Transformer 架構(gòu)中起到增加模型表達能力、提高自注意力機制的學習容量的作用,以應對小目標被遮擋、模糊和光線暗等復雜場景。傳統(tǒng)的FFN 一般采用Layer Normalization 和殘差連接以穩(wěn)定梯度和縮短反向傳播路徑達到加速收斂的效果,同時采用Dense+Activation+Dense以增大模型表達能力。本文提出的前饋神經(jīng)網(wǎng)絡FFN 采用雙分支結(jié)構(gòu),其中一個分支經(jīng)過GELU激活函數(shù)以學習逐元素門控權(quán)重,由于GELU 是具有dropout 性質(zhì)的門控激活函數(shù),將雙分支相乘的操作有利于利用門控信息調(diào)整空間與通道上的有效特征。在先前的工作中,在現(xiàn)有的Transformer 中前饋神經(jīng)網(wǎng)絡對于特征領(lǐng)域信息的獲取能力較弱。但是,在目標檢測中相鄰像素的信息對于整體目標表達非常重要。為了解決這個問題,如圖4 所示,本文使用二維卷積獲取特征信息,并且前饋神經(jīng)網(wǎng)絡的激活函數(shù)使用的是GELU激活函數(shù)。FFN的計算公式如下:
圖4 前饋神經(jīng)網(wǎng)絡結(jié)構(gòu)圖Fig.4 Structure of feed forward network
式中,θ表示GELU 激活函數(shù),fWpi(?),i∈{0,1,2}表示的是第i次二維卷積操作,fLN(?)表示的是層歸一化操作,∈RH×W×C表示的是經(jīng)過兩階段計算注意力得到的受關(guān)注特征向量經(jīng)過層歸一化轉(zhuǎn)置后的結(jié)果。
2.1.4 窗口化、滑動窗口與多頭操作
由于視覺任務中的特征圖尺寸較大,基于Transformer 的檢測方法普遍存在計算量大、參數(shù)量大和推理時間大的問題。因而采用適當?shù)妮p量化方法十分必要,本文遵循Swin-Transformer 的做法,給定H×W×C尺寸的特征圖,進行窗口化與滑動窗口操作(shift-window operation)和多頭操作(multi-head operation)。首先,按照尺寸進行窗口劃分,每兩個TCT中的第一個不進行滑動窗口,第二個按照H和W負方向循環(huán)位移位。然后,按通道拆分成k組通道,即k個head,本文方法中k固定設為8,從而劃分為n×k個(M×M)×(C/k)尺寸的特征圖用于計算多尺寸自適應轉(zhuǎn)換,其中n=(H×W)/(M×M)為窗口個數(shù),M表示窗口尺寸(本文方法中M設為8)。
窗口化與多頭操作的本質(zhì)是,從空間和通道維度對特征圖進行分塊和升維操作,從而以并行計算的方式對特征圖快速迭代學習。在計算復雜度上,傳統(tǒng)的Transformer 在計算Q、K、V 和最后重投影共采用4 次通道級全連接層,因而4 個全連接層復雜度為4HWC2,而計算自注意力權(quán)重時用到的2 次張量相乘為2H2W2C,從而傳統(tǒng)多頭自注意力的計算量為:
本文提出的TCT 將全連接層替換為卷積或空洞卷積,并額外多了2 次逐位加法和乘法,在引入尺寸為M的窗口化操作后,計算量為:
式中,Ω(TCT1)表示僅采用窗口化設計的TCT 模塊復雜度,本文M取值為8。
考慮到按通道分組的多頭操作,將C拆分為k組dk通道信息,最終TCT 模塊的計算復雜度進一步降低為:
考慮到實際應用中,時間復雜度與常數(shù)無關(guān)且僅需保留多項式中級數(shù)最大項,從而對比二者的時間復雜度公式如下:
可以看出,相比于傳統(tǒng)的Transformer,本文提出的TCT 在空間維度上由二次方復雜度降低為一次方復雜度,且M=8 和dk={16,32,64,128}均為較小常數(shù),得到了極大的輕量化提升。
本文在滑動窗口內(nèi)進行自注意力計算,增強特征的鑒別性,并且提高了收斂速度。如圖5 所示,雖然本文方法一開始訓練損失值比基準模型大,但是在50個批次之后,損失小于基準模型,模型的收斂速度得到顯著提高。針對是否窗口化、窗口尺寸M、是否滑動窗口、多頭操作分組k的進一步消融實驗說明將在3.5.1小節(jié)中詳細討論。
圖5 損失值曲線圖Fig.5 Loss value graph
2.2.1 高效殘差連接塊
現(xiàn)有的方法大多沿用ResNet 中的殘差連接思想,使用兩層卷積并與另一分支作殘差連接。如圖6所示,本文的基準方法CSPDarknet 主干分支運用的是1×1 卷積和3×3 卷積,并與殘差分支直接相加。其中用于壓縮通道的1×1卷積無法捕獲鄰域特征依賴關(guān)系,因此本文將其替換為不改變通道數(shù)的3×3卷積,以進行帶感受野的迭代學習,從而更好地在空間層面上結(jié)合不同信息。
圖6 特征融合與精煉模塊結(jié)構(gòu)圖Fig.6 Structure of feature fusion and refinement module
得益于PReLU 激活函數(shù)在多個視覺任務中的卓越表現(xiàn),其有效緩解ReLU 激活函數(shù)丟失負數(shù)區(qū)間信息的問題,在保持非線性激活功能的同時,使用可學習的負數(shù)分支斜率以對非激活區(qū)間進行抑制,對有效數(shù)值空間進行高效非線性激活,因而在主干分支的2 個卷積層后都運用PReLU 激活層。同時,殘差分支使用一個1×1卷積對原始淺層特征進行卷積運算,以增強殘差塊的特征表達能力。相比baseline,高效殘差連接塊(efficient residual connection block,ERCB)更好地進行迭代學習,其特征表達能力與模型收斂速度都有所提高,3.5.2 小節(jié)的消融實驗結(jié)果進一步證明了這一結(jié)論。
2.2.2 特征融合與精煉
本文的基準方法CSPDarknet 在主干網(wǎng)絡(backbone)之后使用CSPLayer 將不同尺度特征進行特征融合,如圖7 所示,CSPLayer 在兩個分支上進行迭代學習并按通道拼接方式進行殘差連接。由于僅僅按照通道對特征進行簡單拼接的操作,忽略了每個通道之間的相互聯(lián)系,本文提出更高效的特征融合與精煉模塊(FFRM),利用多次殘差連接操作,對每層通道數(shù)值進行細化與精煉。如圖6所示,用簡單的殘差加法與殘差乘法替代按通道拼接操作。首先用n個ERCB 層以增強模塊的特征表達能力。然后用一個層歸一化以穩(wěn)定梯度和加速模型收斂速度,將其與早期的淺層特征殘差相加以保留原始空間細節(jié),防止重要特征信息丟失。之后經(jīng)過一層3×3卷積學習到一個自適應權(quán)重,再次與淺層特征進行殘差相乘,以精煉自身特征細節(jié)。
圖7 CSPLayer結(jié)構(gòu)圖Fig.7 Structure of CSPLayer
YOLOX 算法中的損失函數(shù)由三部分組成:第一個是模型預測出的x、y、w、h可以定位預測框的位置,通過度量預測框與真實框之間的交并比作為邊界框回歸損失函數(shù)。第二個是目標損失,所有真實框中的特征點都是正樣本,其他的都是負樣本,通過正負樣本和特征點是否包含目標的預測結(jié)果計算交叉熵作為目標損失函數(shù)。第三個分類損失,根據(jù)模型預測出的特征點得到該特征點所預測的種類結(jié)果,然后計算真實框的種類與特征點的預測種類的交叉熵作為分類損失函數(shù)。
為了提高整個模型對小目標檢測的效率,本文將目標損失中的交叉熵損失改用為Focal Loss 損失函數(shù)進行計算。交叉熵損失函數(shù)公式為:
當分類為正樣本時(s=1),損失函數(shù)為-lnp,當分類為負樣本時(s=0),損失函數(shù)為-ln(1-p),p表示樣本的預測概率。所有的樣本都采用同樣的損失度量方式,但是在實際檢測情況下,小目標總是比大目標難檢測出來,小目標獲得的預測概率比大目標要低很多,因此交叉熵損失函數(shù)并沒有很好地提高模型對小目標的預測精度。
Focal Loss損失函數(shù)公式為:
式中,?為控制難易分類樣本權(quán)重的平衡系數(shù),及控制模型對小目標的偏向程度,類別概率p表示與真實樣本的接近程度,p越大說明越接近樣本,分類的置信度越高,代表樣本越易分類;p越小則說明分類的置信度越低,代表樣本越難分類。使用?之后,對于分類不準確的樣本,損失不會改變。對于分類準確的樣本,其損失值會減小。這樣相當于增加了分類不準確樣本在損失函數(shù)中的權(quán)重。?值越大,易分類樣本的loss 越小,這樣模型就會更加注意難分類樣本,本文選擇?值為2,獲得了顯著的檢測效果。當分類為正樣本時,當預測結(jié)果p趨近于1時,(1-p)在經(jīng)過指數(shù)運算之后,損失函數(shù)的運算結(jié)果會很小。因此,當預測結(jié)果p比較小的時候,獲得的損失函數(shù)運算結(jié)果就會比較大。對于檢測模型來說,大尺寸的目標預測結(jié)果一般都比較大,但小目標的預測結(jié)果一般都比較小。因此通過Focal Loss 損失函數(shù)的計算,小目標可以獲得較大的損失值,提高整個模型對于小目標的預測能力。
在Linux 環(huán)境下,在Python3.7、Pytorch1.7 和CUDA11.0 的深度學習環(huán)境上實現(xiàn)所提出的方法。GPU 采用一塊32 GB 顯存的Tesla V100,CPU 型號為Intel?Xeon?Gold 5117 CPU@2.00 GHz。
對于PASCAL VOC2007 和PASCAL VOC2012數(shù)據(jù)集,本文合并二者的訓練集進行聯(lián)合訓練300輪,并在PASCAL VOC2007測試集上評估檢測性能。對于COCO2017 數(shù)據(jù)集,本文在其訓練集上訓練100輪,并在其驗證集上評估檢測性能。模型采用隨機梯度下降(stochastic gradient descent,SGD)優(yōu)化器以0.01的初始學習率訓練,并使用余弦退火方式將學習率衰減到0.000 1,權(quán)重衰減設為0.000 5,動量固定為0.9。使用馬賽克數(shù)據(jù)增強方法,以64 的小批量值和640×640 的隨機裁剪尺寸進行隨機梯度下降權(quán)重更新。對于TinyPerson數(shù)據(jù)集,本文在訓練集上訓練了100輪,并在其測試集上評估性能。
實驗數(shù)據(jù)集為PASCAL VOC2007[32]數(shù)據(jù)集、PASCAL VOC2012[33]數(shù)據(jù)集和COCO2017[34]數(shù)據(jù)集這3 個主流數(shù)據(jù)集以及TinyPerson[35]小目標數(shù)據(jù)集。PASCAL VOC 數(shù)據(jù)集一共有20 種不同的類別,訓練集一共有16 551 張圖像,測試集一共有4 952 張圖像。COCO2017 數(shù)據(jù)集一共包含80 種不同的類別,訓練集一共有118 287 張圖像,在COCO2017 的驗證集上評估本文方法效果,其由5 000 張圖像組成。TinyPerson 數(shù)據(jù)集[35]一共1 610 張圖像,包含兩個類別sea person 和earth person,其圖像中的目標都是小于20像素的人。
使用mAP(mean average precison)作為算法檢測精度的評價指標,此外還用了更加精細化的評價指標來評估模型。AP50、AP75分別表示當IoU 為0.50 和0.75 時所有目標的AP 值,mAP 表示IoU 閾值由0.50至0.95,以0.05 為步長計算的AP 值的平均值。本文定義小目標(S<322)、中等目標(322
式中,TP、FP和FN分別表示正確檢測框、誤檢框和漏檢框的數(shù)量,P表示精確率,R表示召回率,AP值表示一個類別的檢測平均精準度。
本文使用每秒處理圖像的幀數(shù)(frame per second,F(xiàn)PS)、參數(shù)量(Parameter)以及計算量(FLOPs)來評估模型的速度和模型的復雜度。
3.4.1 PASCAL VOC實驗結(jié)果分析
表1 和表2 比較了本文算法與現(xiàn)有的先進目標檢測算法在PASCAL VOC2007 測試集的實驗結(jié)果。如表1 所示,本文方法取得了87.9%的mAP,達到最高,比基準模型YOLOX 高了1.9 個百分點。比二階段的檢測算法Faster R-CNN 高出14.7 個百分點,比一階段的SSD 算法高出了11.1 個百分點,比現(xiàn)有的基于Transformer 的目標檢測器DETReg 高出了3.7個百分點。每個類別的檢測精度相比這些方法也有了顯著提升,其中有17 個類別達到了最優(yōu)。對于中等尺寸的物體,比如桌子,相比基準模型提升了8 個百分點;對于小尺寸的物體,比如瓶子,相較于基準提高4個百分點,植物有了10個百分點的提高。
表2 不同方法在PASCAL VOC2007測試集的檢測結(jié)果對比2(IoU=0.5)Table 2 2nd comparison of detection results of different methods on PASCAL VOC2007 test set(IoU=0.5) 單位:%
圖8 是本文方法與SSD、YOLOv3 和YOLOX 在PASCAL VOC2007 測試集上選取了兩張圖片。從圖中可以看出其他方法對于較遠處的輪船、馬車等小目標存在嚴重的漏檢問題,而本文方法都能精確檢測出來,進一步證明了本文方法使用兩階段計算注意力可以更精煉地提取目標的語義信息和細節(jié)信息,提高檢測性能。
3.4.2 COCO2017實驗結(jié)果分析
為了進一步驗證本文方法的有效性,在COCO-2017數(shù)據(jù)集上進行實驗。如表3所示,本文方法檢測精度與現(xiàn)有先進檢測方法相比有了顯著提升。本文方法與基準YOLOX_s 相比檢測mAP、AP50、AP75分別提高了2.7個百分點、2.2個百分點和2.8個百分點,相比最新的YOLOv7-tiny416分別提高了8.4個百分點、9.3個百分點和9.8個百分點。值得注意的是,本文方法對于小目標檢測的AP得到了顯著提升,達到了25.2%,相比基準模型YOLOX_s 提高了1.3 個百分點,證明了本文方法小目標檢測的有效性。本文方法的中等尺寸目標和大尺寸目標的檢測精度相較于基準模型分別提升了2.3 個百分點和4.3 個百分點。取得如此顯著提升的根本原因是本文模型使用兩階段計算轉(zhuǎn)換器可以更好地捕獲目標全局語義特征和目標的細節(jié)特征,更好提高網(wǎng)絡模型自適應捕獲全局依賴關(guān)系的能力。
表3 不同方法在COCO2017數(shù)據(jù)集的檢測結(jié)果對比Table 3 Comparison of detection results of different methods on COCO2017 dataset 單位:%
圖9是本文方法與YOLOv5、YOLOv7和YOLOX方法在COCO2017 測試集上選取了3 張圖片。從圖中可以看出其他方法對于較遠處的汽車、輪船、帆船等小目標存在嚴重的漏檢問題,而本文方法都能精確檢測出來,進一步證明了本文方法使用兩階段計算注意力對小目標檢測有了很大的改進。
圖9 本文方法與YOLOv5、YOLOv7和YOLOX在COCO2017數(shù)據(jù)集上的定性對比Fig.9 Qualitative comparison among proposed method,YOLOv5,YOLOv7 and YOLOX on COCO2017 dataset
3.4.3 TinyPerson數(shù)據(jù)集實驗結(jié)果分析
為了進一步驗證本文方法對于小目標檢測的有效性,在TinyPerson 數(shù)據(jù)集上進行實驗。如表4 所示,本文方法檢測精度與現(xiàn)有先進檢測方法相比有了顯著提升。本文方法在IoU 閾值為0.50 時的APS達到了最好的結(jié)果,相比YOLOX 增加了3.4 個百分點,相比YOLOv5 增加了2.9 個百分點,證明了本文方法小目標檢測的有效性。
表4 不同方法在TineyPerson數(shù)據(jù)集的檢測結(jié)果對比Table 4 Comparison of detection results of different methods on TineyPerson dataset
如圖10 所示,本文選取了兩組圖片用于本文算法與其他方法的定性對比,從圖片中可以看出本文方法的檢測效果明顯優(yōu)于其他方法的檢測效果。在目標特別微小的情況下,本文方法相比其他方法檢測到的目標數(shù)量最多。由此表明本文方法對于小目標檢測有很大的改進。
圖10 本文方法與其他主流算法在TinyPerson數(shù)據(jù)集上的定性對比Fig.10 Qualitative comparison of proposed algorithm with other mainstream algorithms on TinyPerson dataset
3.5.1 基于Transformer的目標檢測
為了證明本文兩階段計算注意力模塊對于目標檢測的有效性,本文方法在PASCAL VOC2007 測試集上將與基準模型YOLOX 和增加Swin Transformer模塊后的YOLOX 進行對照實驗。如表5 所示,在增加了Swin Transformer 之后,這個模型對于目標檢測的性能有了提高,但是使用TCT 之后,目標檢測的性能得到了更大的提升。如表5第二行和第三行所示,增加了兩階段計算模塊之后,檢測的mAP相較于基準模型YOLOX 提升了2.6 個百分點,APS提升了6.4個百分點,APM提升了1.5 個百分點以及APL提升了2.3個百分點。從這些檢測精度上可以證明使用兩階段計算特征注意力可以有效增強全局自注意力機制的特征表達能力與信息交互能力。
表5 兩階段計算Transformer的消融實驗結(jié)果Table 5 Experimental results of ablation of two-stage calculation Transformer 單位:%
如表6 所示,本文在PASCAL VOC2007 測試集上對TCT中是否進行滑動窗口(shift_win)、窗口尺寸(M)以及多頭分組(k)進行消融實驗。從表6 的第一行和最后一行比較可以看出,使用滑動窗口進行跨窗口的連接計算使得檢測的效率得到了提高,mAP和APS都提高了1.1 個百分點,APL提高了1.2 個百分點。從表6的前三行可以看出,不同的窗口尺寸對于檢測效果也有很大的影響。當窗口較小時,雖然GFLOPs 減小了很多,但是檢測的準確度也下降了。當窗口較大時,相比8×8的窗口尺寸,其GFLOPs增大了很多,并且也損失了檢測的準確度。對于多頭分組的消融實驗可以看出,分組的多少對于計算量幾乎沒有影響。為了得到更優(yōu)的檢測效果,最終選擇了k=8為模型的分組數(shù)。
表6 本文方法閾值設置消融實驗結(jié)果Table 6 Ablation experimental results of proposed method for threshold setting
3.5.2 特征融合與精煉模塊消融實驗
為了證明本文提出的高效殘差連接塊的有效性,如表7 的第一行和第三行所示,在PASCAL VOC2007 測試集上同樣使用CSPLayer 的級聯(lián)操作條件下,使用本文高效殘差連接塊的檢測mAP比基準YOLOX 提升了2.9 個百分點,APS提升了5.3 個百分點以及APL提升了1.3個百分點。這證明了本文的高效殘差連接塊對于小目標檢測是有利的,它增加了空間細節(jié)特征信息和上下文語義特征信息,因此提高了小目標的檢測精確度。如表7第一行、第二行和第四行所示,在增加了特征融合與精煉模塊之后,對于目標的檢測精度也有很大的提升,在特征融合與精煉模塊中使用高效殘差連接塊,得到的檢測mAP、APS以及APL分別比使用現(xiàn)有殘差塊提高了2.9個百分點、1.9 個百分點和1.6 個百分點,比基準YOLOX 提高了3.9 個百分點、6.7 個百分點和3.2 個百分點。從表7的最后兩行可以看出,本文提出的兩個模塊對于目標檢測都是有利的。將這兩個模塊同時應用,檢測效果達到了最佳。使用一個特征融合與精煉模塊的檢測方法的檢測精度得到了提升,使用兩個特征融合與精煉模塊的檢測精度更優(yōu),mAP相比使用一個特征融合與精煉模塊方法提升了0.4個百分點,APS提升了0.7 個百分點,APL提升了1.9 個百分點。
表7 特征融合與精煉模塊消融實驗結(jié)果Table 7 Ablation experiment results of feature fusion and refinement module 單位:%
針對本文提出的兩個改進模塊,進行了消融實驗,從表8 中可以看出在PASCAL VOC2007 測試集上本文兩個模塊的檢測性能得到了顯著提升。本文方法使用兩階段計算注意力增強對小目標特征的關(guān)注度,在之后多尺度特征融合中采用特征融合與精煉模塊,提取更加精煉的深層次小目標細節(jié)特征和語義特征,檢測結(jié)果達到最佳。最終檢測mAP比基準模型提升了4.8 個百分點,APS提升了8.2 個百分點,APM提升了2.5 個百分點,以及APL提升了5.3 個百分點,本文兩個模塊都改進了小目標檢測效果。
圖11 是增加不同模塊的熱力圖可視化結(jié)果,圖中顏色越紅代表該區(qū)域越受到關(guān)注。從圖中可以看出增加兩階段計算轉(zhuǎn)換器提升了模型的檢測效果,對重要的特征信息進行加權(quán),抑制不重要的特征信息,增強主干網(wǎng)絡中小目標的特征提取能力。增加了特征融合與精煉模塊之后,整個網(wǎng)絡對于小目標的檢測變得更加精準和全面,在多尺度特征融合時,對深層特征信息使用逐元素相加和逐元素相乘結(jié)合的方式進行特征細化精煉,實驗證明這樣的檢測效果優(yōu)于按通道拼接操作。熱力圖的可視化再一次證明了本文方法的有效性。
圖11 各模塊熱力圖的可視化Fig.11 Visualization of heat map of each module
3.5.3 高性能評估實驗
如表9 所示,本文算法的FPS 達到了24.26,雖然不是最高的,但是也能達到實時的效果。參數(shù)量相較于使用Swin Transformer 減小了2.0×106,計算量減小了1.57 GFLOPs。由此可以證明TCT 相較于Swin Transformer 不僅減小了不必要參數(shù)的增加,也能進一步說明本文方法的檢測優(yōu)勢。使用特征融合與精煉模塊后FPS 得到了提升,相比基準YOLOX 提高了1.15幀,這表明了該模塊的運行速度優(yōu)勢明顯。
表9 本文方法所有模塊的性能評估實驗結(jié)果Table 9 Experimental results of performance evaluation for all modules of proposed method
為了提高小目標檢測的準確度,本文提出了兩階段計算Transformer 用于主干網(wǎng)絡中進行特征增強,結(jié)合不同尺度特征信息并自適應地調(diào)整空間細節(jié),以有效地保留容易丟失的小目標特征信息。在之后的多尺度特征融合中,提出了更加高效的特征融合與精煉模塊,使用高效殘差塊提取更加豐富的細節(jié)特征信息和上下文語義信息,然后對這些信息進行細化和精煉,提高小目標檢測的準確率。通過實驗結(jié)果可以得出本文算法在PASCAL VOC2007+2012數(shù)據(jù)集、COCO2017數(shù)據(jù)集及TinyPerson數(shù)據(jù)集上表現(xiàn)突出,對小目標的檢測性能也有了很大提升。未來將繼續(xù)探索復雜場景中小目標的檢測方法。