周 斌,蘇 鵬,高 鵬
(武漢理工大學(xué) 機(jī)電工程學(xué)院,湖北 武漢 430070)
近年來,西氣東輸工程中積極采用自動化的管理措施,以降低工人的工作強(qiáng)度,并及時發(fā)現(xiàn)西氣東輸管道系統(tǒng)存在的安全隱患[1]。在西氣東輸油氣場站的管道沿線存在第三方施工,其中最大的威脅就是施工方的工程挖掘機(jī)非正常施工時對油氣管道的誤破壞。因此,在這種環(huán)境下對具有自動識別檢測工程挖掘機(jī)功能的智能監(jiān)控系統(tǒng)有著迫切的需求。
在智能監(jiān)控的發(fā)展中,對目標(biāo)物體的檢測是研究重點(diǎn)。近年來,隨著深度學(xué)習(xí)技術(shù)的快速發(fā)展,尤其以卷積神經(jīng)網(wǎng)絡(luò)為代表,將深度學(xué)習(xí)和計算機(jī)視覺相結(jié)合,使得目標(biāo)檢測的準(zhǔn)確性和實時性不斷提升?;谏疃葘W(xué)習(xí)的目標(biāo)檢測框架利用卷積神經(jīng)網(wǎng)絡(luò)從大量的圖像數(shù)據(jù)中學(xué)習(xí)特征,從而能更好地刻畫數(shù)據(jù)內(nèi)在的豐富信息,并且此類網(wǎng)絡(luò)在一個模型中融合了特征提取、特征選擇和特征分類,提高了對圖像特征的辨識力,使其在定位和分類的準(zhǔn)確度上明顯優(yōu)于基于傳統(tǒng)圖像處理的目標(biāo)檢測方法,成為目前處理目標(biāo)檢測任務(wù)的研究熱點(diǎn)[2]。其中應(yīng)用較為廣泛的目標(biāo)檢測方法主要可以分為兩類:一類是基于候選框的目標(biāo)檢測算法,如R-CNN(region convolutional neural networks)[3]、Fast R-CNN(fast region convolutional neural networks)、Faster R-CNN(faster region convolutional neural networks)[4]等,這類算法首先獲取圖像中可能存在目標(biāo)的子區(qū)域,接著將所有的子區(qū)域作為輸入,并通過深度卷積神經(jīng)網(wǎng)絡(luò)提取目標(biāo)特征,最后進(jìn)行類別檢測和邊框修正;另一類是基于回歸位置的目標(biāo)檢測算法,如SSD(single shot mutibox dectecter)[5]、YOLO(you only look once)[6]系列等,此類算法只使用一個卷積神經(jīng)網(wǎng)絡(luò)便可以在整個圖像上實現(xiàn)對目標(biāo)的定位和類別概率的預(yù)測,網(wǎng)絡(luò)結(jié)構(gòu)相對于第一類目標(biāo)檢測算法簡單,并且能夠?qū)崿F(xiàn)端到端的優(yōu)化,使檢測速度有了很大的提升,具有對視頻圖像進(jìn)行實時處理的功能。
在油氣場站中,當(dāng)工程挖掘機(jī)誤進(jìn)入危險區(qū)域,智能監(jiān)控系統(tǒng)能夠?qū)崟r檢測到挖掘機(jī)位置,并發(fā)出報警信號。因此筆者采用YOLOv3算法為工程挖掘機(jī)檢測的基礎(chǔ)框架,并在提高檢測精度和防止漏檢問題方面提出改進(jìn)設(shè)計。
2015年,Joseph Redmon等提出了YOLO第一代算法,在2017年和2018年期間,Redmon等人又分別提出了YOLOv2[7]和YOLOv3[8],增強(qiáng)了檢測精度與速率,并且在數(shù)據(jù)集上的mAP(mean average precision)率得到大幅度提高。
在YOLO算法中,不再采用Faster R-CNN中先利用RPN(region proposal network)網(wǎng)絡(luò)找出目標(biāo)候選區(qū)域,再去對區(qū)域內(nèi)的物體進(jìn)行識別的方式,而把整幅圖的目標(biāo)檢測視為回歸問題,直接將圖像輸入一個網(wǎng)絡(luò)層,就可以得到圖像中所有待檢測目標(biāo)的位置和目標(biāo)類別,直接輸出檢測框和類別概率。從YOLOv2開始,借鑒Faster R-CNN的思想預(yù)測bounding box的偏移,引入了anchor box來預(yù)測bounding box,解決了YOLO中一個網(wǎng)格只能預(yù)測一個類別的弊端。并在YOLOv3中實現(xiàn)了多尺度預(yù)測,在滿足一定實時性的基礎(chǔ)上,進(jìn)一步提高了小物體的檢測精度。
YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。不同于YOLOv2,YOLOv3采用Darknet-53作為目標(biāo)檢測框架的backbone,用于提取輸入圖像的特征。YOLOv3能夠輸出3種尺度的特征圖,其中尺度2和尺度3,通過卷積塊與上采樣層的方式實現(xiàn),3個尺度分別預(yù)測不同大小的目標(biāo)物體。目標(biāo)物體的中心存在于哪個一個網(wǎng)格中,就采用這個網(wǎng)格來預(yù)測該目標(biāo)。YOLOv3設(shè)定每個網(wǎng)格單元預(yù)測3個bounding box,同時每一個bounding box都需要預(yù)測bounding box的位置信息(x,y,w,h)和置信度(confidence)。然后采用非極大值抑制算法(non-maximum suppression, NMS),去除置信得分較低的bounding box,保留置信得分較高的邊界框為目標(biāo)的檢測框。
圖1 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)圖
在原作者的YOLOv3框架中,9個anchor box值是通過K-means聚類算法[9]對COCO(common objects in comtext)數(shù)據(jù)集中的20類物體的形狀比聚類學(xué)習(xí)得到的,這9個anchor box的數(shù)據(jù)為:(10,13)、(16,30)、(33,23)、(30,61)、(62,45)、(59,119)、(116,90)、(156,198)和(373,326)。對于文中的目標(biāo)對象工程挖掘機(jī),不宜再使用原本的anchor box值,需要對其進(jìn)行改進(jìn),通過聚類算法得到適合工程挖掘機(jī)的anchor box數(shù)據(jù)。在原有框架中的K-means算法有一個不足,即最開始的K個劃分類別的聚類中心是隨機(jī)產(chǎn)生的。一般來講,對于絕大多數(shù)數(shù)據(jù)集,最初聚類中心點(diǎn)選擇的不同一般都會產(chǎn)生不一樣的聚類結(jié)果。為了避免這種隨機(jī)情況,使用對K-means算法優(yōu)化后的K-means++算法。K-means++算法中的第一個聚類中心點(diǎn)是隨機(jī)抽取的,在選擇之后的聚類中心點(diǎn)時,優(yōu)先選擇相隔最遠(yuǎn)的中心點(diǎn),直到K個聚類中心全部找出,最后對這K個聚類中心使用K-means算法進(jìn)行數(shù)據(jù)點(diǎn)分類。
K-means++算法相比于K-means算法只是在聚類中心點(diǎn)的選擇上不同,前者選擇了更加符合樣本規(guī)律中相隔最遠(yuǎn)的點(diǎn),這樣會更合理,使得數(shù)據(jù)在聚類時更容易收斂,最后的分類效果也會更好。同時,聚類求anchor box的目的是使其與鄰近的真實框有更大的IOU(intersection over union)值,IOU表示真實標(biāo)注框與網(wǎng)絡(luò)最終產(chǎn)生的預(yù)測框的交并比,用來衡量預(yù)測邊界框的準(zhǔn)確性。因此在進(jìn)行K-means++聚類的過程中,將算法中找出歐式距離最大的步驟更改為找出使distance(box,centroid)最大的聚類中心。其計算公式如下:
Distence(box,centroid)=1-IOU(box,centroid)
(1)
式中:box為某個類別的真實標(biāo)準(zhǔn)框;centroid為聚類中心框。
為了保證聚類的數(shù)據(jù)更加一般化,重復(fù)K-means++算法3~4次,直至相鄰兩次的聚類中心點(diǎn)變化不大。K-means++算法迭代結(jié)束后,根據(jù)聚類的結(jié)果統(tǒng)計得到一組工程挖掘機(jī)的anchor box值為(27,23)、(78,45)、(94,89)、(107,71)、(136,96)、(203,138)、(257,157)、(324,247)和(375,201)。
在YOLOv3框架中,每個物體可能會有多個預(yù)測邊界框,而選擇預(yù)測效果最好的邊界框是采用非極大值抑制(NMS)算法。它的原理就是簡單的將置信度最大的預(yù)測邊界框留下,而與其重疊過多的邊界框直接刪去。但這種過于直接的“貪心式”算法就會導(dǎo)致YOLOv3在檢測部分有遮擋的物體時發(fā)生錯誤,刪除遮擋物體的預(yù)測邊框從而導(dǎo)致漏檢。如圖2所示。
圖2 互相遮擋的工程挖掘機(jī)
在圖2中,對于黑色邊界框和白色邊界框中的工程挖掘機(jī),前者的置信度為0.98,后者的置信度為0.86,由于兩者有遮擋,兩個邊界框有重疊部分,因此在使用傳統(tǒng)NMS算法時,若重合度閾值過小,會保留置信度更高的黑色邊界框,刪除白色邊界框,就會產(chǎn)生由于遮擋而漏檢的問題。黑色和白色邊界框遮擋面積不大,還能由較大的閾值消除影響,但白色和灰色邊界框遮擋面積過大,若再增大重合度閾值,也會影響算法整體準(zhǔn)確度,產(chǎn)生誤檢。因此針對該問題嘗試使用軟化非極大值抑制算法soft-NMS來對YOLOv3算法進(jìn)行改進(jìn)[10],優(yōu)化其對遮擋工程挖掘機(jī)漏檢的問題。
在soft-NMS算法中,不再直接將高于一定閾值的邊界框刪除,而是借鑒軟間隔支持向量機(jī)的思想,對其置信度分?jǐn)?shù)進(jìn)行衰減,公式如下:
(2)
式中:Sc為某邊界框的置信度;M為輸出位置的邊界框;bc為與M有重疊的邊界框;T為閾值大小。
針對工程挖掘機(jī)的soft-NMS算法步驟(步驟(1)~步驟(3)與NMS一致)為:
(1)先將低于一定置信度的邊界框刪除;
(2)將剩下所有邊界框按置信度大小排序;
(3)將置信度最大的邊界框添加到輸出位置;
(4)計算每個邊界框與輸出位置邊界框的IOU大小,若高于設(shè)定閾值,則使用式(2)對其置信度進(jìn)行衰減,低于閾值則不變;
(5)重復(fù)步驟(2)~步驟(4),將所有的邊界框?qū)ο筇幚硗瓿桑?/p>
(6)按需求刪除輸出位置的邊界框,最后顯示的則是最好的工程挖掘機(jī)預(yù)測結(jié)果。
在上述的優(yōu)化步驟后,雖然理論上會降低被遮擋工程挖掘機(jī)的預(yù)測置信度分?jǐn)?shù),但相較于NMS直接刪除邊界框的暴力求解而導(dǎo)致的漏檢現(xiàn)象,該優(yōu)化方法能對YOLOv3檢測遮擋物體時的精度起到一定提升作用。
實驗數(shù)據(jù)集中圖像主要來自拍攝現(xiàn)場存在工程挖掘機(jī)的視頻取幀得到的圖像,為了增加數(shù)據(jù)集的數(shù)量,從網(wǎng)絡(luò)爬蟲中得到部分圖像。最后經(jīng)過篩選,剔除了模糊、遮擋嚴(yán)重的圖像,并在保證樣本的多樣性后,數(shù)據(jù)集總共選取了2 000幅圖像,其中1 800幅圖像歸為訓(xùn)練集,200幅圖像歸為測試集。
準(zhǔn)備好數(shù)據(jù)集后,需要對其進(jìn)行標(biāo)注,使標(biāo)注后的圖像具有學(xué)習(xí)的意義[11]。對于幾千幅圖像,不可能采用人工的方式去標(biāo)注挖掘機(jī)在圖像中像素點(diǎn)的位置信息,可采用labelImg數(shù)據(jù)標(biāo)注工具,分別對訓(xùn)練集和測試集共2 000幅圖像進(jìn)行邊界框的標(biāo)注。在圖像中畫出工程挖掘機(jī)的邊界框后,labelImg工具可以自動生成YOLOv3所需的txt配置文件。其中信息包括:物體類別(從0開始,本文屬于單目標(biāo)識別,因此挖掘機(jī)類別記為0)、x,y(挖掘機(jī)目標(biāo)中心點(diǎn)的坐標(biāo)相對于整幅圖像的比例大小)、w,h(挖掘機(jī)目標(biāo)框的寬高相對于整幅圖像的比例大小),訓(xùn)練集標(biāo)注過程效果圖和生成的部分txt配置文件如圖3和圖4所示。
圖3 訓(xùn)練集標(biāo)注過程效果圖
圖4 生成的txt配置文件
深度學(xué)習(xí)的實驗環(huán)境對訓(xùn)練的速度影響很大,筆者所采用的軟硬件環(huán)境如表1所示。
表1 相關(guān)環(huán)境配置
訓(xùn)練過程中隨著時間的推移損失值loss函數(shù)慢慢開始收斂,訓(xùn)練過程的界面如圖5所示。
圖5 訓(xùn)練過程界面圖
訓(xùn)練迭代次數(shù)超過15 000次后,損失值loss圖像變化緩慢,趨于穩(wěn)定狀態(tài),最終停止訓(xùn)練。本次訓(xùn)練持續(xù)了一整天,迭代訓(xùn)練了20 000次,得到了最后的模型和訓(xùn)練日志。同時,在與上述數(shù)據(jù)集和實驗環(huán)境相同的條件下對無優(yōu)化的YOLOv3算法進(jìn)行訓(xùn)練,得到相應(yīng)的模型。
采用平均檢測精度(mAP)和平均檢測時間作為評價指標(biāo),對測試集的200幅圖像進(jìn)行測試,兩算法的實驗結(jié)果如表2所示。
表2 檢測算法結(jié)果對比表
從表2可知,改進(jìn)后的YOLOv3算法在mAP上表現(xiàn)更好,相較于無改進(jìn)的YOLOv3算法提升了5%。在檢測圖像的響應(yīng)時間上,由于沒有對其做針對優(yōu)化,因此兩者相差不大。但是一般來講,當(dāng)平均檢測時間達(dá)到25幀/s以上時,檢測識別在視覺上就不會有卡幀的情況,因此改進(jìn)的YOLOv3算法能達(dá)到實時檢測識別的功能。
分別采用兩個模型對工地現(xiàn)場圖像進(jìn)行預(yù)測,圖像實驗結(jié)果如圖6和圖7所示。
圖6 改進(jìn)后YOLOv3測試圖像
圖7 無改進(jìn)YOLOv3測試圖像
從同一圖像的檢測結(jié)果對比可以看出,改進(jìn)后的YOLOv3算法可以識別出圖像中所有工程挖掘機(jī)的位置,特別是左上角被遮擋的工程挖掘機(jī)也能正確識別。而無改進(jìn)的YOLOv3算法沒有識別出被遮擋的工程挖掘機(jī),產(chǎn)生了漏檢現(xiàn)象。
改進(jìn)的YOLOv3算法在保證實時檢測識別的前提下,提升了對工程挖掘機(jī)的檢測精度,并且改善了工程挖掘機(jī)互相遮擋時的識別問題,能夠有效防止漏檢現(xiàn)象的發(fā)生。通過實驗對比,改進(jìn)后的YOLOv3算法針對工程挖掘機(jī)的識別效果更好,符合工程實際需要。
針對西氣東輸工程中無人值守的油氣場站,提出了一種基于改進(jìn)YOLOv3的識別算法用于智能監(jiān)控中實時檢測工程挖掘機(jī)位置,防止工程挖掘機(jī)在作業(yè)時進(jìn)入危險區(qū)域破壞油氣管道。通過采用K-means++聚類算法得到適合工程挖掘機(jī)的anchor box,以提高檢測精度,其次,使用soft-NMS算法選擇輸出預(yù)測框,解決工程挖掘機(jī)互相遮擋引發(fā)的漏檢問題。實驗結(jié)果表明,相比于原YOLOv3算法,改進(jìn)后的YOLOv3算法檢測精度明顯提高,并且能夠檢測出互相遮擋的工程挖掘機(jī)。在檢測時間上,也能滿足智能監(jiān)控中實時性的要求。