王 飛,胡榮林,金 鷹
(淮陰工學院計算機與軟件工程學院,江蘇 淮安 223003)
人體動作識別是計算機視覺領域的一項基本任務,它基于一個視頻中完整的動作執行來識別人體動作[1]. 隨著機器學習研究的進行,人體動作識別的方法可以大致分為兩種,一種是基于機器學習人工設計特征的方法[2-3],另一種是端到端的深度學習算法. 與人工制作的動作特征不同,深度學習方法可以從圖像中自主學習特征,并且學習到的動作特征比人工動作特征有更好的識別性能. Tran等[4]提出C3D網絡模型,通過3D卷積直接從視頻序列幀中提取時間和空間特征,但是仍然不能充分利用時間和空間特征. Simonyan等[5]提出了雙流卷積網絡模型,這個模型由時間和空間網絡構成,空間流從靜態的視頻序列幀中執行行為識別,同時時間流從密集光流形式的運動中訓練以識別行為,但是雙流網絡需要人工提取出視頻幀之間的光流信息以便時間流的訓練識別. 文獻[6-7]通過實驗表明長短期記憶網絡(long short-term memory,LSTM)能夠一定程度上解決卷積神經網絡(convolutional neural networks,CNN)不能夠表示長時間變化的問題,但是LSTM是從CNN的全連接層獲取特征進行處理的,所以缺乏時空特性的細節.
針對上述的問題,本文提出了一種在C3D卷積神經網絡上進行改進的融合模型. 整個動作識別流程如圖1所示. 首先通過SSD目標檢測方法將視頻中的人體目標進行分割,然后將原視頻序列幀和分割后的人體目標序列幀經過一系列的3D卷積、ConvLSTM、3D卷積塊注意力模塊(3D-convolutional block attention module,3D-CBAM)和3D池化模塊直接提取時間和空間特征,最后將網絡提取的特征進行后期融合并分類得到最終的人體動作分類結果.
人體動作識別有著廣泛的應用場景,如視頻監控、視頻的存儲與檢索、人機交互和身份識別等[8]. 人體動作識別涵蓋了計算機視覺中的許多研究課題,包括視頻中的人體檢測、人體姿態估計、人體跟蹤以及時間序列數據的分析和理解[9]. 隨著深度學習在圖像分類和目標檢測上的成功應用,許多研究者也將其應用于人體動作識別. 與圖像空間中的特征表示不同,視頻中的人體動作表示不僅描述了人體在圖像空間中的形象,而且還必須提取形象和姿態的變化即不僅需要提取外觀信息還要提取運動信息. 目前,根據深度學習網絡結構劃分,可以將外觀信息和運動信息結合的具有代表性的深度學習方法分為3種:基于雙流卷積網絡的方法、基于3D卷積網絡的方法和基于長短期記憶網絡的方法.
Simonyan等[5]最先提出基于雙流卷積網絡的方法,首先對視頻序列中每兩幀計算密集光流,得到密集光流的序列,然后對視頻圖像和密集光流分別獨立地訓練CNN模型,兩個網絡分別對動作的類別進行判斷,將兩個分支網絡的類別得分進行融合,最終得到動作分類結果. 文獻[10-11]在雙流網絡的基礎上利用CNN網絡進行了空間和時間的融合,并將網絡替換成VGG-16,進一步提高了分類準確率. Wang等[12]在使用RGB圖像和光流圖像的基礎上還嘗試了RGB差異和翹曲光流兩種輸入,通過實驗證明RGB、光流和翹曲光流的組合效果最好. 張聰聰等[13]將提取的關鍵幀融入雙流卷積網絡,相對降低網絡復雜度并具有較高識別率. 基于雙流網絡的方法依賴提取的光流圖像,然而光流的計算與存儲代價比較昂貴.
Ji等[14]最早提出3D卷積并將其運用到行為識別,提出的模型從空間和時間維度中提取特征,從而捕獲在多個相鄰視頻幀中的運動信息,C3D卷積網絡是3D卷積網絡的代表,通過3D卷積和3D池化可以對時間信息進行建模,并且可以將完整的視頻幀作為輸入,并不依賴于任何處理,可以輕松地擴展到大數據集. 但3D卷積仍然不能充分的提取時空特征.
LSTM在時序數據上的處理能力比較強,但如果時序數據是圖像,則在LSTM的基礎上增加卷積操作,對于圖像的特征提取會更加有效. Ng等[15]采用CNN提取幀級特征,再將幀級特征和提取到的光流特征輸入到LSTM進行訓練得到分類結果. Shi等[16]通過將全連接LSTM擴展為卷積結構,提出ConvLSTM網絡,能夠更好地捕捉時空相關性,并且始終優于FC-LSTM算法.
本文提出的融合模型綜合利用了雙流網絡、3D卷積網絡和ConvLSTM網絡3種網絡的優勢. 將雙流網絡的主體網絡結構替換成C3D,無需計算和存儲光流信息,采用ConvLSTM層替代部分3D卷積層,提高對時間特征的利用率,能夠更好地捕捉時空相關性. 同時在網絡中采用shortcut結構[17]將3D-CBAM注意力機制結合到3D卷積中,提高了C3D卷積對空間特征的利用率.
本文的融合模型框架如圖1所示. 首先對視頻數據進行預處理,采用SSD目標檢測方法對視頻序列幀進行人體目標識別并分割. 然后將分割后的人體目標序列幀作為局部特征提取網絡的輸入數據用于提取局部運動特征,而原視頻序列幀作為全局特征提取網絡的輸入數據用于提取全局運動特征. 最后將全局特征和局部特征融合并進行分類得到最終的人體動作分類結果.

圖1 融合注意力機制的3D卷積網絡動作識別框架Fig.1 3D convolutional network action recognition framework with attention mechanism
相機自身輕微的抖動和鏡頭的拉伸都會造成拍攝出的整個視頻中存在運動信息,而這些運動信息并不是需要識別的人體運動信息,會影響神經網絡訓練的結果,所以局部信息的提取將會起到至關重要的作用. 本文采用SSD目標檢測方法直接對視頻序列幀的人體目標進行檢測并分割作為局部信息. SSD采用VGG16作為特征提取的主干網絡,在VGG16的基礎上新增了卷積層來獲得更多的特征圖以用于檢測. SSD采用多尺度特征圖用于檢測,比較大的特征圖可以用來檢測相對較小的目標,而小的特征圖用來檢測大目標. 借鑒文獻[18]每個單元設置尺度或者長寬比不同的先驗框,預測的邊界框是以這些先驗框為基準的,在一定程度上減少訓練難度.
從卷積層中提取出作為檢測所用的6個特征圖,同一個特征圖上每個單元設置的先驗框是相同的,但不同的特征圖設置的先驗框數目是不同的. 先驗框的設置需要確定其大小和長寬比. 先驗框的大小隨著特征圖大小的降低成線性增加:
(1)
式中,k∈[1,m],m表示特征圖個數;sk指先驗框大小相對于圖片的比例;smin和smax表示先驗框與圖片比例的最小值和最大值.m設置為5,因為提取的第一個特征圖是單獨設置的,第一個特征圖的先驗框大小設置為30.smin和smax的值分別為0.2和0.9. 對于長寬比,實驗選取1,2,3,1/2和1/3.
本文的特征提取網絡由兩個部分組成:全局特征提取網絡和局部特征提取網絡. 這兩個網絡的基本框架相同,但對應輸入的視頻幀的維度不一樣,全局特征提取網絡的輸入為112×112×16×3,表示輸入的視頻幀大小為112×112,每批次輸入的視頻幀數量為16,通道為3,而局部特征提取網絡輸入的視頻幀大小為64×64;全局特征提取網絡中的Pool 1采用的最大池化窗口為2×2×1,步長為2×2×1,而局部特征提取網絡中Pool 1采用的最大池化窗口為2×2×2,步長為2×2×2. 所有的3D卷積Conv1,Conv2,…Conv5都采用3×3×3大小的卷積核和1×1×1的步長,激活函數則使用Relu函數. 本文的融合模型在C3D網絡的基礎上進行改進,將原C3D網絡中Conv3b、Conv4b和Conv5b層分別替換為ConvLSTM1、ConvLSTM2和ConvLSTM3層,并舍棄FC7層. 詳細的網絡結構模型如圖2所示.

圖2 融合3D-CBAM注意力機制的3D卷積網絡模型Fig.2 3D convolutional network model with 3D-CBAM attention mechanism fusion
與LSTM不同,ConvLSTM的輸入變換和循環變換是通過卷積實現的,即輸入與各個門之間的連接、狀態與狀態之間由前饋式替換成卷積運算,ConvLSTM的工作原理如下:
it=σ(Wxi*Xt+Whi*Ht-1+Wci°Ct-1+bi),
(2)
ft=σ(Wxf*Xt+Whf*Ht-1+Wcf°Ct-1+bf),
(3)
Ct=ft°Ct-1+it°tanh(Wxc*Xt+Whc*Ht-1+bc),
(4)
ot=σ(Wxo*Xt+Who*Ht-1+Wco°Ct-1+bo),
(5)
Ht=ot°tanh(ct).
(6)
式中,*表示卷積操作,°表示乘積操作,X1,…,Xt為輸入數據,C1,…,Ct為單元輸出,H1,…,Ht為隱藏層,it、ft和ot分別為網絡中的輸入門、遺忘門和輸出門,W和b分別表示對應門控的權重和偏置量,σ為sigmoid激活操作.
本文融合模型使用的ConvLSTM層都選擇3×3大小的卷積核,進行卷積操作時保留邊界處的操作結果,對視頻幀的所有像素點進行處理,使得輸出的shape和輸入的shape相同,采用tanh作為激活函數. ConvLSTM1層將一個人體動作樣本分為8個時間點輸入即(X1,X2,…,Xt),此時t的值為8,而ConvLSTM2層和ConvLSTM3層將一個人體動作樣本分別分為4個和2個時間點輸入,每個時間點都有相應的輸出,所有的ConvLSTM層都是將所有時間點的結果輸出并拼接作為整個ConvLSTM層的輸出.
CBAM注意力機制是可以直接應用于前饋卷積神經網絡的簡單而有效的注意模塊,由通道注意模塊和空間注意模塊兩個部分組成[19]. 對于卷積神經網絡生成的特征圖,CBAM從通道和空間兩個維度計算特征圖的注意力圖,然后將注意力圖和特征圖的對應元素相乘進行特征的自適應學習. CBAM是一種輕量級的通用模塊,目前研究者嘗試過將其應用到諸如VGG、Inception和ResNet等2D卷積網絡中進行端到端的訓練. 本文為了提高3D卷積網絡的空間特征利用率,提出3D-CBAM注意力機制,具體集成方式如圖3所示.

圖3 3D-CBAM結構Fig.3 The structure of 3D-CBAM
與2D卷積網絡不同的是3D卷積網絡多出一個深度維度,在每一次提取空間特征時,需要考慮到深度參數的變化. 對于一個中間3D卷積層的特征圖:F3D∈RW×H×D×C,3D-CBAM會按照順序推理出寬度、高度和深度都為1的通道注意力特征圖Mc3D∈R1×1×1×C,以及通道為1的空間注意力特征圖Ms3D∈R1×H×W×D. 其中,W、H、D、C分別表示特征圖的寬度、高度、深度和通道. 整個過程公式如下所示:
F′3D=Mc3D(F3D)?F3D.
(7)
F″3D=Ms3D(F′3D)?F′3D.
(8)
3D-CBAM的通道注意力模塊關注哪些通道對融合3D網絡的最后分類結果起到作用,即選擇出對預測起決定性作用的特征,具體步驟如圖4所示.首先將輸入的特征圖F3D分別經過基于寬度W、高度H和深度D的最大值池化和均值池化,然后對分別經過MLP的特征進行基于對應元素的加和操作,再經過sigmoid激活操作,將生成的通道特征圖Mc3D(F3D)與輸入的特征圖F3D進行相乘操作生成最終的通道特征圖F′3D,公式為:

圖4 3D-CBAM的通道注意力模塊Fig.4 Channel attention module of 3D-CBAM

(9)
式中,W0∈RC/r×C,W1∈RC×C/r,σ為sigmoid操作,W0需要經過Relu函數激活. 本文減少率r取值為8,即在最大值池化和均值池化時將通道C變換為C/8,減少參數量,最后再使用全連接變換為原來的通道C.


圖5 3D-CBAM的空間注意力模塊Fig.5 Spatial attention module of 3D-CBAM
(10)
實驗證明,7×7的卷積操作得到的實驗效果優于3×3的卷積. 因為是應用于3D卷積且視頻序列幀的通道排序格式為channel-last,所以在進行合并操作時需要將張量中axis=4的通道串接,然后進行卷積操作保證axis=4的特征數為1.
為了證明本文融合模型的有效性且考慮實驗GPU運行內存等因素,在KTH數據集上進行實驗,該數據集包含光照變換和相機自身運動的情況,貼合生活場景.
KTH數據集為人類行動數據集,一共有600個視頻,視頻數據包含6種類型的人類動作,分別是步行、慢跑、奔跑、拳擊、揮手和拍手. 由25個對象在4種不同的情況下進行的拍攝,分別是戶外s1、戶外包含尺度變化s2、戶外穿著不同衣服s3以及室內s4,如圖6所示.

圖6 KTH數據集示例圖Fig.6 Sample diagram of KTH dataset
實驗選擇每個類別中16個對象的視頻作為訓練集,剩余的9個對象的視頻作為驗證集,每完成一次全部樣本的訓練就進行一次驗證,總共進行50次操作,獲得局部特征提取網絡的權重和全局特征提取網絡的權重,測試時調用模型權重提取特征并融合通過SVM分類獲得最終的識別準確率. 本文將最終的識別準確率A作為動作識別的評估標準,公式如下:
(11)
式中,NTP為將正類樣本預測為正類個數,NTN表示將負類樣本預測為負類個數,NFP表示將負類樣本預測為正類個數,NFN為將正類樣本預測為負類個數.
3.2.1 數據處理
獲取每一個視頻的橫縱比以及視頻幀的總數,依次讀取視頻的每一幀,將每一幀由BGR格式轉換為RGB格式,幀數據轉換為數組形式并進行歸一化處理. 加載SSD300的權值文件,利用其模型與權重對每一幀中的人體目標進行分割,最后將原視頻幀和分割后的視頻幀分別統一尺寸并保存,實驗中原視頻幀的大小為112×112,分割后的視頻幀大小為64×64. SSD300的權重文件是以VOC數據集訓練的,能夠檢測20種目標,實驗只需檢測人體目標即可.
選取16人作為訓練數據,每個視頻選擇4段連續幀,每段共有16幀,則訓練數據集一共有1 536組連續幀,剩余的9人作為驗證集,每個視頻選擇1段連續幀,同樣是每段有16幀,一共有215組連續幀.
3.2.2 模型訓練參數設置
在Linux系統搭建的keras平臺下進行試驗. 實驗中使用訓練集中的全部樣本訓練次數epoch為50,考慮訓練時GPU內存的情況,每一批次訓練選取的樣本數量為10,實驗訓練優化器采用SGD隨機梯度下降,SGD使用nesterov動量,動量參數為0.9,用于驗證模型是否快速收斂;初始學習率lr為0.005,訓練時通過自定義回調函數的方法對學習率進行衰減,epoch為20、30和40時學習率分別為lr/10、lr/100和lr/1 000,在訓練開始時使用較大的學習率可以使訓練快速收斂,隨著訓練的過程逐漸降低學習率有助于找到最優解. 為了避免過擬合,對每一層卷積層使用L2正則化,并且在全連接層前采用值為0.5的dropout.
3.2.3 模型測試
局部特征提取網絡和全局特征提取網絡訓練后的結果都保存在二進制文件中,該文件包含模型的結構、模型的權重、訓練配置(損失函數,優化器等)和優化器的狀態. 通過遷移學習的方法將測試所用的樣本經過文件存儲的模型和權重處理獲得測試集人體動作特征,然后將訓練得到的局部特征和全局特征進行融合,采用(歐幾里德)L2范數對融合的特征進行歸一化處理,最后用SVM進行特征分類獲得最終的動作分類結果. 其中,SVM是構建的軟間隔分類器. 分類器的懲罰系數設置為10,對邊界內的噪聲容忍度比較小,分類準確高;采用線性核函數進行計算分類;啟用啟發式收縮方式,能夠預知哪些變量對應著支持向量,只需要在這些樣本上進行訓練即可,其他樣本可以不予考慮,這種方式不僅不影響訓練結果,還降低了問題的規模有助于迅速求解,起到一個加速的效果. 停止訓練的誤差精度設置為0.001. 采用一對多法,即訓練時依次把某個類別的樣本歸為一類,其他剩余的樣本歸為另一類,這樣n個類別的樣本就構造出n個分類器,分類時將未知樣本分類為具有最大分類函數值的那類.
本文方法采用的是3D卷積網絡對動作進行識別,相較于目前典型的雙流網絡減少了前期對視頻的預處理操作,不需要單獨提取出視頻中的光流特征. 從表1中可以看出本文提出的方法與其他的方法相比取得更好的識別效果.

表1 不同方法在KTH數據集上的動作識別準確率Table 1 The action recognition accuracy of different methods on KTH dataset
表2表明是否采用局部特征和全局特征融合的方法在動作識別中的準確率結果. 從表2中可以看出本文的方法無論是局部特征網絡的準確率、全局特征網絡的準確率還是兩者融合后的動作識別準確率都比C3D網絡和ConvLSTM網絡的準確率高,同時局部特征與全局特征融合后的準確率比單獨的全局特征的準確率高,這說明局部信息的提取彌補了單獨全局特征提取的運動信息不足的缺點.

表2 網絡模型中局部特征和全局特征是否融合的動作識別準確率比較Table 2 Accuracy comparison of action recognition based on fusion of local and global features or not in network model %
為了證明3D-CBAM注意力機制在本文的融合模型中的有效性,實驗分別對其是否使用注意力機制進行了對比實驗,表3展示了是否使用3D-CBAM注意力機制的動作識別準確率的結果. 由表3可以看出3D-CBAM注意力機制的添加使得C3D網絡和ConvLSTM網絡對動作識別的準確率都得到了顯著的提升. 本文方法使用3D-CBAM注意力機制比不使用注意力機制的動作識別準確率高,該實驗證明了3D-CBAM注意力機制對人體動作識別任務的有效性.

表3 3D-CBAM注意機制使用與否的動作識別準確率比較Table 3 Comparison of motion recognition accuracy of 3D-CBAM in use or not %
圖7為部分實驗訓練過程和測試結果的可視化展示. 因為本文方法中的局部特征網絡和全局特征網絡是單獨訓練的,且后期融合采用的是SVM,所以僅采用全局特征網絡準確率變化曲線與其他方法對比,可以體現出主體網絡的優勢. 圖7(a)、圖7(b)和圖7(c)分別為C3D、ConvLSTM和本文融合模型中全局特征網絡準確率變化曲線,點線為訓練數據的準確率變化曲線,折線則是驗證數據集的準確率變化曲線,很明顯可以看出本文的融合模型的全局特征提取網絡在驗證集上的準確率要高于ConvLSTM網絡,雖然與C3D網絡的準確率相近,但是在迭代10次內的波動范圍更小,說明可以更好的學習時空特征,3種網絡都是迭代次數在20~30次之間達到最高精確度. 圖7(d)、圖7(e)和圖7(f)為測試時C3D、ConvLSTM和本文融合模型的混淆矩陣熱圖. 從混淆矩陣熱圖中可以看出,標簽為handwaving的準確率本文提出的融合方法已經達到100%,除了標簽為running的準確率相比于其他兩種方法低,其余的標簽的準確率都有明顯的提高,最少提高了8%,最多提高了31%.

圖7 實驗結果數據可視化Fig.7 Data visualization of experimental results
針對人體動作識別現有方法的優缺點,本文提出了一種融合模型. 該模型在C3D網絡的基礎上加入了ConvLSTM模塊并融合了3D-CBAM注意力機制,通過局部特征提取網絡和全局特征提取網絡提取出局部特征和全局特征并進行融合提高動作識別的準確率. 實驗在KTH數據集上進行,實驗結果表明該模型對于人體動作識別能夠達到很好的識別效果. 本文雖然采用輕量級的3D-CBAM注意力機制,但如何縮減參數量和計算量仍然是需要進一步研究和解決的問題.