白佳樂(lè), 樊永生
(中北大學(xué) 大數(shù)據(jù)學(xué)院, 山西 太原 030051)
深度學(xué)習(xí)是目標(biāo)檢測(cè)[1-2]算法的重要方法. 最早的深度學(xué)習(xí)檢測(cè)算法RCNN[3]通過(guò)SS算法(Selective Search)獲取大量候選框, 用神經(jīng)網(wǎng)絡(luò)對(duì)每個(gè)候選框進(jìn)行特征提取, 最后利用SVM分類(lèi)器對(duì)目標(biāo)物種進(jìn)行預(yù)測(cè). 但是, 該算法需要花費(fèi)大量時(shí)間來(lái)將候選區(qū)域放入CNN中進(jìn)行特征提取. Fast RCNN借鑒了SPPNet[4]算法思想, 改進(jìn)損失函數(shù), 將邊界框回歸直接加入到網(wǎng)絡(luò)訓(xùn)練; 為了進(jìn)一步提高檢測(cè)效率, Faster RCNN算法[5]使用RPN(Region Proposal Network)網(wǎng)絡(luò)取代SS算法, 并在此基礎(chǔ)上提出FPN[6](Feature Pyramid Networks), 在不明顯增加計(jì)算量的前提下, 實(shí)現(xiàn)了對(duì)檢測(cè)目標(biāo)的多尺度特征提取, 解決了目標(biāo)檢測(cè)中的多尺度問(wèn)題.
上述目標(biāo)檢測(cè)算法都需要生成候選區(qū)域, 然后對(duì)候選區(qū)域進(jìn)行分類(lèi)細(xì)化. 這類(lèi)方法精度較高, 但速度慢, 不能實(shí)現(xiàn)實(shí)時(shí)檢測(cè). Yolov1[7](You Only Look Once)將目標(biāo)檢測(cè)作為回歸問(wèn)題來(lái)實(shí)現(xiàn)圖像邊界框定位并預(yù)測(cè)其類(lèi)別概率; 為了提高精度又提出了Yolov2[8], Yolov2網(wǎng)絡(luò)在每個(gè)卷積層后進(jìn)行了歸一化處理, 極大地提高了模型收斂速度, 并且在預(yù)訓(xùn)練過(guò)程中提高了網(wǎng)絡(luò)分辨率, 同時(shí)引入k-means聚類(lèi)方法, 提高了檢測(cè)的準(zhǔn)確性; Yolov3[9-11]使用Sigmoid進(jìn)行多標(biāo)簽類(lèi)別預(yù)測(cè), 設(shè)計(jì)了Darknet-53網(wǎng)絡(luò), 并引入FPN網(wǎng)絡(luò)進(jìn)行多維度特征提取, 極大地提高了網(wǎng)絡(luò)性能, 使其在目標(biāo)檢測(cè)領(lǐng)域得到了廣泛應(yīng)用; Yolov4[12-13]是Alexey等人在Yolov3的基礎(chǔ)上, 總結(jié)了目前目標(biāo)檢測(cè)算法的優(yōu)化策略, 在進(jìn)行了充分的組合實(shí)驗(yàn)后提出的目標(biāo)檢測(cè)算法, 其在目標(biāo)檢測(cè)精度和速度方面都有很大的提升.
Yolo系列的不斷發(fā)展使得單階段目標(biāo)檢測(cè)算法的精度越來(lái)越高. 為了進(jìn)一步提升算法的檢測(cè)精度, 本文基于Yolov3的基礎(chǔ)架構(gòu)進(jìn)行研究, 針對(duì)其特征提取能力不足以及預(yù)測(cè)框定位不準(zhǔn)確的問(wèn)題, 對(duì)Yolov3模型中的主特征提取網(wǎng)絡(luò)和預(yù)測(cè)框處理部分進(jìn)行了改進(jìn). 主要工作包括: 在模型訓(xùn)練時(shí)采用隨機(jī)擦除策略對(duì)圖像進(jìn)行處理, 提高模型的泛化能力; 在特征提取網(wǎng)絡(luò)中加入Res2Net多尺度模塊, 優(yōu)化Yolov3特征提取網(wǎng)絡(luò), 提取更加有效的特征; 在預(yù)測(cè)框回歸階段采用CIoU交并比算法, 提高目標(biāo)框回歸精度.
Yolov3目標(biāo)檢測(cè)算法直接將待檢測(cè)圖片等分為互不重疊的小方塊, 再利用神經(jīng)網(wǎng)絡(luò)生成與其同等大小的特征圖對(duì)應(yīng)于圖片中每個(gè)小方塊, 之后預(yù)測(cè)每個(gè)小方塊包含目標(biāo)的概率以及目標(biāo)種類(lèi).
Yolov3目標(biāo)檢測(cè)算法采用Darknet-53網(wǎng)絡(luò)進(jìn)行特征提取, 借鑒ResNet[14](Residual Network)思想, 在某些層之間設(shè)置快捷鏈接, 既實(shí)現(xiàn)了特征的進(jìn)一步提取, 又避免了因?yàn)榫W(wǎng)絡(luò)過(guò)深帶來(lái)的梯度問(wèn)題; 引入FPN, 用于得到不同尺度的特征, 以對(duì)不同分辨率的目標(biāo)進(jìn)行檢測(cè).
Yolov3將待測(cè)試圖像調(diào)整成416×416的大小, 然后放入到主干特征提取網(wǎng)絡(luò)Darknet-53中進(jìn)行訓(xùn)練, 構(gòu)建特征金字塔, 得到3個(gè)有效特征層, 它們的大小分別為13×13, 26×26, 52×52, 之后利用這3個(gè)有效特征層進(jìn)行特征融合, 得到更好的不同層次特征, 并對(duì)不同層次特征進(jìn)行處理. Yolov3算法采用k-means算法對(duì)訓(xùn)練樣本預(yù)測(cè)框進(jìn)行聚類(lèi), 共聚類(lèi)出9種大小不同的先驗(yàn)框并進(jìn)行調(diào)整; 每個(gè)特征層將整個(gè)圖像按照其長(zhǎng)度和寬度劃分成網(wǎng)格, 每個(gè)網(wǎng)絡(luò)中心各有9個(gè)預(yù)先設(shè)定的先驗(yàn)框, 網(wǎng)絡(luò)預(yù)測(cè)結(jié)果通過(guò)判斷先驗(yàn)框中是否包含對(duì)象以及對(duì)象類(lèi)型來(lái)獲得預(yù)測(cè)結(jié)果, 最后對(duì)預(yù)測(cè)結(jié)果進(jìn)行非極大值抑制后獲得最終結(jié)果. Yolov3目標(biāo)檢測(cè)算法的流程如圖 1 所示.
圖 1 Yolov3算法流程圖
豐富的數(shù)據(jù)集是良好效果的保證, 因此, 本文在數(shù)據(jù)預(yù)處理部分采用了一些數(shù)據(jù)增強(qiáng)策略來(lái)實(shí)現(xiàn)數(shù)據(jù)增強(qiáng), 如: 圖像翻轉(zhuǎn)、 噪聲變換、 色彩變換等. 在此基礎(chǔ)上引入隨機(jī)擦除[15]技術(shù), 處理后的結(jié)果如圖 2 所示.
(a) 原始圖像
隨機(jī)擦除技術(shù)是指網(wǎng)絡(luò)訓(xùn)練時(shí), 在訓(xùn)練圖像中用隨機(jī)值對(duì)隨機(jī)生成的矩形區(qū)域像素進(jìn)行替換生成一張被遮擋的圖像, 降低網(wǎng)絡(luò)出現(xiàn)過(guò)擬合的概率, 提升模型的泛化能力. 根據(jù)文獻(xiàn)[15], 選擇在整個(gè)圖像和每個(gè)對(duì)象邊界框中選取擦除區(qū)域, 將選中區(qū)域中的每個(gè)像素值設(shè)為[0, 255]的一個(gè)隨機(jī)值.
假設(shè)擦除概率為p, 圖像面積S=W×H; 隨機(jī)初始化擦除的面積為Se,Se/S的范圍在Sl與Sh之間,Sl和Sh分別是隨機(jī)擦除矩形面積占圖像面積比例的上下閾值; 擦除矩形的長(zhǎng)寬比在r1與r2之間, 設(shè)置為re, 則可求得擦除矩形的長(zhǎng)He和寬We為
(1)
隨機(jī)初始化一個(gè)點(diǎn)P=(xe,ye), 保證這個(gè)點(diǎn)所畫(huà)的框在圖像內(nèi), 則選擇區(qū)域?yàn)?/p>
Ie=(xe,ye,xe+We,ye+He).
(2)
這里, 分別設(shè)置p=0.5,sl=0.02,sh=0.4和r1=r2=0.3, 來(lái)進(jìn)行隨機(jī)擦除.
在目標(biāo)檢測(cè)中, 物體形狀和尺寸大小不一, 給目標(biāo)識(shí)別和定位帶來(lái)了很大的挑戰(zhàn). 不同分辨率的特征圖用來(lái)檢測(cè)不同大小的目標(biāo). 分辨率高的特征圖具有豐富的細(xì)節(jié)信息和較小的感受野, 可以用來(lái)檢測(cè)尺寸較小的目標(biāo), 而分辨率低的特征圖因較強(qiáng)的語(yǔ)義信息和較大的感受野, 適合檢測(cè)尺寸較大的目標(biāo), 據(jù)此可對(duì)圖像進(jìn)行多尺度特征處理.
Yolov3算法引入FPN特征金字塔網(wǎng)絡(luò)[6]來(lái)獲取多尺度特征, 通過(guò)自上而下的路徑和側(cè)向連接, 將高分辨率的低層次特征和多語(yǔ)義信息的高層次特征進(jìn)行融合, 對(duì)不同尺寸的目標(biāo)構(gòu)建了不同語(yǔ)義層次的特征.
以ResNet為例, FPN利用CNN的前饋計(jì)算將每個(gè)殘差模塊的特征作為輸出, 記為{C1,C2,C3,C4,C5}.多尺度特征預(yù)測(cè)步驟如圖 3 所示, 以P4層特征生成為例: 圖片經(jīng)過(guò)特征網(wǎng)絡(luò)處理后得到C1到C55個(gè)層特征; 首先對(duì)C5層特征進(jìn)行1×1 卷積得到F5層特征, 然后對(duì)F5層特征進(jìn)行上采樣后, 再與C4層特征經(jīng)過(guò)1×1卷積得到的特征圖上的對(duì)應(yīng)元素相加得到F4層特征; 最后對(duì)F4層特征進(jìn)行3×3卷積得到最終的P4層特征.其余層特征獲取原理相同, 就能得到最終的金字塔特征{P3,P4,P5}.
圖 3 FPN多尺度網(wǎng)絡(luò)預(yù)測(cè)圖
本文在Yolov3特征提取網(wǎng)絡(luò)的基礎(chǔ)上, 融入Res2Net[16-17]模塊, 在不增加額外網(wǎng)絡(luò)參數(shù)的前提下, 增加小的卷積塊, 有效地增加了特征層的感受野范圍, 可以提取更細(xì)粒度特征, 殘差塊對(duì)比圖如圖 4 所示.
圖 4 殘差塊對(duì)比圖
圖4(a)表示基本殘差卷積塊, 圖4(b)是對(duì)圖4(a) 中的3×3卷積塊進(jìn)行改進(jìn)后的卷積塊. Res2net在對(duì)特征圖進(jìn)行一次1×1的卷積后, 將其按照通道數(shù)等分成s個(gè)子集, 定義為xi, 其中i∈(1,2,…,s).除了x1, 其余子特征還會(huì)經(jīng)過(guò)3×3 卷積, 輸出為ki(xi); 當(dāng)i>2時(shí), 子特征xi和ki-1(xi-1)相加, 然后輸入到ki()進(jìn)行卷積操作, 最后輸出特征可定義為
(3)
每次對(duì)xi的卷積操作都能利用之前的所有特征信息, 擴(kuò)大感受野范圍, 充分地利用上下文信息, 增強(qiáng)網(wǎng)絡(luò)特征表達(dá)能力.s為維數(shù)控制參數(shù), 本文將s設(shè)置為4, 改進(jìn)后Yolov3網(wǎng)絡(luò)結(jié)構(gòu)圖如圖 5 所示, 其中虛線(xiàn)框?yàn)楦倪M(jìn)后的殘差模塊.
圖 5 Yolov3網(wǎng)絡(luò)結(jié)構(gòu)圖
在Yolov3目標(biāo)檢測(cè)過(guò)程中, 每個(gè)特征圖的網(wǎng)格中會(huì)得到不同大小的先驗(yàn)框, 對(duì)先驗(yàn)框進(jìn)行處理可以得到預(yù)測(cè)框, 之后依次計(jì)算出預(yù)測(cè)框的IoU(Intersection over Union), 以非極大值抑制的方式來(lái)篩選出最終預(yù)測(cè)結(jié)果.
IoU作為目標(biāo)檢測(cè)算法性能mAP計(jì)算的一個(gè)函數(shù), 用來(lái)反映框A與框B之間的重疊程度, 定義為
(4)
IoU的值越高說(shuō)明兩個(gè)框重合程度越高, 代表模型預(yù)測(cè)越準(zhǔn)確, 反之則表示模型性能越差. 將1-IoU作為邊界框回歸損失函數(shù), 表示為
(5)
但I(xiàn)oU無(wú)法判斷兩個(gè)框之間的距離, 也無(wú)法衡量?jī)蓚€(gè)框的相交方式, 為此, 文獻(xiàn)[18]將損失函數(shù)進(jìn)行了改進(jìn), 提出增加了懲罰項(xiàng)的GIoU-loss, 表示為
(6)
式中:C為同時(shí)包含兩個(gè)框的最小矩形框的面積, 當(dāng)兩個(gè)框發(fā)生包含關(guān)系時(shí),GIoU依然存在很大誤差.
文獻(xiàn)[19]提出CIoU(Complete IoU)交并比,CIoU將兩個(gè)框之間的距離、 重疊率、 長(zhǎng)寬比加入懲罰項(xiàng), 使預(yù)測(cè)框回歸更加準(zhǔn)確,CIoU的計(jì)算公式為
(7)
式中:ρ2(b,bgt)為不同框中心點(diǎn)的歐氏距離;c為能夠同時(shí)包含兩個(gè)框的最小閉包區(qū)域的對(duì)角線(xiàn)距離;α為權(quán)重函數(shù), 當(dāng)兩個(gè)框沒(méi)有重合時(shí), 給予IoU-loss更大的權(quán)重;v用來(lái)衡量高寬比的重合度, 使預(yù)測(cè)框更加符合真實(shí)框.
計(jì)算α和v的公式為
(8)
(9)
式中:w和h為預(yù)測(cè)框的寬和高;wgt和hgt為真實(shí)框的寬和高,CIoU回歸時(shí)的損失函數(shù)為
(10)
在Windows 10系統(tǒng)下進(jìn)行實(shí)驗(yàn), GPU為NVIDIA Tesla P40, 開(kāi)發(fā)環(huán)境為PyCharm. 訓(xùn)練時(shí), 初始化學(xué)習(xí)率設(shè)置為0.001, 采用StepLR調(diào)整策略對(duì)學(xué)習(xí)率進(jìn)行調(diào)整, 調(diào)整倍數(shù)為0.9, 調(diào)整間隔為1 s.
本文選擇Pascal VOC 2012數(shù)據(jù)集作為實(shí)驗(yàn)的數(shù)據(jù)集, 主要包括人、 動(dòng)物、 車(chē)輛和家具4大類(lèi), 20個(gè)不同種類(lèi)的目標(biāo), 共有11 540張圖片, 其中用于訓(xùn)練的有8 078張, 用于驗(yàn)證的有1 038張, 其余的2 424張用于測(cè)試.
本文采用平均精度AP(Average Precision)和平均精度均值mAP(Mean Average Precision)作為改進(jìn)算法的評(píng)價(jià)指標(biāo).
AP指單目標(biāo)的檢測(cè)精度, 通過(guò)模型的準(zhǔn)確率P和召回率R來(lái)衡量, 計(jì)算公式為
(11)
式中: 準(zhǔn)確率P為預(yù)測(cè)正確的實(shí)際正樣本占所有預(yù)測(cè)正樣本的比例; 召回率R表示預(yù)測(cè)正確的實(shí)際正樣本占所有實(shí)際正樣本的比例.
(12)
(13)
式中:TP表示預(yù)測(cè)正確的正樣本;FP為預(yù)測(cè)錯(cuò)誤的正樣本;FN為預(yù)測(cè)錯(cuò)誤的負(fù)樣本.
mAP為各個(gè)類(lèi)別AP的均值, 用來(lái)衡量多目標(biāo)檢測(cè)精度, 可以體現(xiàn)出模型對(duì)所有類(lèi)別的檢測(cè)效果.
改進(jìn)Yolov3算法的部分檢測(cè)P-R曲線(xiàn)如圖 6 所示. 通過(guò)P-R曲線(xiàn)可以計(jì)算出, person、 car和table 3種類(lèi)別的AP值分別達(dá)到了89.6%, 87.9%, 85.2%, 最終算法的mAP達(dá)到85.7%, 較Yolov3算法提升了3.4%.
圖 6 各類(lèi)目標(biāo)的P-R曲線(xiàn)
為了綜合評(píng)估改進(jìn)算法的性能, 將改進(jìn)算法與主流算法在同一個(gè)數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn), 包括單階段檢測(cè)算法SSD[20]、 原Yolov3算法以及二階段檢測(cè)算法Faster RCNN, 實(shí)驗(yàn)結(jié)果如表 1 所示. 由表 1 可以看出, 與其他算法相比, 本文方法在多類(lèi)別的AP和mAP上均有較大提升. 在實(shí)時(shí)性方面, 相比Yolov3算法, 本文方法在檢測(cè)速率上損失了1.3 fps, 平均檢測(cè)速率為24.1 fps, 但仍具有較好的實(shí)時(shí)性. 本文在算法設(shè)計(jì)上增強(qiáng)了主干網(wǎng)絡(luò)的特征提取能力, 對(duì)細(xì)節(jié)特征處理更好, 檢測(cè)效果也更好. 同時(shí), 實(shí)際場(chǎng)景檢測(cè)效果對(duì)比實(shí)驗(yàn)進(jìn)一步說(shuō)明了改進(jìn)算法的有效性.
表 1 不同算法的檢測(cè)對(duì)照表
實(shí)際檢測(cè)效果對(duì)比如圖 7 所示, 其中圖7(a)為原版Yolov3的檢測(cè)效果, 圖7(b)為改進(jìn)后的Yolov3對(duì)相同場(chǎng)景的檢測(cè)效果. 由圖 7 可以看出: 原Yolov3算法對(duì)目標(biāo)框的定位效果不太好, 對(duì)目標(biāo)的檢測(cè)效果也不佳; 改進(jìn)后的Yolov3算法提高了算法的特征提取能力, 并對(duì)預(yù)測(cè)框回歸進(jìn)行了改進(jìn), 使改進(jìn)算法在保證實(shí)時(shí)性的情況下, 對(duì)目標(biāo)的定位和檢測(cè)效果都有了較大提升.
(a) Yolov3檢測(cè)效果圖
為了驗(yàn)證多尺度提取和預(yù)測(cè)框回歸部分實(shí)驗(yàn)的合理性和有效性, 進(jìn)行了消融對(duì)比實(shí)驗(yàn). 實(shí)驗(yàn)結(jié)果如表 2 所示. 實(shí)驗(yàn)包含4種不同的模型: ① 原始的Yolov3網(wǎng)絡(luò)模型; ② 引入多尺度模塊Res2net的網(wǎng)絡(luò)模型; ③ 引入CIoU交并比的網(wǎng)絡(luò)模型; ④ 本文設(shè)計(jì)的網(wǎng)絡(luò)模型. 表中兩個(gè)評(píng)價(jià)指標(biāo)分別為平均檢測(cè)精度均值(mAP)和檢測(cè)速率(Speed).
由表 2 中消融實(shí)驗(yàn)結(jié)果的分析可知: 方法①與方法②的對(duì)比表明, 引入多尺度模塊Res2net能提高算法的檢測(cè)精度, 原因在于Res2net模塊通過(guò)對(duì)特征圖進(jìn)行卷積處理, 充分利用了上下文信息, 擴(kuò)大了感受野范圍, 提高了網(wǎng)絡(luò)特征提取能力, 進(jìn)而使模型的檢測(cè)精度提升了1.9%; 方法②與方法③的對(duì)比表明, 引入CIoU交并比作為預(yù)測(cè)框回歸的損失函數(shù)能有效提高算法的精度, CIoU解決了IoU損失函數(shù)不相交不能反向傳播的問(wèn)題, 并將框的中心點(diǎn)距離和框的寬高比例作為參考要素加入損失函數(shù)中, 使模型的檢測(cè)精度提升了 2.7%; 方法①與方法④的對(duì)比表明, 本文提出的改進(jìn)算法比原算法的mAP提升了3.4%. 對(duì)于實(shí)時(shí)性, 本文方法的檢測(cè)速度達(dá)到了24.1fps, 達(dá)到了實(shí)時(shí)監(jiān)測(cè)的要求. 表 2 中各項(xiàng)評(píng)價(jià)指標(biāo)的對(duì)比結(jié)果證明了本文改進(jìn)算法的合理性與有效性.
表 2 消融實(shí)驗(yàn)結(jié)果
針對(duì)Yolov3目標(biāo)檢測(cè)算法主干網(wǎng)絡(luò)特征提取能力不足的問(wèn)題, 本文將Res2Net多尺度模塊引入Yolov3主干特征提取網(wǎng)絡(luò)中, 可以有效地增加特征層的感受野范圍, 提取更細(xì)粒度的特征, 從而提高了網(wǎng)絡(luò)的特征提取能力. 同時(shí), 在目標(biāo)框回歸部分加入了對(duì)目標(biāo)框與真實(shí)框之間重疊面積、 中心點(diǎn)距離和長(zhǎng)寬比的考慮, 在基本不損失檢測(cè)速率的情況下, 使目標(biāo)框回歸效果和檢測(cè)精度都得到了提升. 在后續(xù)研究中, 將繼續(xù)對(duì)模型結(jié)構(gòu)進(jìn)行優(yōu)化, 以進(jìn)一步提升目標(biāo)檢測(cè)算法的檢測(cè)精度.