厲振坤,付蕓
(長春理工大學 光電工程學院,長春 130022)
目標檢測的研究一直以來都是CV 領域中最基本、最具有挑戰性的研究課題之一。 旨在通過確定目標在圖像中的位置以及分類,從而達到視覺感知的效果。 特別是近年來,隨著互聯網技術和人工智能技術的發展,硬件設備的升級更新,以及自動駕駛、人臉檢測、視頻監控等需求不斷多樣化和豐富化,吸引越來越多的研究者和研究機構投入到目標檢測的研究熱潮中。在城市人口不斷增加、交通擁堵、安全問題日益嚴重的今天,城市公共場所的治理已經備受關注,實時監控系統的完善可以有效地改善城市公共治理問題。
早期的目標檢測在探測感興趣對象時一般經過預處理、滑動窗口、特征提取、特征選擇、特征分類、事后處理、輸出操作等6 個過程。然而,傳統目標檢測算法有很多缺陷。 一方面,由于物體的大小和縱橫比不同,且照片中物體的位置不確定,就需要很多尺度的滑動窗口來搜索整個圖像。因此就會產生很多不必要的滑動窗口。 再加上會產生很難確定數量的冗余候選框,計算量也會大大增加。另一方面,特征提取算法經過人為設計,很難成為一種既能描述各種對象又具有較高通用性的完美算法。
隨著科技的發展,算力不斷提升,又因卷積神經網絡的出現,基于深度學習的計算機視覺處理方法得到越來越廣泛的應用。 其中,基于深度學習的目標檢測方法是通過構建深層神經網絡模型,經過學習不斷優化網絡參數,從訓練集中提取特征信息,從而完成目標檢測的任務。目前,許多深度學習雖然相比于傳統算法,算力上有很大程度的提升,但在實際應用場景中,龐大且復雜的深層神經網絡依舊難以應對移動端移植的問題。 在自動駕駛、邊緣穿戴等實際任務中,能夠同時滿足精度高、速度快和硬件要求低的網絡在市場中備受青睞。 因此,使用各種方法對深度學習模型進行壓縮和加速,降低模型的參數量和計算量,使其能夠應用于存儲和計算資源有限的場景中,一直是研究人員努力探索的目標。
有人嘗試將緊湊型網絡應用于目標檢測任務的深層神經網絡中。 然而,由于這種網絡的參數量低,其特殊的結構難以與其他的壓縮和加速方法聯合使用,且泛化能力較差,不適合作為預訓練模型幫助訓練其他模型,因而無法滿足目標檢測任務所需的精度和泛化性的要求。為了解決這些問題,本文開展了相關的研究。針對YOLOv5 網絡架構,首先,采用ShuffleNetv2[1]作為主干網絡,ShuffleNetv2 是一種在ShuffleNetv1[2]及MobileNetv2[3]基礎上通過分析兩者的缺陷并進行改進的輕量化網絡,具有精度高、速度快的優點[4]。相比于CSPDarkNet53,該網絡具有極小的參數量。其次,添加Stem 模塊,確保較強的特征表達能力,且能夠減少大量的參數。 還使用coordinate attention 加強對重要信息的聚焦。 再次,針對改進后的網絡架構以及VOC2007 數據集檢測任務中類別的互斥性,使用二元交叉熵損失函數。在保證精度的前提下,本文優化了YOLOv5網絡結構的計算量和參數量,得到了高性能輕量化目標檢測模型。最后,在PASCAL VOC2007 數據集上進行了實驗。
YOLO 是Redmon 等人[5]提出的一種端對端實時對象檢測算法,它使用卷積神經網絡來執行圖像的特征提取、對象分類與定位,具有高效的優點,但在精度方面存在欠缺。YOLOv2 算法利用K-means 聚類預處理先驗框的大小,將先驗框聚類為長寬不同的9 類,以檢測大小尺度不同的目標,從而彌補了YOLO 精度方面的缺陷。盡管如此,YOLOv2 沒有關注不同尺寸圖像的訓練問題,在小目標檢測中效果不佳。在后來的研究中,YOLOv3 的出現,在YOLOv2 的基礎上,使用特征金字塔網絡以改善檢測性能,尤其是在小目標檢測中提升顯著。不過,YOLOv3 在檢測復雜特征的物體時性能仍然有待提升。在YOLOv3的基礎上,從數據處理、主干網絡、網絡訓練、激活函數、損失函數等各個方面進行了不同程度的優化。YOLOv4 算法用于林火檢測中,使模型的性能得到了提升。YOLOv5 網絡開源架構使得YOLO 系列目標在計算機視覺應用上更進一步[6-7]。 YOLOv5 在Backbone 上采用了CSPDarknet53、Mish 激活函數和Dropblock,在Neck 中采用了SPP 結構等。同時,借鑒了CutMix[8]方法在輸入端采用了mosaic 數據增強,有效解決了模型訓練中最頭疼的“小目標問題”。YOLOv5 的提出推動了YOLO 模型的輕量化和精準化的發展。
近年來,很多學者根據YOLO 的網絡特點對其進行了有針對性的改進,以利于YOLO 系列網絡在各個領域中的應用。彭玉青等人[9]對YOLO網絡的層數和參數進行調整,基于空間金字塔池化方法對圖像進行多尺度輸入。深度卷積網絡在進行特征提取時,不同層次的特征圖所包含信息的側重不同[10],Kim 等人[11]對YOLO-V3進行改進,采用空間金字塔池化方法,并引入五個不同尺度的特征圖加強網絡提取特征的能力。Li 等人[12]使用四個檢測層以提高YOLO-V3對小目標的檢測性能。He 等人[13]增加了另一個快捷連接,在兩個“剩余單元”之間連接兩個CBL,以提高信息傳輸特征提取網絡的性能。
YOLOv5 模型在目標檢測領域取得了非常好的效果,然而其參數量有待進一步優化。 本文的方法使用較少的模型參數量和計算量,提高了模型的檢測速度。
(1)采用ShuffleNetv2 替換YOLOv5 原有的CSPDarkNet53。
(2)加入Stem Block,確保特征提取網絡擁有較強的特征表達能力,以彌補更換特征提取網絡后丟失的精度,且該模塊只占據很小的參數量。
(3)在主干網絡的末端添加CA(Coordinate Attention),雖然模塊有一定的參數量,但整體上比YOLOv5 仍減少了90% 的參數量,且提升了精度。
(4)使用二元交叉熵損失函數,針對數據集進行設計,利用類別間互斥性提升訓練效果。改進后的模型架構如表1 所示。
表1 改進模型的提取網絡結構
ShuffleNetV1 結構中引入了“通道隨機播放”操作,可以使用不同信道的通信。同時,還采用瓶狀結構和逐點群卷積的技術,以提高準確性。
對于輕型級模型來說,逐點群卷積與瓶頸狀結構增加了內存訪問的成本(Memory Access Cost,MAC),與G1 和G2 相違背,這一成本大大增加了輕型網絡的負擔。并且,group 的過多使用也違反了G3。同樣,shortcut connection 中element-wise add操作也違反了G4。所以,本文要解決的問題是,如何在不密集卷積和分組過多的前提下,還可以保持大量的且同樣寬的信道。
ShuffleNetV2 的出現,針對ShuffleNetV1 的問題做出了改進,如圖1(c)所示,在每個單元的開始,c 特征通道會輸出兩個分支(ShuffleNetV2 中對channels 分成兩半)。 根據G3,group 不能過多,所以,其中一個分支不改變,由三個卷積組成另一個分支,它們具有相同的輸入和輸出通道以滿足G1。 為了滿足G2,兩個1×1 卷積由組卷積改變為普通的卷積操作。經過卷積操作將兩個分支連接起來,而并非相加(G4)。所以,此時通道數不變(G1)。然后,再使用“channels shuffle”操作來實現兩個分支之間的信息通信,這里使用的“channels shuffle”與ShuffleNetV1 中使用的操作是相同的。此時,不再使用ShuffleNet v1 中的“Add”(累加)操作。由于對空間下采樣單元的修改(移除通道分離操作符),輸出的通道量相比原來增加了一倍,如圖1(d)。圖1(c)、圖1(d)的構建塊與由此產生的網絡就是ShuffleNet V2。因此可以得出結論,它遵循了所有的指導原則,該體系結構的設計也是高效的。
圖1 ShuffleNetV2 結構
Stemblock 結構是PeleeNet 中用于下采樣的方法。 在模型中添加Stemblock,使其擁有很強的特征表達能力。其結構如圖2 所示。
在該結構中,首先,對輸入特征圖進行卷積操作并改變其通道數,此時卷積核大小為3×3。其次,特征圖通過網絡結構的兩個分支同樣分為了兩個部分。其中,一個分支的特征圖會通過最大池化下采樣的操作,而特征圖的另一部分會先進行1×1 卷積,此時通道數只有原來的1/2,接著進行3×3 的卷積。接著,再將兩個分支的輸出的特征圖進行拼接,最后,使用1×1 卷積操作還原通道數量。與原始卷積運算相比,Stemblock結構的優勢是在減少參數量的同時,又更好地保留了語義信息,最大可能地減少了信息的丟失。
這種新的注意力機制可以讓網絡使用很小的計算成本,將位置信息嵌入到通道注意力中,并參與更大的區域信息計算。所以可以先將通道注意力分為兩個并行的特征編碼分支,目的是使注意力圖包含整個的空間信息,由此減輕2D 全局池化所引起的位置丟失。簡單來說,就是將水平與垂直方向的兩個輸入特征通過兩個一維的全局池化操作,聚合成兩個獨立的擁有方向感知的特征圖。這兩個特征圖被嵌入了特定的方向信息,還被編碼成兩個注意力圖,所以,每個由此生成的注意力圖都很好地保存了位置信息。 為了能更好地強調感興趣的信息,這里將兩個注意力映射經過乘法應用到輸入的特征映射中。 這種操作能夠區分空間方向,同時生成坐標感知注意力圖,因此,注意力方法也稱為坐標注意力,如圖3 所示。
圖3 注意力機制原理圖
圖4 使用Labellmg 進行數據集的標注
注意力機制將輸入特征與兩個單一方向的垂直和水平識別特征相結合。兩個具有嵌入式方向特定信息的特征映射分別被編碼為兩個內存映射,每個內存映射捕獲輸入空間方向的特征映射的遠程依賴性。 因此,位置信息可以存儲在生成的注意映射中。 然后,通過乘法將兩個注意力映射應用于輸入特征映射以強調興趣的表示。
坐標注意力不僅可以獲取位置敏感信息和方向感知,還能獲取跨通道信息,所以能夠很好地獲取感興趣的對象和信息。 同時,由于該方法具有輕量和靈活的特點,可以隨意地插入到移動網絡。最后,作為預訓練模型,協調注意力可以為移動網絡的下游任務帶來顯著的性能提升,特別是對于那些密集預測的任務。
本文將該注意力機制模塊用在改進后目標檢測網絡的特征提取網絡的末端,目的是加強注意力的聚焦程度,從而彌補替換特征提取網絡所引起的提取能力的降低。
在YOLOv5 中,原先采用的是BCEWithLogitsLoss,其將Sigmoid 添加到loss 函數中。 Sigmoid概率和不為1,需要將sigmoid 函數應用于每個原始的輸出值,輸出預測將是那些能夠超過概率閾值的類,因此,同一目標可能會劃為多個類別,這是考慮到自然場景下同一個目標可能屬于多個類別。
然而,在VOC2007 數據集中,所有的類別都是互斥的,不存在同一個目標具有多個類別的屬性。因此,使用二元交叉熵損失函數,該損失函數同時使用了LogSoftmax 和NLLLoss。 關于LogSoftmax,每個元素都會在0 到1 的范圍內,元素加起來就是1。這樣就可以理解為概率分布,其輸入數字越大,概率越大。 它確保所有的輸出概率之和等于1(或接近1)。在處理流程中,對輸入數據先做log_softmax,再過NLLLoss。交叉熵公式如下:
為了避免測試數據因實驗環境的不同而發生變化,本文中所有測試均在相同的硬件和軟件環境下進行。硬件環境配置參數如表2 所示,軟件環境配置如表3 所示。
表2 硬件環境配置
表3 軟件環境配置
為了滿足實驗要求,本文使用VOC2007 數據集進行訓練,VOC 數據集有20 類,針對監控系統下實時檢測類的數量可以很好的滿足,由于本模型注重對車輛和行人的檢測,所以選取1 182張車輛數據集,和1 327 張行人數據集并使用LabelImg 進行標注。
為了證明方案的有效性,使用原YOLOv5 模型,只替換過主干網絡的YOLOv5-Shuffle 模型和本文改進后的三個模型進行訓練和測試。
訓練開始前,為了避免縱橫比不匹配對訓練結果的影響,本文將數據集中的所有圖像均裁剪成512×512 大小??紤]到GPU 顯存大小,參數設置如下:Batch_size(批尺寸)為12,Initial learning rate(初始學習率)為0.002,每次訓練300 epochs。本文將VOC2007 劃分為訓練集、驗證集和測試集,并將訓練集、測試集和驗證集進行7∶2∶1 的劃分。
采用Xavier initialization 來初始化神經網絡的每一層。實驗所涉及的所有超參數如表4 所示。
表4 實驗參數設置
在目標檢測領域,樣本可分為四種類型:true positive( TP )、false positive( FP )、true negative( TN)和false negative( FN ),根據其真實類和預測類的組合進行劃分。
為了量化所提出的網絡與其他網絡的性能比較,本文使用典型的評價指標,比如,精確率(P)和召回率(R),公式如下:
平均精度(AP)是P-R curve 下方的面積,就是對P-R curve 的Precision 值求均值。 對于P-R curve 來說,使用定積分來進行計算:
在目標檢測性能測試的實際計算中,還要對P-R curve 進行平滑處理。 對P-R curve 上的每個點,Precision 值計算公式如下:
mAP 是對多個類別mAP 求平均值。由于本文的方法只對路面物體進行檢測,所以mAP 和AP 在本文的含義是相同的。mAP 是目標檢測中衡量性能的最重要的一個指標。
Params 和FLOPs 是用于衡量模型復雜性的指標。 FPS 代表檢測器每秒可以處理的圖片幀數,數值越大代表檢測速度越快。
橫坐標是訓練輪次,縱坐標是mAP 值,原模型與本文改進模型mAP 的對比如圖5 所示。
圖5 模型的mAP 對比
改進后的模型檢測效果如圖6 所示。
圖6 改進模型檢測效果
表5 為原模型與改進模型復雜度和幀數的對比。
表5 模型的測試結果對比
從圖5 與表5 顯示的實驗結果可知,替換主干網絡后的YOLOv5-Shuffle 模型會造成很大的精度損失,平均精確度降低了0.15,對于車輛和行人擁擠的場景下,這樣的模型不適合用于實時監控領域。而本文提出的改進方法將參數量和計算量都減少到了原來的1/10 左右,檢測幀數同樣提高了17 點,而平均精確度只降低0.08,所以本模型在大幅度提高了模型的運算速度前提下,很好地控制了精度損失。
本研究基于YOLOv5 提出了一種改進的目標檢測算法。采用ShuffleNetv2 替換了原先的CSPDarknet53,并且使用Stem Block、Coordinate Attention、二元交叉熵損失函數彌補了替換特征提取網絡引起的精度損失。其中,使用Stem Block 對網絡進行輕量化處理,填補替換特征提取網絡后對網絡實時性能造成的損失。 Coordinate Attention耗費很小的結構,提升了網絡的精度和目標框邊界的回歸能力。本文所提出的輕量級的網絡架構可以用于自動駕駛等領域中??紤]到駕駛環境的復雜性和多變性,網絡仍需進一步完善。因此,未來的工作中將對網絡進一步輕量化并使其更好地應用于目標跟蹤領域。 另外,Head階段中上采樣部分仍可繼續改進,如何使用一些復雜度較低的圖像超分辨算法,可以更好地檢測出小目標。