逄晨曦,李文輝
(吉林大學 計算機科學與技術學院,長春 130012)
目標檢測[1]在實際生活中應用廣泛,如交通領域[2]的車牌字符識別、無人駕駛[3]、交通標志識別[4]、障礙物檢測、腫瘤圖像檢測[5]、病變檢測、健康管理、指紋識別、人臉識別[6]等.傳統目標檢測算法主要采用HOG(histogram of oriented gradients)[7]和DPM(deformable part model)[8]提取特征.Viola等[9]首次使用滑動窗口檢測方法實現了實時人臉檢測.HOG特征描述器最初由Dalal等[10]提出,但HOG難以處理遮擋問題,并且DPM無法適應大旋轉,穩(wěn)定性差,過于依賴人工干預,識別率相對較低.
近年來,隨著深度學習技術的發(fā)展[11-13],目前用于圖像識別與分析研究的深度學習模型主要有卷積神經網絡(convolutional neural networks,CNN)[14]、深度置信網絡(deep belief network,DBN)[15]和堆棧自動編碼器(stacked auto-encoders,SAE)[16]等.卷積神經網絡在檢測精度和速度上優(yōu)于后兩種方法,性能更優(yōu),因此受到越來越多的關注.
Girshick[17]提出了Fast R-CNN(faster regions with CNN)探測器; Ren等[18]提出了更快速的區(qū)域卷積神經網絡探測器.從R-CNN到Faster R-CNN引入了RPN(region proposal network),雖然解決了Fast R-CNN的檢測速度緩慢,但在后續(xù)的檢測階段仍存在計算問題.Faster R-CNN是兩階段算法中的代表性算法,與單階段檢測方法相比,需要多次運行檢測和分類過程,速度較慢.
單階段檢測算法直接從網絡中提取特征對對象的分類和定位進行預測處理,代表性的算法有SSD(single shot multiBox detector)[19]和YOLO(you only look once)[20-21].SSD算法是一種通過直接預測目標的包圍盒坐標以及類別檢測目標的對象檢測算法,可通過不同分辨率卷積層的特征圖,檢測不同大小規(guī)格尺度的物體.與Faster R-CNN相比,YOLO未顯示區(qū)域提取的過程.在Faster R-CNN中,雖然區(qū)域建議網絡[22]和Faster R-CNN共享卷積層,但在模型訓練過程中,需要反復訓練RPN網絡和Faster R-CNN網絡.YOLO[20]由于只掃描一次,所以速度非???與先提取后分類的R-CNN系列的候選幀相比,YOLO只需要查找一次即可,同時預測每個區(qū)域的邊界框和概率,提高了檢測速度.但大部分的YOLOv1[20]網格不包含對象,僅提供了損失.沒有對象的網格所提供的梯度將遠大于包含對象的網格對梯度更新的貢獻,這將導致網格變得不穩(wěn)定.
與YOLOv1相比,YOLOv2[23]采用聯合訓練算法在檢測數據集和分類數據集上同時訓練目標檢測器,利用檢測數據集數據學習目標的準確位置,通過分類數據集的數據增加分類的類別數,提高魯棒性.YOLOv3[24]引入特征金字塔網絡(feature pyramid networks)[25]進行多尺度預測,并對YOLO9000進行改進,使用類似ResNet的基本分類網絡加上殘差結構Darknet-53.YOLOv3在測試過程中通過查看單一的整個網絡評價圖像預測,因此其預測使用圖像中的全局信息.與R-CNN需要的多個單一目標圖像不同,使得YOLOv3比R-CNN和Fast R-CNN更快.YOLOv4[26]提出了一種高效、功能強大的基于改進SOTA方法的目標檢測模型,它允許每個人使用小型GPU訓練目標探測器,驗證了其有效性.與CBN(cross-iteration batch normalization),PAN(path aggregation network)[27],SAM(spatial attention module)[28]等相比,YOLOv4算法在實時目標檢測算法中準確率最高,達到了準確率和速度的最佳平衡.
一般深度卷積神經網絡中存在池化層,在尺度變化過程中無法兼顧大目標和小目標,從而丟失很多有價值的信息,忽略了整體與部分之間的關聯.本文提出一種功能強大、效率高的基于CNN的目標檢測算法.該算法首先提出一種引入注意力機制的YOLO算法,并在特征提取網絡中加入通道注意力; 其次,通道注意力機制通過保留位置信息,增強特征表示,提高結構的非線性; 最后,使用新的損失函數,通過對損失函數的統一冪化,提高IoU目標的損失值和梯度自適應加權的Bbox回歸精度.實驗結果表明,基于YOLOv4模型采用注意力機制改進自適應空間特征融合(attention improved adaptive spatial feature fusion,AIASFF)算法與原始YOLOv4模型相比,改進模型具有更優(yōu)的檢測性能.
YOLOv4是基于YOLOv3改進的目標檢測算法.雖然在目標檢測方面沒有實質性的變化,但YOLOv4依然將速度和精度很好地結合在一起.經典的YOLOv4網絡主要由輸入層(Input)、主干網絡(Backbone)、特征金字塔(Neck)和預測層(Prediction)四部分組成.傳統的YOLOv4網絡模型如圖1所示.
圖1 傳統的YOLOv4網絡模型Fig.1 Traditional YOLOv4 network model
由圖1可見,輸入端主要用于預處理數據.采用Mosaic數據增強方法從原始圖像中生成樣本.通過該方法,將4張訓練圖片進行隨機縮放,然后隨機拼接并混合成新圖片,不僅豐富了數據集Image,而且在隨機縮放過程中加入了大量的小目標,使模型更加穩(wěn)健.同時,輸入端將數據傳送到骨干網.骨干網實際上融合了各種新方法.YOLOv4首先在YOLOv3使用的骨干網Darknet-53的基礎上,使用Darknet-53上的Reblock_body結構的跨階段部分Darknet(CSPDarknet)結構.與原始ResBlock相比,交叉階段部分網絡(cross stage partial network,CSP)[29]將輸入的特征圖按照通道進行裁剪,只將原始特征圖的一半輸入到殘差網絡進行前向傳播,另一半直接通過通道與殘差網絡的輸出結果進行串聯.然后將骨干網絡中的Leaky-ReLU激活函數改為Mish激活函數[30],從而將Darknet-53網絡結構修改為CSPDarknet-53.YOLOv4的骨干網絡Backbone采用CSPDarknet-53網絡結構,其優(yōu)點包括: 首先,增強了卷積神經網絡的學習能力,使其在量化的同時也能保持準確性; 其次,減少了計算開銷,降低了內存使用成本.在主干和預測之間有一個頸部部分,目的是更好地提取融合特征,提高模型性能.
為增強數據,YOLOv4不僅考慮了目標幀的重疊區(qū)域,而且相對于YOLOv3的損失函數考慮了中心點距離和長寬比.預測結束部分,采用CIOU_loss[31]的回歸方法,使得預測框的回歸速度和精度更高.
基于數據集VOC的目標檢測方法性能比較列于表1.由表1可見,基于回歸定位的目標檢測方法采用單個網絡完成對檢測框位置和目標分類的回歸,與其他單目標檢測方法相比,YOLOv4提高了10%的檢測速度,通過在數據集VOC2007中引入錨箱,也提高了準確性.
表1 基于數據集VOC的目標檢測方法性能比較
路徑聚合網絡(PANet)是通過促進信息的流動在網絡中傳遞效率的一種提議網絡.通過下層的定位增強以增強整個路徑上的特征,自底向上的傳播與傳統傳播相比縮短了底層與頂層特征之間的信息路徑,又使用了自適應特征池將特征層融合,使子網絡保留了更多的信息,從而減少了信息損失.如圖2所示,底層信息特征對目標識別有很大影響,但是逐步傳到頂層時會損失很多重要的定位信息,所以利用底層存在的精確定位信號增強特征金字塔,創(chuàng)建了自底向上的路徑增強.
圖2 路徑聚合網絡Fig.2 Path aggregation network
在目標檢測領域,空間注意力機制與檢測任務具有更高的相關性和更直接的作用方式,因此應用效果顯著[32].本文采用通道注意力的方法,將位置信息嵌入到通道注意力中,并將通道注意力分解為兩個一維特征編碼過程,分別沿兩個空間方向聚合特征,對空間的遠程依賴關系和精確的位置信息進行編碼.
空間注意力機制目的是確定目標位置.將特征圖的每個像素作為一個單元,被分配一個權重值.其中,關鍵部位被分配一個較大的權重,這樣模型的注意力更集中,權重文件是一個矩陣,矩陣維度與圖片尺寸相同.通道注意力機制確定目標類別,以特征圖為單位,聚焦圖像的某一部分,并給每個通道分配權值向量.
圖3 CA注意力模型Fig.3 CA attention model
本文算法使用的注意力模塊如圖3所示.輸入特征映射分別通過基于寬度和高度的全局池化,轉化為一對一維特征編碼,然后執(zhí)行Sigmoid激活操作生成最終的通道注意力特征映射.本文算法使用的注意力方法有效地平衡了位置和通道的關系.通過將二維全局池化操作分解為坐標信息嵌入和坐標注意力生成兩個一維編碼,本文方法比其他具有輕量級屬性的注意力方法效果更優(yōu).
坐標注意力模塊表示為
(1)
其中gh=σ(Fh(fh))和gw=σ(Fw(fw))分別為高度和寬度的Sigmoid激活函數,fh和fw分別為通過公式f=δ(F1([zh,zw]))得到的兩個卷積變換和,分別將和變換為具有相同通道數的張量,自變量zh和zw分別為高度和寬度上的通道輸出.信息嵌入過程中一維特征編碼公式為
為評價模型預測值與真值不一致的程度,原YOLOv4對象檢測模型引入了一個損失函數,考慮了邊界框寬高比的尺度信息,從重疊面積、中心點距離和長寬比3個角度進行衡量,回歸損失函數為
(5)
其中:
α是一個正的權衡參數,v衡量長寬比的一致性,wgt和hgt是真實幀的寬度和高度,w和h是預測幀的寬度和高度;b和bgt分別表示預測幀和目標幀的中心點;ρ是歐氏距離;c是覆蓋兩個盒子的最小閉盒的對角線長度.
本文使用新的Loss-PIoU回歸損失函數:
(6)
圖4 第三級的AIASFFFig.4 Level 3 AIASFF
在原來的CIoU及懲罰項表達式中進行了損失的統一冪化,有助于提高IoU目標的損失和梯度自適應加權的Bbox回歸精度,為小數據集和噪聲Box提供更強的魯棒性.
目標檢測中使用金字塔特征解決目標尺度變化.本文使用一種新的注意力機制改進的AIASFF策略進行金字塔特征融合,解決不同特征尺度之間的不一致性.通過保存沿另一個空間方向的精確位置信息,從而提高注意力生成特征的尺度不變性,并且?guī)缀鯖]有增加復雜度.其核心思想是通過使用注意力模塊學習自適應地調整融合各尺度特征的空間權重減少信息的丟失.以圖3中的AIASFF-3為例,圖4中的綠框描述了如何進行特征融合,其中x1,x2,x3分別為第1級、第2級、第3級的特征,并將不同層的特征乘以權重參數α3,β3,γ3,p3,q3和r3,相加得到新的融合特征AIASFF-3,即特征融合公式為
(7)
由于采用添加的方法,需要添加的1~3層的特征尺寸相同,通道數也應相同.需要對不同層之間的特征進行上采樣或下采樣,進行通道調整為后續(xù)融合做準備.
對于權重參數α,β和γ,通過對縮放后的特征圖進行1×1卷積得到,并且參數α,β和γ通過Softmax級聯,使其在[0,1]內,和為1:
(8)
對于權重參數p,q,r,與α,β和γ相同,使通道匹配.但p,q和r都通過了CA注意力模型,重新增強了被忽略的信息特征.AIASFF改進后的YOLOv4模型結構如圖5所示.
圖5 改進的YOLOv4模型結構Fig.5 Improved YOLOv4 model structure
用指數滑動平均的訓練方法對模型的參數做平均,即使用梯度歷史加權平均值平滑掉難樣本或者誤差樣本導致的梯度抖動,使訓練過程更平滑穩(wěn)定,以提高測試指標并增加模型的魯棒性.在訓練模型時,使用指數滑動平均保持訓練參數移動的穩(wěn)定,促進訓練以達到更好的訓練結果.
使用Loss-PIoU代替原IoU,增加了IoU目標的損失和梯度,進而提高了目標框的回歸精度.經驗表明,Loss-PIoU損失函數可以很容易地用于改進檢測器的效果.盡管YOLO的檢測速度有了很大提高,但其定位精度對于一些多尺度的目標有所下降,因此本文開發(fā)了一種功能強大、效率高的基于CNN的目標檢測算法.主要體現在兩方面: 以YOLOv4[27]作為基線,通過加入AIASFF,增加其提取和過濾關鍵特征的能力,解決目標檢測中因目標尺度變化的影響使精度降低的問題; 更改原損失函數,在原IoU及懲罰項表達式中進行了損失的統一冪化,有助于提高IoU目標的損失和梯度自適應加權的Bbox回歸精度,為小目標數據集提供更強的魯棒性.
為驗證本文算法的有效性,進行多次實驗.實驗平臺環(huán)境使用Ubuntu 18.04操作系統,選用Pytorch 1.1.0組合編程環(huán)境,編程語言為Python 3.6,加速環(huán)境為CUDA 11.0,使用NVIDIA GeForce RTX 2080 Ti顯卡進行運算,CPU為AMD Ryzen Threadripper 1900X8-Core Processor,內存為31.3 GB.
數據集MS COCO是一個常用的圖片豐富且數量充足的目標檢測數據集.該數據集以場景理解為目標,主要是從復雜的日常場景中截取部分圖片,圖像中的目標通過精確分割進行標定.該數據集包括超過30萬張的圖像,標注過的圖像超過20萬張.存在150萬個對象實例,80個目標類別,91個材料類別,以及對25萬人進行了關鍵點標注.
本文利用數據集MS COCO進行實驗,驗證基于YOLOv4的改進小目標檢測算法的性能.為進一步提高算法模型的分類能力,防止由于樣本數量過少而出現的過擬合現象,本文在實驗過程中利用數據增強,通過對數據集中的表情圖像進行旋轉、水平翻轉和垂直翻轉擴充數據集,最終數據集共117 266張圖片.
本文采用平均準確率均值(mean average precision,mAP)、平均準確率(average precision,AP)、精確率(Precison)和召回率(Recall)作為目標檢測中的評價指標.精確率表示預測為正的樣本中真正正樣本所占的比例,召回率表示樣本中的正樣本被預測正確的比例.計算公式分別為
(9)
(10)
其中TP(true positives)表示被正確分類的正樣本數量,TN(true negatives)表示被正確分類的負樣本數量,FP(false positives)表示被錯誤分類為正樣本的負樣本數量,FN(false negatives)表示被錯誤分類為負樣本的正樣本數量.精確率隨召回率的變化過程構成了PR曲線,平均準確率均值mAP即為該曲線與坐標圍成的面積,計算公式為
(11)
將本文算法在數據集MS COCO上進行實驗,并與Faster R-CNN,YOLOv2,YOLOv3和原始YOLOv4算法進行對比,實驗結果列于表2.改進的AIASFF-YOLOv4模型是對YOLOv4算法進行的改進,基于YOLOv4的結構設計了AIASFF模塊,并加入了新的損失函數以及指數滑動平均修改自適應空間特征融合網絡中殘差連接兩層特征映射直接線性融合的方法.
表2 不同算法在數據集MS COCO上的評估結果
由表2可見,改進的YOLOv4算法的檢測精度明顯優(yōu)于Faster R-CNN算法,驗證了注意力改進的自適應空間特征融合能有效提高大目標的檢測精度; 本文算法精度高于AIASFF+YOLOv4算法,尤其在小目標上有所提升,驗證了Loss-PIoU對于提升小目標的檢測精度有效; 本文算法是在YOLOv4算法的基礎上進行改進,檢測精度達到41.5%,在目標的檢測精度上相比基準算法提高了1.1%.實驗結果表明,本文算法相比于基準算法YOLOv4檢測效率更高.
圖6為本文算法與YOLOv4算法在數據集MS COCO上對部分數據的測試結果.由圖6可見: 兩種算法在單一目標上的檢測效果差異較小,無錯檢和漏檢現象,但如果同一張圖片中存在多種尺寸目標時,本文算法相比于YOLOv4算法在漏檢問題上有顯著改善.對于圖中對應目標的尺寸,多類目標的檢測效果差異較大是由于目標之間的尺寸形狀特征差異較大,目標易受背景區(qū)域中相似物體干擾,因此多類目標的檢測效果有差異.但綜合對比可見,本文算法在檢測精度及漏檢率上相比于其他算法均有明顯改善.因此,本文算法比基準算法在多尺寸多目標的檢測上更具優(yōu)勢.本文算法在尺度變化過程中,在不影響小目標識別的前提下提高了中、大目標的精度.
圖6 不同算法效果對比Fig.6 Comparison of effects of different algorithms
此外,與原始YOLOv4模型相比,改進的AIASFF-YOLOv4模型在數據集MS COCO上目標檢測的檢測精度分別提高了2.4%和5.1%.與YOLOv3模型相比,改進的AIASFF-YOLOv4模型在檢測準確率和召回率上均有較大提升.
綜上所述,針對不同大小目標的檢測任務,本文提出了一種基于YOLOv4的空間特征融合目標檢測算法.該算法在YOLOv4模型的基礎上,利用注意力機制對特征圖進行改進,并加入多尺度特征融合、指數滑動平均及新的損失函數,進一步提高了大目標的檢測精度.為驗證算法的有效性,本文充分利用MS COCO測試集,并與YOLOv4模型和YOLOv3模型進行比較,得出如下結論:
1) 改進的YOLOv4算法能在目標間存在遮擋的情況下實現對空間目標的準確識別;
2) 在相同條件下,改進的YOLOv4模型算法在識別弱目標方面優(yōu)于YOLOv3和YOLOv4算法; 在目標尺寸發(fā)生變化的情況下,改進的YOLOv4算法和原模型算法不能完全準確地識別圖像中的所有目標;
3) 在數據集MS COCO上,與YOLOv4算法相比,改進AIASFF-YOLOv4算法的mAP提高了1.1%,AP50提高了2.4%,AP75提高了5.1%.