王燕妮,賈瑞英
(西安建筑科技大學(xué)信息與控制工程學(xué)院,陜西 西安 710055)
目標(biāo)檢測是計算機視覺領(lǐng)域的一個基本問題,旨在對對象進行分類并預(yù)測目標(biāo)所在位置[1]。它的應(yīng)用十分重要與廣泛,比如常見的紅外探測技術(shù)[2]、智能視頻監(jiān)控[3]、車道線檢測[4]等。
傳統(tǒng)的目標(biāo)檢測算法主要基于手動提取特征,如常用于行人檢測的方向梯度直方圖(histogram of ooiented feature gradient, HOG)[5]與支持向量機(support vector machine, SVM)[6]算法。傳統(tǒng)算法對滑動窗口的區(qū)域選擇策略沒有針對性,且冗余設(shè)計的窗口特征對于多樣性的變化未達(dá)到較好的魯棒性,這些任務(wù)目前的解決方法是基于卷積神經(jīng)網(wǎng)絡(luò)的方法。
基于卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測算法依據(jù)速度可分為兩階段目標(biāo)檢測與單階段目標(biāo)檢測。兩階段目標(biāo)檢測算法先提取出候選目標(biāo)邊界框,然后做分類和邊界框回歸任務(wù),如經(jīng)典的Faster-RCNN[7],但該模型檢測效率低,速度上無法滿足實時的要求。單階段目標(biāo)檢測算法將兩階段融合在一起,采用了“錨點+分類精修”的實現(xiàn)框架。單階段檢測算法(single shot muitibox detector,SSD)[8]結(jié)合了回歸思想與anchor box機制,提取到一系列離散化的bounding boxes,但SSD算法對本身較小的目標(biāo)檢測效果較差。快速目標(biāo)檢測算法(you only look once, YOLO)[9]系列算法將目標(biāo)檢測任務(wù)轉(zhuǎn)化為一個回歸問題,在網(wǎng)絡(luò)預(yù)測窗口使用全局信息,這使得檢測精度大大提高。
近些年來,卷積神經(jīng)網(wǎng)絡(luò)在計算機視覺領(lǐng)域取得了很大進展,在目標(biāo)檢測領(lǐng)域也取得了一定的成果。Shuffle Netv2[10]與Mobile Netv2[11]網(wǎng)絡(luò)通過在主干中加入深度可分離積(depthwise separable convolutions, DSCs)[12]或神經(jīng)搜索結(jié)構(gòu)(neural architecture search, NAS)[13]減小參數(shù)模型及運算參數(shù)量。輕量化的網(wǎng)絡(luò)層出不斷,文獻[14]提出的基于部署的檢測網(wǎng)絡(luò)輕量化程度高,但檢測精度有限。文獻[15]通過引入ShuffleNet中的通道打亂機制減小識別船舶模型。但上述模型在減小參數(shù)量的過程中,網(wǎng)絡(luò)的一些固有特征被弱化了。VGNetG網(wǎng)絡(luò)[16]嘗試使用邊緣檢測器替換可學(xué)習(xí)的深度分類卷積層,通過減少映射中的冗余提高模型參數(shù)效率和推理速度。
基于YOLOv3的輕量級檢測算法通過低成本操作得到更多的特征圖信息,借鑒特征對齊融合網(wǎng)絡(luò)(feature-align pyramid networks,FaPN)[17]改進的FSSA模塊有效融合信息;通過嵌入改進交叉注意力[18](improved criss cross Attention,ICC-Attention),增加模型對空間位置的關(guān)注,兼顧檢測精度與速度,減少目標(biāo)物誤檢,提升檢測效率與網(wǎng)絡(luò)目標(biāo)定位能力。
YOLOv3模型是經(jīng)典的多尺度目標(biāo)檢測模型,以整張圖作為輸入,以回歸邊界框的位置和邊界框所屬的類別作為輸出。模型在檢測時首先將輸入圖片劃分為S×S個網(wǎng)格,每個網(wǎng)格負(fù)責(zé)檢測目標(biāo)物中心點落在網(wǎng)格內(nèi)部的物體;然后通過計算每個網(wǎng)格中預(yù)測框的置信度得分,采用非極大值抑制算法(non-maximum suppression, NMS)[19]選出置信度最高的預(yù)測框來實現(xiàn)初步目標(biāo)的定位與分類;最后利用損失函數(shù)訓(xùn)練各類誤差并進行最小值尋優(yōu),完成目標(biāo)的精確定位與分類。模型由檢測主干、融合網(wǎng)絡(luò)、檢測頭三部分組成。
YOLOv3模型以Darknet53作為主干網(wǎng)絡(luò)進行特征提取。主干網(wǎng)絡(luò)含有5個殘差塊,每個殘差塊均使用大量的卷積與跳躍連接有效提取多個尺度的語義信息。每個殘差塊由圖1所示的1×1卷積與3×3卷積及殘差邊組成。為達(dá)到更高效的精度,主干網(wǎng)絡(luò)制造更深更復(fù)雜的網(wǎng)絡(luò),但模型規(guī)模同時增大,訓(xùn)練參數(shù)多,檢測速率低下。
圖1 殘差模塊Fig.1 Residual module
YOLOv3的頸部融合網(wǎng)絡(luò)(feature pyramid networks, FPN)[20]對主干提取的三個特征層重新處理,將不同感受野的特征圖進行信息融合。如圖2所示,特征融合金字塔是自頂向下的,采用多尺度融合的方式對淺層和中層目標(biāo)進行特征融合,構(gòu)成三個不同尺度的目標(biāo)定位與語義信息的融合層,增強網(wǎng)絡(luò)語義信息的表達(dá)能力。
圖2 FPN特征融合網(wǎng)絡(luò)Fig.2 Feature pyramid networks
YOLO Head由兩個卷積組成,卷積核大小分別為3×3與1×1,前者用于特征整合,后者用于調(diào)整通道數(shù),最后輸出檢測目標(biāo)的位置與類別置信度信息。
為改善YOLOv3模型的不足,改進后模型首先使用輕量深度卷積網(wǎng)絡(luò)VGNetG高效提取特征信息;其次使用特征尺度感知FSSA模塊動態(tài)融合[21]多尺度上下文信息[22];最后ICC-Attention模塊收集給定像素的上下文信息算法,在計算資源較少的情況下提煉關(guān)鍵目標(biāo)的上下文信息,減少漏檢誤檢情況。算法整體框架圖如圖3所示。
圖3 改進算法整體框架圖Fig.3 Overall frame diagram of the improved algorithm
改進算法使用輕量化主干VGnetG模型提取特征。下采樣模塊與恒等映射模塊如圖4所示。圖4(a)中,下采樣模塊先通過步長為2的深度可分離卷積(depthwise separable convolutions, DSCs)來加倍通道數(shù)、減半分辨率并提取特征,再通過點卷積來擴展通道并重用這些特征。
圖4 下采樣模塊與恒等映射模塊Fig.4 Down-sampling module and identity mapping module
深度可分離卷積將標(biāo)準(zhǔn)卷積分解為用于空間濾波的輕量級深度卷積和用于特征生成的點卷積。由于帶有深度卷積核卷積會導(dǎo)致特征圖重復(fù)與計算冗余,因此網(wǎng)絡(luò)使用恒等映射來代替部分深度卷積。下采樣模塊中僅擴展通道部分由逐點卷積生成來重用特征,提高推理速率。半恒等模塊用恒等映射模塊替換一半的深度卷積,且輸入的右半部分組成最終輸出的左半部分,輸出的右半部分由逐點卷積生成,在保持塊寬度的同時減少點卷積以更好重用特征。改進后的算法主干中每個stage層由圖4(a)與4(b)兩個模塊疊加而成。VGNetG模型詳細(xì)網(wǎng)絡(luò)參數(shù)如表1所示。
表1 VGNetG網(wǎng)絡(luò)結(jié)構(gòu)Tab.1 VGNetG network structure
注意力機制指人類在觀察周圍物體時,選擇性地聚焦在關(guān)鍵物體上,同時忽略其他事物的一種策略。
2.2.1改進的交叉注意力
長距離依賴性也叫非局部上下文信息[23]。要準(zhǔn)確完成目標(biāo)檢測,獲得長距離依賴性非常必要。
圖5(a)所示的非局部注意力模塊首先使特征圖A每個位置生成一個自適應(yīng)的注意力圖B,并對輸入特征圖A做某種轉(zhuǎn)化C,然后對B和C進行加權(quán)和,獲得每個位置的上下文信息D,即密集連通注意力,這需要很多計算力,不適合對速度與精度要求較高的YOLO系列算法。
圖5 非局部注意力和改進的交叉注意力Fig.5 Non-local block and improved criss cross attention
如圖5(b)所示,重復(fù)的交叉注意模塊只需兩次遍歷十字位置上的信息便可采樣到所有像素的上下文信息F來增強位置表示,且注意力參數(shù)都是共享的,模塊復(fù)雜度小。交叉注意力使用兩個連續(xù)的注意力取代原有密集通道注意力,僅在十字交叉方向上聚合信息,極大降低了注意力的時間與空間復(fù)雜度。
ICC-Attention模塊解決了目標(biāo)檢測中語境信息不足的問題,其使用兩個連接圖來代替常見的單個密集連接圖,在提高參數(shù)運算效率的情況下,有效獲取全圖上下文信息,適合改進的算法。
2.2.2微交叉注意力MCC-Attention
組成改進交叉注意力的微交叉注意力如圖6所示。首先,輸入特征圖H∈RH×W×C經(jīng)過全局平均池化操作,然后進行卷積核大小為k×k卷積操作,并經(jīng)過Sigmoid激活函數(shù)得到各個通道的權(quán)重,最后將權(quán)重與原始輸入特征圖對應(yīng)元素相乘,得到的特征圖輸入到交叉注意力機制中,沿空間維度展開得到矩陣H′∈RN×C,其中N=H′·W,C表示不同圖像區(qū)域的高維向量。
圖6 微交叉注意力Fig.6 Micro criss cross attention
給局部特征映射H′ 應(yīng)用兩個具有1×1濾波器的卷積層分別生成兩個映射Q與K,在Q空間維的每一個位置u上,可以得到一個向量,同時從K中提取與位置u在同一行或同一列的特征。進一步通過Affinity操作,在H′上應(yīng)用另一個1 × 1濾波的卷積層,生成V∈RC×W×H′進行特征自適應(yīng)。
Affinity操作指在Q空間維度u的每個位置上,計算與K同行或同列元素的相關(guān)性。
FSSA模塊通過計算兩組未對齊特征的偏移量,給底層特征提供準(zhǔn)確的位置信息與高層特征融合,進而減少目標(biāo)物漏檢。特征尺度感知FSSA模塊結(jié)構(gòu)圖如圖7所示。
圖7 FSSA融合模塊Fig.7 FSSA fusion module
2.3.1特征選擇模塊FSM
特征選擇模塊通過SE注意力(squeeze and excitation)[24]為輸入特征建立含有豐富細(xì)節(jié)語義信息的特征映射,通過全連接來保留高權(quán)重噪聲點,增強感受野。為減少邊界信息損失,FSM模塊在計算得到輸入重要矩陣U后,繼續(xù)縮放新特征圖并引入特征選擇層,完成包含空間細(xì)節(jié)的重要特征圖的精確分配,進而自適應(yīng)地重新校準(zhǔn)通道響應(yīng)。
圖8 圖像選擇模塊FSMFig.8 Feature selection module
首先,輸入特征圖到注意力模塊中,特征重要性建模層fm(·)學(xué)習(xí)這些信息來建模每個特征圖的重要性,并輸出重要度矩陣U;其次使用重要度矩陣U得到縮放后的特征圖,并將其添加到原始特征圖上;最后,在特征映射上引入特征選擇層fs(·)(即1×1 conv層以提高效率),用于有選擇地維護重要的特征映射和刪除無用的特征映射以減少信道??偟膩碚f,FSM的過程可以公式化為
(1)
2.3.2特征尺度感知模塊FSA
尺度感知模塊(feature scaled aware,FSA)通過研究人類視覺的感受野(receptive fields, RFs[25])結(jié)構(gòu)有效整合錯位信息。模塊動態(tài)選擇合適的尺度特征,并通過自學(xué)習(xí)進行融合。
圖9 特征尺度感知模塊FSAFig.9 Feature scare aware
尺度感知模塊中不同大小的卷積核類似于不同的感受野,不同空洞率的空洞卷積為每個分支分配偏心距可擴大感受野。其完成所有分支拼接與1×1卷積操作后生成感受野空間陣列,模擬人類視覺空間陣列,獲取并對齊特征層的上下文信息,捕獲多尺度特征信息。
基于YOLOv3的輕量級算法使用的是經(jīng)典的目標(biāo)檢測數(shù)據(jù)集PASCAL VOC數(shù)據(jù)集[26],包含20個類別。在訓(xùn)練階段,算法使用PASCAL VOC2007 trainval與PASCAL VOC2012 trainval作為訓(xùn)練集和驗證集,使用PASCAL VOC2007 test作為測試集來測試。數(shù)據(jù)集中各類目標(biāo)均勻分布,保證了實驗的有效性。
算法的評價指標(biāo)為mAP(均值平均精度)。在目標(biāo)檢測中,mAP是所有類別的平均精度求和除以所有的類別,取IOU=0.5時的mAP值。P-R曲線即精準(zhǔn)率-召回率的關(guān)系曲線圖,即在坐標(biāo)系上做以precision和recall為縱、橫軸坐標(biāo)的二維曲線。
實驗配置環(huán)境如下:CPU為AMD EPYC 7302H、GPU為NVIDIA GeForce RTX3090、CPU顯存為24 GB、硬盤內(nèi)存為50 GB。訓(xùn)練過程的優(yōu)化參數(shù)如下:訓(xùn)練的epoch為140,設(shè)置每批次輸入網(wǎng)絡(luò)的圖像數(shù)為32。訓(xùn)練采用兩步驟訓(xùn)練法,首先凍結(jié)骨干網(wǎng)絡(luò)訓(xùn)練前20個epoch,初始學(xué)習(xí)率為0.001,每迭代一次,學(xué)習(xí)率下調(diào)5%;從第21個epoch開始,解除凍結(jié)的骨干網(wǎng)絡(luò),初始學(xué)習(xí)率設(shè)置為0.000 1,且每迭代一次,學(xué)習(xí)率也下降5%。此訓(xùn)練方式有助于保持模型深層的穩(wěn)定性,提升網(wǎng)絡(luò)對多尺度目標(biāo)物的檢測能力。
在輸入圖片尺寸為416×416時, 改進算法的檢測精度為84.1%,比SSD算法檢測精度提高6.9%,并且檢測速度符合實時檢測速率。另外, 和兩階段算法的 Faster R-CNN 相比, 算法在輸入圖片像素尺寸為416×416的情況下, 檢測精度超過輸入圖片像素尺寸為1 000×600的Faster R-CNN算法。
3.4.1檢測結(jié)果圖對比
為更直觀地體現(xiàn)本網(wǎng)絡(luò)的性能,選取了部分圖片來展示算法在PASCAL VOC2007 test下的檢測結(jié)果圖如圖10所示。可以看出YOLOv3檢測中均有漏檢,改進后的算法檢測出圖10(a)中有像素交叉時漏檢的person類,和復(fù)雜背景下的圖10 (c)中的cow類。說明YOLOv3模型對小尺度目標(biāo)物不敏感,改進后的算法均可以檢測出圖10(e)中的boat類、圖10(g)中的sheep類。從以上結(jié)果得知,改進的算法對漏檢、小目標(biāo)的物體檢測有一定的泛化能力。
圖10 檢測算法結(jié)果對比Fig.10 Comparison of detection algorithm results
3.4.2消融實驗
本文改進方法以YOLOv3為基線做出三個改進:采用輕量化的檢測主干、改進的交叉注意力與特征尺度感知模塊。為了評估引進的模塊在PASCAL VOC 2007 test數(shù)據(jù)集上的影響,在此數(shù)據(jù)集上進行消融實驗,定性分析各模塊的檢測性能結(jié)果如表2所示。
表2 不同模塊精度對比結(jié)果Tab.2 Accuracy comparison results of different modules
3.4.3不同算法檢測速度與精度對比
為了驗證算法的檢測性能,將改進算法和SSD、YOLOv3、YOLOv4[27]、YOLOv3-tiny[28]進行實驗對比。從表3可以看出,與SSD、YOLOv3相比,基于YOLOv3的輕量級目標(biāo)檢測算法的運算量與參數(shù)量都成倍減少。與YOLOv3-tiny相比,雖然運算量與參數(shù)量相差不大,但精度mAP增長17%。改進算法精度雖遜色于YOLOv4,但需要的運算力更小。
表3 PASCAL VOC2007 test數(shù)據(jù)集下檢測速度與檢測精度對比Tab.3 Comparison of detection speed and detection accuracy in the PASCAL VOC2007 test dataset
圖11為6 個算法檢測精度的對比折線圖,紅色折線圖表示為改進算法的精度圖走向??梢郧逦乜闯?算法在car、cow、table、dog、mbike、person、sheep、sofa、train、tv這10個類都達(dá)到了最高精度。
圖11 數(shù)據(jù)集上20種類別 AP對比Fig.11 AP comparison of 20 categories
綜上表明改進后的輕量級算法檢測參數(shù)量小。若在相同的參數(shù)量下,改進算法不僅能準(zhǔn)確識別出更多的目標(biāo)數(shù)量,且對相似目標(biāo)的辨別能力更強,特別是對小目標(biāo)和密集圖像等檢測難的目標(biāo),效果有顯著提升。上述實驗充分說明改進后的方法有利于改善小目標(biāo)、密集目標(biāo)等的漏檢情況。
為解決當(dāng)前檢測模型難以適配在便攜式移動設(shè)備與嵌入式平臺的問題,基于YOLOv3的輕量級目標(biāo)檢測算法充分使用豐富的上下文信息來解決困難目標(biāo)漏檢問題。首先使用VGNetG作為主干,并在網(wǎng)絡(luò)中引入改進的交叉注意力模塊以提取更多上下文信息,增強網(wǎng)絡(luò)對關(guān)鍵信息的辨別能力;其次,對于原網(wǎng)絡(luò)的融合機制進行改進,引入FSSA網(wǎng)絡(luò)融合更豐富細(xì)節(jié)的低分辨率的特征,從而進一步提高網(wǎng)絡(luò)在密集目標(biāo)環(huán)境下的檢測效果。
基于YOLOv3的輕量級目標(biāo)檢測算法在PASCAL VOC 2007測試集上的檢測精度達(dá)到了84.1%,檢測速度達(dá)到47幀/s,參數(shù)量為5.37 M,證明該算法具有實時性和一定魯棒性。改進后的算法需要進一步完善算法的速度,可針對各個模塊進行優(yōu)化,全面提升網(wǎng)絡(luò)在復(fù)雜場景下目標(biāo)檢測性能。