周睿璇,汪俊霖,孫 宏,何秋生
(太原科技大學(xué),山西 太原 030024)
傳統(tǒng)識別貨車超重的方法主要是檢測人員用眼睛觀察,根據(jù)經(jīng)驗(yàn)判斷是否超重,但是這樣誤差大?,F(xiàn)在可以用視覺識別的方法來解決這一問題。根據(jù)國家貨車車型對應(yīng)標(biāo)準(zhǔn)(GB1589),貨車車軸的數(shù)量以及分布與貨車的型號相關(guān)聯(lián),可以通過檢測貨車車軸的數(shù)量和分布分辨貨車車型判斷其核載重量,再結(jié)合貨車實(shí)際載重量判斷是否超重。YOLO系列算法是比較成熟的神經(jīng)網(wǎng)絡(luò)算法,但也有不足之處,比如在檢測特定的物體時(shí)算法中原先設(shè)定的先驗(yàn)框有的就不適用了,本項(xiàng)目以識別貨車的車輪為例,對YOLO v3算法進(jìn)行改進(jìn)。
經(jīng)典的YOLO算法中輸入的圖片經(jīng)過Darknet-53輸出三種尺度特征,分別用于檢測小、中、大的物體,每個(gè)特征層有3個(gè)先驗(yàn)框。每個(gè)網(wǎng)格點(diǎn)預(yù)測出與所在層三個(gè)先驗(yàn)框?qū)?yīng)的三個(gè)預(yù)測框,每個(gè)預(yù)測框包含C+5個(gè)信息,其中C是物體的類別數(shù),5包括中心點(diǎn)的偏移量tx和ty、長寬th和tw、置信度[1]。這時(shí)的tx、ty、th、tw并不能直接反應(yīng)預(yù)測框的空間信息,還需要經(jīng)過下面公式獲取預(yù)測框的長寬bh、bw和中心位置bx、by。
bx=σ(tx)+cx
by=σ(ty)+cy
bw=attw
bh=aheth
(1)
其中:cx、cy是網(wǎng)格點(diǎn)在網(wǎng)格中的坐標(biāo);ah和aw是先驗(yàn)框的長和寬[2]。iou是預(yù)測框和真實(shí)框的交集和并集的比,可以反映出兩個(gè)框的重合程度,計(jì)算每個(gè)預(yù)測框和真實(shí)框的iou,與真實(shí)框iou值最大的預(yù)測框?yàn)樽罱K的檢測結(jié)果。
損失函數(shù)可以作為深度神經(jīng)網(wǎng)絡(luò)對誤檢測樣本懲罰的根據(jù),YOLO v3的損失函數(shù)采用二交叉熵的形式[3]。損失包括坐標(biāo)損失、置信度的損失和類的損失,其中坐標(biāo)損失包括中心點(diǎn)的損失、寬高的損失。損失函數(shù)公式如下:
(2)
(3)
其中:gx、gy、gw、gh、是真實(shí)框的中心點(diǎn)的偏移量和長寬;cx、cy是真實(shí)框所在網(wǎng)格點(diǎn)的坐標(biāo)。
坐標(biāo)損失函數(shù)的不足之處在于:中心點(diǎn)位置并不是0或1而是0和1之間的某個(gè)數(shù),但當(dāng)預(yù)測結(jié)果與實(shí)際結(jié)果相同時(shí)坐標(biāo)損失并不為0。
激活函數(shù)能加入非線性因素,提高神經(jīng)網(wǎng)絡(luò)對模型的表達(dá)能力,YOLO v3采用的是Leaky ReLU激活函數(shù),其公式為:
(4)
其中l(wèi)eak是一個(gè)很小的正數(shù)。
LeakyReLU激活函數(shù)的特點(diǎn)是在輸入為負(fù)值時(shí)只有很小的坡度且并不光滑,可能導(dǎo)致基于梯度的學(xué)習(xí)很慢,使得檢測的效率降低。
傳統(tǒng)的YOLO v3算法的先驗(yàn)框尺寸是固定的,可能導(dǎo)致先驗(yàn)框與數(shù)據(jù)集中物體的大小并不匹配,從而影響檢測精度。以貨車車輪的檢測為例,數(shù)據(jù)集中車輪的體積偏小,如果先驗(yàn)框設(shè)定過大可能導(dǎo)致預(yù)測框與真實(shí)框的iou的太小從而造成物體的漏檢。圖1是先驗(yàn)框和數(shù)據(jù)集中真實(shí)框尺寸的分布圖。
圖1 改前先驗(yàn)框和真實(shí)框尺寸的分布
從圖1可以看出有的先驗(yàn)框并不在真實(shí)框的集中范圍內(nèi),先驗(yàn)框并不能代表數(shù)據(jù)集中車輪的總體特征。所以對先驗(yàn)框的尺寸進(jìn)行改進(jìn)。根據(jù)實(shí)際場景中貨車車輪特征,本文采用K-means算法確定代表樣本特征的幾個(gè)先驗(yàn)框。
K-means聚類能夠在一組數(shù)中找到具有相似特征的數(shù)并把它們分在一起從而得到聚類的中心點(diǎn),這些中心點(diǎn)能代表這些數(shù)的總體情況。本文用iou來衡量兩個(gè)框的相似程度,其度量公式如下:
(5)
(6)
重復(fù)操作,直到新的先驗(yàn)框不變。預(yù)選框的生成和真實(shí)框的解碼受先驗(yàn)框變化的影響,公式(1)變?yōu)椋?/p>
(7)
公式(3)變?yōu)椋?/p>
(8)
傳統(tǒng)的YOLO v3采用的二交叉熵并不適用于中心點(diǎn)偏移量處于0到1之間的情況,考慮到本文檢測對象的特殊性,將坐標(biāo)損失函數(shù)替換為LossCIOU。LossCIOU采用的是預(yù)測框和真實(shí)框的中心點(diǎn)的歐式距離與包含預(yù)測框和真實(shí)框的最小閉包區(qū)域的對角線距離的平方之比來衡量中心點(diǎn)的誤差,為保證真實(shí)框和先驗(yàn)框長寬比的一致性,LossCIOU定義α和υ兩個(gè)參數(shù)以衡量長寬的損失,還把兩個(gè)框沒有重疊的部分納入考量范圍。LossCIOU的公式如下:
(9)
其中:ρ2(b,bgt)為預(yù)測框和真實(shí)框的中心點(diǎn)的歐式距離;c是能夠同時(shí)包含預(yù)測框和真實(shí)框的最小閉包區(qū)域的對角線距離;α和υ的公式如下:
(10)
其中:wgt、hgt是真實(shí)框的寬和長;w、h是預(yù)測框的寬和長。
由于Leaky ReLU是單調(diào)、不光滑的函數(shù),在檢測過程中容易導(dǎo)致梯度學(xué)習(xí)緩慢。Mish是一種光滑、非單調(diào)的函數(shù)。非單調(diào)性有助于負(fù)值的時(shí)候允許較小的負(fù)梯度流入,Mish函數(shù)不僅能加快學(xué)習(xí)速率還能得到更好的準(zhǔn)確性和泛化能力。Mish函數(shù)公式為:
Mish(x)=x×tanh(ln(1+ex))
(11)
實(shí)驗(yàn)對本文提出的改進(jìn)后的算法與原YOLO v3算法進(jìn)行對比分析。配置有英特爾E5-2660 v CPU、三星64G內(nèi)存和三星500G固態(tài)硬盤,還搭建了Keras、python、0penCV-python等常用環(huán)境。實(shí)驗(yàn)采用1140張貨車圖片作為測試集,檢測效果如圖2和圖3所示。
圖2 改進(jìn)前檢測效果
圖3 改進(jìn)后檢測效果
從圖2和圖3可知:改進(jìn)前檢測出的三個(gè)預(yù)測框的平均得分為0.847,更改后的三個(gè)預(yù)測框平均得分為0.94,可見更改后的檢測效果更好。
對于改進(jìn)前后的檢測效果從模型的收斂速度,先驗(yàn)框與真實(shí)框的匹配程度,檢測精度這幾個(gè)角度進(jìn)行分析。
1) 從模型的收斂速度看,圖4可以看出更改后的Loss值比更改前的Loss值小,說明模型收斂地更快,這是由于先驗(yàn)框相當(dāng)于把統(tǒng)計(jì)上的先驗(yàn)經(jīng)驗(yàn)加入到模型中,對預(yù)測的對象范圍進(jìn)行約束,有助于模型快速收斂,LossCIOU使得目標(biāo)框回歸變得更加穩(wěn)定,Mish函數(shù)使得權(quán)重能繼續(xù)更新。
圖4 Loss曲線圖
2) 從先驗(yàn)框與真實(shí)框的匹配程度看,通過K-means聚類得到與車輪大小特征相符的三個(gè)先驗(yàn)框分別是[39,97],[53,102],[39,67],將這三個(gè)框代替原來第二層的三個(gè)框,由圖5可以看出更改后的三個(gè)先驗(yàn)框在真實(shí)框主要集中的范圍內(nèi)均勻分布,與圖3作比較可以看出更改后的框更適合識別貨車車輪。
圖5 更改后先驗(yàn)框和真實(shí)框分布
3) 從檢測精度看,圖6中更改后的PR曲線在更改前的上方,即更改后mAP的結(jié)果會更高,最后表1的檢測結(jié)果也表明更改后的mAP提高到了90.16%,漏檢率降低到了9.23%,說明更改后的檢測結(jié)果更精確。
圖6 PR 曲線
表1 檢測結(jié)果對比
本文提出了一種改進(jìn)YOLO v3算法的貨車車輪檢測方法。通過K-means聚類,采用更好的位置損失函數(shù)和激活函數(shù)的方法改進(jìn)YOLO v3網(wǎng)絡(luò)。在1140張測試集上進(jìn)行驗(yàn)證,結(jié)果表明改進(jìn)后模型的收斂速度更快、準(zhǔn)確度提升、漏檢情況也有所改善,說明改進(jìn)后的YOLO v3算法更適合檢測貨車車輪。