晏世武 羅金良 嚴(yán)慶
摘要:目標(biāo)檢測在視頻監(jiān)控、無人駕駛系統(tǒng)、機械自動化等領(lǐng)域起著重要作用。在如今大數(shù)據(jù)的背景下,為進一步提高Yolov3在不同數(shù)據(jù)集下的性能,本文以KITTI數(shù)據(jù)集為基礎(chǔ),利用重新調(diào)整anchor數(shù)值和增加尺度融合的方法改進Yolov3,并通過增加數(shù)據(jù)的方法平衡類別,進一步提高Yolov3性能。實驗結(jié)果表明,改進的Yolov3較原始的框架,其mAP提高了近5.31%,從側(cè)面說明改進的Yolov3具有較高的實用價值。
關(guān)鍵詞:目標(biāo)檢測;深度學(xué)習(xí);尺度融合;平衡類別;mAP
0 引言
目標(biāo)檢測能夠?qū)D像或視頻中的物體進行準(zhǔn)確分類和定位,在監(jiān)控、無人駕駛、機械自動化等領(lǐng)域中起著至關(guān)重要的作用。早前的目標(biāo)檢測是通過人工提取特征的方法,使用DPM模型,并在圖像上進行窗口滑動的方法進行目標(biāo)的定位。這種方法十分耗時且精度不高。隨著信息時代的快速發(fā)展,如今的數(shù)據(jù)量成幾何式地增長,再使用人工提取特征的方式是十分不明智的。自2012年Alexnet在ILSVRC(Large Visual Recognition Challenge)比賽中大放光彩以來,學(xué)者們不斷地使用卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network,CNN)設(shè)計新的目標(biāo)檢測框架,并出現(xiàn)了Faster RCNN、SSD、Yolov3等高性能的目標(biāo)檢測框架,并且在實踐中展現(xiàn)出強大性能。
在如今較為主流目標(biāo)檢測框架中,Yolov3在檢測速度和精度的平衡性方面表現(xiàn)較好,人們不斷在各種領(lǐng)域使用Yolov3實現(xiàn)目標(biāo)檢測功能。然而原始的Yolov3架構(gòu)并不能在各種數(shù)據(jù)集下均表現(xiàn)出色。對于小目標(biāo)物體會出現(xiàn)定位不準(zhǔn)確的和漏檢的情況。本文針對Yolov3的問題,設(shè)計以下改進方法:
(1)針對目標(biāo)定位不準(zhǔn)確的問題,對于不同的數(shù)據(jù)集,重新調(diào)整anchor的數(shù)值:
(2)針對小目標(biāo)難檢和漏檢的情況,增加一個尺度融合:
(3)通過增加較少類別的物體數(shù)的方式平衡類別來優(yōu)化Yolov3.
1Yolov3及其改進方式
1.1 Yolov3框架
Yolov3是目標(biāo)檢測算法之一,是基于回歸的方式進行特征提取,通過端到端的過程訓(xùn)練網(wǎng)絡(luò)。最終在多尺度融合的特征層中回歸出目標(biāo)的類別與位置。端到端的訓(xùn)練方式使得分類與定位過程為一體。其兩者共同的損失函數(shù)參與反向傳播計算,在節(jié)約特征提取時間的同時又提升了精度,滿足了目標(biāo)檢測的實時陸需求。Yolov3目標(biāo)檢測框架如圖1所示。
圖1中提取曾為Darknet-53的網(wǎng)絡(luò)結(jié)構(gòu)。該結(jié)構(gòu)以256x256圖片作為輸入,大量使用1×1和3×3的卷積層進行堆砌,并使用殘差網(wǎng)絡(luò)(如圖2所示)將淺層信息傳遞到深層,可在增加網(wǎng)絡(luò)深度的同時不引起梯度爆炸等問題,圖1中最左邊的數(shù)字即代表所重復(fù)的殘差網(wǎng)絡(luò)模塊的個數(shù):Yolov3結(jié)構(gòu)在檢測方面采用的是多尺度檢測策略,使用32x32、16x16、8x8三個不同尺寸的特征圖進行檢測輸出。原圖進行尺寸映射到檢測特征層的每個點上,且每個點有3個預(yù)測框。因此在三個特征層檢測上共有4032個預(yù)測框。該預(yù)測數(shù)極大滿足了檢測多類物體的需要。最終使用logistic回歸,對每個預(yù)測框進行目標(biāo)性評分,根據(jù)目標(biāo)性評分來選擇滿足需求的目標(biāo)框,并對這些目標(biāo)框進行預(yù)測。
1.2 anchors的設(shè)置
在Yolov3目標(biāo)檢測框架中anchor十分重要,它是由當(dāng)前數(shù)據(jù)集通過kmeans聚類算法統(tǒng)計出來的,合適的anchor值能夠降低網(wǎng)絡(luò)架構(gòu)的損失值,加快收斂。在原始的Yolov3網(wǎng)絡(luò)層中,用于檢測物體的特征層為32x32、16x16、8x8大小的特征提取層,這些特征層可以映射到原始圖像,即原始圖像被切分為對應(yīng)特征層的網(wǎng)格大?。╣rid cell)。如果真實框(ground truth)中某個物體的中心坐標(biāo)落在gridcell里,就由該grid cell預(yù)測該物體,并且每個Cddcell預(yù)測3個邊界框,其邊界框的大小由anchor值決定,然后對預(yù)測的邊界框與真實框的交互比(IOU)來選出超過IOU值的邊界框去進行檢測,為進一步減少不必要的檢測次數(shù),使用設(shè)置目標(biāo)置信度的方法,當(dāng)預(yù)測框的置信度小于該設(shè)定值就不再去檢測該框。
本文訓(xùn)練使用的KITTI數(shù)據(jù)集,而原始Yolov3中的anchor值是使用COCO數(shù)據(jù)集得到的。因此,為提升本文物體的定位精度,重新使用kmeans算法去統(tǒng)計是十分必要的,且由于KITTI數(shù)據(jù)集的圖片較大。本文將Yolov3的初始圖片大小設(shè)為608×608,其對應(yīng)特征層的大小也相應(yīng)的會改變。COCO數(shù)據(jù)集和KITHI的anchor值分別見表1、表2.
1.3 多尺度檢測
Yolov3目標(biāo)檢測框架中使用了多尺度檢測,即上文所提到的19x19、38×38、76×76三個特征層同時檢測圖像或視頻中的物體,且根據(jù)anchor中的值預(yù)先畫出預(yù)測邊界框。這種方式對中大型物體具有很好的檢測效果,但是對于小物體存在難檢或漏檢的情況。本文針對KITTI數(shù)據(jù)集,增加一個特征尺度以提升檢測精度。三尺度與四尺度檢測模型如圖3、4所示,由于增加了一個特征尺度,則anchor值也需要重新調(diào)整,見表3.
1.4 平衡數(shù)據(jù)類別
本文訓(xùn)練的數(shù)據(jù)集為KITTI。它是由德國卡爾斯魯厄理工學(xué)院和豐田美國技術(shù)研究院聯(lián)合創(chuàng)辦,是目前國際上最大的自動駕駛場景下的計算機視覺算法評測數(shù)據(jù)集。標(biāo)注了九個類別的物體,分別為Car、Van、Truck、Pedestrian、Person sitting、CyClist、Tram、Misc、DontCare。由于車輛的數(shù)據(jù)集較多而其它的數(shù)據(jù)較小,有結(jié)合CNN需要大量數(shù)據(jù)集的特點。本文對KITTI數(shù)據(jù)集中類別進行合并,合并策略如下:
(1)Car、Van、Truck、Tram合為一類,記為Vehicle;