汝洪芳, 王珂碩, 王國新
(黑龍江科技大學 電氣與控制工程學院, 哈爾濱 150022)
傳統(tǒng)礦業(yè)正在向智慧礦山轉(zhuǎn)型,加速自動化和智能化的發(fā)展,但其安全性仍未得到很好保證。井下環(huán)境昏暗、礦洞復雜,工作人員易進入危險區(qū)域,煤礦井下開采運輸設備存在視線盲區(qū)。目前,主要是通過人工倒班監(jiān)控各工作點,判斷是否有人誤入危險區(qū)域。但是監(jiān)控點多、監(jiān)控顯示器屏幕小,對工作人員要求比較高,長期容易疲倦、注意力不集中,不能及時覺察到危險的發(fā)生或?qū)δ承┬袨槌霈F(xiàn)誤判,因此,自動檢測煤礦井下人員尤為有必要。
煤礦井下行人檢測對提升其安全性有著重要意義。袁海娣等[1]使用Soft-NMS代替NMS,改進了Cascade R-CNN的井下行人檢測算法,在自制井下行人數(shù)據(jù)集中獲得了較好的檢測準確率,但其運行速度較慢,未能滿足實時檢測的要求。韓江洪等[2]提出通過Faster R-CNN網(wǎng)絡實現(xiàn)井下行人定位。魏力等[3]在特征提取網(wǎng)絡中融入了通道注意力機制,增強了圖像中行人的特征信息,抑制了不重要的背景信息,提高了在分辨率低和有遮擋情況下的檢測性能。景亮等[4]改進了YOLOv3目標檢測網(wǎng)絡,結(jié)合雙目相機獲取目標的深度信息,提高了網(wǎng)絡的檢測性能和定位的準確率。目前,使用廣泛的YOLOv4目標檢測算法在井下行人檢測中表現(xiàn)出了較高的準確性,由于網(wǎng)絡模型及參數(shù)計算量大,使網(wǎng)絡在使用時檢測速度較低,未能達到實時檢測的要求,不能很好地適用于離線設備。筆者通過輕量化YOLOv4深度學習神經(jīng)網(wǎng)絡,減小網(wǎng)絡模型及其模型的計算成本,以提高網(wǎng)絡的檢測速度。
2020年,YOLOv4網(wǎng)絡改進了YOLOv3[5],其檢測速度及精度均優(yōu)于YOLOv3網(wǎng)絡。YOLOv4由CSPDarknet53網(wǎng)絡、SPP特征增強模塊、PANet路徑聚合網(wǎng)絡和YOLO head[6]四部分組成。
YOLOv4目標檢測網(wǎng)絡的檢測原理為首先輸入端讀取視頻信息獲得圖像,調(diào)整圖像大小均為416×416。通過CSPDarknet53網(wǎng)絡提取特征,分割圖像得到三種尺寸的網(wǎng)格,大小分別為13×13、26×26和52×52,預測目標的位置及檢測類別的條件概率。每個網(wǎng)格中含有3個尺寸的預測框,每個預測框中均含有預測框的位置信息、置信度及被檢測目標種類的預測值。
GhostNet網(wǎng)絡是使用較為廣泛的輕量級神經(jīng)網(wǎng)絡[7],能夠保證其較高準確率的同時,使卷積操作計算成本也較低。Ghost module生成特征映射的過程分為兩步,如圖1所示。第一步通過卷積操作得到初始特征圖;第二步對初始特征圖進行恒等映射或小波變換等線性變換獲得剩余的特征圖。減少了卷積核的數(shù)量,降低了模型的計算成本,得到參數(shù)量較少的模型,網(wǎng)絡的性能基本不會受到影響。
GhostNet網(wǎng)絡的基本單元為G-bneck模塊,主要由兩個Ghost module組成,第一個用來增加特征的通道數(shù),第二個用來減少通道數(shù),以保證Ghost特征與輸入特征連接時不會出現(xiàn)通道數(shù)不匹配。此外,在個別G-bneck中第二個Ghost module前引入了SE注意力機制[8]。
通常神經(jīng)網(wǎng)絡為增大感受野,會通過增加卷積層和池化層實現(xiàn),但其同時也會增加網(wǎng)絡的深度,甚至可能出現(xiàn)梯度消失,這樣對特征傳遞不利。尤其是池化層越多,輸出特征圖的尺寸就會越小,越容易丟失特征信息,使后面的操作未能很好地發(fā)揮作用,導致網(wǎng)絡精度不能有明顯提高。ASPP在SPP的基礎上結(jié)合了空洞卷積[9],利用空洞卷積代替了SPP中的池化操作,與全局平均池化并聯(lián),得到新的增大感受野的模型,聚合多尺度特征信息,增強了模型識別不同大小的同一目標的能力??斩淳矸e可以在不增加網(wǎng)絡深度、池化操作、計算成本的同時,能夠增大感受野[10]。通過在卷積層中引入擴張率,表示卷積核間零值的數(shù)量,在特征提取時實現(xiàn)跨像素提取。
深度可分離卷積可以有效減少模型的計算量和參數(shù)量[11],分為逐通道卷積和逐點卷積兩步[12]。雖然深度可分離卷積的操作步驟有所增加,但其整體的計算量將會減少。
通常用參數(shù)量P表示深度學習網(wǎng)絡模型的大小,即模型的空間復雜度。使用普通卷積和深度可分離卷積的參數(shù)計算量分別為
Pc=k2×Ci×Co,
(1)
Pd=k2×Ci+Ci×Co,
(2)
式中:Pc—— 普通卷積操作的參數(shù)計算量;
Pd—— 深度可分離卷積操作的參數(shù)計算量;
k—— 卷積核的尺寸;
Ci—— 輸入特征通道數(shù);
Co—— 輸出特征通道數(shù)。
由式(1)和(2)可知,深度可分離卷積的參數(shù)計算量的普通卷積為
(3)
采用浮點數(shù)運算量FLOPs表示網(wǎng)絡模型的時間復雜程度,關(guān)系著目標檢測算法的檢測速度。使用普通卷積和深度可分離卷積的浮點數(shù)運算量為
Fc=k2×Ci×Co×ho×wo,
(4)
Fd=(k2+Co)×Ci×ho×wo,
(5)
式中:Fc—— 普通卷積的浮點數(shù)運算量;
Fd—— 深度可分離卷積的浮點數(shù)運算量;
ho—— 輸出特征高度值;
wo—— 輸出特征寬度值。
由卷積操作的浮點數(shù)計算量式(4)和(5)可知,深度可分離卷積的浮點數(shù)運算量為
利用輕量型網(wǎng)絡GhostNet替換原網(wǎng)絡的主干特征提取網(wǎng)絡CSPDarkNet53,提高行人檢測的速率。在GhostNet替換CSPDarknet53網(wǎng)絡時,首先,將GhostNet中最后的卷積層、平均池化層及全連接層刪除,其次,找到與原網(wǎng)絡提取有效特征的寬和高相同的特征層,即在第6、第10和第15層時提取特征,最后,為避免通道不匹配問題,設置通道數(shù)[13]。以416×416×3的輸入圖像為例,尺寸分別為52×52×40 、26×26×112和13×13×160的特征進行進一步特征增強。對原網(wǎng)絡中SPP結(jié)構(gòu)替換ASPP結(jié)構(gòu),增大網(wǎng)絡的感受野,減小遮擋對行人檢測的影響。ASPP選擇膨脹系數(shù)r分別為1、3、5,卷積核大小為3×3的空洞卷積,其結(jié)構(gòu)如圖2所示。
ASPP結(jié)構(gòu)對主干網(wǎng)絡提取出來的特征圖,同時進行卷積和池化操作。通過1×1普通卷積得到原始大小的感受野,通過3×3空洞卷積擴大感受野,根據(jù)膨脹系數(shù)的不同決定感受野大小的不同,利用全局平均池化得到全局特征信息。以上操作輸出相同大小特征圖并聯(lián)接,經(jīng)1×1卷積和BN層進行一次上采樣,輸出經(jīng)ASPP結(jié)構(gòu)處理的特征圖,學習不同大小目標的特征,提高目標檢測的準確率,降低漏檢率。
為進一步減少網(wǎng)絡的參數(shù)量,在網(wǎng)絡中使用深度可分離卷積,使網(wǎng)絡在不影響整體效果的同時,降低網(wǎng)絡的計算成本。將改進后的網(wǎng)絡命名為G-A-YOLOv4,其網(wǎng)絡結(jié)構(gòu)如圖3所示。各模塊內(nèi)部結(jié)構(gòu)如圖4所示。
目前,礦井下還未公開的數(shù)據(jù)集,需要自制井下行人數(shù)據(jù)集。網(wǎng)絡訓練的數(shù)據(jù)集來源于鶴崗益新煤礦的監(jiān)控視頻,有泵房環(huán)境的視頻7段,共3 h 46 min。
通過OpenCV截取單幀圖像,每25幀截取一張圖像,對其進行篩選,最后得到含有行人且可用的圖像2 045張,按7∶2∶1的比例分為訓練集、測試集和驗證集。運用labelImg標簽標注軟件標注圖像,將行人部分框選出,標注為“person”,如圖5所示。
標注后生成與圖像相對應的XML文件,該文件包含網(wǎng)絡訓練所需要的關(guān)鍵信息:圖像的名稱、儲存的位置、標注目標的類別及標注目標在圖像中的坐標。網(wǎng)絡訓練時,需要提前通過Python程序?qū)⒛繕说念悇e和坐標提取出來,保存至文本中,以供網(wǎng)絡訓練使用。在訓練時需要將數(shù)據(jù)集存放在三個文件夾下,分別為用來存放井下含有行人的圖像文件、XML文件,以及劃分訓練集、驗證集和測試集后生成的文本文件。
文中使用Pytorch深度學習框架,在自制的井下數(shù)據(jù)集上訓練網(wǎng)絡,以及測試網(wǎng)絡模型。深度學習網(wǎng)絡的訓練與測試均使用服務器進行,其操作系統(tǒng)為ubuntu20.4,CPU處理器為Intel(R) Xeon(R) Gold 622R CPU @2.9GHZ×64,運行內(nèi)存為187.6 GB,GPU處理器為Tesla T4×4,運行環(huán)境為Anaconda3,編譯環(huán)境為Python3.9。
實驗中運用αmAP作為評價指標。αmAP為多類檢測模型中所有類別平均準確率的平均值,αmAP的值越大越接近于1,表示模型識別定位的準確率越高,其計算公式為
式中:αmAP——目標檢測任務中所有類別平均準確率的平均值;
C——目標檢測任務中目標類別的個數(shù);
Pek——各類檢測目標的平均準率。
Pek的值由P-R曲線下的面積計算而得,P-R曲線是指準確率P和召回率R的代數(shù)關(guān)系曲線,準確率P為檢測模型預測正確的部分占所有預測結(jié)果為正樣本的比例。召回率R是檢測模型預測判斷正確的部分占所有正樣本中的比例[13]。準確率和召回率的計算公式為
式中:P——網(wǎng)絡模型的準確率;
R——網(wǎng)絡模型的召回率;
TP——網(wǎng)絡模型正確檢測的樣本數(shù)量;
FP——網(wǎng)絡模型誤檢的樣本數(shù)量;
FN——網(wǎng)絡模型漏檢的樣本數(shù)量。
在實際應用中,深度學習模型需要達到實時性的要求,因此,需要評價其檢測速度進行,常用的評價方法有通過處理單張圖片所需要的時間評價檢測速度,也可以采用每秒可檢測幀的數(shù)量來作為評價標準,文中選擇后者進行評價模型的檢測速度。
FPS為每秒畫面?zhèn)鬏攷瑪?shù),一般情況下電影的FPS為24 fps、電視為30 fps、液晶顯示器為60 fps。為使畫面流暢,F(xiàn)PS一般需要保持在30 fps以上。在深度學習中,F(xiàn)PS可以表示模型每秒檢測的幀的數(shù)量,能夠直觀的表述模型的實時性,F(xiàn)PS值越大,每秒能夠檢測的幀數(shù)量越多,實時性越好。
對改進后的網(wǎng)絡進行驗證及分析,將實驗中網(wǎng)絡的學習率設置為0.001,EPOCH設置為70,根據(jù)顯存大小,將Batch Size設為128。網(wǎng)絡訓練過程中可以通過損失函數(shù)的迭代情況來確定網(wǎng)絡訓練的收斂程度,如圖6所示。
圖6a為網(wǎng)絡在訓練集上損失函數(shù)Loss的迭代曲線,圖6b為網(wǎng)絡在驗證集上損失函數(shù)Val-Loss的迭代曲線。由此可知,G-A-YOLOv4網(wǎng)絡比YOLOv4網(wǎng)絡的收斂速度更快,收斂后的Loss值更低,收斂性更好。
G-A-YOLOv4網(wǎng)絡與YOLOv4網(wǎng)絡訓練70個EPOCH后得到網(wǎng)絡模型的性能如表1所示。其中,αmAP表示網(wǎng)絡模型的準確率,Pa為模型的參數(shù)量代表網(wǎng)絡模型的大小,F(xiàn)為網(wǎng)絡模型的檢測速度。由表1可知,改進后的網(wǎng)絡準確度有所下降,G-A-YOLOv4降低了0.6%,檢測速度較原網(wǎng)絡有所提高,G-A-YOLOv4提高了7 fps,網(wǎng)絡模型大小有所降低,G-A-YOLOv4降低了84 MB。達到文中對改進后網(wǎng)絡的要求,實現(xiàn)在損失較少準確度的前提下減小網(wǎng)絡模型大小,提高檢測速度,使網(wǎng)絡滿足實時性的要求。
表1 訓練70個EPOCH后網(wǎng)絡的性能
(1)輕量型網(wǎng)絡GhostNet替換YOLOv4網(wǎng)絡中主干提取網(wǎng)絡,ASPP模塊代替SPP增強特征,將網(wǎng)絡中的卷積均使用深度可分離卷積進行操作,在損失較少精度的前提下有效減小網(wǎng)絡模型的大小,從而提高了網(wǎng)絡的檢測速度。
(2)采用自制的井下行人數(shù)據(jù)集在進行訓練后得到最終收斂的網(wǎng)絡模型,其準確度與原網(wǎng)絡相當,僅損失0.6%的準確度,但模型大小較原網(wǎng)絡有明顯減小,減小84 MB,其檢測速度明顯提高了7 fps,達到32 fps,能夠滿足井下行人檢測的實時性的要求。