浦 東,陳 瑞,孔小紅,石偉偉
(1. 南京工程學(xué)院人工智能產(chǎn)業(yè)技術(shù)研究院, 江蘇 南京 211167;2. 南京供電公司, 江蘇 南京 210008;3. 江蘇量為石科技股份有限公司, 江蘇 南京 210023)
隨著我國(guó)經(jīng)濟(jì)的不斷發(fā)展,電網(wǎng)基本上已經(jīng)實(shí)現(xiàn)全國(guó)覆蓋,每年新建的輸電線路越來(lái)越多[1],但是惡劣的自然環(huán)境和一些破壞性外力使得輸電線存在被破壞的可能,進(jìn)而引發(fā)一片區(qū)域的停電,造成不可逆的嚴(yán)重危害[2].因此,提前預(yù)防線路被破壞顯得尤為重要[3].這就需要電力巡檢人員進(jìn)行定期檢查,在輸電線路旁有施工任務(wù)時(shí)及時(shí)給予指引.但是這種方法不僅效率低下,而且更受到自然因素的影響[4].將計(jì)算機(jī)視覺技術(shù)和遠(yuǎn)程視頻監(jiān)控系統(tǒng)相結(jié)合,能夠?qū)崿F(xiàn)對(duì)監(jiān)控目標(biāo)的自動(dòng)檢測(cè),這不僅充分利用了計(jì)算機(jī)視覺高效與高速的性能,還極大降低了人的勞動(dòng)強(qiáng)度[5].
目前,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法可以分為基于候選區(qū)域的目標(biāo)檢測(cè)方法和基于回歸的目標(biāo)檢測(cè)方法.基于候選區(qū)域的目標(biāo)檢測(cè)方法和人為設(shè)計(jì)的特征表達(dá)結(jié)合分類器的目標(biāo)檢測(cè)方法在檢測(cè)流程上大體相同:選取候選區(qū)域,對(duì)候選區(qū)域進(jìn)行特征提取,在候選區(qū)域中進(jìn)行預(yù)測(cè).基于候選區(qū)域的目標(biāo)檢測(cè)方法在流程中的每一步都是以深度學(xué)習(xí)算法為核心,結(jié)構(gòu)比較復(fù)雜.選取候選區(qū)域相當(dāng)于在進(jìn)行目標(biāo)檢測(cè)之前增加一個(gè)先驗(yàn)知識(shí),降低了下一步分類和邊框回歸的難度,檢測(cè)精度較高.不過(guò)選取候選區(qū)域也是整個(gè)檢測(cè)流程中最耗時(shí)的一步,導(dǎo)致整體檢測(cè)速度下降,無(wú)法實(shí)時(shí)應(yīng)用[6].典型的算法有Faster R-CNN[7]等.基于回歸的目標(biāo)檢測(cè)算法就是在基于候選區(qū)域的目標(biāo)檢測(cè)方法的基礎(chǔ)上進(jìn)行簡(jiǎn)化,刪去選取候選區(qū)域這個(gè)步驟.因此,基于回歸的目標(biāo)檢測(cè)方法的檢測(cè)速度要快得多,而且結(jié)構(gòu)更加簡(jiǎn)單、直觀.基于回歸的目標(biāo)檢測(cè)方法是直接利用基礎(chǔ)邊框的特征進(jìn)行預(yù)測(cè),基礎(chǔ)邊框中并不包含先驗(yàn)知識(shí),導(dǎo)致分類和邊框回歸的誤差較大,檢測(cè)精度略有下降.典型的算法有YOLO(you only look once)[8]、SSD[9]、Retina-Net[10]等.但是這兩大類方法對(duì)小目標(biāo)的檢測(cè)效果均較差.
本文以YOLO v3[11]算法為基礎(chǔ)對(duì)工程車輛進(jìn)行目標(biāo)檢測(cè),將聚類算法中歐式距離函數(shù)替換為交并比損失函數(shù)IoU_Loss,加快YOLO v3算法的提取能力,并對(duì)其損失函數(shù)以及極大值抑制進(jìn)行改進(jìn),從而使模型的檢測(cè)性能提高.
YOLO算法是一種多框檢測(cè)的One-stage算法,該快速檢測(cè)算法可滿足小尺度密集工程車輛檢測(cè)在速度上和精度上的要求,YOLO v3輸出了3個(gè)不同尺度的特征圖,通過(guò)這種多尺度輸出來(lái)對(duì)不同尺寸的目標(biāo)進(jìn)行檢測(cè),越精細(xì)的網(wǎng)格就可以檢測(cè)出越精細(xì)的物體,這個(gè)方法加強(qiáng)了對(duì)小物體的輸出精度,因此YOLO v3對(duì)遠(yuǎn)距離的工程車輛檢測(cè)有較好的效果.
YOLO v3的網(wǎng)絡(luò)框架主要包括兩大部分:1) 主干網(wǎng)絡(luò),主要作用是對(duì)輸入的圖片進(jìn)行特征提取;2) 預(yù)測(cè)部分,主要作用是在特征提取的基礎(chǔ)上進(jìn)行上采樣,輸出三個(gè)不同的尺度.YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)圖如圖1所示.
圖1 YOLO v3網(wǎng)絡(luò)結(jié)構(gòu)圖
YOLO v3以Darknet-53特征提取網(wǎng)絡(luò)為基礎(chǔ),借鑒了ResNet網(wǎng)絡(luò)中的殘差結(jié)構(gòu),可以有效防止當(dāng)網(wǎng)絡(luò)變深時(shí)訓(xùn)練網(wǎng)絡(luò)出現(xiàn)梯度消失問(wèn)題.Darknet網(wǎng)絡(luò)主要由DBL組件和RES組件構(gòu)成,DBL由卷積層(conv2d)、歸一化層(BN)、激活函數(shù)層(leaky relu)構(gòu)成.
本文通過(guò)改進(jìn)YOLO v3的結(jié)構(gòu)網(wǎng)絡(luò),可以較好地將YOLO v3應(yīng)用到工程車輛檢測(cè)中.
1.2.1 聚類算法
YOLO v3模型在檢測(cè)小目標(biāo)工程車輛時(shí),首先會(huì)初始化先驗(yàn)框(bounding box)的參數(shù),然后使用工程車輛數(shù)據(jù)集進(jìn)行訓(xùn)練,參數(shù)被更新,最終在神經(jīng)網(wǎng)絡(luò)的輸出層輸出預(yù)測(cè)目標(biāo)位置.由于每次發(fā)生函數(shù)是隨機(jī)的,先驗(yàn)框模型的好壞往往會(huì)對(duì)后面的模型訓(xùn)練起著關(guān)鍵作用,這不僅導(dǎo)致網(wǎng)絡(luò)訓(xùn)練時(shí)間延長(zhǎng),同時(shí)模型可能不收斂.在初始化時(shí)采用k-means聚類算法,在實(shí)際模型訓(xùn)練中發(fā)現(xiàn)將歐式距離作為損失函數(shù),較大的參考框會(huì)比較小的參考框產(chǎn)生更大誤差.為了加快模型訓(xùn)練速度,提高網(wǎng)絡(luò)的預(yù)測(cè)精度,對(duì)k-means算法進(jìn)行改進(jìn),使用先驗(yàn)框與真實(shí)框之間的交并比IoU作為損失函數(shù)替代歐式距離,改進(jìn)的距離函數(shù)定義為:
(1)
式中:boxi為先驗(yàn)框,Truthj為真實(shí)框.
結(jié)合小尺度密集工程車輛的長(zhǎng)寬比接近3∶1或1∶1且像素區(qū)域內(nèi)像素邊緣與背景之間梯度較大的特點(diǎn),通過(guò)改進(jìn),得到先驗(yàn)邊界框尺寸為(14,16)、(15,43)、(29,26)、(42,42)、(29,85)、(71,68)、(55,168)、(120,124)、(81,232),聚類結(jié)果如圖2所示.
圖2 聚類結(jié)果散點(diǎn)圖
1.2.2 改善預(yù)測(cè)層的損失函數(shù)
YOLO v3用損失函數(shù)(loss function)的大小來(lái)表示訓(xùn)練模型的好壞,通過(guò)不斷訓(xùn)練迭代來(lái)降低損失函數(shù)、提高模型精度.YOLO v3的損失函數(shù)采用誤差的平方和,主要包括預(yù)測(cè)框與真實(shí)框之間定位誤差(預(yù)測(cè)框是計(jì)算機(jī)根據(jù)訓(xùn)練出來(lái)的模型框選出真實(shí)圖片中的目標(biāo),真實(shí)框是通過(guò)人工對(duì)圖片進(jìn)行標(biāo)注的框)、有無(wú)目標(biāo)的IoU誤差以及檢測(cè)物體類別誤差,公式為:
loss(object)YOLO v3=lossbbox+losscla+lossconf
(2)
式中:lossbbox為邊界框運(yùn)用均方誤差;losscla為類別運(yùn)用交叉熵;lossconf為置信度運(yùn)用交叉熵.
(3)
(4)
(5)
公式中先驗(yàn)框的坐標(biāo)誤差包含預(yù)測(cè)框與真實(shí)框的中心誤差與寬高坐標(biāo)誤差.當(dāng)?shù)趇個(gè)網(wǎng)格的第j個(gè)錨框負(fù)責(zé)某一個(gè)真實(shí)目標(biāo)時(shí),這個(gè)錨框所產(chǎn)生的先驗(yàn)框應(yīng)該和真實(shí)目標(biāo)框進(jìn)行比較,計(jì)算得到寬高的誤差.但是這會(huì)產(chǎn)生兩個(gè)問(wèn)題:1) 當(dāng)預(yù)測(cè)框和目標(biāo)框不相交時(shí),IoU=0,無(wú)法反應(yīng)兩個(gè)框距離的遠(yuǎn)近,此時(shí)損失函數(shù)不可導(dǎo),梯度無(wú)法回傳,IoU_Loss無(wú)法優(yōu)化兩個(gè)框不相交的情況,如圖3所示;2) 當(dāng)兩個(gè)預(yù)測(cè)框大小相同、兩個(gè)IoU也相同時(shí),IoU_Loss無(wú)法區(qū)分兩者相交情況以及無(wú)法衡量?jī)煽虻木嚯x,如圖4和圖5所示.
圖3 狀態(tài)1
圖4 狀態(tài)2
圖5 狀態(tài)3
針對(duì)以上問(wèn)題,本文采用完全交并比損失函數(shù)CIoU_Loss來(lái)進(jìn)行改進(jìn).一個(gè)好的目標(biāo)框回歸函數(shù)應(yīng)該考慮三個(gè)重要幾何因素:重疊面積、中心點(diǎn)距離、長(zhǎng)寬比.其實(shí)就是為了解決如何最小化預(yù)測(cè)框和目標(biāo)框之間的歸一化距離、如何在預(yù)測(cè)框和目標(biāo)框重疊時(shí)回歸得更準(zhǔn)確.CIoU_Loss考慮了重疊面積和中心點(diǎn)距離,當(dāng)目標(biāo)框包裹預(yù)測(cè)框的時(shí)候,直接度量2個(gè)框的距離,因此CIoU_Loss收斂得更快,同時(shí)CIoU_Loss考慮了預(yù)測(cè)框和目標(biāo)框的長(zhǎng)寬比,增加了一個(gè)影響因子,公式為:
LCIoU=1-IoU+ρ2(b,bgt)/c2+αν
(6)
從α參數(shù)的定義可以看出,損失函數(shù)會(huì)更加傾向于往重疊區(qū)域增多方向優(yōu)化,尤其是IoU為0時(shí).
1.2.3 改進(jìn)預(yù)測(cè)層的nms函數(shù)
YOLO v3中的nms(non-maximun suppression)函數(shù)主要是解決一個(gè)目標(biāo)被多次檢測(cè)的問(wèn)題,首先從所有的檢測(cè)框中找到置信度最大的那個(gè)框,然后依次計(jì)算其與剩余框的IoU,如果其值大于一定閾值(重合度過(guò)高),那么就將該框的置信度歸為0;確定各個(gè)框的類別,當(dāng)其置信度值不為0時(shí)輸出檢測(cè)結(jié)果.但當(dāng)兩個(gè)物體靠得很近時(shí),容易造成漏檢,nms的閾值也不太容易確定,設(shè)置過(guò)小,易發(fā)生多框問(wèn)題,設(shè)置過(guò)大,易發(fā)生漏檢問(wèn)題.
如圖6所示,在工程車輛重疊在一起、IoU過(guò)大的情況下,使用該方法時(shí)預(yù)測(cè)框會(huì)被刪除,導(dǎo)致漏檢率上升.
圖6 工程車輛數(shù)據(jù)圖
針對(duì)以上問(wèn)題,本文采用DIoU的非最大抑制法,抑制準(zhǔn)則中不僅要考慮重疊區(qū)域,還要考慮兩個(gè)盒子之間的中心點(diǎn)距離.對(duì)于得分最高的預(yù)測(cè)框M,中心點(diǎn)距離交并比非極大抑制DIoU_nms可以定義為:
(7)
式中:si為分類得分;ε為nms閾值;M為預(yù)測(cè)框中最高得分框;B={(Bn,Sn),n=1,…,N}.
通過(guò)同時(shí)考慮IoU和兩個(gè)框中心點(diǎn)之間的距離來(lái)移除預(yù)測(cè)框.
試驗(yàn)平臺(tái)及參數(shù)配置為:操作系統(tǒng)Centos 7,CPU Intel(R) Xeon(R) Glod5118 CPU@2.3 GHz,GPU GeForce RTX2080T,顯存24 G,內(nèi)存 128 G,框架 Darknet53,編程環(huán)境Python.
工程車輛數(shù)據(jù)原始圖是由某公司提供,總計(jì)10 537張,其中起重機(jī)圖片4 997張,挖掘機(jī)圖片5 015張,叉車圖片651張,混凝土澆灌車的圖片587張,混凝土攪拌車圖片397張,壓路機(jī)圖片169張,數(shù)據(jù)集類別及數(shù)量見表1.該數(shù)據(jù)集是來(lái)自不同環(huán)境、不同光照情況下的照片,存在圖片太過(guò)模糊、整張圖片色調(diào)過(guò)暗的問(wèn)題,需要對(duì)該數(shù)據(jù)集進(jìn)行數(shù)據(jù)清洗.本文使用圖像無(wú)參考清晰度檢測(cè)方法,將圖片進(jìn)行統(tǒng)一灰度化處理,利用scharr算子求得整張圖像的梯度圖,并對(duì)此進(jìn)行疊加,對(duì)圖像的整體模糊度進(jìn)行判斷,剔除較模糊的圖片,使得網(wǎng)絡(luò)訓(xùn)練有一個(gè)較優(yōu)的模型.
表1 數(shù)據(jù)集類別及數(shù)量 張
圖片預(yù)處理后,用LabelImg軟件按照對(duì)應(yīng)標(biāo)簽進(jìn)行標(biāo)注,標(biāo)注完的信息以xml的格式保存在相同路徑下.
本文采用準(zhǔn)確率(precision)和召回率(recall)[13]對(duì)算法的性能進(jìn)行定量評(píng)估,精確率表示有多少目標(biāo)被正確預(yù)測(cè),召回率表示找到了多少目標(biāo),計(jì)算公式為:
Precision=TP/(TP+FP)
(8)
Recall=TP/(TP+FN)
(9)
式中:TP為所有被人工標(biāo)注的工程車輛中正確地劃分為工程車輛的個(gè)數(shù);FP為圖片中與工程車輛相似的目標(biāo)被錯(cuò)誤地劃分為工程車輛的個(gè)數(shù);FN為未被識(shí)別出的工程車輛的個(gè)數(shù).
2.3.1 改進(jìn)候選框
對(duì)于改進(jìn)前后的候選框,在聚類后,采用相同的YOLO v3網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并在測(cè)試集上進(jìn)行測(cè)試.由表2可以看出,本文算法的平均準(zhǔn)確率比原來(lái)提升了1.8%左右,各工程車輛均有不同程度的提升.這是由于算法改進(jìn)了目標(biāo)框的分布情況,更有利于網(wǎng)絡(luò)的學(xué)習(xí).
表2 聚類結(jié)果對(duì)比
2.3.2 網(wǎng)絡(luò)訓(xùn)練
使用Darknet-53框架搭建網(wǎng)絡(luò),并在服務(wù)器上訓(xùn)練網(wǎng)絡(luò).將改進(jìn)的YOLO v3和原始YOLO v3算法進(jìn)行比較,為了公平性,本試驗(yàn)將對(duì)訓(xùn)練時(shí)的批尺寸、學(xué)習(xí)率、學(xué)習(xí)衰減率、迭代次數(shù)進(jìn)行統(tǒng)一設(shè)置.將批尺寸batch設(shè)置為32、學(xué)習(xí)率設(shè)置為0.001,迭代到10 000次和20 000次時(shí)衰減,迭代總次數(shù)為24 000次.從圖7中可以看出,將原來(lái)的二元交叉熵?fù)p失函數(shù)改為CIoU_Loss后,模型收斂性有了一定的提升,訓(xùn)練初期損失下降很快,隨著迭代次數(shù)增加,大約在3 000次時(shí)趨于平穩(wěn),改進(jìn)后的模型大約比改進(jìn)前的模型快500個(gè)訓(xùn)練批次,最終網(wǎng)絡(luò)的損失值約在1.1.
圖7 損失函數(shù)曲線圖
2.3.3 性能對(duì)比
以Darknet-53為基礎(chǔ)的YOLO v3檢測(cè)框架在處理圖片時(shí)最快約50 ms處理一張圖片,由于硬件差異和其他的圖片預(yù)處理,檢測(cè)速度可能會(huì)更慢.為驗(yàn)證本文改進(jìn)網(wǎng)絡(luò)的有效性,將YOLO v3和改進(jìn)后的網(wǎng)絡(luò)進(jìn)行對(duì)比,改進(jìn)后的網(wǎng)絡(luò)由于改變了損失函數(shù)和采用非極大值抑制法,每張圖片的處理時(shí)間由原120 ms增加到150 ms,增加了大約30 ms,可能是改變模塊后增加了模型前向傳播的時(shí)間,但圖片的召回率提高了約10%,準(zhǔn)確率提高了2%(見表3),網(wǎng)絡(luò)的可靠性有了較大的提升.改進(jìn)后的網(wǎng)絡(luò)針對(duì)遠(yuǎn)處的小目標(biāo)能夠更好地提取特征并且改善檢測(cè)效果,對(duì)工程車輛檢測(cè)具有更好的泛化性.
表3 不同網(wǎng)絡(luò)性能對(duì)比
圖8為改進(jìn)前后算法的實(shí)物檢測(cè)結(jié)果,由圖8可以看到改進(jìn)后的算法更加貼合實(shí)際,準(zhǔn)確度更高,是一種可行的電力通道實(shí)時(shí)檢測(cè)方法.
(a) 改進(jìn)前
(b) 改進(jìn)后
本文針對(duì)小尺度遠(yuǎn)距離工程車輛檢測(cè)問(wèn)題,提出基于改進(jìn)YOLO v3算法的目標(biāo)檢測(cè)網(wǎng)絡(luò),將框交并比作為損失函數(shù)替代k-means聚類算法中的歐式距離,結(jié)合工程車輛真實(shí)框長(zhǎng)寬之比約為3∶1或1∶1的特點(diǎn),對(duì)候選框進(jìn)行聚類;將損失函數(shù)中的坐標(biāo)預(yù)測(cè)誤差函數(shù)由原來(lái)的IoU_Loss改為CIoU_Loss,提高了模型檢測(cè)率;將預(yù)測(cè)輸出框的nms極大值抑制函數(shù)替換為DIoU_nms函數(shù),很好地平衡了物體多框問(wèn)題,降低了漏檢率.試驗(yàn)結(jié)果表明本文提出的改進(jìn)方法比原YOLO v3算法更能實(shí)現(xiàn)遠(yuǎn)距離小目標(biāo)的檢測(cè),能夠提升目標(biāo)檢測(cè)的準(zhǔn)確度.