鄒承明,薛榕剛
1.交通物聯(lián)網(wǎng)湖北省重點實驗室,武漢430070
2.武漢理工大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,武漢430070
3.鵬程實驗室,廣東 深圳518000
在生產(chǎn)生活中,需要機(jī)器能夠?qū)D像中的物體進(jìn)行分類并定位,這就需要用到目標(biāo)檢測技術(shù)。目標(biāo)檢測技術(shù)在工業(yè)、安防、軍事、人臉識別[1]、自動駕駛[2-3]等領(lǐng)域有著極大的應(yīng)用前景及研究價值,也吸引了越來越多學(xué)者們的關(guān)注。當(dāng)前,目標(biāo)檢測方法研究已取得較大進(jìn)展,檢測精度及速度在不斷提高。但是,由于觀測角度、遮擋、光照以及目標(biāo)外觀形狀、尺度的不同等因素影響,目標(biāo)檢測的精度仍有很大的提升空間。
目標(biāo)檢測通常包括目標(biāo)分類和目標(biāo)定位兩個任務(wù),傳統(tǒng)的目標(biāo)檢測模型分為三個步驟:選取特征區(qū)域、特征提取和目標(biāo)分類[4]。Felzenszwalb 等人[5]提出的多尺度形變部件模型(Deformable Part Model,DPM)充分利用HOG[6](Histogram of Orientation Gradient)和支持向量機(jī)(Support Vector Machine,SVM)的優(yōu)勢,在圖像處理、人臉識別等任務(wù)上取得了重要突破。但是其基于滑動窗口的區(qū)域選擇策略會導(dǎo)致大量的冗余計算,且使用手工特征無法表征所有情況下的物體特征,魯棒性較差[7]。隨著深度學(xué)習(xí)的發(fā)展,R-CNN系列算法[8-11]在目標(biāo)檢測領(lǐng)域取得極大的成功。R-CNN系列算法采用RPN(Region Proposal Network)的方法來得到特征區(qū)域,這種方法在很大程度上克服了采用滑動窗口所帶來的計算冗余。同時,使用深度學(xué)習(xí)的方法對目標(biāo)區(qū)域提取特征,避免了使用人工特征帶來的一些缺陷,最后使用分類器進(jìn)行分類,識別出檢測框中物體的類別。雖然RCNN 系列算法以及R-FCN[12]、SSP-net[13]等方法識別精度有了很大提高,但檢測速度較慢,難以達(dá)到實時性的要求。
近年來,實時目標(biāo)檢測方法的研究有了較大突破并在工業(yè)領(lǐng)域及實際應(yīng)用場景中發(fā)揮了很好的檢測效果[14]。以YOLO[15-17]、SSD[18]為代表的單階段檢測方法,采用基于深度學(xué)習(xí)的回歸方法進(jìn)行目標(biāo)檢測,從圖像中直接獲得邊界框及目標(biāo)種類。SSD算法在VOC2007數(shù)據(jù)集上的mAP 可以達(dá)到74.3%,檢測速度達(dá)到46 幀/s。YOLOv2 算法在VOC2007 數(shù)據(jù)集上,保持檢測速度為40 幀/s 的情況下mAP 能夠達(dá)到78.6%。YOLOv3 算法在COCO數(shù)據(jù)集上mAP達(dá)到57.9%(IoU=0.5)的情況下能夠夠保持20 幀/s的檢測速度。
當(dāng)前,目標(biāo)檢測的優(yōu)化方向包括網(wǎng)絡(luò)結(jié)構(gòu)、IoU(Intersection over Union)、損失函數(shù)、非極大抑制(Non-Maximum Suppression,NMS)、先驗框及學(xué)習(xí)率等。文獻(xiàn)[14,19-23]在YOLO的基礎(chǔ)上對模型的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),使原有模型在不同數(shù)據(jù)集上的檢測精度或速度有所提升。Shen 等人[24]結(jié)合SSD 和DenseNet[25]提出了不需要進(jìn)行預(yù)訓(xùn)練的Dsod模型。文獻(xiàn)[26-27]基于SSD模型進(jìn)行改進(jìn),提升了SSD 模型對中、小目標(biāo)的檢測能力。梁延禹等人[28]提出了多尺度非局部注意力的小目標(biāo)檢測算法,在PASCAL VOC、MS COCO 數(shù)據(jù)集上的實驗結(jié)果表明該算法能有效提高小目標(biāo)的檢測準(zhǔn)確率。Lin 等人[29]根據(jù)低層特征與高層特征所含信息不同,提出了金字塔結(jié)構(gòu)的多尺度目標(biāo)檢測算法,該算法融合圖像的低層特征高分辨率和高層特征高語意信息,對小物體的檢測效果明顯。2017 年,Lin 等人[30]再次提出RetinaNet模型,模型中采用的Focal loss成功解決了目標(biāo)檢測中正負(fù)樣本區(qū)域極不平衡導(dǎo)致目標(biāo)檢測損失易被大量負(fù)樣本左右的問題。Rezatofighi等人[31]提出了一種通用的優(yōu)化邊界框的方式——GIoU(Generalized Intersection over Union),GIoU解決了目標(biāo)檢測領(lǐng)域最重要的評價尺度IoU 在兩個框不重合時不能反映兩者的距離及無法精確反映兩者重合度大小的缺點。Wang等人[32]提出一種新的生成先驗框的方法GA-RPN(Guided Anchoring),通過CNN 預(yù)測先驗框的位置和形狀,生成稀疏而且形狀任意的先驗框,并設(shè)計Feature Adaption模塊來修正特征圖使之與先驗框精確匹配。GA-RPN相比RPN減少90%的先驗框,并提高9.1%的召回率。
本文在YOLOv3 的基礎(chǔ)上,結(jié)合DenseNet 的思想,在YOLOv3網(wǎng)絡(luò)中加入了長連接,最終使網(wǎng)絡(luò)的參數(shù)量增加了4.2%,在不影響模型檢測實時性的前提下加強(qiáng)了模型特征重用,同時加快了模型的收斂速度;在損失函數(shù)中使用GIoU loss,克服了YOLOv3 損失函數(shù)中邊界框損失的不足。另外,在損失函數(shù)中引入了Focal loss 以解決正負(fù)樣本分布不平衡及簡單樣本與困難樣本不平衡所造成的誤差。實驗結(jié)果表明,在不影響算法實時性能的情況下,改進(jìn)的YOLOv3算法比YOLOv3算法有一定的性能提升。
在YOLO模型提出之前,對一張圖像進(jìn)行目標(biāo)檢測一般分為兩個階段,如主流的R-CNN 檢測方式。第一階段通過各種方法產(chǎn)生候選區(qū)域,第二階段通過CNN提取特征并進(jìn)行分類。故R-CNN系列方法雖然精度較高,但檢測速度慢,無法滿足實時性檢測的要求。YOLO方法將檢測任務(wù)表述成一個統(tǒng)一的、端到端的回歸問題,只需要一次處理就能得到目標(biāo)位置和分類,檢測速度較之前的算法有了大幅度的提升。
YOLO算法將圖像分為S×S的單元格,如圖1所示(S=7)。如果一個物體的中心(圖1中紅色點)落在某個單元格上,那么這個單元格負(fù)責(zé)預(yù)測這個物體。在檢測過程中,每個單元格需要預(yù)測B個邊界框(包括目標(biāo)的位置信息、置信度和每個邊界框所包含目標(biāo)的C個類別信息),并將置信度小于閾值的邊界框置為0,最后采用非極大值抑制算法去掉重復(fù)的邊界框從而檢測出各類目標(biāo)。
圖1 YOLO網(wǎng)格示意圖
為克服YOLO 模型對小目標(biāo)預(yù)測效果差的缺點以進(jìn)一步提高模型的預(yù)測準(zhǔn)確度,YOLOv3在YOLOv1和YOLOv2的基礎(chǔ)上做了進(jìn)一步的改進(jìn),在網(wǎng)絡(luò)中引入了基于多尺度預(yù)測的特征金字塔結(jié)構(gòu)(FPN),如圖2所示,小的物體會在淺層的特征圖中被檢測出來,大的物體會在較深的特征圖中被檢測出來。首先,使用k-means聚類算法得到9 個先驗框,每種尺度下各三個,每種尺度下的一個網(wǎng)格負(fù)責(zé)預(yù)測三個邊界框。然后,使用darknet-53網(wǎng)絡(luò)對圖像進(jìn)行特征提取,當(dāng)提取到最深層特征時,進(jìn)行輸出,同時進(jìn)行上采樣,與另一尺度下的特征進(jìn)行融合。這樣,每層特征圖中都會包含淺層的低級特征(如物體的邊緣、顏色、初級位置信息等)和深層的高級特征(如物體的語義信息等),預(yù)測的準(zhǔn)確度也會有所提高。另外,由于darknet-53中加入了殘差塊,使網(wǎng)絡(luò)的結(jié)構(gòu)可以設(shè)置得更深,因而具有更強(qiáng)的特征提取能力。
圖2 YOLOv3中的特征金字塔結(jié)構(gòu)
YOLOv3網(wǎng)絡(luò)模型的損失函數(shù)分為邊界框損失,置信度損失和分類損失,損失函數(shù)如下式所示:
其中,表示第i個網(wǎng)格的第j個先驗框是否負(fù)責(zé)預(yù)測目標(biāo)邊界框的位置,若負(fù)責(zé)預(yù)測則其值為1,若不負(fù)責(zé)預(yù)測,則其值為0。表示第i個邊界框不負(fù)責(zé)預(yù)測目標(biāo)位置。由于YOLOv3在三種不同尺度下進(jìn)行預(yù)測,所以最終的損失函數(shù)為三種尺度下loss的和。
YOLOv3 目標(biāo)檢測算法為了獲得深層次的特征信息以提高檢測精度,需要加深網(wǎng)絡(luò)的深度。為解決梯度消失和模型退化的問題,YOLOv3網(wǎng)絡(luò)中引入了殘差網(wǎng)絡(luò)的思想,網(wǎng)絡(luò)中加入大量的殘差塊,YOLOv3 中的殘差塊如圖3 所示。殘差塊通過在每兩層網(wǎng)絡(luò)之間設(shè)置旁路連接,在進(jìn)行特征重用的同時,在網(wǎng)絡(luò)間增加了特征傳遞的捷徑,將特征信息直接傳到神經(jīng)網(wǎng)絡(luò)的深層。這樣,在前向傳播過程中,當(dāng)淺層的輸出已經(jīng)達(dá)到較好效果時,深層網(wǎng)絡(luò)后面的網(wǎng)絡(luò)層能夠?qū)崿F(xiàn)恒等映射的效果。在反向傳播過程中,殘差塊會明顯減少模塊中參數(shù)的值從而讓網(wǎng)絡(luò)中的參數(shù)對反向傳導(dǎo)的損失值有更敏感的響應(yīng)能力。雖然沒有從根本解決回傳損失小的問題,但卻讓參數(shù)減小,相應(yīng)而言增加了回傳損失的效果,也產(chǎn)生了一定的正則化作用。
圖3 YOLOv3中的殘差模塊示意圖
Huang等人[25]在DenseNet一文中指出,與其多次學(xué)習(xí)冗余的特征,特征復(fù)用是一種更好的特征提取方式。根據(jù)DenseNet 思想,本文對YOLOv3 網(wǎng)絡(luò)darknet-53 進(jìn)行了一些改進(jìn),在darknet-53 中的殘差塊間加入了旁路連接。Darknet-53網(wǎng)絡(luò)中的旁路連接位于殘差塊內(nèi),其連接步長相對較短,僅對網(wǎng)絡(luò)中相鄰層之間進(jìn)行連接。在網(wǎng)絡(luò)的殘差塊間加入旁路連接后,進(jìn)一步加強(qiáng)了網(wǎng)絡(luò)的特征重用,同時由于旁路連接的步長變大,使信息流更容易傳遞到網(wǎng)絡(luò)的深層。圖像的顏色、邊緣輪廓等淺層特征也能夠通過旁路直接傳遞到網(wǎng)絡(luò)深層,與圖像深層特征融合起來。這樣,網(wǎng)絡(luò)深層的特征圖不僅包含淺層的位置信息等,又包含深層的語意信息。使用網(wǎng)絡(luò)深層特征圖進(jìn)行目標(biāo)檢測就會獲得更好的精度。同時,由于網(wǎng)絡(luò)之間存在捷徑,模型的收斂速度也會更快。
加入旁路連接后的YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。在darknet-53中依次選取輸入特征圖尺寸相同的兩個殘差塊,將前一個殘差塊的輸入與其后一個殘差塊的輸出進(jìn)行連接,并將連接后特征圖尺寸調(diào)整到與下一個殘差塊的輸入保持一致。為完整保留網(wǎng)絡(luò)中的信息流,這里借鑒Densenet的方法,對融合的特征取并集后再調(diào)整尺寸。這樣,在每四層網(wǎng)絡(luò)之間就會有一個長連接。
圖4 改進(jìn)的YOLOv3算法網(wǎng)絡(luò)結(jié)構(gòu)中的長連接
IoU可用來衡量兩個邊界框的相似性,是目標(biāo)檢測領(lǐng)域用來評價目標(biāo)檢測器性能的一個重要指標(biāo),預(yù)測框與真實框的重疊度越高,IoU值也越大,IoU的計算如公式(2)所示,其中A、B分別代表預(yù)測框和真實框。
當(dāng)前很多目標(biāo)檢測算法在計算邊界框損失函數(shù)時普遍采用預(yù)測框與真實框的L1 范數(shù)或L2 范數(shù)來計算位置回歸損失。但在評測時卻使用IoU 去判斷是否檢測到目標(biāo),而這兩者并非完全等價。如圖5所示[31],其中綠色框為真實框,黑色框為預(yù)測框,圖5(a)、(b)分別為預(yù)測框與真實框角點坐標(biāo)距離的L1 和L2 范數(shù)相同時的IoU 對比。從圖中可看出,當(dāng)L1 范數(shù)或L2 范數(shù)相等時,IoU的值有很大的差異。而從公式(1)可知YOLOv3的邊界框損失函數(shù)是根據(jù)L2 范數(shù)來計算的,因而存在一定誤差。
圖5 預(yù)測框與真實框L1范數(shù)、L2范數(shù)與IoU
若直接使用IoU作為邊界框損失,當(dāng)預(yù)測框與真實框之間沒有重合時,IoU 無法衡量兩邊界框距離的遠(yuǎn)近,且IoU為0,導(dǎo)致優(yōu)化損失函數(shù)時梯度為0,無法優(yōu)化。如圖6所示,(a)、(b)中IoU都為0,但是(a)中預(yù)測框與真實框的距離明顯更近一些,其預(yù)測效果也更佳?;诖?,Rezatofighi等[31]提出的GIoU充分利用了IoU具有尺度不變性及可作為兩個框距離的優(yōu)點,同時,克服了IoU在預(yù)測框與真實框不重合時的不足之處,能夠更好地反映預(yù)測框與真實框的重合情況。GIoU的計算如公式(3)所示。其中,A、B為預(yù)測框與真實框,C為包含兩者的最小閉合框。如圖7所示,黑色框范圍即為C的表示區(qū)域。
圖6 IoU為0時的不同場景
圖7 GIoU中C 的表示區(qū)域
由公式(2)、(3)可知,GIoU 的變化范圍為(-1,1],且當(dāng)預(yù)測框與真實框完全重合時,GIoU=1。當(dāng)預(yù)測框與真實框不重合,即IoU=0 時,GIoU的計算公式可轉(zhuǎn)化為公式(4):
預(yù)測框與真實框距離越遠(yuǎn),越接近0,GIoU越接近-1,預(yù)測框與真實框距離越近越接近1,GIoU越接近0。因此,相比于IoU,GIoU能夠更好評價兩邊界框的重合度。
以GIoU 作為衡量邊界框距離的指標(biāo),其損失函數(shù)如下:
兩邊界框的GIoU 越大,GIoU loss 越小,網(wǎng)絡(luò)會朝著預(yù)測框與真實框重疊度較高的方向去優(yōu)化。根據(jù)GIoU loss 對YOLOv3 模型邊界框損失函數(shù)進(jìn)行改進(jìn),改進(jìn)后的邊界框損失函數(shù)如式(6)所示:
在單階段目標(biāo)檢測中,由于正負(fù)樣本區(qū)域分布極不平衡,導(dǎo)致目標(biāo)檢測損失易被大量負(fù)樣本所左右。這樣,少量正樣本所提供的關(guān)鍵信息不能在損失函數(shù)中發(fā)揮正常作用,從而無法得到一個能對模型訓(xùn)練提供正確指導(dǎo)的損失函數(shù)。Lin 等人[30]提出的Focal loss 通過對交叉熵?fù)p失(cross-entropy loss)增加權(quán)重,解決了正負(fù)樣本分布不衡以及簡單樣本與困難樣本不平衡的問題。
典型的交叉熵?fù)p失廣泛用于當(dāng)下的圖像分類、檢測CNN 網(wǎng)絡(luò)當(dāng)中,如公式(7)所示。其中,p∈[0,1],代表模型輸出類別概率,y為類別標(biāo)簽,其取值為0或1。
考慮到數(shù)據(jù)集中正負(fù)樣本不平衡問題,可通過在交叉熵?fù)p失中使用與目標(biāo)存在概率成反比的系數(shù)進(jìn)行校正。這樣,數(shù)量較少的正樣本權(quán)重系數(shù)較大,對模型的貢獻(xiàn)也會加大,數(shù)量較大的負(fù)樣本權(quán)重系數(shù)較小,其對模型的貢獻(xiàn)會相對削弱,因而,模型會學(xué)習(xí)到更多的有用信息。加入權(quán)重系數(shù)α后的交叉熵?fù)p失如下:
另外,樣本中有些類別比較明確,有些類別則較難區(qū)分。Focal loss 在交叉熵?fù)p失的基礎(chǔ)上,增加了一個動態(tài)縮放因子,自動降低簡單樣本的損失,幫助模型集中于訓(xùn)練更加困難的樣本。在Focal loss 計算中,引入了一個新的超參數(shù)γ,Focal loss的計算如公式(9)所示:
將Focal loss與權(quán)重α結(jié)合起來,則Focal loss最終計算公式為:
在YOLOv3模型中,若輸入圖像的大小為416×416,則將會產(chǎn)生10 647個先驗框,而對于MS COCO2014數(shù)據(jù)集,訓(xùn)練樣本中每張圖像約包含7.3個目標(biāo),絕大多預(yù)測框均不包含目標(biāo),這就造成樣本中存在正負(fù)樣本不平衡的問題。YOLOv3 模型中使用Ignore_thread 及對不存在目標(biāo)的樣本框使用較小的置信度等措施在一定程度上能夠解決正負(fù)樣本不平衡問題。但正負(fù)樣本不平衡問題仍然存在,在引入Focal loss后,模型能夠更好地解決正負(fù)樣本不平衡問題,且由于對困難樣本的檢測效果更好,因而能夠提高模型檢測效果。引入Focal loss后,YOLOv3模型的損失函數(shù)如公式(11)所示:
實驗的數(shù)據(jù)集采用PASCAL VOC 2007+2012 和MS COCO(Microsoft COCO:Common Objects in Context)2014數(shù)據(jù)集。兩種數(shù)據(jù)集的具體數(shù)量如表1。
表1 實驗數(shù)據(jù)集詳情
PASCAL VOC 2007+2012。PASCAL VOC 2007和2012數(shù)據(jù)集共分四個大類:vehicle、household、animal、person,20 個小類。VOC 2007 和VOC 2012 訓(xùn)練集共包含16 551 張圖像,40 058 個樣本框。VOC 2007 測試集包含4 952 張圖像,12 032 個樣本框,VOC 2012 測試集未公開。使用VOC 2007 和VOC 2012 的訓(xùn)練集進(jìn)行訓(xùn)練,然后使用VOC 2007 測試集進(jìn)行測試,最后計算IoU=0.5 時的mAP對模型進(jìn)行評價。
MS COCO 2014。COCO2014 數(shù)據(jù)集中包含80 個類別的目標(biāo),其訓(xùn)練集共有82 783張圖像,604 907個樣本框。從驗證集中選取10 000 張圖像作為測試集對模型進(jìn)行評價。相比于VOC 數(shù)據(jù)集,COCO 數(shù)據(jù)集的評價標(biāo)準(zhǔn)更嚴(yán)格。COCO 的主要評價標(biāo)準(zhǔn)是IOU 在[0.5,0.95]區(qū)間內(nèi),步長為0.05時的10次AP的平均值。
本文設(shè)計了四個模型,分別為增加了長連接的YOLOv3(以下稱為YOLOv3-A),使用GIoUloss作為邊界框損失函數(shù)的YOLOv3(以下稱為YOLOv3-B),引入Focal loss后的YOLOv3(以下稱為YOLOv3-C)以及對YOLOv3同時進(jìn)行以上幾種改進(jìn)后的模型(以下稱為YOLOv3-D)。對四種模型在PASCAL VOC2007數(shù)據(jù)集和COCO2014數(shù)據(jù)集上進(jìn)行訓(xùn)練及模型評估。目前,針對目標(biāo)檢測訓(xùn)練的主流做法是基于Imagenet 數(shù)據(jù)集預(yù)訓(xùn)練的模型來提取特征,然后在PASCAL VOC 數(shù)據(jù)集或COCO 數(shù)據(jù)集上進(jìn)行微調(diào)??紤]到預(yù)訓(xùn)練過程需要耗費(fèi)大量時間,直接加載YOLOv3在VOC數(shù)據(jù)集上以及COCO數(shù)據(jù)集上的模型,并采取分段訓(xùn)練的方法進(jìn)行訓(xùn)練。訓(xùn)練的第一階段僅對加載模型中沒有預(yù)訓(xùn)練權(quán)重的那部分參數(shù)進(jìn)行訓(xùn)練,第二階段對所有權(quán)重進(jìn)行訓(xùn)練。在訓(xùn)練的初始階段,為使模型能夠穩(wěn)定,設(shè)置了一個熱身階段。熱身階段為兩輪循環(huán),學(xué)習(xí)率逐漸增大到0.000 1,之后采用文獻(xiàn)[33]中的consin 衰減方式讓學(xué)習(xí)率逐漸降低以減小網(wǎng)絡(luò)的損失,模型訓(xùn)練學(xué)習(xí)率示意圖如圖8所示。在實驗中,網(wǎng)絡(luò)的輸入大小為416×416,損失函數(shù)中α值為0.75,γ值為2。PASCAL VOC 數(shù)據(jù)集上,YOLOv3-A和YOLOv3-D的迭代次數(shù)為80輪,YOLOv3-B和YOLOv3-C 的迭代次數(shù)為50 輪。在COCO 2014 數(shù)據(jù)集,YOLOv3-A 和YOLOv3-D 的迭代次數(shù)為100 輪,YOLOv3-B和YOLOv3-C的迭代次數(shù)為50輪。
圖8 實驗學(xué)習(xí)率設(shè)置示意圖
YOLOv3-A、YOLOv3-B、YOLOv3-C、YOLOv3-D四種模型首先在PASCAL VOC 2007+2012訓(xùn)練集上進(jìn)行訓(xùn)練,并在PASCAL VOC 2007測試集上進(jìn)行模型評估。PASCAL VOC 2007 測試集各類別目標(biāo)及其數(shù)量如圖9 所示。PASCAL VOC 2007 測試集mAP 的計算方法采用PASCAL VOC CHALLENGE 的計算方法。假設(shè)N個樣本有M個正例,就會得到M個召回率的值R(1/M,2/M,…,M/M),對每個召回率取最大的準(zhǔn)確率P,然后對這M個P值取平均值最后得到AP值。
圖9 VOC 2007測試集目標(biāo)類別及樣本框數(shù)量分布
在IoU=0.5 時,四種模型在PASCAL VOC 2007測試集上的mAP 及各類別目標(biāo)預(yù)測結(jié)果如圖10 所示。由圖10 可以看出,四種模型在測試集上的mAP 都達(dá)到80%以上,其中YOLOv3-D 模型的效果最好,其最高mAP為83.7%。圖11(a)為YOLOv3-A模型與YOLOv3模型在PASCAL VOC 數(shù)據(jù)集上的訓(xùn)練loss 對比,在加入長連接后,網(wǎng)絡(luò)有了淺層與深層之間信息傳遞的捷徑,模型的收斂速度也更快。
YOLOv3模型的參數(shù)量為62.80×106,在網(wǎng)絡(luò)中加入長連接后,模型的參數(shù)量為65.44×106,參數(shù)量增加2.64×106,增加量為4.2%。由于YOLOv3-A 與YOLOv3-D 模型中都加入了長連接,因而參數(shù)量有所增加,故檢測速率有所下降,在GPU(NVIDIA Tesla PH402 SKU 200)上的實驗結(jié)果顯示,YOLOv3-A和YOLOv3-D模型的檢測速度為27.2 幀/s,仍能達(dá)到實時檢測的要求(檢測速率大于25 幀/s)。YOLOv3-B和YOLOv3-C模型沒有引入多余的參數(shù)量,其檢測速度為28.6 幀/s。
四種模型在COCO 數(shù)據(jù)集上訓(xùn)練次數(shù)達(dá)到預(yù)先設(shè)定輪數(shù)時停止訓(xùn)練,并從驗證集隨機(jī)選取10 000張圖像作為測試集對模型進(jìn)行評估。模型評估標(biāo)準(zhǔn)采用COCO數(shù)據(jù)集的通用測試標(biāo)準(zhǔn),測試結(jié)果如表2所示。
實驗結(jié)果表明,在COCO 2014 數(shù)據(jù)集上,四種模型比YOLOv3 模型的檢測效果均有所提高。其中,YOLOv3-A 模型的mAP 提高了0.64 個百分點,得益于在網(wǎng)絡(luò)殘差塊間加入旁路連接后,網(wǎng)絡(luò)的特征復(fù)用能力得到提高,圖像淺層特征能夠直接傳入網(wǎng)絡(luò)的更深層與深層特征合并,使網(wǎng)絡(luò)中深層特征圖中的特征信息更完整,進(jìn)而使網(wǎng)絡(luò)對目標(biāo)的定位及分類能力有所高。YOLOv3-B 模型的mAP 相比于YOLOv3 模型提高幅度較大,達(dá)到2.03 個百分點,且參數(shù)規(guī)模沒有發(fā)生變化,模型檢測速度不會受到影響。由圖11(b)可以看出,使用GIoU loss 作為模型邊界框損失后,模型的loss 相比于YOLOv3 的loss 有所降低,模型的檢測效果也更好。YOLOv3-C 模型加入Focal loss 后,其mAP 提升了1.21 個百分點。在模型中,降低了ignore_thread 值并加入Focal loss 后,模型的正負(fù)樣本不平衡問題得到進(jìn)一步的解決,同時由于Focal loss 對難檢測目標(biāo)的檢測效果有提升作用,因而模型檢測效果得到提升。融合了多種改進(jìn)的YOLOv3-D模型的mAP最高,達(dá)到了33.27%,相比于YOLOv3模型其mAP提高了2.27個百分點。但必須指出,由于相比于YOLOv3 模型,YOLOv3-D 模型的參數(shù)增加了4.2 個百分點,會對模型的速度產(chǎn)生一定影響,但仍能達(dá)到實時檢測的要求。
圖10 三種模型PASCAL VOC 2007測試集預(yù)測結(jié)果
表2 模型在COCO 2014驗證集測試結(jié)果 %
圖11 模型loss對比圖
四種模型在PASCAL VOC 2007 測試集上與其他具有代表性的目標(biāo)檢測算法進(jìn)行對比,結(jié)果如表3 所示。與其他同類算法相比,YOLOv3-A、YOLOv3-B、YOLOv3-C、YOLOv3-D四種模型的mAP均高于其他算法,其中,YOLOv3-D 在取得最高mAP 的同時,仍能達(dá)到實時檢測的要求。圖12是在COCO數(shù)據(jù)集上的測試結(jié)果,由于COCO 數(shù)據(jù)集評價標(biāo)準(zhǔn)更嚴(yán)格,且數(shù)據(jù)集中大多數(shù)圖像來源于生活,背景更復(fù)雜,小目標(biāo)更多等因素,各目標(biāo)檢測算法在COCO 數(shù)據(jù)集上的mAP 普遍不高。從圖中可看出,四種改進(jìn)模型在保持實時檢測的情況下,其mAP 均高于YOLOv3 模型。且在mAP 接近的情況下,四種改進(jìn)模型的檢測速度比SSD、RetinalNet等模型檢測速度都快。
表3 PASCAL VOC 2007測試集上算法性能比較
圖12 不同模型在COCO測試集上性能對比圖
本文提出了一種融合GIoU和Focal loss的YOLOv3目標(biāo)檢測算法,該算法通過在YOLOv3網(wǎng)絡(luò)的殘差塊間引入旁路連接、使用GIoU loss 代替YOLOv3 模型的邊界框損失及在置信度損失函數(shù)中加入Focal loss這三個措施對YOLOv3 目標(biāo)檢測算法進(jìn)行改進(jìn)。在PASCAL VOC 和MS COCO 數(shù)據(jù)集上的實驗結(jié)果表明,改進(jìn)的YOLOv3算法在保障實時檢測的前提下,提高了YOLOv3模型檢測精度。下一步的工作將研究YOLOv3 模型在一些實際場景中的應(yīng)用,并繼續(xù)對模型進(jìn)行改進(jìn)以提高模型的檢測速度及精度。