黨偉超, 姚遠,白尚旺,高改梅,吳喆峰
(1.太原科技大學 計算機科學與技術學院, 山西 太原 030024; 2.精英數(shù)智科技股份有限公司, 山西 太原 030006)
據(jù)統(tǒng)計,2004—2013年全國煤礦水害事故起數(shù)和死亡人數(shù)分別占事故總起數(shù)和總死亡人數(shù)的3.1%和8.1%[1]。對此,國家煤礦安全監(jiān)察局在2018年發(fā)布的新版《煤礦防治水細則》中規(guī)定煤礦應采取“預測預報、有疑必探、先探后掘、先治后采”防治水原則。在探水作業(yè)中,煤礦普遍采用監(jiān)工人員全程觀看探水視頻的方式來對卸桿作業(yè)情況進行監(jiān)控,效率低下,且極易出錯。針對該問題,本文提出利用深度學習技術中的三維卷積神經網(wǎng)絡(3D Convolutional Neural Network,3DCNN)對探水作業(yè)中的卸桿動作進行識別,進而減少監(jiān)工人員的工作量,同時達到減員增效、降低生產成本的目的。
傳統(tǒng)動作識別方法一般分為動作特征表征和動作特征分類2個步驟[2]。動作特征表征方法包括STIP[3]、SIFT[4-5]、HOG[6-7]和改進稠密光流軌跡[8]等。動作特征分類方法包括支持向量機[9]和神經網(wǎng)絡[10]等。傳統(tǒng)動作識別方法需要人工設計動作特征,隨著深度學習技術的發(fā)展,出現(xiàn)了基于深度學習的動作識別方法。 JI Shuiwang等[11]提出將包含時空信息的圖片序列同時輸入3DCNN進行動作識別。D. Jeff 等[12]提出將包含動作信息的圖片序列輸入CNN網(wǎng)絡進行特征學習,然后將學習結果輸入到長短時記憶網(wǎng)絡中實現(xiàn)動作識別。S. Karen等[13]提出了雙流結構CNN網(wǎng)絡,2個CNN網(wǎng)絡分別在時間與空間上提取特征,空間流通過幀圖像進行識別,時間流則以光流密度為主,將2種特征融合后再進行分類處理。在上述3種基于深度學習的動作識別方法中,利用3DCNN模型來進行動作識別具有模型簡單、訓練計算量小的優(yōu)點。
本文利用3DCNN模型來識別探水作業(yè)中的卸桿動作,并在3DCNN模型中使用批量歸一化(Batch Normalization,BN)層,提高了識別準確率。
動作識別領域最常用的數(shù)據(jù)集是UCF101。探水作業(yè)中的卸桿動作由一系列簡單動作組合而成,屬于組合動作。為保證每種類型動作分類準確、類間差別明顯,需要對卸桿動作進行分解。將卸桿動作分解為4類,如圖1所示。鉆機拔桿:鉆機將鉆桿從煤巖中拔出。扳手擰桿:施工人員使用管鉗將要卸下的鉆桿擰松。擰桿:鉆機或者施工人員(1個或者2個)將鉆桿完全擰下。轉身放桿:施工人員雙手或者單手將鉆桿撤離鉆機工作臺并轉身放到一起。
(a) 鉆機拔桿
(b) 扳手擰桿
(c) 擰桿
(d) 轉身放桿
本文中視頻數(shù)據(jù)來自3個煤礦的11個不同場景,篩選前視頻總時長為4.9 h。在制作數(shù)據(jù)集時兼顧不同的拍攝角度、拍攝距離、光照條件等,使模型具有較強的魯棒性。在同一個場景中每類動作截取10段視頻。經過篩選之后的數(shù)據(jù)集,每個類別的動作包括110段視頻,共440段視頻。得到的數(shù)據(jù)集中每類動作的視頻數(shù)量與公共數(shù)據(jù)集UCF101基本一致,可用于驗證模型的泛化能力。
構建的3DCNN模型主要由卷積層、池化層、BN層等組成,模型結構見表1,其中視頻采樣幀數(shù)為10,卷積核尺寸為3×3×3。
(1)
3D卷積過程中,卷積核以固定步長對視頻序列進行卷積操作。本文模型在第1、2次和第3、4次進行卷積操作時分別使用32個和64個不同的3D卷積核進行卷積操作,以獲得視頻中更多的特征值。
表1 3DCNN 模型結構Table 1 3DCNN model structure
池化層的作用是將特征向量聚合和降維,以達到降低網(wǎng)絡復雜度和減少訓練計算量的目的。雖然輸出的特征映射數(shù)量與輸入的特征映射數(shù)量一致,但每個特征映射中的特征維數(shù)成倍減少。對于處理多張圖片數(shù)據(jù)來說,池化層同樣需要擴展到三維。如果使用最大池化,那么在位置(m,n,l)的輸出為
(2)
式中:δ,ρ,?分別為最大值運算中的迭代算子;S1,S2,S3分別為視頻序列中圖片的高、寬和所在視頻序列的長度;xm×s+δ,n×t+ρ,l×w+?為池化區(qū)域內數(shù)值的集合;s,t,w分別為池化層的長、寬、高。
本文模型使用了2個最大池化層對特征映射進行降維處理。
圖2 BN層前向傳導過程Fig.2 Forward conduction process of batch normalization layer
BN層實現(xiàn)方法是在每層輸入時,插入歸一化層,將輸入數(shù)據(jù)歸一化為均值是0、方差是1的標準正態(tài)分布。圖2中階段①實現(xiàn)輸入數(shù)據(jù)的歸一化,由于層與層之間進行歸一化處理后會改變數(shù)據(jù)分布,破壞學習特征,所以,利用階段②實現(xiàn)變換重構,以恢復該層學習特征。
2.1 從畫面的內容來說,第八圖中,畫面的下部樹林中有一寺廟,后面有一條小路蛇行而上,路途中還有一個策杖的人正走向陡峭的山峰。石濤在這幅畫的題詞寫到:“玉骨冰心,鐵石為人。黃山之主,軒轅之臣?!背錆M了奇幻色彩的話語為畫面增加了許多神秘色彩,幻美而又真實。畫中各種姿態(tài)各異的怪石,如鬼、神、人、動物等,尤其一顆似天都峰腳下的觀音石:它側身而站,穿寬衣,彎肘拿著一些樹枝。畫面唯美浪漫,生動仙逸。
訓練階段用每個mini-batch中的方差和均值來代替整個訓練集的方差和均值,作為對整體的估計。測試階段,均值和方差不是針對某個批次(batch),而是針對整個數(shù)據(jù)集。因此,在訓練中除了正常的前向傳播和反向求導外,還需記錄每個batch的均值和方差,以便訓練完成后按式(3)與式(4)計算整體的均值和方差。
E[d]=EB[μB]
(3)
(4)
基于3DCNN的動作識別方法在UCF101數(shù)據(jù)集上進行分類,種類多達101種。煤礦探水作業(yè)動作識別視為4分類問題,將3DCNN模型全連接層節(jié)點減少為4個,同時使用Softmax函數(shù)作為分類層的激活函數(shù)[15],確定探水作業(yè)卸桿動作最終的識別結果。
首先,對數(shù)據(jù)集進行預處理,從每段視頻中均勻抽取幾幀圖像作為此動作的代表,并將這些圖片進行一定程度的縮小,處理為相同尺寸,以降低其分辨率。然后,對視頻進行訓練,并保存訓練好的權重文件。最后,將權重值導入3DCNN模型對測試集進行測試,得出視頻的分類結果和此次訓練的準確率。3DCNN模型訓練和識別過程如圖3所示。
圖3 3DCNN模型訓練和識別過程Fig.3 3DCNN model training and recognition process
實驗中采用了基于Python的深度學習框架Keras(以tensorflow為后端)構建3DCNN模型,同時使用GPU(型號為NVIDIA GeForce RTX 2080Ti)對模型進行加速訓練。將數(shù)據(jù)集按照每個動作類型4∶1的比例組成訓練集和測試集,其中訓練集為352個,測試集為88個。
在4類動作中,因作業(yè)人員工作習慣、鉆機型號等不同,視頻長度區(qū)別較大,采樣幀數(shù)越多,提供給模型的信息越詳細,但也增加了模型的復雜度和訓練時長。為此,從每個視頻中分別抽取5,10,15,20,25,30幀圖像,再利用OpenCV將每幀圖像尺寸轉換為32×32。在進行模型訓練時,設置batch-size為20,模型迭代訓練500次,結果見表2。
表2 不同采樣幀數(shù)的準確率Table 2 Accuracy of different sample frames
從表2可看出,采樣幀數(shù)為5時準確率最低,隨著采樣幀數(shù)的增加,準確率會有一定程度的提高,而模型參數(shù)量和訓練時長都大幅增加。對于該模型來說,當采樣幀數(shù)為10時,既能保證準確率,又能兼顧較少的模型參數(shù)量和訓練時長。
在確定采樣幀數(shù)的情況下,每幀圖像的分辨率越高,提供給模型的信息越豐富,但也會增加運算的開銷和模型復雜度。為此,從每段視頻中抽取10幀圖像,利用OpenCV將這些圖像尺寸處理為16×16,32×32,64×64,128×128,并分別進行訓練。設置batch-size為20,模型迭代訓練500次,結果見表3。
表3 不同分辨率的準確率Table 3 Accuracy of different resolutions
從表3可看出,分辨率為16×16時,準確率最低;隨著分辨率的提高,準確率也會提高,但也會增加模型參數(shù)量和訓練時長。綜合考慮準確率、模型參數(shù)量和訓練時長,將圖像的分辨率定為32×32。
為對比學習率對準確率和收斂速度的影響,從每個視頻中均勻抽取10幀圖像,并將這些圖像尺寸處理為32×32。在訓練時,設置batch-size為20,學習率為0.000 1,0.000 5,0.001,模型迭代訓練500次,結果如圖4所示。
圖4 不同學習率的準確率Fig.4 Accuracy of different learning rates
從圖4可看出,學習率對迭代次數(shù)的影響可以忽略不計;學習率為0.000 1時,模型準確率更為穩(wěn)定,最高準確率為98.86%。
為了驗證加入BN層的效果,從每個視頻中抽取10幀圖像,將圖像尺寸處理為32×32。在訓練時,設置batch-size為20,學習率為0.000 1,模型迭代訓練500次,結果如圖5所示。
圖5 加入和未加入BN層的準確率Fig.5 Accuracy of whether to add BN layer
從圖5可看出,在網(wǎng)絡中加入BN層,模型在迭代50次之后,準確率基本穩(wěn)定,可以認為模型已經達到最佳的擬合效果,準確率最高可達98.86%;未加入BN層時,準確率最高為86.36%。
提出一種基于3DCNN的煤礦探水作業(yè)卸桿動作識別方法。3DCNN模型使用3D卷積層自動完成動作特征的提取,通過3D池化層對動作特征進行降維,通過Softmax分類處理實現(xiàn)煤礦探水作業(yè)中典型動作的識別,并使用BN層提高了模型收斂速度和識別準確率。實驗對比了不同采樣幀數(shù)、分辨率、學習率及是否加入BN層時模型的準確率。結果表明,設置采樣幀數(shù)為10幀、分辨率為32×32、學習率為0.000 1 時,模型在加入BN層之后,3DCNN模型對卸桿動作的識別準確率最高可達98.86%。