趙 藝
(倫敦大學學院數學學院,倫敦 WC1E 6 BT)
手勢是人機交互的一種方式,也是人類日常交流的重要方式。手勢識別是指利用計算機來分析和識別手勢,它是人機交互、智能駕駛等領域的一個熱門話題。根據是否需要時間序列信息,手勢識別方法可以分為靜態手勢識別和動態手勢識別。在日常生活中,人與人之間的手勢交流大多涉及動態手勢,因此動態識別具有較強的實用性。隨著硬件技術的飛速發展,動態識別方法越來越受到人們的重視。此外,由于手勢本身的多樣性和差異性,動態手勢識別仍然是人工智能領域一個具有挑戰性的研究方向。
現有的動態手勢識別方法一般分為2類:基于圖像的方法[1,2]和基于骨骼的方法。第1類方法通過提取圖像的特征來進行分類識別。例如,Iwai等人[3]使用一個有顏色的手套結合決策樹來進行手勢識別。隨著手勢估計[4,5]的發展以及深度傳感器的引入,研究人員可以更容易地獲得關節的精確坐標,因此促進了基于骨骼信息的動態手勢識別的研究。骨骼數據對光照和遮擋的變化具有魯棒性,可以避免圖像的運動模糊。因此,基于骨骼的動態手勢識別已經成為一個活躍的研究方向。大多數基于骨骼的手勢識別方法可以分為傳統特征設計的方法和深度學習方法。傳統的手勢識別方法需要對輸入的手勢圖像進行預處理以提取光流,并據此來提取多種圖像特征,最后再編碼并通過機器學習來進行分類。深度學習則有效解決了手動構造特征這一難點,它可以從數據中自適應地學習特征的分布,而避免了復雜的手動計算。一些研究使用卷積神經網絡CNN(Convolutional Neural Network)[6,7]和遞歸神經網絡RNN(Recurrent Neural Network)[8],還有一些研究將CNN與LSTM(Long Short-Term Memory)[9]相結合。但是,在大多數基于深度學習的方法中,將骨骼數據表示為一維或二維向量并不能很好地表達出骨架之間的結構化信息,骨骼的空間結構和時間動態沒有得到很好的利用,因此很難很好地識別視頻數據。
最近,人們越來越關注到骨骼拓撲結構之間的關系,圖卷積網絡可以很好地表征這層關系,所以時空圖卷積網絡 ST-GCN(Spatial Temporal Graph Convolutional Network)[10]隨之被提出。ST-GCN的提出者首先基于圖卷積網絡GCN(Graph Convolutional Network)對骨骼數據進行建模,然后在相鄰幀的相關節點之間構建時序關系,提出了一種時空圖卷積模塊來搭建分類器。然而ST-GCN中的GCN在描述非骨骼連接的關節關系方面有所欠缺,時間卷積網絡TCN(Temporal Convolutional Network)在描述時間信息方面存在不足。手工構建的非骨骼連接可以強化節點之間的信息交流,粗糙路徑簽名是一種有效的表示序列數據信息的方法,利用路徑簽名可以從時間序列數據中提取重要特征。路徑簽名與原始數據是一種一一對應的關系,它在理論上是無窮維的,但由于高階信息呈階乘衰減O(n!),所以在實際使用中均使用截斷簽名。Graham[11]使用路徑簽名特征作為CNN特征映射,解決了大規模在線手寫字符識別問題,顯著提高了在線字符識別的精度。Yang等[12]利用路徑簽名特征,取得了良好的手寫識別效果。因此,為了解決時空圖卷積網絡對空間和時間信息描述不足的問題,本文在目前流行的時空圖卷積網絡的基礎上,重新設計了GCN的關節鄰接矩陣,得到改進時空圖卷積網絡SIT-GCN(Spatial Improved Temporal Graph Convolutional Network),并結合路徑簽名理論,提出了一種精確、高效、魯棒的基于路徑簽名的改進時空圖卷積網絡SSIT-GCN(Signature Spatial Improved Temporal Graph Convolutional Network),并將該網絡應用于基于骨骼的動態手勢識別。
卷積神經網絡用來提取歐幾里德數據的特征,對于非歐幾里德數據的特征提取(例如圖),可以使用一種新的網絡——圖卷積網絡GCN。GCN設計了一種從圖數據中提取特征的方法,可以直接作用于圖并直接使用其結構信息,因此可以將提取的特征用于節點分類、圖分類等。GCN和CNN之間的區別在于用于更新節點特征的卷積層。到目前為止,圖卷積層有很多種,下面介紹其中一種。
假設圖數據有v個節點,每個節點都有C個特征,數據是維數為v*C的矩陣X。所有節點之間的關系將形成維數為v*v的矩陣A,也稱為鄰接矩陣。X和A是第1個圖卷積層的輸入,在每個圖卷積層中,對每個節點的鄰居節點都進行一次卷積操作。這樣,該節點的特征將根據卷積結果進行更新,然后應用激活函數獲取輸出數據。每通過一個圖卷積層后,圖上所有節點的特征如式(1)所示:
(1)

與普通的圖卷積網絡把每一幀的骨骼視為一個圖不同,時空圖卷積網絡是把整個視頻視為一個完整的時空圖,應用GCN單元和TCN單元同時學習空間和時間特性,這使得用統一的網絡來分析手勢成為可能。
首先介紹如何利用輸入的節點序列構造一個時空圖。用G表示圖,用V表示一組頂點,在時空圖中V如式(2)所示:
V={Vti∣t=1,…,T;i=1,…,v}
(2)
其中,節點Vti上的特征向量是第t幀第i個關節的坐標向量。用E表示關節的邊,E分為第1子集和第2子集2部分,第1子集是每一幀中骨骼自然連接的索引,第2子集是每個節點連續幀的連接索引,第1子集和第2子集分別如式(3)和式(4)所示:
ES={VtiVtj∣(i,j)∈H}
(3)
EF={VtiV(t+1)i}
(4)
其中,H是自然連接的人體關節的集合。
下面簡單介紹時空圖卷積網絡中使用的GCN和TCN。GCN用于了解空間中相鄰關節的局部特征。本文用基于劃分規則的卷積定義代替原來的GCN,即將A分成3個部分A1、A2和A3,它們分別表示向心運動、離心運動和靜止的動作特性,每一部分都具有相同的參數。TCN用于獲取關節隨時間變化的局部特征,實質由一維卷積和殘差跳層組成。
時空圖卷積網絡在構建時存在幾個缺點,目前已有不少關于空間上的改進。本文在空間上的修改較少,著重于時序上的優化。首先,GCN中使用的鄰接矩陣只考慮了相鄰關節點的連接信息,但一階的GCN感受野十分有限,必須設計足夠深的網絡才可以學習到拓撲距離較遠的節點之間的空間信息,這不利于網絡的收斂。其次,若TCN感受野大則不易提取小目標的特征,若TCN感受野小則不利于得到結構化的高級語義信息。最后,TCN本質上是時間軸上的一維卷積,而卷積會導致尺寸不斷縮小,但在實際使用中,為了方便計算固定尺寸,每層網絡都需要填充0,導致引入了大量干擾信息。
路徑簽名是一個將原始路徑信息轉換為一組實數集合的函數,集合中的每一個實數代表著原始路徑的某一個幾何特征。首先給出路徑簽名的定義。

(5)
其中,對于任意的整數k≥1和下標集合
如式(6)所示:
(6)

由logS(X)a,b表示的路徑X的日志簽名是路徑X簽名的對數。日志簽名以更緊湊的方式攜帶與簽名相同的信息,因為簽名中存在一些冗余。可以將日志簽名視為簽名的壓縮版本。與簽名本身一樣,日志簽名也分為多個階數。
路徑簽名可以唯一地決定路徑,它包含了路徑的所有信息,每一階簽名都代表路徑明確的幾何意義,例如一階路徑代表路徑的一維增量。
簽名變換也可以用于機器學習問題,因為它能夠從數據中提取特征。可以通過將原始數據嵌入到一條路徑中并計算該路徑的簽名來獲得有關原始數據的重要信息。
本文使用不相交窗口和滑動窗口方法求得路徑簽名特征,作為SIT-GCN網絡的輸入,對數據信息進行預處理,以解決傳統時空圖卷積網絡對時間信息描述不足的問題。下面介紹簽名層預處理的具體方法。假設有N個視頻,一個視頻中有M個人,每個人有v個節點。C維屬性代表每幀中的每個節點的特征,就骨骼數據而言,這些C維屬性是二維或三維坐標。假設每個視頻都有T幀,因此每個人的節點都可以表示為坐標張量的時間序列。用X表示輸入數據,則X是(N,M,T,v,C)的張量,對于視頻的骨骼數據,X是(N,M,T,v,2)的張量或(N,M,T,v,3)的張量。
將視頻中每個人的每個節點的所有幀對應的坐標看作一個時間序列,然后通過線性插值將其轉換為路徑。路徑的維數是每個節點的特征數量。然后,本文以2種方式拆分此路徑:不相交的窗口和滑動的窗口。用l表示窗口大小,即拆分后的每條路徑中所含的視頻幀數,用P表示路徑數。生成路徑后,視頻的骨骼數據被劃分為N×M×v×P條路徑。
當使用不相交窗口方法生成路徑時,對于每個視頻中每個人的每個節點,從第1幀開始,以該節點坐標及相鄰L-1幀的節點坐標作為第1條路徑。然后將1+l幀作為下一條路徑的起點,以該節點坐標及相鄰L-1幀的節點坐標作為第2條路徑,然后從1+l+l幀開始,將相鄰的L-1幀的節點坐標到此節點的路徑作為第3條路徑,依此類推。如果最后一條路徑中的視頻幀數少于l,則將幀數設置為等于其剩余視頻幀數。在這種情況下,路徑數如式(7)所示:
(7)
當使用滑動窗口方法生成路徑時,對于每個視頻中每個人的每個節點,從第1幀開始,以該節點坐標及相鄰L-1幀的節點坐標作為第1條路徑。然后將第2幀作為第2條路徑的起點,以該節點坐標及相鄰L-1幀的節點坐標作為第2條路徑。然后從第3幀開始,將該節點坐標及與之相鄰L-1幀的節點坐標作為第3條路徑,依此類推,即相鄰路徑之間的步長僅為1。如果使用滑動窗口生成路徑,則P=T-l+1。
生成路徑后,為每條路徑計算相應的m級簽名或日志簽名特征。這里,m表示簽名或日志簽名的截斷級別。然后,對于每條路徑中第1幀之后的每一幀,簽名層都將丟棄節點的原始C維特征。因此,每條路徑的新特征由2部分組成:一部分為與該路徑第1幀相對應的節點的原始C維特征,另一部分為該路徑的簽名或日志簽名特征。這樣,在簽名層中計算了生成路徑的簽名特征,這些特征可以很好地代表路徑的幾何特征,通過這樣的方法可以將原始數據轉換成一組可用于機器學習任務的特征。
為了得到更精確的簽名層參數,本文設置K-折交叉驗證的K=4,即將訓練數據分為4組,其中1組組成驗證集,其他3組組成訓練集。
改進時空圖卷積網絡SIT-GCN應用GCN單元和TCN單元同時學習空間和時間特性,并在TCN前引入1×1的卷積核與TCN的結果相乘來自動調節權重。圖1給出了SIT-GCN中的GCN單元、TCN單元與ST-GCN中的GCN單元、TCN單元的對比。在圖1中假設時間卷積核的大小為w×1,在圖1a所示的TCN單元的“輸出的數據”一行中,填充的黑色代表數據為0。ST-GCN中GCN的鄰接矩陣只包含相鄰的骨骼節點的連接,而SIT-GCN的GCN重新設計了非物理意義上的關節相連,手工構建了如圖1b所示的非骨骼鏈接。相比ST-GCN,SIT-GCN的TCN將補零操作改為反卷積操作以還原輸入的尺寸。

Figure 1 Comparison between SIT-GCN and ST-GCN
基于路徑簽名的改進時空圖卷積網絡,本文首先通過簽名層對輸入數據進行預處理,提取數據的簽名或日志簽名特征,然后將其輸入到SIT-GCN中。圖2顯示了該網絡架構,其中拆分路徑的方法分別為不相交窗口和滑動窗口。

Figure 2 Structure of signature spatial improved temporal graph convolutional network
在圖2中,在“劃分連續路徑”一列中,①表示劃分路徑的方法為不相交窗口,②表示劃分路徑的方法為滑動窗口。在“基于坐標信息的骨骼序列”和“基于簽名特征的骨骼序列”中,每個圓和正方形均代表圖中的1個節點,圓代表節點的位置信息,正方形代表簽名層提取的特征。盡管節點在骨骼圖上具有相同的位置,但前者只代表了位置信息,而后者代表了位置和局部動態變化信息。“SIT-GCN”的結構如圖1b所示。
與ST-GCN相比,SSIT-GCN可以有效地解決ST-GCN在構建時存在的缺點:(1)重新考慮GCN的鄰接矩陣:GCN中的鄰接矩陣只包含相鄰關節點的連接信息,只有網絡層足夠深時,才能學習到遠端關節之間的語義信息。本文充分考慮了身體各節點之間的連接能力,綜合人體行動時的動作協調性,在部分非關節點之間建立了連通關系,有利于讓信息在更淺的網絡層得到交互,例如2個手掌之間的連線。(2)引入簽名層對數據進行預處理,以有效提取骨骼數據局部的動態特征:TCN使用固定的大感受野,缺乏對時序中包含的多級語義信息進行建模的靈活性和能力。本文利用數字簽名提前提取局部特征,可以使TCN在保持大感受野的同時不會損失太多的細節。雖然理論上深層網絡也可以學習到這些信息,但本文的預處理一方面可以降低數據的維度,加速網絡的訓練效率,使網絡收斂更穩定;另一方面可以減少網絡的擬合壓力,有效減少時空模塊的數量,減小過擬合。(3)使用反卷積來代替補零:充分保留并盡量還原時間信號,避免引入額外信息。(4)在TCN模塊之后設計了1×1的卷積模塊與TCN的結果相乘,在保證特征圖尺度不變的的情況下提高非線性特性,增強了網絡的表達能力。
在實驗中,首先將視頻的骨骼數據輸入簽名層,本節使用3.2節中介紹的符號,即l表示窗口大小,P表示路徑數,m表示簽名的截斷級別。在輸入SIT-GCN之前,對數據進行歸一化處理,即對不同幀中關節的位置特征進行歸一化處理。由于本文的數據量較少,所以本文設計的網絡由3層SIT-GCN單元和1層全連接層組成,每層SIT-GCN的輸出通道數為64,128和256,實際使用時請結合需求自行調整。最終輸出被發送到SoftMax分類器,以獲得預測。
本文在Chalearn2013數據集上進行了實驗,以調查和評估SSIT-GCN的性能。在手勢識別實驗中,本文僅使用Chalearn2013中的骨骼數據。首先,通過減去樣本中所有關節的平均位置來對該數據進行預處理。然后,通過線性插值和統一采樣對數據進行歸一化,并將所有視頻剪輯采樣到39幀。
通過調整與簽名層有關的超參數,選取表現較好的一組,并將其與ST-GCN、基于簽名的ST-GCN、SIT-GCN比較,以表明SSIT-GCN對ST-GCN改進的有效性。結果如表1所示,可以觀察到SSIT-GCN在準確性方面優于ST-GCN。通過添加簽名層和使用SIT-GCN,其識別精度提高了大約5%。觀察時間消耗可知,雖然SIT-GCN訓練時間比ST-GCN的長,但添加簽名層會使訓練時間縮短約200 s,SSIT-GCN的訓練時間相比ST-GCN的縮短了近50 s。所以,與ST-GCN相比,本文提出的網絡得到了顯著改進。

Table 1 Comparison of the results of SSIT-GCN and original ST-GCN(Chalearn2013)
接著,對SSIT-GCN與其他網絡在Chalearn2013數據集上的識別結果進行對比,表2列出了現有手勢識別方法在Chalearn2013上的表現情況。結果表明,本文提出的網絡是最好的。

Table 2 Accuracy comparison between SSIT-GCN and other networks
本文從NTU-D數據集中挑選出15個手勢相關動作作為數據集,以測試本文提出的網絡訓練出來的模型的性能。表3列出了ST-GCN、基于簽名的ST-GCN、SIT-GCN和SSIT-GCN的識別精度和訓練時間。

Table 3 Comparison of the results of SSIT-GCN and original ST-GCN(NTU-D)
實驗結果表明,通過引入簽名和使用SIT-GCN,本文方法識別精度提高了約5.5%,訓練時間縮短了50 s,表明本文提出的網絡具有較好的識別能力和識別速度。
由于ST-GCN對于骨骼空間遠端關節之間的語義信息學習能力有限且對時間序列的時間信息描述能力不足,使得其識別精度較低,訓練時間較長,因此本文使用路徑簽名特征進行數據預處理,并改進了時空圖卷積神經網絡,提出了一種有效的基于骨骼信息的動態手勢識別網絡——SSIT-GCN。在簽名層中,將骨骼坐標時間序列劃分為多條路徑并提取簽名特征,重新設計GCN的非一階鄰域,以便獲取遠端關節之間的語義信息,并使用反卷積代替補零,避免引入干擾信息,加入1×1卷積核增加網絡的表達能力。實驗結果表明,本文提出的網絡能有效地捕捉空間結構和時間動態。與ST-GCN相比,基于該網絡訓練的模型提高了識別精度,并縮短了訓練時間。
更進一步的優化建議從時間與空間2方面來考慮,空間方面可以更著重關節拓撲結構的非手動設計,以及骨骼數據的結構化信息(如骨骼的長度和方向);在時間方面可以嘗試使用當下流行的Transformer結構來探索網絡更好的可能性。