馮高敏,劉雨佳,2
(1.深圳供電局有限公司 安全監管部,廣東 深圳 518000;2.浙江大學 電氣工程學院,浙江 杭州 310058)
雖然目前我國的電力生產的自動化水平較高,但是仍然需要人員電力生產的過程進行監管,以及對電力線路和輸電過程進行監控,同時對電力故障進行及時的通報和處理[2]。因此,仍然需要人員進行24小時值班。但由于工作人員在值班過程中缺乏有效監管,存在著工作不專心、分神等情況。容易引發未能及時處理突發問題等情況,可能會導致嚴重后果[3]。同時,由于人體身體機能的原因,當人員在夜間值班時,容易感到疲勞和瞌睡。目前解決此類問題的方法較少,因此,為了防止值班人員未能專心處理工作事宜,本文提出了一種基于視頻的電力值班人員的狀態判斷算法(WATCH)。該算法主要由以下3個部分組成:人員頭部姿態估計、人員面部關鍵點檢測以及人員狀態的判斷。
相對于現有算法,本文的創新點有以下幾點:①在WATCH算法中提出了一種基于流行學習的方法,并結合有向梯度直方圖、廣義判別公共向量和連續局部回歸,對人員頭部姿態進行估計;②對人臉關鍵點檢測主要是從TREE算法中提取高斯引導的關鍵點位置圖,并通過關鍵點回歸網絡預測人臉關鍵點;③為了提高準確性,WATCH算法在人員狀態判斷中結合多個特征狀態,對人員狀態進行了估計。
人員在非工作狀態和疲勞狀態時,其頭部姿態會發生變化,為了更好檢測人員狀態,在此,將人員的頭部姿態作為狀態檢測標準的一部分,所以WATCH算法先對人員的頭部姿態進行估計。
在WATCH算法中對頭部姿態估計框架由3個主要部分組成:基于方向梯度直方圖計算的初始特征提取、基于廣義判別公共向量(GDCV)的多值嵌入投影和由樣條擬合以及多元局部回歸組成的連續回歸。圖1描述了該方法的具體步驟以及每個步驟中涉及的子步驟。

圖1 頭部姿態估計流程
首先,在計算最終特征嵌入空間之前,提取HOG特征以增強圖像中的判別信息。其基本思想是,局部物體的外觀和形狀具有良好的局部強度梯度和邊緣方向的分布特征,而對光照變化和背景的雜亂變化不太敏感。雖然可以直接使用原始圖像作為直接輸入來生成流形嵌入,但是使用HOG特征得到的空間增強了姿勢方向之間的區分。
WATCH算法選擇定向梯度(HOG)描述器的局部歸一化直方圖,是因為它們相對于其它現有特征集具有優異的檢測邊緣方向的性能。這些描述器的實現可以通過將圖像分割成較小的連接區域(單元),并且對于每個單元,計算單元內像素的梯度方向直方圖(即邊緣方向)。在每個單元中,HOG特征提取無需平滑即可計算居中的水平和垂直漸變方向和大小。最后,根據直方圖或附近的單元或塊,對直方圖進行標準化。然后,這些直方圖的組合表示描述器,使得通過強度梯度或邊緣方向的分布來描述圖像中的局部對象外觀和形狀。整個HOG特征提取步驟概括如下:①計算待描述單元區域的梯度;②根據方向放入bin中;③將單元分成大的塊;④標準化每個塊。
一旦計算出HOG特征,WATCH就要找到一個線性映射或投影到特征流形上,在特征流形上,輸入圖像與其角姿態之間的對應比在原始空間中更容易估計。
雖然許多降維方法,如主成分分析(PCA)或線性判別分析(LDA)可用于計算該嵌入,但應考慮頭部姿勢估計問題的兩個特殊特征。首先,相同或非常接近的角度對應的姿勢在投影后應保持在一起,而角度非常不同的姿勢應盡可能分開,以便以后實現有效的回歸。其次,該方法應該能夠處理人臉圖像數據的大維度(甚至更大的HOG特征維度)與訓練集中的可用樣本數相比,這導致了眾所周知的小樣本問題(SSS),在計算過程中產生奇異矩陣[4]。
由于廣義判別公共向量(GDCV)[5]結合了這兩個性質,因此在WATCH的框架中提出了廣義判別公共向量(GDCV)。一方面,它提供了判別子空間,在計算機視覺和機器學習中具有良好的泛化特性,而不必考慮SSS假設。另一方面,GDCV是一種有監督的技術,利用類別信息,通過最大化類別之間的距離來獲得最有判別性的空間,同時最小化同一類別內的樣本之間的距離。在WATCH的設置中,類是轉向(yaw)和俯仰(pitch)的可能角度。雖然角度估計問題在現實中是一個連續的問題,會產生無窮多個類,但實際上,訓練中的角度數量是離散的和有限的,因為它受到訓練集中兩個姿勢之間的獲取過程和步數的限制。

(1)


(2)

(3)
對于給定的α值,滿足上述條件的投影基可以通過Ur獲得,這樣r被重新分配。算法1給出了GDCV方法。
Algorithm 1:GDCV Method
Input:X∈Rd×M,α

通過使用投影矩陣WGDCV,并結合式(4),可以將任何樣本xi投影到判別子空間中,以便更容易地分類
(4)
考慮到訓練集通常偏向于某些角度,由于數據集通常是以固定的間隔記錄的,因此利用這一特性來減少在這些情況下投影中的噪聲。具體地說,如果該距離di,j低于小閾值(參考式(5)),則將先前的投影樣本i細化到最近的判別公共向量j的位置。否則,如式(4)所示,投影保持不變
(5)

每個公共向量的閾值計算為到所有其它公共向量的最小距離的三分之一。具體公式如下
(6)
1.3.1 B-樣條
B-樣條是具有方便性質的數學曲線[6]。曲線重建問題是尋找B-樣條函數f,使得隱式曲線f(xi,Y(xi))=0和點云之間的幾何距離盡可能小。同時,利用隱式曲線具有最小的簡化薄板能量的條件,期望曲線具有良好的質量。根據Pk控制點和Bk(xi)的B-樣條基函數定義了曲線Y(xi)
(7)
1.3.2 多元線性回歸
估計的頭部姿態角的最終預測由回歸模型提供,該模型描述了因變量Z=[yaw,pitch]和一個或多個獨立(解釋性)變量Y之間的關系。在多元線性回歸的特殊情況下,一般模型可以寫成如下
Z=Yβ+ε
(8)
同時可以將式(8)改寫為

(9)
zil=β0l+β1lyi1+β2lyi2+…+βklyik+εil是第i個響應(i=1,…,M)的第l個輸出(l=1,…,d')。βk'l是第k個回歸系數(k'=1,…,k),εil是第i個噪聲項,用于模擬隨機誤差。由于轉向角和俯仰角是估計的,但是該方法可以被裁剪成只估計其中一個,或者進一步擴展到估計側傾角。k由前一步嵌入空間的維數給出,k=(c-1)。
給定一組訓練數據Y及其相應的解Z,可以很容易地將回歸參數估計為
β=(YTY)-1YTZ
(10)
圖2展示了訓練框架的主要步驟以及相關的參數。

圖2 訓練方法和參數
在測試過程中,按照圖3所示的工作流程計算新樣本的頭部姿勢。

圖3 測試方法

總而言之,讓訓練集X由M個樣本及其對應的角度Z組成,算法2展示了MATCH算法頭部姿態估計框架的主要步驟。
Algorithm 2:Main Steps of the Framework Propose to Head Pose Estimation
Input:X∈Rd×M,Z∈RM×1 or 2
(1)ComputeXHOG=HOG(X).


(4)Computeβby using Eq.10.
Test:xtest
(1)ComputextestHOG=HOG(xtest).


(4)ProjectxtestGDVinto the curveY.
(5)The angular prediction is allocated asxtestGDCVβ.
在日常活動中,除頭部的運動狀態以外,面部表情也是反映工作人員的狀態的重要的評判標準。為了使判斷更為準確,WATCH算法通過人臉關鍵點來檢測人員的面部表情,本節將具體說明在本方法中所用到的人臉關鍵點獲取的原理。
本方法使用HOG+SVM人臉檢測算法,將最佳邊框檢測方法作為TREE算法[7]的核心,如圖4所示。

圖4 使用不同關鍵點檢測方法結果
如上所述,在使用MTCNN[8]的情況下,這是另一個有效的人臉檢測模型,它通過聯合級聯多任務學習方法學習了不同尺度的3個網絡,但是該方法會在遵循TREE算法的初始邊框中出現錯誤的擬合問題。
300 W數據集用于訓練和測試。訓練數據集由3148幅圖像組成,包含68個關鍵點真實位置,分別是LFPW、HELEN和AFW。測試數據集由689幅圖像和68個關鍵點真實位置組成,分別是LFPW、HELEN和IBUG。
為了應用來自TREE算法的關鍵點回歸方法,只使用HOG+SVM檢測到的訓練圖像進行訓練。因此,在3148幅的300 W圖像中使用3012幅圖像進行訓練。
對于關鍵點回歸網絡,WATCH對ResNet[9]結構進行了改進,該結構易于處理,彌補了較深層次神經網絡結構的缺點,即梯度信息通過殘差連接隨著網絡深度的增加而消失。
WATCH中的關鍵點回歸網絡如圖5所示。

圖5 WATCH的高斯引導關鍵點回歸網絡
利用從TREE算法中獲取的先前關鍵點的信息,生成與輸入圖像大小相同的關鍵點特征圖,然后通過高斯核濾波生成高斯引導的關鍵點特征圖。輸入圖像和高斯引導的關鍵點特征映射在通道維度中連接起來,用作回歸網絡的4通道輸入圖像。
如圖6所示,使用高斯引導的關鍵點特征圖,強調關于關鍵點位置的輸入信息,該信息可以被給予以使網絡能夠執行更精確的關鍵點檢測。特征映射可以通過使用不同的高斯核大小進行修改。在WATCH算法中采用了ResNet50的高斯核,其大小為5×5。

圖6 不同高斯核大小的高斯關鍵點特征映射
為了使用TREE算法的先前關鍵點的關鍵點回歸,損失函數定義為
L=‖x-(yTREE+yPRED)‖2
(11)
式中:x是給定的關鍵點真實信息,yTREE是TREE的初始關鍵點。網絡輸出yPRED是關于將先前的關鍵點移動到真實位置的向量信息。
一般來說,人臉關鍵點檢測的準確度計算為點方向歸一化歐氏距離的平均值。MATCH算法使用標準化平均誤差計算公式為
(12)
式中:x代表關鍵點的真實位置,而y是回歸網絡的預測。dinter是左眼和右眼界標平均坐標之間的歐幾里得距離的眼距。然后,將眼距用于除以平均誤差。N是關鍵點的數量,NME是所有關鍵點的平均誤差值。圖7展示了利用WATCH算法對人員張嘴狀態下的關鍵點標記結果。

圖7 張嘴狀態下人臉關鍵點的位置
通過前面章節的計算,可以獲得被檢測者的頭部姿勢估計,以及頭部轉向和俯仰角度的估計。通過對頭部姿態的獲取可以得到被檢測者在檢測過程中是否存在如打瞌睡、分心等情況。結合3.2節以及3.3節內容,可以對被檢測者狀態進行分析。
如前所述,在一定程度上,眼睛的狀態表明人員是否昏昏欲睡。因為清醒和昏昏欲睡的人閉上眼睛的時間有顯著差異。文獻[10]提出了一種描述瞳孔形狀的橢圓擬合方法。該方法首先用傳統的圖像處理方法分割瞳孔。然后,用代表眼睛形狀的白色像素來擬合橢圓。最后,利用橢圓長軸與短軸的比值來評價眼睛的狀態。
但是它的性能可能受到以下因素的限制:①像素值是敏感的。多變的環境容易使圖像分割效果變差。②在實際應用中,由于瞳孔與眼鏡之間的像素值非常接近,導致假橢圓擬合。WATCH算法使用了一個新的更穩定的參數來評價人員的眼睛狀態。它避免了傳統的圖像處理,比橢圓擬合方法更穩定、更精確。
在前一節中,得到了基于的面部標志。每只眼睛周圍有6個點來定位眼睛的位置。如圖8所示,眼睛關鍵點的分布在開閉狀態之間存在顯著差異。在WATCH算法中,眼睛寬高比被用來記錄眨眼頻率。

圖8 不同狀態下眼點分布的差異
根據眼睛關鍵點的位置,可通過以下方法計算
(13)
式中:Pi,i=1,2,…,6是眼睛關鍵點的坐標。
如圖9所示,當人員眼睛睜開時,ES值大于0.2。相反,ES小于0.2。

圖9 開閉狀態下的ES的值
當被檢測者在說話唱歌或者疲勞時,嘴巴都會產生變化,因此探究嘴巴變化也是對人員狀態監控的重要方法。如圖7所示,當利用前文所述的方法獲取了嘴部的關鍵點后。利用關鍵點的坐標計算嘴巴張角(MOA),通過張角的大小來判斷,嘴巴是否處于張開狀態,具體計算公式如下
(14)
如圖10所示,式(14)中θ1和θ2為嘴巴兩側的張角,兩個張角值通過分別計算A,B,C,D,E,F這6個點的坐標的得到。

圖10 MOA計算
根據文獻[11]的研究可知,在現實環境中,當被檢測人員感到瞌睡、分心時,頭部姿態都會發生變化,尤其是當人員處于與他人交談閑聊過程中,往往頭部會發生轉向,通過統計可知,一般在與兩側人員聊天時,頭部轉動最大角度為75°,因此從左往右轉動角度變化范圍為0°~150°。在WATCH算法中通過計算視頻流中人員頭部轉動范圍來估計該人員是否存在與他人閑聊、分心等非工作情況。同時,當人員處于瞌睡狀態時,頭部會向下傾斜,角度最大為60°。所以,WATCH算法通過判斷頭部的向下傾斜角度來判斷人員是否處于瞌睡狀態。并且在現實環境中,當人員處于瞌睡狀態時,往往頭部會多次向下傾斜。因此,WATCH算法還統計視頻流1 min內,頭部向下傾斜的次數,當次數大于5次時,認為該人員處于疲勞狀態。
根據文獻[12]可知,當人員疲勞時,視頻中1 min內閉眼幀數在30%以上,因此在WATCH算法中,設置百分比閾值為30%,同時,當人瞌睡時,單次閉眼時間較長,在此,當單次閉眼時間大于2 s時,判定被檢測者為疲勞狀態。
由前面內容可知,當被檢測者在進食、聊天、唱歌、打哈欠時、嘴巴都會張開。但是不同的嘴巴張角,代表著不同活動,通過大量數據統計以及文獻[13]和文獻[14]可知,當人在打哈欠時,嘴巴張角為70°左右,當人在聊天或者唱歌時,嘴巴張角一般為30°~50°,當在吃東西時嘴巴張角為60°。因此,通過設置不同的角度閾值,來判斷人員可能的活動。同時,為了更加精確,WATCH算法還統計了1 min視頻流內,嘴巴張閉次數,當人員在聊天時,嘴巴張開次數大約25次,當人員在進食時,嘴巴張開次數大約為10-15次,當人員疲勞時,打哈欠導致嘴巴張開次數大約為2次。
整個人員狀態判斷過程的具體算法如下:
Algorithm 3:State estimation algorithm for WATCH
Input:frames of the video
Output: Evaluation of people’s state
Load the frames of video
Assess the states of the eye, mouth and head
Calculaterthe ratio of the frame of eye closure in 1 minute andta duration time of eye closure.
Calculateythe number of opening the mouth in 1 minute
and MOA.
Calculatetpthe number of head pitch in 1 minute andhp,hythe angle ofpitchandyaw.
Iftp>5then
wtp=1
Endif
Ifr>30%then
wr=1
Endif
Ift>2 s and MOA=0then
wt=1
Endif
If2≤y<10then
wy=1
Elseif10≤y<20then
Peopleiseating
Elseify>20then
Peopleistalking
Endif
If60° wMOA=1 Elseif50° Peopleiseating Elseif30° Peopleistalking Endif If-60° People isdrowsy Endif CalculateTthe total value of these weight. (T=wtp+wr+wt+wy+wMOA) IfT≥3then People is drowsy Else People is awake Endif 圖11展示了WATCH算法的檢測系統原型,其中顯示了系統的不同組件及連接方式。該原型用一個羅技的網絡攝像頭作為視屏采集的工具,采用樹莓派3 Model B+作為預處理器,對圖像進行處理。樹莓派有一個SD卡插入板上的插槽,它充當樹莓派的硬盤存儲器。整個系統由USB供電,視頻輸出可以連接到監視器等,也能將視頻流通過WIFI傳輸給云端服務器。本文為了方便處理,將視頻信號通過WIFI傳輸給個人電腦,進行后續操作。電腦型號為Macbook Pro筆記本電腦,3.5 Ghz酷睿i7處理器,16 G內存。程序運行環境為python3.6,Anaconda1.9.7,OpenCV3.4和Tensorflow 1.8. 圖11 WATCH算法檢測原型系統 在頭部姿態估計部分,WATCH算法采用了CMU-PIE[15]、Taiwan[16]、PRIMA[17]、CASPEAL1 and 2[18],5個數據集來評估性能,在人臉關鍵點檢測部分,WATCH算法采用了300 W關鍵點檢測公開數據集來評估性能。對于狀態評估,由于目前未有公開的相關數據集,因此采用了自制數據集的方法,通過采集20位志愿者(男性志愿者為15人,女性為5人,年齡分布為25歲-48歲,平均年齡35歲,男性平均身高為174.5 cm,女性平均身高為163.2 cm)的相關視頻信息,制作成數據集。每段視頻時長達1 h。并且需要在視頻中模擬出瞌睡、清醒、聊天、進食等相關狀態。 4.2.1 頭部姿態評估 在本實驗中,在同一數據集的不同分區上進行訓練和測試。具體來說,使用所有5個標準數據集,并用50%的樣本進行訓練,用剩余的50%進行測試,交叉驗證作為評估方式,以避免偏向于特定的訓練/測試分割,其中每個實驗用不同的隨機訓練/測試樣本選擇運行10次。在相同的訓練/測試設置中,WATCH方法與HPE[19]進行了比較。DRMF[20]和OPENFACE[21]也被加入到比較中,以供參考。結果見表1。 表1 使用完整頭部圖像作為輸入數據集的平均誤差 從表中可以看出,首先,WATCH使用的方法有著最佳的結果,相對于第二好的方法HPE,WATCH使用的方法誤差度大大降低。雖然HPE的轉向誤差有0°到37°,俯仰誤差最大增加25°,但根據數據集的不同,WATCH使用的方法在轉向誤差方面僅從0°增加到9°,俯仰誤差增加到20°。還可以注意到,俯仰角似乎更難估計,盡管這很可能是由于訓練示例較少的結果,因為并非所有數據集都具有不同俯仰的圖像。 4.2.2 關鍵點評估 圖12展示了WATCH中的關鍵點檢測方法與TREE[7]和TCDCN[22]的結果比較。 圖12 3種方式的結果比較(NME:10-2) 在圖12中,第一列為TREE,第二列為TCDCN,第三列為本文方法。從圖中可以得出,帶有HOG+SVM檢測邊框的TCDCN方法,由于檢測與關鍵點之間的不能對齊,所以其性能較差。WATCH使用的回歸網絡表現出最好的性能,該方法為TREE方法的優化版本。這驗證了初始先驗信息對于回歸任務的重要性。 圖13顯示了TREE和本文方法對于相同數據集的輸出結果。從圖中可以看到,WATCH算法使用的人臉關鍵點檢測算法的網絡輸出的方向向量更接近于實際情況。 圖13 人臉關鍵點檢測結果對比 4.2.3 人員狀態評估 利用制作好的數據集,對WATCH方法進行了評估,結果見表2。 表2 不同環境下WATCH對人員行為評估準確性 從表中可以看出,WATCH算法對于人員疲勞情況判斷準確率較高,平均能達到95%。對于進食狀態評估較差,精確度只有79%。通過分析可知,導致該結果的原因在于由于進食情況下人員張嘴大小較小,并且次數較少,所以導致了精確度不高。 目前由于現有的利用視頻對人員狀態進行檢測的算法重點大多數在于檢測人員是否疲勞,未涉及到是否存在人員分心狀態,所以在此只對比WATCH算法和其它算法對人員疲勞檢測的結果,見表3。 表3 WATCH算法與其它算法對人員疲勞檢測結果 從表中可知,WATCH算法的平均精確度是4種算法里面最高的,尤其是相對于Picot等[24]算法,精度提高了近13%。因此WATCH算法在疲勞檢測方面能夠滿足實際需求。 針對電力值班人員在非人為監督情況下的狀態判斷,本文提出了一種名為WATCH的基于視覺的人員監視方法,該方法利用人的頭部姿態以及人臉關鍵點,對人員狀態進行判斷,可以知道人員是否存在瞌睡,進食或者聊天等行為,從而達到對電力人員行為的監督。為更好地實現WATCH算法,本文還提出了一種人員頭部姿態估計的方法,以及一種人臉關鍵點定位方法。從實驗結果來看,WATCH算法滿足日常工作需求,具有較好性能。4 實驗與結果
4.1 實驗設置和數據集

4.2 算法性能





5 結束語