劉電霆,梁桂賓,周運剛
(1. 桂林理工大學機械與控制工程學院,廣西 桂林541004;2. 桂林理工大學南寧分院,廣西 南寧530000;3. 廣西科技大學機械與交通工程學院,廣西柳州545000)
眾所周知,相對于傳統(tǒng)的視頻監(jiān)控方式,利用計算機視覺技術實施監(jiān)控,大大提高了系統(tǒng)的自動化、智能化程度。同時,隨著計算機視覺的發(fā)展,識別人體動作的準確性和復雜性也在不斷提高。尤其是近幾年來,由于骨架精確位姿估計方法的成熟[1],利用骨架序列對人體行為進行識別是目前研究的熱點。在制造領域,工人手部動作的識別對判斷工人操作、監(jiān)控異常行為、事故預警等都具有重要意義。
近年來,國內(nèi)外研究者們對人體動作、姿態(tài)識別問題進行了一系列科學研究,研究方法主要包括人工特征方法和深度學習方法[2]。人工特征方法是指人工設計特征以實現(xiàn)動作識別,首先是根據(jù)骨架序列的特點在個人認知的基礎上設計出該序列特征,然后利用這些特征表征視頻內(nèi)連續(xù)的人體動作。一般來說,這些人工特征都具有明確的物理意義,如關節(jié)軌跡的鏈碼、關節(jié)位置坐標等。例如,文獻[3]提出一種SoCJ描述子來描述手勢特征,是將手關節(jié)坐標序列展開成特征矩陣,并利用LibSVM軟件包進行識別分類,在DHG數(shù)據(jù)集上取得了良好的識別效果。文獻[4]提出基于李群的骨架特征描述,通過將關節(jié)點轉換到李代數(shù)的向量空間實現(xiàn)手勢的分類,在MSR-Action3D、UTKinect-Action和Florence3D-Action三個數(shù)據(jù)集上取得了良好的識別效果。但人為設計的特征可能會因為人的主觀臆想而忽略數(shù)據(jù)的客觀聯(lián)系,并且一般依賴于數(shù)據(jù),即面向特定識別任務。深度學習方法采用大量數(shù)據(jù)擬合的模型,避免了人工設計特征的要求,且具有一定程度的泛化能力,可以更好地表示動作,因此能夠有效地自主學習和識別動作。比如,文獻[5]提出了一種局部感知長短期記憶(Long Short Term Memory, LSTM)網(wǎng)絡,可以用來構建人體各部位特征的長期時間相關性模型。實驗結果顯示,局部感知LSTM網(wǎng)絡在RGB+D數(shù)據(jù)集上的識別率高于其他人工特征識別方法。
針對工人手部動作的檢測和識別方法,本文提出了一種時空圖小波神經(jīng)網(wǎng)絡(Spatio-Temporal Graph Wavelet Neural Network, ST-GWNN)算法。本文主要聚焦于工人使用工具時的手部動作,以手部骨架構建拓撲圖,從而對手部動作進行檢測和識別,取得了良好的識別效果。
時空圖卷積神經(jīng)網(wǎng)絡(Spatial Temporal Graph Convolutional Network, ST-GCN)是將圖卷積神經(jīng)網(wǎng)絡(Graph Convolutional Network, GCNN)運用到基于骨架的動作識別中的方法,是利用圖卷積將骨架序列映射到特征空間,以及利用時間卷積來學習關節(jié)軌跡信息,使得模型能夠表示各個類別的概率解。比如,文獻[6]將骨架視為關節(jié)拓撲圖,并運用圖卷積建立模型。由于圖卷積能夠準確融合相鄰關節(jié)的坐標信息,因此能夠有效地將關節(jié)的空間信息映射到特征空間。骨架特征十分依賴空間位姿信息,當相機伴隨采集對象大量運動時(如Kinetics數(shù)據(jù)集),幀與幀之間關節(jié)的相對位置會存在一定程度的失真,使得識別效果下降。文獻[7]提出了手勢圖卷積神經(jīng)網(wǎng)絡,將圖卷積應用于手勢識別,在DHG-14/28數(shù)據(jù)集和SHREC’17數(shù)據(jù)集上均具備了不錯的辨識能力,并且辨識迅速,因此這種手勢圖卷積神經(jīng)網(wǎng)絡(Hand Gesture - Graph Convolutional Network, HG-GCN)技術可以應用到實時場景。但相較于時空注意-殘差-時間卷積神經(jīng)網(wǎng)絡(Spatial Temporal Attention- Residual - Temporal Convolutional Network, STARes-TCN)[8],HG-GCN的學習能力較弱,需要更多的數(shù)據(jù)才能達到較好的識別效果。文獻[9]提出了一種雙流自適應圖卷積神經(jīng)網(wǎng)絡(Two-stream Adaptive Graph Convolutional Network, 2s-AGCN)算法,同時利用一階鄰接節(jié)點和二階鄰接節(jié)點組成雙流神經(jīng)網(wǎng)絡,克服了ST-GCN對骨架拓撲圖序列分類缺乏柔性的問題,同時也面臨著空間位姿依賴問題,對非固定設備錄制場景,識別效果不是十分理想。文獻[10]提出了結構誘導型圖卷積(Structure-induced Graph Convolutional Network, Si-GCN)算法,考慮到身體不同部位之間存在接觸連接,將骨架圖分成部位的內(nèi)連接和外連接,使得Si-GCN能夠更準確地連接骨架圖的鄰點,從而更有效地聚合關節(jié)點的運動信息。與傳統(tǒng)的卷積類似,Si-GCN在融合高階的鄰接節(jié)點信息時,會引入更多的噪聲,使得識別性能下降。另一方面,為了解決將整個骨架序列作為輸入時前饋網(wǎng)絡不能有效提取動作間語義信息的問題,文獻[11]提出了反饋圖卷積神經(jīng)網(wǎng)絡(Feedback Graph Convolutional Network, FGCN)算法,將動作序列分成若干段依次輸入模型,而每一階段的圖卷積結果會反饋給下一階段的圖卷積層,這使得圖卷積層能夠提取并融合每段動作序列的高層語義信息,但每一階段需要進行一次全連接層運算,大大增加了計算成本。
最近,圖卷積成為了深度學習領域的研究熱點。卷積運算作為文本、圖像等網(wǎng)格化數(shù)據(jù)處理的基本方法,在深度神經(jīng)網(wǎng)絡中驗證了其可行性,但是卷積運算無法直接在非網(wǎng)格化的無向圖中使用。為了能夠在無向圖上實現(xiàn)卷積運算,文獻[12]提出以圖結構的拉普拉斯矩陣取代卷積運算,并據(jù)此完成了非網(wǎng)格化數(shù)據(jù)的圖卷積處理,但模型參數(shù)通常更加復雜。為了降低圖卷積的模型參數(shù)復雜度,文獻[13]用切比雪夫多項式逼近圖卷積核,在保持卷積局部性的同時,可以大大減少參數(shù)量。在此基礎上,文獻[14]給出了一個有效的構造更簡單的圖卷積,但其模型參數(shù)過于簡潔,導致分配到一階鄰域上的權重相同,這削弱了模型對空間相關性信息的敏感度。文獻[15]將經(jīng)典的遞歸神經(jīng)網(wǎng)絡推廣到圖卷積中,以實現(xiàn)對圖序列進行建模,但容易出現(xiàn)過擬合現(xiàn)象,需要對數(shù)據(jù)進行正則化處理。
在圖小波方面,文獻[16]為了提升小波變換的效率,提出一條能夠簡化構造圖小波的思路,但是需要對構造的小波是否形成Riesz基進行驗證。文獻[17]為了避免進行拉普拉斯特征分解,提出使用切比雪夫多項式逼近小波基,從而降低計算復雜度。文獻[18]利用圖小波編碼的局部信息和尺度相關信息,在不同尺度上識別群落結構,但對譜圖各分支的估計需要大量運算成本。為了描述圖卷積的局部特性,文獻[19]利用小波變換取代傅里葉基的圖卷積,使得鄰點權重分配具有極高的柔性,但卷積核上的參數(shù)復雜度與節(jié)點數(shù)成正比。為了解決這個缺點,本文在圖小波的基礎上,對卷積核進行改進,提出了一階圖小波卷積,保留了超參數(shù)對鄰域范圍的調(diào)整特性,減小圖卷積的參數(shù)復雜度,并將其應用于行為識別的問題上。
本文以人手動作識別為主,論述動作識別的模型建立方法。將人手骨架定義為關節(jié)拓撲圖,從而建立手關節(jié)動態(tài)時間序列。直觀上,手關節(jié)由手骨連接在一起,手骨可表示為關節(jié)拓撲圖的連接邊,手關節(jié)的空間姿態(tài)可表示為無向圖輸入信號,如圖1所示。在手骨圖Gt= (Vt,ε,A)中,Vt表示t時刻手骨拓撲圖的關節(jié)集合;ε表示關節(jié)頂點連接邊的集合;A ∈Rn×n表示手骨圖的鄰接矩陣,n表示圖譜的節(jié)點個數(shù)。
圖1 手部骨架拓撲圖
從數(shù)學角度來看,手關節(jié)和關節(jié)間連接的手骨構成了一種天然的無向圖。本文將手關節(jié)信息通過圖小波卷積映射到特征空間,從而實現(xiàn)手部動作的識別。
圖小波卷積采用小波作為基底,相比于采用傅里葉基的圖卷積,小波基可以使用切比雪夫多項式近似得到,因此擁有更高的變換效率[17]。由于圖小波基隨著鄰域擴散,其權值逐漸衰減,所以小波基通常擁有更高的稀疏性。圖小波具有局部特性,即以每個節(jié)點為中心進行卷積操作時,中心節(jié)點只與鄰域內(nèi)的節(jié)點進行特征融合[19]。圖小波的鄰域范圍與超參數(shù)s有關,這使得圖小波更加靈活。圖小波基的變換公式[19]如下:
式中:U是拉普拉斯特征矩陣;Gs= diag(esλ1,··· ,
式中,卷積核F=diag(θ),θ ∈Rn,小波系數(shù)向量θ為模型訓練參數(shù)。雖然卷積的運算時間不變,但圖卷積的參數(shù)復雜度從O(n×p×q)減小到O(n+p×q)。
在式(4)中,圖小波的卷積核F=diag(θ),θ ∈Rn仍存在參數(shù)復雜度為O(n)的限制,其參數(shù)個數(shù)與節(jié)點數(shù)成正比。對卷積核進行非參數(shù)化改進,圖小波的卷積核F可以定義為:
本文模型主要以ST-GCN框架為基礎,主要由時空圖小波(ST-GWNN)組成。其中,空間卷積由一階圖小波卷積組成,時間卷積為9×1的一維卷積。STGWNN圖卷積塊由空間卷積和時間卷積垂直堆棧而成,如圖2(b)所示。整體模型框架由10個ST-GWNN塊垂直堆棧而成。為減小梯度消失的影響,在每個ST-GWNN塊間引入殘差機制,具體如圖2(a)所示。
圖2(a)表示ST-GWNN的框架。將關節(jié)特征輸入ST-GWNN,最后輸出到SoftMax層,得到各種動作
圖2 圖神經(jīng)網(wǎng)絡框架
通過實驗對ST-GWNN的識別有效性進行檢驗。設定4種使用工具(游標卡尺、六角扳手、大錘和螺絲刀)的手部動作,并且設定玩智能手機時的動作來模擬廠房內(nèi)工人的違規(guī)施工情況。每種動作有約50個樣本,并按照2:8的比率隨機抽取選出實驗集和訓練集。動作視頻片段如圖3所示。實驗還對前沿的識別算法進行了對比,并分析超參數(shù)s對識別性能的影響。
圖3 機械數(shù)據(jù)集各動作手骨架采樣的視頻片段
實驗的軟件環(huán)境是Ubuntu 16.04操作系統(tǒng)和Tensorflow 2.1,計算機CPU為Intel Core i5-9600KF,顯卡為Nvidia RTX 2080 super。
本文用到的數(shù)據(jù)集是無手骨骼數(shù)據(jù)的原始錄像,車間里采集到的視頻同樣是不包含關節(jié)數(shù)據(jù)的圖像,所以必須對數(shù)據(jù)集做預處理以提取關節(jié)數(shù)據(jù)。首先通過開源庫openpose[1]提取出手關節(jié)數(shù)據(jù)。每個動作序列的最大幀數(shù)為300幀,則各個錄像在獲取骨架的關節(jié)位置(x,y)后,形成一組(2,300,21)張量,其中21對應手關節(jié)個數(shù)。實驗中,如果一組數(shù)據(jù)不足300幀,則采用填補零(padding)的方法來滿足最大幀數(shù)要求。將經(jīng)過預處理的數(shù)據(jù)集分別放到ST-GCN和ST-GWNN中進行訓練,實驗結果如表1所示。由2.3節(jié)可知,GWNN的主要參數(shù)是超參數(shù)s,表示圖卷積的作用域,即圖卷積的局部性。實驗中依次調(diào)整超參數(shù)s,觀察其對識別效果的影響。
表1 ST-GCN和ST-GWNN的對比
從表1數(shù)據(jù)可知,在超參數(shù)s測試的范圍內(nèi),STGWNN的識別率最高可以達到83.33%,顯著高于STGCN。但是當s= 0.1時,ST-GWNN的識別率僅為68.75%,略低于ST-GCN模型。隨著s逐漸增大,STGWNN的識別率明顯改善。當s= 0.5時,識別率達到最大值。在s >0.5后,識別率又有所下降。由此可以直觀地看出,通過在一定范圍內(nèi)調(diào)整s能夠明顯改善識別能力。
在相同的數(shù)據(jù)集和神經(jīng)網(wǎng)絡框架下,ST-GWNN和ST-GCN的動作識別率最多相差12.5%,這表明使用ST-GWNN辨識特定的操作動作具有相當大的優(yōu)勢,而且其準確性也體現(xiàn)了手勢動作識別和異常行為檢測的可能性。由于超參數(shù)s與節(jié)點間的相關程度成正比,隨著s的增大,鄰接節(jié)點的范圍也在擴大,因此通過調(diào)整超參數(shù)s就能靈活控制鄰域范圍。圖卷積在一定范圍內(nèi)融合鄰接關節(jié)的有效信息越多,識別率越高。s增大到一定程度后,更大的鄰域范圍引入更多的噪聲,使得識別率降低。從識別率波動下降的趨勢可以看出,高階的鄰接節(jié)點的有效性是不太好確定的。例如在實驗中,s大于0.5后,引入了更多的高階鄰點,識別率有所下降。超參數(shù)s為0.8和0.9時,鄰域范圍再次擴大,對應的識別率分別為70.80%和75.00%,由于引入了新的高階鄰點,識別率有所回升。此外,在進行數(shù)據(jù)集預處理時,存在無法提取關節(jié)坐標以及關節(jié)錯位等問題,這表明輸入的張量存在大量的無效元素以及噪聲,此時ST-GWNN依然保持著良好的識別率,并能通過超參數(shù)s進行優(yōu)化。
本文在圖小波卷積核的基礎上進行參數(shù)化處理,并利用一階切比雪夫多項式來逼近卷積核,由此提出一階時空圖小波神經(jīng)網(wǎng)絡ST-GWNN。相對于原有的GWNN[19],一階切比雪夫圖小波的參數(shù)數(shù)量與節(jié)點個數(shù)n無關,這使得模型更加靈活,極大地減少了模型的學習參數(shù)。此外,ST-GWNN是通過調(diào)節(jié)超參數(shù)s而非多項式的階數(shù)來控制鄰域范圍,在一定程度上克服了多項式階數(shù)既定的情況下,卷積表現(xiàn)力不足的問題。
實驗結果表明,在一定范圍內(nèi)調(diào)節(jié)超參數(shù)s可以提高動作的識別率,使得ST-GWNN具有更高的柔性。此外,將ST-GWNN應用于生產(chǎn)動作的識別上,并監(jiān)控既定的違規(guī)行為,與ST-GCN相比,其識別效果更佳,這也表明將ST-GWNN運用到生產(chǎn)過程中具備可行性。
ST-GWNN仍然存在提取的關節(jié)信息噪聲大的問題,這也是今后改進的方向。針對提高識別率,有以下兩個改進方向:1)針對神經(jīng)網(wǎng)絡本身進行改進,如在深度網(wǎng)絡中添加更多策略,以提高模型的識別能力;2)提高關節(jié)特征提取的精度,減少輸入信息的稀疏性和噪聲。值得一提的是,生產(chǎn)過程的環(huán)境通常較為惡劣,這對骨架圖的提取極具挑戰(zhàn)性,這也是動作識別能否實際應用于生產(chǎn)過程檢測和事故預警的主要問題之一。