歐陽繼紅, 王梓明, 劉思光
(1. 吉林大學 計算機科學與技術學院, 長春 130012;2. 吉林大學 符號計算與知識工程教育部重點實驗室, 長春 130012)
目標檢測任務旨在對圖像或視頻中的目標物體進行定位并分類, 應用場景廣泛. 早期的目標檢測方法主要使用人工設計的特征(如HOG[1]), 具有成本高、 精度低、 跨領域適應性差等缺點. AlexNet[2]使用卷積神經(jīng)網(wǎng)絡學習的方式完成視覺特征的定義及提取, 有效規(guī)避了傳統(tǒng)特征提取方法的不足. 此后, 基于卷積神經(jīng)網(wǎng)絡完成目標檢測成為主流.
近年來, 主流的目標檢測器主要分為兩類: 兩階段檢測器和一階段檢測器. 兩階段檢測器以類R-CNN模型[3-5]為主, 雖然在精度上逐步提升, 但速度很難滿足實時場景需要. 為進一步提升目標檢測模型的速度, 一階段檢測器會直接預測圖像像素及其邊界框屬性. 一階段檢測器主要由骨干網(wǎng)絡(特征提取)、 頸部網(wǎng)絡(特征融合)和檢測頭(檢測回歸)三部分組成. 頸部網(wǎng)絡從淺層網(wǎng)絡提取出的特征圖分辨率較高, 空間幾何信息表征能力強, 但感受野較小, 語義信息表征能力較弱; 而深層網(wǎng)絡特征圖擁有更大感受野和更豐富的語義信息. 因此, 有效地表示和處理多尺度特征是提升目標檢測模型檢測效果的主要方法之一. 早期的SSD模型[6]和基于GoogleNet[7]設計的YOLO模型[8]直接根據(jù)從骨干網(wǎng)絡中提取的特征進行預測; YOLO_v3模型[9]使用一種由深層到淺層的特征金字塔網(wǎng)絡(FPN)[10]組合多尺度特征對YOLO_v2模型[11]進行了改進. Bochkovskiy等[12]提出了YOLO_v4模型使用的PANet[13]在FPN結構基礎上增加了一個額外的由淺層到深層的路徑聚合網(wǎng)絡豐富模型特征, 該模型還使用一些只增加訓練時間的方法提高模型效果.
YOLO_v4模型使用頸部網(wǎng)絡收集并處理來自骨干網(wǎng)絡的多分辨率特征圖, 處理后信息傳遞給后續(xù)網(wǎng)絡得出最終的檢測結果. 在該過程中, 不同特征的融合效果會較大程度地影響模型性能. YOLO_v4模型的頸部網(wǎng)絡使用串行方式進行信息融合, 使先進入融合過程的特征會在后續(xù)操作中被逐漸稀釋, 在一定程度上限制了后續(xù)網(wǎng)絡的性能發(fā)揮. 為解決該問題, 本文基于YOLO_v4模型設計了XYOLO_v4模型, 通過引入中間層并改變特征連接方式重構其頸部網(wǎng)絡, 豐富全局信息. 同時, 引入加權融合系數(shù)將原特征之間的直接拼接融合變?yōu)榧訖嗳诤? 強化YOLO_v4模型對多尺度特征的利用. 實驗結果表明, 通過優(yōu)化網(wǎng)絡架構和融合方式可使原模型有更高的檢測精度.
YOLO_v4模型由三部分組成: 用于特征提取的骨干網(wǎng)絡(Backbone), 用于特征融合的頸部網(wǎng)絡(Neck), 用于分類檢測回歸的頭部網(wǎng)絡(Head). 骨干網(wǎng)絡采用由Darknet53和多層殘差塊(Resblock_body)構成的Csp-DarkNet53, 每個殘差塊如圖1所示. 殘差塊是將特征向量經(jīng)過卷積后經(jīng)由殘差邊與該向量多次卷積后的結果相連, 以解決當網(wǎng)絡層數(shù)較深時出現(xiàn)的梯度消失或爆炸問題. 骨干網(wǎng)絡提取出圖像特征經(jīng)由特征金字塔SPP-block[14]后送入頸部網(wǎng)絡進行特征融合.
圖1 殘差塊結構
頸部網(wǎng)絡采用路徑聚合網(wǎng)絡PANet, 將從主干網(wǎng)絡提取出的不同尺度特征進行一次由深到淺及一次由淺到深融合后送入頭部網(wǎng)絡進行檢測. 模型整體結構如圖2所示.
圖2 YOLO_v4網(wǎng)絡架構
在YOLO_v4頸部網(wǎng)絡中, 先進入融合過程的特征會在后續(xù)操作中被逐漸稀釋, 從而影響模型性能. 為解決該問題, 本文提出將頸部網(wǎng)絡結構X-FPN模塊代替原網(wǎng)絡PANet結構, 通過引入中間層增加信息流動通道, 從而豐富模型的全局信息. 同時引入可學習參數(shù)ω, 控制融合比例, 強化網(wǎng)絡對特征信息的利用. 為說明本文提出的特征融合方法, 將各層級的殘差塊從上到下依次標記為P1,P2,P3,P4,P5, 其中P3,P4的輸出直接參與頸部網(wǎng)絡融合, P5經(jīng)過SPP模塊處理后作為SPP_Output輸入頸部網(wǎng)絡. 圖3為本文提出的XYOLO_v4網(wǎng)絡結構.
圖3 本文提出的XYOLO_v4網(wǎng)絡結構
圖4為目標檢測任務中幾種常見的特征融合結構, 其中FPN是最常見的方法, 如圖4(A)所示, 該網(wǎng)絡只包含由深到淺的信息流, 限制特征的融合; PANet則將一條路徑中的信息流方向改為由淺到深, 在一定程度上解決了FPN的問題, 如圖4(B)所示; 圖4(C)中的NAS-FPN[15]則是通過自動搜索的方式得到對于訓練所用數(shù)據(jù)集最優(yōu)的網(wǎng)絡架構, 融合效果雖好但時間成本較高, 且對于不同的數(shù)據(jù)集網(wǎng)絡結構并不通用. 綜合考慮, 本文選擇PANet作為基礎進行網(wǎng)絡結構的改進.
圖4 各融合模塊結構
為結合頸部網(wǎng)絡輸入的特點, 有針對性地優(yōu)化特征融合策略, 本文對PANet進行如下改進: 首先, 為在豐富特征融合方式的同時不增加模型整體計算量, 在特征融合時采用加權按位相加(Add)操作; 其次, 在特征融合網(wǎng)絡的中間位置添加一個過渡層TL(transition layer), 用以將網(wǎng)絡左側自下而上信息流中產(chǎn)生的不同尺度特征進行融合, 而后送入右側自上而下的信息流中參與運算, 豐富全局信息. 其結構如圖3中頸部網(wǎng)絡X-FPN所示. 該網(wǎng)絡首先將骨干網(wǎng)絡層中P5部分的輸出經(jīng)過SPP結構后作為頸部網(wǎng)絡中的SPP_Output, 然后將其輸出經(jīng)卷積和上采樣后, 與P4部分的輸出加權按位相加后得到Add1的輸出. Add2的輸出則為Add1輸出與P3部分輸出按相同操作運算得到. 最后, 將SPP_Output在經(jīng)過卷積接上采樣操作后與Add1的輸出以及下采樣后的Add2輸出共同送入TL層, 目的是使TL層的輸入擁有相同的通道數(shù)及特征圖分辨率, 方便后續(xù)操作.
TL層會將三部分輸入加權按位相加, 為后續(xù)操作提供一個不同尺度特征信息的集合體. 其輸出會經(jīng)由卷積加上采樣或下采樣操作, 使其被分別調整到與Add1,Add2,SPP_Output輸出特征圖相同的尺寸, 而后送入由Add3,Add4,Add5組成的右側網(wǎng)絡對應位置. 右側網(wǎng)絡的操作流程與左側類似, 只是將卷積加上采樣操作替換為下采樣. 該網(wǎng)絡最終將Add3,Add4,Add5的輸出送入不同的YOLO檢測頭得出最終檢測結果.
傳統(tǒng)的特征融合通常只是簡單的特征圖疊加或相加, 不對同時輸入的特征圖進行區(qū)分. 但不同輸入特征圖具有不同的分辨率, 高分辨率特征圖語義信息更豐富, 對小目標的檢測更友好; 而低分辨率特征圖位置信息更豐富, 適合大目標的檢測. 因此, 在檢測不同大小目標時它們對融合的新特征圖的貢獻也不相同, 而YOLO_v4網(wǎng)絡通過將提取的多層級特征進行直接拼接后作為YOLO檢測頭的輸入. 為優(yōu)化深淺層特征信息融合方式, 需設計一種對不同輸入特征有區(qū)分的融合方式, 本文通過網(wǎng)絡學習的方式引入權重系數(shù)進行特征按位相加融合, 以減少信息間的相互污染, 并通過快速歸一化方法計算特征權重, 用數(shù)學公式表示為
(1)
其中系數(shù)ω作為權重計算中多尺度特征的平衡因子, 通過網(wǎng)絡訓練進行自適應學習,I表示對應的輸入特征圖. 經(jīng)過加權計算的融合特征更有針對性, 同時不增加整體計算量.
基于提出的優(yōu)化特征融合計算方法, 本文提出的中間特征層TL計算公式為
(2)
TL層會將自下而上信息流中產(chǎn)生的不同尺度特征SPP_Output,Add1,Add2進行加權融合, 其中UpSampling與DownSampling分別對應上采樣和下采樣操作, Conv為卷積操作, 為提高計算效率, 將融合結果進行了進一步卷積計算. 得到的TL層會參與圖3中頸部網(wǎng)絡右側的加權融合, 以Add3為例計算, 用公式可表示為
(3)
本文使用目前目標檢測任務中常用的數(shù)據(jù)集VOC-2007和VOC-2012作為實驗數(shù)據(jù)集. 其中數(shù)據(jù)集VOC-2007包含訓練集5 011張圖片, 測試集4 952張圖片; 數(shù)據(jù)集VOC-2012為VOC-2007的加強版, 共11 530張圖片20個類別. 對于數(shù)據(jù)較少的圖像類別, 本文采用隨機添加高斯噪聲、 水平翻轉、 Mosic數(shù)據(jù)增強等方法將數(shù)據(jù)擴充至平均每類1 100張圖片.
實驗環(huán)境: 系統(tǒng)為Windows10, CPU為英特爾酷睿I7-7700k, 計算機內存為16 GB, GPU為英偉達GTX1080. 采取從頭訓練的方式, 每個網(wǎng)絡訓練迭代300次, 圖像的輸入分辨率為416×416, 初始學習率為0.000 1. 為提高訓練速率, 前150次迭代后會將訓練凍結保留參數(shù), 再進行剩余部分訓練, 當損失保持穩(wěn)定時提前結束訓練.
在檢測頭檢測物體時采用IoU作為預測框保留條件, IoU為真實框與預測框交集與并集的比值, 即若比值大于設定值則認為框中存在物體. 同時, 本文采用mAP作為模型檢測結果的評價指標, mAP數(shù)值越大說明檢測效果越好. mAP表示各類物體檢測結果AP的平均值, AP是以預測的精確率(Precision)為坐標縱軸, 以反映數(shù)據(jù)集中被檢測出目標的數(shù)據(jù)占全部數(shù)據(jù)比例的召回率(Recall)為坐標橫軸, 所圍R-P曲線進行平滑處理后與橫坐標軸所圍面積. 其計算公式表示為
(4)
精確率與召回率表示為
(5)
(6)
其中: TP表示檢測樣本被分為正樣本, 并且分類正確; FP表示檢測樣本被分為正樣本, 并且分類錯誤; FN表示檢測樣本被分為負樣本, 并且分類錯誤.
本文在數(shù)據(jù)集VOC-2007上進行整體模型對比實驗, 采用如下對比模型: 一階段模型檢測效果較好的YOLO_v3[16-17], 作為基線模型的YOLO_v4以及輸入圖像大小為300×300和512×512的SSD算法, 其中SSD300精度與同時期的兩階段檢測器相似, 但速度更快, SSD512檢測效果與YOLO_v4相似. 實驗結果列于表1. 模型尺寸為圖片輸入大小, 在同一IoU(IoU>0.5)條件下比較模型的mAP.
表1 不同模型的平均精度
由表1可見, YOLO_v4模型相對于YOLO_v3模型在mAP上有12.9%的提升, 表明了特征融合的必要性. 而XYOLO_v4模型相對于YOLO_v4有1.2%的提升, 這主要是因為通過改變頸部網(wǎng)絡結構豐富了全局信息, 表明了本文模型的有效性.
為進一步考察本文模型在各類別上的檢測效果, 本文將數(shù)據(jù)集VOC2007與數(shù)據(jù)集VOC2012合并進行對比實驗. 選擇當IoU>0.5時認為候選框包含目標物體, 結果列于表2. 由表2可見, XYOLO_v4模型在各類別上的精度較其他算法均有提升, 在其他模型效果不好的類別, 如船、 瓶子、 椅子、 餐桌、 盆栽植物、 電視等檢測效果提升明顯, 這是因為深淺層特征在檢測不同大小物體時有不同的效果, 本文通過特征加權融合的方式在檢測時放大對其有利特征所占比例.
表2 各模型不同類別的平均精度
為驗證本文X-FPN模塊的效果, 進行如下實驗: 采用CspDarknet53和相同參數(shù)設置下對FPN,PANet,NAS-FPN等頸部網(wǎng)絡模塊與X-FPN模塊進行比較, 實驗數(shù)據(jù)為整體數(shù)據(jù)集中(VOC-2007+VOC-2012)所有的車輛圖片, 結果列于表3. 由表3可見, 傳統(tǒng)FPN只進行單向融合, 精度較低的同時參數(shù)量也較大; 而原網(wǎng)絡使用的PANet執(zhí)行自上而下和自下而上的雙向特征融合, 精度提升的同時參數(shù)量也相應增加; 隨機搜索的NAS-FPN網(wǎng)絡雖然參數(shù)量較小但精度有所下降; 而本文的X-FPN模塊相比其他融合方法在精度上有提高的同時具有較小的參數(shù)量.
表3 不同特征融合模塊性能對比
綜上所述, 針對YOLO_v4模型頸部網(wǎng)絡特征串行連接導致特征被稀釋影響模型性能的問題, 本文根據(jù)其骨干網(wǎng)絡特征提取的特點, 結合加權處理優(yōu)化頸部網(wǎng)絡特征融合, 并在頸部網(wǎng)絡添加中間層用于融合過渡, 實現(xiàn)特征跨尺度連接, 豐富全局信息. 實驗結果表明, 本文XYOLO_v4模型能有效實現(xiàn)多尺度特征加權融合.