張陳晨,靳 鴻
(中北大學 儀器科學與動態(tài)測試教育部重點實驗室, 太原 030051)
YOLO(you only look once)作為一種新的目標檢測算法[1],可以在保證高檢測精度的前提下提高檢測速度,該算法采用了端到端的檢測方式,不僅可以精確判別邊緣還可以辨別標簽,運用這種方式的檢測速度可以達到45幀/s的實時檢測,最新YOLO系列算法甚至可以達到155幀/s[2]。
對于YOLOv3-Tiny算法[3]眾人對其評價褒貶不一。在強大的YOLOv3算法性能影響下,YOLOv3-Tiny算法的輕量化版本雖然成本低,但并沒有展現(xiàn)出高效能,甚至還出現(xiàn)了檢測精度降低的情況,在很多場景并不能達到預期效果。目標檢測技術應用的3個主要領域是:安全系統(tǒng)、安保系統(tǒng)、金融系統(tǒng)[4]。目前,車輛識別主要采用模式識別和圖像分析技術[5]。本文采用改進后的YOLOv3-Tiny目標檢測算法實現(xiàn)對車輛的檢測,增加了YOLOv3-Tiny算法的實用性,在保證低成本的前提下,提高了Tiny算法對于車輛檢測效果的精度。同時,出于安全考慮,以普通車輛代替特種戰(zhàn)車,進行改進型算法的有效性驗證。
隨著科技的發(fā)展,目標檢測以及生物識別技術進入大眾的視野,YOLO系列算法作為當前目標檢測最為流行的深度學習算法,得到廣泛研究和應用[6]。本次車輛檢測系統(tǒng)為實現(xiàn)低成本高效率而采用YOLOv3-Tiny目標檢測算法。系統(tǒng)結構見圖1。
圖1 車輛識別系統(tǒng)結構框圖Fig.1 Structural framework of vehicle identification system
此次實驗的圖片數(shù)據(jù)集借助照相機以每秒20幀的速度進行實地拍攝,實驗對象為識別檢測4種車輛。同時此次采集的圖像考慮了白天、黑夜、陰雨等多樣化天氣狀態(tài),最終整理出4 091張圖片來制作本次實驗的數(shù)據(jù)集,數(shù)據(jù)集圖片像素為 1 024 540。
整理出4 091張圖片后,接下來需要運用LabelImg軟件對每一張圖片進行標注,使得可以生成與原圖相對應的標簽文件,標簽文件中記錄著每個對象的類別在對應圖片中的相對位置。
本次標注共有4種標簽,包括car、bus、truck、ignore_region,其中ignore_region的標注是為了避免歧義和降低標注成本。比如在采集的某些圖片中,存在較遠的大塊區(qū)域里包含有很多個其他類別的物體,因目標過小使得計算機不能很好的捕捉到其特征,所以對其進行標注沒有實際意義[7]。
相比于YOLOv3檢測算法,Tiny系列的版本將整個網(wǎng)絡進行簡化,刪除了殘差層,只使用了2種不同尺度的yolo輸出層,在損失函數(shù)的選擇上包含坐標誤差(coordError)、IoU誤差(iouError)和分類誤差(classError)[8]。
在訓練過程中對損失值的計算如下:
YOLOv3-Tiny網(wǎng)絡模型結構如圖2所示。
圖2 YOLOv3-Tiny網(wǎng)絡模型結構框圖Fig.2 YOLOv3-Tiny network model structure
由圖2可知,YOLOv3-Tiny模型采用了卷積與池化交替的結構,輸入經(jīng)過卷積池化尺寸成比例降低,特征篩選是采取4個元素取1個元素的方式;對比于YOLOv3簡化了層級,而且輸出只有2層,所以Tiny網(wǎng)絡總體成本較低,雖然檢測精度低于YOLOv3算法,但是繼承了檢測速度快的優(yōu)點[9]。
根據(jù)YOLOv3-Tiny網(wǎng)絡檢測效果的匹配問題[10],提出了相應的改進思路,因為數(shù)據(jù)庫為小樣本數(shù)據(jù),所以發(fā)現(xiàn)特征流失嚴重,因為正負樣本標簽數(shù)目較少,在保證數(shù)據(jù)庫數(shù)據(jù)不變的情況下需要改變特征篩選的方式。
采用部分卷積層替換池化層的方式,適當增大輸入,經(jīng)過計算改變輸入為448×448,卷積核步長為2,即保證了輸入尺寸成倍降低,達到相同效率,又減少了池化導致的特征流失。改進后的網(wǎng)絡模型結構如圖3所示。
圖3 替換卷積層后的YOLOv3-Tiny網(wǎng)絡模型結構框圖Fig.3 Block diagram of YOLOv3-Tiny network model after replacing convolution layer
K-means聚類均值算法是對網(wǎng)絡的訓練和機器學習的無監(jiān)督模式[11],用這種方法可以來計算錨點。錨點(anchor)是檢測框的中心點,往往在算法中歸為定值,不過隨著機器學習的發(fā)展,不同Anchor計算得到的不同精度值所造成的影響越發(fā)受人關注,因此可以動態(tài)調整Anchor是目前目標檢測算法的主流方向。K-means聚類如圖4所示。
圖4 K-means聚類圖Fig.4 K-means cluster diagram
K-means算法步驟如下:
1) 從數(shù)據(jù)中選擇k個對象作為初始聚類中心;
2) 計算不同聚類物體到聚類中心的長短;
3) 再次計算每個聚類中心;
4) 計算標準測度函數(shù),進行循環(huán)往復,直到達到最大迭代次數(shù)函數(shù)才會停止,為了加快函數(shù)收斂速度,可以指定最大迭代次數(shù),提高效率;
5) 確定最優(yōu)的聚類中心
iou=xy/d(box,clusters)
是為了計算參數(shù)iou(交并比),來判斷檢測框是否準確。
由圖4可知聚類的數(shù)目等于6,圖像的輸入尺寸等于448。
本次實驗使用的操作系統(tǒng)版本為64位Ubuntu 18.04 LTS的Linux操作系統(tǒng),主要的機器硬件配置為四核四線程英特爾酷睿i3-9100F CPU,選擇darknet為本次實驗的深度學習框架,數(shù)據(jù)集圖片由人工實地采集,制作成類VOC數(shù)據(jù)集共4 091張圖片,再以6∶2∶2的比例將圖片劃分為訓練集、測試集以及驗證集。設置輸入為448×448,初始學習率為0.001,最大迭代次數(shù)為25 000,采用動態(tài)調整學習率的方式在第4 000、8 000批次下對學習率進行成倍衰減。
經(jīng)過聚類算法得到的Anchor如圖5所示,(12,18),(10,7),(4,26),(29,17),(10,14),(7,37)共6類。改進前后的檢測效果如圖6所示,檢測前后的平均精度如下:
圖5 得出的AnchorFig.5 The resulting Anchor
圖6 改進前后的檢測效果Fig.6 Test results before and after improvement
檢測前:Bus: 0.76132358873
Car: 0.860279633443
Ignore_region: 0.190031117096
Truck: 0.774514273566
****************************
Map: 0.839441153998
檢測后:Bus: 0.80847090384
Car: 0.899464888
Ignore_region: 0.396268242427
Truck:0.861581049064
****************************
Map: 0.841446270832
檢測前后的預測框準確率:
檢測前:[ [0.02539062 0.02592593]
[0.04003906 0.04444444]
[0.01855469 0.04074074]
[0.0078125 0.01296296]
[0.04492188 0.08703704]
[0.01269531 0.02037037]]
Accuracy: 89.72%
檢測后:[ [0.02636719 0.06481481]
[0.04003906 0.03888889]
[0.02246094 0.02222222]
[0.01464844 0.03148148]
[0.00976562 0.01666667]
[0.05859375 0.08148148]]
Accuracy: 90.60%
改進前后YOLOv3-Tiny的檢測結果對比如表1所示,改進前后YOLOv3-Tiny的各類別車輛檢測效果如表2所示。
表1 改進前后YOLOv3-Tiny的檢測結果Table 1 Detection results of YOLOv3-Tiny before and after improvement
表2 改進前后YOLOv3-Tiny的各類別車輛檢測效果 %
目標檢測算法中主要的評價指標如下:
1) mAP(mean average precision)??梢杂脕砼袛囝A測框的類別標簽是否準確和定位坐標是否精準的指標。
2) IoU(intersection over union,交并比)。是目標檢測算法中2個不同檢測框之間存在的相似度的判斷指標。
通過上述數(shù)據(jù)對比可以得出,改進后的YOLOv3-Tiny模型整體檢測結果相較原模型有了明顯的提升,交并比(IoU)提升了14%,整體準確率提高了0.88%,平均檢測率(mAP)提高了0.2%,但是速度有所降低。
在不同目標的識別率上,改進后的YOLOv3-Tiny模型對比原模型在小目標的識別率提高了3.92%,大目標的識別率提高了8.23%,中大型目標的識別率提高了8.7%;由此可見,改進后的YOLOv3-Tiny模型整體性能有了明顯提高,犧牲了少許檢測速度而提高了精度,改進的主干網(wǎng)絡減少了在池化層中特征點的大量丟失。
本文提出了對YOLOv3-Tiny算法的改進,改進后的YOLOv3-Tiny檢測算法整體準確率提高了0.88%,mAP提高了0.2%,對于中大型目標的識別率有明顯提升,中型目標的識別率提升了8.23%,大型目標的識別率提升了8.7%。