王 鴻,鄧元實,常政威,吳 杰,陳明舉
(1.四川輕化工大學人工智能四川省重點實驗室,四川 宜賓 644000;2.國網(wǎng)四川省電力公司電力科學研究院,四川 成都 610041)
電力事故不僅會造成人身傷害,還會影響電力系統(tǒng)的穩(wěn)定運行[1]。為了保障電力作業(yè)人員的生命安全,電力行業(yè)制定了全方位的安全工作規(guī)程,并在作業(yè)人員上崗前進行培訓,規(guī)范其行為操作提高其安全素質(zhì)[2-3]。經(jīng)調(diào)查研究發(fā)現(xiàn),作業(yè)人員的安全意識淡薄違章操作以及電力現(xiàn)場監(jiān)管人員的管理責任缺失對作業(yè)現(xiàn)場監(jiān)管不嚴,是電力事故發(fā)生的主要原因。因此,如何高效地加強作業(yè)現(xiàn)場的安全管控力度,提高電力作業(yè)人員的安全和工作質(zhì)量,促進電力作業(yè)人員提升安全意識避免違章成為亟需解決的問題[4-5]。
近年來計算機視覺技術(shù)得到快速發(fā)展,諸如人體姿態(tài)估計和行為識別這樣的任務受到了學者們的廣泛關(guān)注[6]。文獻[7]建立了基于單個圖像或視頻捕捉快照的人體動作識別系統(tǒng),對比神經(jīng)網(wǎng)絡、隨機森林、k近鄰和支持向量機4種分類器對人體動作識別分類。文獻[8]提出了人類行為特征識別,根據(jù)視頻片段對視頻中人物的全局特征提取和局部特征提取兩種算法的應用和優(yōu)缺點進行分析。文獻[9]將學生的動作指定為6種典型行為,提出了改進OpenPose的行為識別方法,并且基于決策樹的支持向量機對堂上學習者的行為進行分類。文獻[10]檢測人體姿態(tài)關(guān)鍵點并對變電站的安全區(qū)域標定識別,判斷電力作業(yè)人員的雙腳是否在標定的安全區(qū)域內(nèi),確定作業(yè)人員是否處于安全狀態(tài)。以上的研究對人體姿態(tài)和行為識別技術(shù)取得了一定的研究成果,但將OpenPose姿態(tài)估計算法引入到電力作業(yè)現(xiàn)場,實現(xiàn)精確高效的行為識別的研究還有一定的不足之處。
行為識別技術(shù)[11]從本質(zhì)上來講就是一種分類問題,而人體動作識別的算法都是基于傳統(tǒng)算法或者基于深度神經(jīng)網(wǎng)絡開展的?;趥鹘y(tǒng)算法的研究主要是依靠人為提取特征,這種傳統(tǒng)的算法因通過人為解決而效率低下,且提取特征不準確,也不能完全實時對電力作業(yè)人員的行為進行分類檢測。針對這些問題,提出了一種基于OpenPose的人體姿態(tài)識別技術(shù),通過深度神經(jīng)網(wǎng)絡對提取的電力作業(yè)人員的骨骼圖進行行為識別,提高了檢測的速度和準確率,避免由于電力現(xiàn)場的復雜環(huán)境而導致的檢測錯誤,及時對危險行為檢測并進行預警處理,避免出現(xiàn)嚴重的安全事故,造成人力物力以及財力的損失[12]。
主要針對電力作業(yè)人員行為態(tài)勢設計行為識別流程如圖1所示。首先,輸入電力作業(yè)人員相關(guān)視頻流,將其處理為視頻幀圖像,對數(shù)據(jù)做相關(guān)的預處理;然后,將現(xiàn)場作業(yè)人員的視頻幀圖像輸入到人體2D姿態(tài)估計的OpenPose模型中,采用計算機視覺組(visual geometry group,VGG)提取電力作業(yè)人員的關(guān)鍵點位置信息及關(guān)鍵點連接的骨骼圖;接著,將提取得到的骨骼圖信息通過一系列處理后保存為最終的訓練集;最后,將訓練集通過深度神經(jīng)網(wǎng)絡(deep neural networks,DNN)進行電力作業(yè)現(xiàn)場作業(yè)人員的行為識別。
圖1 電力作業(yè)人員行為識別整體技術(shù)流程
近年來,基于深度學習原理進行的人體姿態(tài)估計方法被提出且得到廣泛應用。而OpenPose人體姿態(tài)估計是自底向上關(guān)鍵點檢測方法[13],使用部分親和字段(part affinity fields,PAF)算法,完成從人體關(guān)鍵點檢測到關(guān)鍵點與關(guān)鍵點之間的連接過程。OpenPose 的輸入是一幅人體姿態(tài)的圖像,輸出是該算法檢測到的所有人體的骨骼。人體骨骼圖共提取18個關(guān)鍵點,包括眼睛、鼻子、手臂和腿等,如圖2所示。圖3為識別的作業(yè)人員的骨骼關(guān)鍵點圖。
圖2 18個關(guān)鍵點
圖3 人體骨骼關(guān)鍵點圖
所采用的美國卡內(nèi)基梅隆大學實驗室的OpenPose姿態(tài)估計算法,是基于卷積神經(jīng)網(wǎng)絡并采用caffe框架開發(fā)的開源庫,可以實現(xiàn)人體的姿態(tài)動作、面部表情識別以及手指相關(guān)運動等,對多人的二維識別有極好的魯棒性,且具有識別效果精準、速度高等特點。OpenPose外部網(wǎng)絡結(jié)構(gòu)如圖4所示。該模型總共分為兩個階段識別人體的關(guān)鍵點[14],如圖5所示。
圖4 OpenPose外部網(wǎng)絡結(jié)構(gòu)
圖5 OpenPose模型結(jié)構(gòu)
第一階段:VGG的前10層用于為輸入圖像創(chuàng)建特征映射F(feature map)。
第二階段:將第一階段輸出得到的特征圖作輸入,包括兩個分支多階段卷積神經(jīng)網(wǎng)絡迭代訓練。其中,第一個分支輸出結(jié)果為S的集合S=(S1,S2,…,Sj),j∈{1,2,…,j},j表示第j個關(guān)鍵點。這一分支用來預測人體關(guān)鍵點位置信息的一組2D置信圖(part confidence map,PCM);另一個分支輸出結(jié)果為L的集合,L=(L1,L2,…Lc),c∈{1,2,…,c},c表示第c個軀干,用來預測部分親和度的2D矢量場,表示關(guān)鍵點與關(guān)鍵點之間的局部區(qū)域親和力PAF,如式(1)所示。
(1)
式中:ρ1和ρt分別為第一階段和第t階段PCM的預測網(wǎng)絡;φ1和φt分別為第一階段和第t階段PAF的預測網(wǎng)絡。
每個階段(Stage)都是一些串行的模塊,前面的Stage先檢測出一些簡單的關(guān)鍵點,后面的Stage再根據(jù)前面檢測出來的信息繼續(xù)檢測更復雜情況下的關(guān)鍵點。通過多階段的卷積神經(jīng)網(wǎng)絡的反復預測,實現(xiàn)漸進優(yōu)化的過程,使得到的預測結(jié)果更加準確[15]。最后得到置信圖和親和力,通過關(guān)鍵點對dj1和dj2之間的PAF來判斷關(guān)鍵點之前的連接是否正確[16],如式(2)所示。
(2)
式中:dj1和dj2分別為某人的兩個連續(xù)的像素點j1和j2;p(u)為連續(xù)像素點之間連線的取值,如式(3)所示,u的取值為(0,1)。
p(u)=(1-u)dj1+dj2
(3)
DNN[17-18]是一個具有多層結(jié)構(gòu)的數(shù)學模型,根據(jù)每層結(jié)構(gòu)的位置可以分為3層:輸入層、隱藏層和輸出層。其網(wǎng)絡的結(jié)構(gòu)示意如圖6所示。
圖6 深度神經(jīng)網(wǎng)絡結(jié)構(gòu)
假設輸入n維的信號,特征向量表示為X=(x1,x2,...,xn)T,那么,每個隱藏層的神經(jīng)元與前一層之間的神經(jīng)元權(quán)值的關(guān)系可以表示為
y=f(wTx+b)
(4)
式中:y為輸出;f為非線性激活函數(shù);w為權(quán)值系數(shù);b為偏置。也就是每個神經(jīng)元的輸出值是輸入信號的線性組合,加上偏置后經(jīng)過一個非線性的激活函數(shù)f的輸出值結(jié)果,而每個神經(jīng)元經(jīng)過n層隱藏層處理后,通過最后一層輸出層得到的結(jié)果就是最終DNN的輸出結(jié)果。
因此,為了使深度神經(jīng)網(wǎng)絡能更好地提取數(shù)據(jù)集中有用的電力作業(yè)人員骨骼信息,得到預期的輸出效果,深度神經(jīng)網(wǎng)絡需要不斷調(diào)節(jié)參數(shù)權(quán)重w和偏置b,從而達到最佳訓練的學習目的,使網(wǎng)絡最終的輸出值與實際值的損失達到最小。所采用的訓練模型損失函數(shù)為均方誤差函數(shù)(mean square error,MSE),表達式為
(5)
w和b的優(yōu)化更新過程可以表示為
(6)
式中:w′和b′分別為進入網(wǎng)絡后更新的權(quán)重值和偏差;η為網(wǎng)絡的學習率。通過學習率來控制網(wǎng)絡的學習進度,并且能夠決定網(wǎng)絡是否能夠成功找到 全局最小值以及確定最小值的時間;通過調(diào)節(jié)學習率得到全局的最優(yōu)參數(shù)解。通常來講,如果學習率過大,則會造成整個網(wǎng)絡無法收斂,忽視找到最優(yōu)值的位置;而學習率設置得太小,則會導致整個網(wǎng)絡收斂過程非常緩慢,從而增加找到最優(yōu)值的時間,且也可能會造成局部收斂而找不到真正的最優(yōu)解。
實驗在Windows系統(tǒng)下進行操作,采用深度學習的開源框架TensorFlow。通過調(diào)用Python環(huán)境下的各種學習包,對實驗進行訓練和測試,用到的軟件為Pycharm2019,采用python3.7的框架。硬件環(huán)境為:處理器 Intel(R) Core(TM) i7-10700 CPU @2.90 GHz;運行內(nèi)存 16.0 GB。
所使用的訓練數(shù)據(jù)集為人工采集拍攝一組視頻,每隔25幀截取一張,將視頻流切割為1888張視頻幀圖像。對視頻幀圖像采用圖線增廣擴充等處理方式,加大訓練樣本個數(shù),使訓練數(shù)據(jù)集產(chǎn)生與原始視頻幀圖像類似的數(shù)據(jù)。這樣能夠達到擴充訓練數(shù)據(jù)集的效果。通過對圖像做增廣處理,可以減小模型對某些特定屬性的依賴作用,從而使模型的泛化能力得到提高。這里采用對圖像進行左右翻轉(zhuǎn)、平移等方法來實現(xiàn)數(shù)據(jù)集的擴充。如圖7所示為圖像進行擴充后的示意圖。
圖7 訓練圖像的數(shù)據(jù)增廣
數(shù)據(jù)集中共有18個關(guān)鍵點,包括鼻子、眼睛、左右手和左右腳等,且通過(x,y)的坐標來表示關(guān)鍵點的位置信息,將提取到的關(guān)鍵點信息保存為train.txt文本文件。通過腳本文件將讀取到的關(guān)鍵點信息轉(zhuǎn)換為csv格式,保存在train.csv文件中。并且,對每幀圖像的行為進行標記,一共包括站立、走路、跳躍、摔倒和下蹲5個動作,用0~4依次對5個動作進行標注,將標注好的文件保存在train_act.csv文件中。最后對關(guān)鍵點信息和行為信息的數(shù)據(jù)集進行訓練。
將具有不同寬高比的圖像縮放為相同單位,對采集到的錯誤的骨架關(guān)鍵點信息做刪除處理。最后,得到3775張圖片作為人體關(guān)鍵點行為識別的訓練數(shù)據(jù)集。使用電力作業(yè)現(xiàn)場的圖片作為測試數(shù)據(jù)集。
總的數(shù)據(jù)集分為2組:訓練的數(shù)據(jù)占90%,驗證的數(shù)據(jù)占10%。通過基于深度神經(jīng)網(wǎng)絡的電力作業(yè)人員行為檢測算法,給已經(jīng)加上行為標簽類別的骨骼信息數(shù)據(jù)做處理,對電力作業(yè)現(xiàn)場人員進行行為識別分析。采集的視頻中包括電力作業(yè)人員摔倒等異常行為,同時也包含了正常情況下作業(yè)人員正常行走、下蹲等行為。通過人工方法對這些數(shù)據(jù)的類別進行行為標定。在DNN模型的訓練過程中[19],采用自適應學習率的Adam優(yōu)化算法[20],對梯度的一階矩估計和二階矩估計動態(tài)調(diào)整每個參數(shù)的學習率,通過多次實驗和對參數(shù)的訓練;最后,選取其中準確率和損失率最佳的一組參數(shù):批處理量batch_size為32,訓練次數(shù)(epoch)為700次。訓練過程中的平均損失值如圖8所示。
圖8 模型訓練過程中的損失值下降曲線
由圖8可知,模型訓練過程中,隨著訓練的迭代次數(shù)增加,訓練損失值逐漸減小[21],且在epoch為100~200間趨于平滑狀態(tài),其中橫坐標表示模型訓練的迭代次數(shù)epoch,縱坐標Loss表示其均方誤差。通過多次試驗得到4個較好的訓練模型,如表1所示。
表1 不同參數(shù)模型評估
從表1可以看出:隨著epoch的增大,訓練損失值逐漸減小,且訓練準確率逐漸變高,測試損失值和準確率也有同樣的效果;當epoch等于700次時,此時的損失值達到最小,且準確率也達到最高,而之后的各項數(shù)值性能指標隨著epoch的增大而變差。
使用該分類模型在測試數(shù)據(jù)集上進行測試,輸入已知動作的視頻,驗證模型輸出結(jié)果。如圖9所示為檢測出的電力作業(yè)現(xiàn)場人員站立和下蹲的姿態(tài),圖9(a)為原始圖像,圖9(b)為對應圖像的骨骼關(guān)鍵點圖以及檢測出來的行為動作。從圖9中可以看出,分類模型對作業(yè)人員的姿態(tài)都能進行準確的識別。并且從第三組電力作業(yè)人員的識別效果上可以看出,不但能識別出電力作業(yè)人員的行為動作為摔倒狀態(tài),同時會顯示識別到的電力作業(yè)人員已摔倒,并發(fā)出警告。
圖9 檢測的電力作業(yè)人員行為姿勢
為了更好地保證電力作業(yè)現(xiàn)場工作人員的人身安全以及電力系統(tǒng)的穩(wěn)定性,提出了基于OpenPose的電力作業(yè)人員危險行為檢測技術(shù)。將電力作業(yè)人員的骨骼圖通過2D人體姿態(tài)估計算法OpenPose提取出來,利用VGG網(wǎng)絡的前10層提取電力作業(yè)人員的特征信息,避免電力現(xiàn)場的復雜環(huán)境影響提取目標的抽象特征。并利用龐大豐富的數(shù)據(jù)量,通過對深度神經(jīng)網(wǎng)絡模型的訓練,使得該模型的魯棒性與泛化能力有所提升。通過實驗證明所提技術(shù)能有效地識別工作人員的行為動作,并能對危險行為發(fā)出預警和報警,起到了對作業(yè)人員的安全監(jiān)管。