李海濤,范文杰,李孟琳,魏顯隆,程宇飛,丁習原,張慶,李策
(中國礦業大學(北京)機電與信息工程學院,北京 100083)
近年來,隨著深度學習技術的發展,視頻動作識別已成為計算機視覺領域的一個熱門研究方向,基于骨架的動作識別[1-3]已經被廣泛應用于許多領域,例如人機交互、健康監測、安防監控、體育訓練等。基于骨架的動作識別技術利用傳感器(如RGB-D相機、慣性測量單元等)捕捉人體關鍵點的位置信息,然后通過算法對關鍵點的位置進行分析,從而識別人體的動作。
在視頻動作識別任務中,空間時序卷積神經網絡(STCNN)[4-6]和其變種模型是一種常用的架構,它們使用三維卷積來捕捉視頻中的空間和時間信息。然而,STCNN 模型的局限性在于只能捕捉固定長度的時間段內的動作信息,難以適應不同長度的視頻輸入。此外,傳統的STCNN 模型也難以處理由于復雜背景、遮擋和噪聲等因素導致的動作識別中的困難情況。為了克服這些限制,近年來提出了許多改進STCNN模型的方法,其中基于多階鄰接矩陣[7-9]的方法表現出了很好的性能。多階鄰接矩陣方法是一種將不同時間段的信息相互交互的方法,它通過考慮不同時間段之間的空間-時間關系來建立圖結構,并利用圖卷積神經網絡(GCN)對這些關系進行建模。多階鄰接矩陣方法已經被證明可以顯著提高視頻動作識別的準確性。但GCN和GTCN模塊[10-12]提出的多尺度的鄰接矩陣并沒有考慮對于相同的動作,全局運動的尺度可能不完全相同。有些可能更快,有些可能更慢。為了學習魯棒的全局運動特征,應該考慮快運動和慢運動兩者。
本文旨在進一步提升視頻動作識別的準確率,提出了一種新的MS-G3D-L 模型,該模型基于MS-G3D模型[13-15],通過擴大MS-GCN塊的多尺度的鄰接矩陣,進而擴大模型的感受野,使得模型的準確率有了穩定的提升。具體來說,本文采用的方法是擴大其保留階次,使得快運動和慢運動的特征都能被模型學習到,然后將快慢運動矩陣拼接起來,得到一個包含綜合特征的矩陣。從而允許模型更好地利用不同的信息。實驗結果表明,MS-G3D-L模型在多個公共數據集上都取得了良好的表現,相比于現有的模型,準確率得到了提高。本文的主要貢獻是提出了一種新的基于MS-G3D 的MS-G3D-L 模型,并證明了該模型在視頻動作識別任務中的有效性。通過實驗證明了其對模型準確率的影響。這些結果有望為視頻動作識別任務的研究提供新的思路和方法。
目前的一些方法如AS-GCN[16-18]利用高階多項式表示與中心節點相聚幾跳的鄰近節點,但是高階多項式會出現有偏權重問題,即由于物理距離的原因,相近的節點無論在哪個階次都占很大的權重,這對相距比較遠的鄰近節點不太友好。為了解決偏權重問題,MS-G3D 模型提出一種多尺度的鄰接矩陣,如公式(1),通過設置不同的k得到不同尺度的鄰接矩陣。
這里的k代表的是不同的階數,i是初始骨骼鄰接矩陣的行,j是初始骨骼鄰接矩陣的列,vi和vj代表第i和第j個關節點,d(vi,vj)表示vi和vj之間跳數的最短距離。
也可寫作如下公式(2):
這里的k代表的是不同的階數是k跳的鄰接矩陣,這里+1和-1的操作分別表示保留需要的階次,去掉多余的階次。如圖1所示,關節點距離其他關節點的距離即k的取值范圍為1到12。

圖1 人體骨架關節點圖示[19]

圖2 快慢運動多尺度鄰接矩陣選取的鄰居節點對比圖
然而,對于同樣的動作,全局運動的尺度可能不完全相同。有些可能更慢,有些可能更快,為了學習到魯棒的全局特征,應該擴大其保留階次,使得慢運動和快運動的特征都能被模型學習到。將這種直覺賦予本文現在的網絡模型,本文使用快速全局運動和慢速全局運動來形成兩個尺度的全局運動特征,然后將快慢運動矩陣拼接起來,得到一個包含綜合特征的矩陣。本文希望通過這種拓展多尺度鄰接矩陣的方式,使得模型的感受野得到提升,能夠學習到相同動作的不同尺度特征,進而提升模型的準確率。從技術上來說,兩個尺度的運動可以通過以下兩個公式(3)(4)產生:
多尺度圖卷積公式(5)如下:
MS-G3D-L模型的結構如圖3所示。

圖3 整體結構
STGC塊的主要作用是從時間和空間維度提取人體骨架特征,其結構如圖4所示。

圖4 STGC模塊結構
MS-GCN 用于提取不同尺度的鄰接矩陣,Sliding Temporal Window 是在時間維度滑動大小為τ,空洞間隔為d 的時間窗,滑動步幅stride=2,最后輸出一個由τ×τ 個鄰接矩陣鋪成的τN×τN 的矩陣,MS-TCN 是在TCN[20]基礎上進行的多尺度時間卷積模型。
系統總體上分為數據管理、可視化管理、視頻信息管理、GUI四個模塊。如表1所示,數據管理模塊用于實現數據讀寫,可視化管理模塊通過數據模塊所讀入的數據來進行骨骼繪制和視頻生成,視頻信息管理模塊通過同時呈現抽象骨架圖和原視頻來進行視頻基本操作和信息展示,GUI則為用戶提供交互界面。

表1 系統主要模塊的功能和各模塊的依賴關系
下面詳細敘述用戶界面模塊及各管理模塊的開發所實現的功能:
1)圖形界面:基于PyQt5開發,應當具有較好的使用邏輯,美觀實用,能夠展示清楚模型處理結果。
2)工程管理:實現對工程的打開、新建、保存等操作,能對現有工程導入新的視頻信息,允許用戶編輯工程信息。
3)視頻管理:基于cv2/pillow 庫,將視頻看作圖片流來開發。實現對排水管道視頻的基本操作,包括播放、暫停、切換視頻、快進等功能。實現視頻信息的輸出與修改,允許用戶手動編輯視頻信息,操作視頻播放狀態。
4)數據管理:基于Python庫開發本軟件的數據。
軟件的正常運行需要合適的運行環境,本文軟件的環境配置步驟為,首先配置PyTorch環境,軟件檢測模型是基于GPU 的,因此軟件的使用需要依賴GPU版本的PyTorch;之后利用pip 安裝庫文件;然后使用Anaconda 進行環境配置,Anaconda 具有可視化界面,可以直接操作添加所需庫,方便用戶使用;最后是用PyQt5 庫可實現基本窗口設計,可創建GUI 應用程序的跨平臺工具包,它將Python 與Qt 庫融為一體,保留了Qt高運行效率的同時,大大提高了開發效率。
對于管理模塊的設計,本文軟件主要分為三個方面,一是數據管理,二是可視化管理,三是視頻信息管理。
1)管理模塊設計——數據管理
在數據管理模塊中,本文軟件實現的具體功能是通過mmcv.load,將文件讀入內存,按照key:value 的方式組織;通過decord.VideoReader 讀取目標視頻;通過tqdm 實現視頻生成過程的進度條;通過moviepy.editor.ImageSequenceClip 實現根據一系列按序排列的圖片生成視頻;通過cv2將視頻看作圖片流來開發;最后通過pyqt5實現界面可視化。
2)管理模塊設計——可視化管理
可視化管理模塊首先讀取骨骼數據文件,獲取骨骼每一幀的數據;之后讀取視頻文件,將視頻文件轉化成按序排列的圖片,并將圖片轉成numpy形式進行處理;然后再繪制骨骼數據,連接對應關節起始點,在轉化成numpy的圖片數據上畫出;最后生成視頻并儲存,將繪制好的系列圖片轉換成按序播放圖片的視頻并存儲。
3)管理模塊設計——視頻信息管理
在視頻信息管理模塊中,本文實現的主要功能為定義視頻存儲類,屬性包括視頻文件、視頻幀文件夾,視頻讀取路徑,識別處理后視頻存儲路徑。具體功能有讀寫視頻信息、選擇視頻幀、實現視頻幀的骨骼數據提取、實現骨骼數據和RGB視頻融合。
軟件界面如圖5所示。

圖5 軟件界面展示
實驗通過比對同一數據集模式下,相同參數設置,以及相同輪次下訓練出的Top1 的值進行評判。同輪次下Top1的值越高代表模型訓練效果越好。
實驗采用NTU RGB+D 60[7]的joint 在Cross-Subject(X-Sub)模式下做數據集。
NTU RGB+D 60 是一個大規模的動作識別數據集,包含56578個骨架序列,超過60個動作類別,從40個不同的對象和3個不同的相機視角捕獲。每個骨架圖包含N=25 個身體關節作為節點,它們在空間中的3D 位置作為初始特征。動作的每一幀包含1 到2 個主體。
Cross-Subject 按照人物ID 來劃分訓練集和測試集,訓練集40320 個樣本,測試集16560 個樣本,其中將人物ID 為1,2,4,5,8,9,13,14,15,16,17,18,19,25,27,28,31,34,35,38 的20 人作為訓練集,剩余的作為測試集。
實驗選用的GPU為兩張NVIDIA A16,PyTorch版本為1.9.1,訓練采用的BatchSize 為16,初始學習率設置為0.05,optimizer 選用SGD,且milestone 設置為30,40。
為了對比MS-G3D-L 模型相對MS-G3D 模型的訓練效果,本文的實驗內容為在相同環境、參數設置、數據集模式下訓練MS-G3D模型與MS-G3D-L模型,記錄其Top1數值。
圖6 記錄 了30 輪至43 輪MS-G3D 模型和MSG3D-L模型采用NTU RGB+D 60的joint在Cross-Subject(X-Sub)模式下訓練出的Top1數據。

圖6 Top1 數值對比折線圖
31輪和41輪的Top1值之所以有明顯的上升是因為調用了optimizer,使得更新后的各個參數讓損失函數(目標函數)值不斷逼近全局最小。整體上,在加入針對不同速度的運動的考量后,模型的正確率在30至43 輪穩定提升了0.5%至2%,收斂速度也加快了,說明相同運動的全局運動尺度的快慢確實對模型的準確率有影響,而本文加入的整合了快慢運動的多尺度鄰接矩陣正好將這一因素納入了考量。
由于MS-G3D-L 模型相對MS-G3D 模型的主要優化為容納更多動作特征的鄰接矩陣,故本文認為Top1 數值的提升原因在于對運動較快的動作的分類準確率的提升。為驗證這一猜想,本文從數據集中選取了71個人體骨架數據,這些數據都有相同的特點,即人體在做指定動作的過程中,其運動速率多變,時快時慢時,比如穿衣、踢擊、跳躍、醉酒等動作。將這71個骨骼數據組合成一個測試集,分別帶入兩模型進行驗證,測試效果如圖7所示。

圖7 在指定數據集下的Top1數值對比
在這些類別中,MS-G3D-L 比原模型提升了約1.4%的正確率(95.83%~94.44%),證明MS-G3D-L模型在生成多尺度鄰接矩陣時采用的合并快慢速率運動的鄰接矩陣針對運動速率較快的動作能夠捕捉到更多的特征,使得模型的感受野得到提升,從而進一步提升了模型識別分類的準確率。
MS-G3D 模型的鄰接圖只能觀察單個跳數骨骼點運動的信息,相同運動的全局運動尺度的快慢無法得到考量。在保留原模型圖的基礎上,本文擴展了相隔兩跳的鄰接矩陣并將之與之前的拼接在一起。
本文提出的MS-G3D-L 模型相對MS-G3D 模型的提升在于既保留了原先觀察單個跳數的運動信息,還增加了同時觀察兩個跳數的骨骼點運動信息,通過這種手段,模型可以學習到快慢運動的多尺度特征,拓展了鄰接矩陣的感受野,增加了模型的魯棒性。而兩跳之差相當于一個骨骼,所以同時觀察兩個跳數的骨骼點相當于觀察一個骨骼的運動信息。這樣使得提取出的信息更加全面,同時也讓模型收斂的速度更快。
在拼接了相隔兩跳的鄰接圖之后,整個圖相當于擴大了一倍,這使得模型的參數也大幅度增加,從而對顯存的要求也更大。后續準備控制在矩陣大小的同時,來增加對于不同運動速度的考量,也就是說對于運動速度快的動作應該將時間窗口調小。對于運動速度慢的動作相反。這是考慮訓練時間維度上卷積步長。MS-G3D-L 和MS-G3D 均使用的空洞卷積擴大感受野,其實現的方法是隔d幀選取一個圖片,而兩模型所使用的d 值均為1,本文認為這種方法存在一定局限性,因為針對不同動作所選用的d應該有所不同,為提高模型的魯棒性,應該將d 設置為可訓練的。