張 毅,趙杰煜,王 翀,鄭 燁
(寧波大學 信息科學與工程學院,浙江 寧波 315211)
隨著科學技術的迅猛發(fā)展,手勢識別已成為當前科學研究領域的熱點之一,其主要應用領域有目標檢測[1]、視頻檢索、人機交互[2]、手語識別[3]等。由于手勢識別存在相似手勢之間的細微差別、復雜的場景背景、不同的觀測條件以及采集過程中的噪聲等,使得通過機器學習得到一個魯棒性手勢識別模型具有較大的挑戰(zhàn)性。
基于深度學習的手勢識別主要任務是從圖像或視頻中提取特征,然后將每個樣本分類或確定到某個標簽上。手勢識別旨在識別和理解手臂與手在其中起著關鍵作用的人體有意義的運動。但是在動態(tài)手勢視頻中,一般只有少量的手勢可以從圖像或單個視頻幀中的空間或結構信息中識別出來。事實上,運動線索和結構信息同時表征了一個獨特的手勢,而如何有效地學習手勢的時空特征一直是手勢識別的關鍵。盡管在過去的幾十年中,人們提出了很多方法來解決這個問題,如從靜態(tài)手勢到動態(tài)手勢,從基于運動輪廓到基于卷積神經(jīng)網(wǎng)絡,但是在識別精度方面仍然存在不足。
目前,現(xiàn)有的基于深度學習的孤立手勢識別模型已經(jīng)擁有了較高的識別率,多數(shù)方法都是基于卷積神經(jīng)網(wǎng)絡(CNNs)[4-5]或遞歸神經(jīng)網(wǎng)絡(RNNs)[6]開發(fā)的。
隨著深度學習的發(fā)展,越來越多新穎且高效的網(wǎng)絡體系結構被提出,其中比較有代表性的方法為文獻[7]提出的密集卷積神經(jīng)網(wǎng)絡(DenseNets),相比于傳統(tǒng)的CNNs,DenseNets擁有更深的網(wǎng)絡層級結構,并且模塊內(nèi)的卷積層互相密集關聯(lián),從而使網(wǎng)絡在擁有深層層次結構的同時,避免由于網(wǎng)絡過深而導致信息丟失的問題。實驗結果表明,DenseNets擁有較高的特征提取能力和識別率。而針對復雜的手勢,三維CNNs能夠有效地學習到視頻內(nèi)連續(xù)視頻幀中的手勢短時的空間、結構和姿態(tài)變換,這是單幀圖像或圖片的二維CNNs所欠缺的。但由于在傳統(tǒng)三維CNNs模型訓練過程中,作為輸入的視頻片段(較短的連續(xù)幀)會有重復輸入的部分出現(xiàn),且如果重復部分較大則會大幅延長模型的訓練速度,因此如何簡化學習操作與高效訓練模型是一個十分重要的課題。
對于時序模型而言,文獻[8]提出一種新的解決序列問題的結構——時間卷積神經(jīng)網(wǎng)絡(TCNs)。與傳統(tǒng)的RNNs及其典型的遞歸體系結構LSTMs和GRUs相比,TCNs具有較好的清晰性和簡單性。
為提取更完整更有代表性的特征信息,文獻[9]證明了在神經(jīng)網(wǎng)絡中特征信息的內(nèi)部存在多種關系,并提出將注意力機制作為深度學習模型的嵌入模塊。而壓縮-激勵網(wǎng)絡SENets[10]是一個高效的基于注意力機制的體系結構單元,其目標是通過顯式地建模其卷積特征通道之間的相互依賴性來提高網(wǎng)絡生成的質(zhì)量表示。
本文采用三維DenseNets提取多段基于連續(xù)視頻幀片段的短時空間特征,并組成一條由短時空間特征組成的序列。將短時空間特征序列輸入到TCNs中完成分類任務,并采用針對時間維度改進的壓縮-激勵方法(TSE),增強TCNs在時間特征提取方面的能力。
基于視覺的手勢識別技術包括面向靜態(tài)手勢的方法和面向動態(tài)手勢的方法[2]。近年來,CNNs[4]憑借其強大的特征提取能力,在計算機視覺相關任務上取得了重大突破,因此,CNNs提取的特征被廣泛應用于許多動作分類任務中以獲得更好的性能。二維卷積網(wǎng)絡(2D-CNNs)最初是應用于二維圖像中的,也就是靜態(tài)手勢或者是動態(tài)手勢視頻中的單幀圖像,如文獻[11-12]使用二維CNN并通過多層等級池化對圖像手勢進行識別,提取空間與時域上的信息。而三維卷積網(wǎng)絡(3D-CNNs)的發(fā)展,使得三維卷積(C3D)在后續(xù)的研究中被廣泛應用。文獻[13]將三維CNNs引入到動態(tài)視頻手勢識別中,具有較好的性能,該研究的主要貢獻是提出了一種從視頻片段中提取時空特征的體系結構。另一方面,文獻[14]設計了一個用于手勢識別的多流3D-CNNs分類器,該分類器由兩個子網(wǎng)絡組成:高分辨率網(wǎng)絡(HRN)和低分辨率網(wǎng)絡(LRN),這為后續(xù)研究提供了寶貴經(jīng)驗。為解決視頻中的手勢片段訓練的問題,文獻[15]提出了一種新的時間池化方法。
隨著深度卷積神經(jīng)網(wǎng)絡的發(fā)展,越來越多的CNNs體系結構被提出,如AlexNets[11]、VGGNets[16]、GoogleNets[17-20]、ResNets[21]和DenseNets[7]。上述模型的目標就是構建一個更高層次的CNNs體系結構,從低層次的圖像幀中挖掘更深入、更完整的統(tǒng)計特征,然后進行分類。在孤立手勢識別領域,文獻[22]使用Res-C3D模型應用于手勢識別任務中。文獻[23]同樣適用Res-C3D模型,并在2016年和2017年的ChaLearn LAP多模態(tài)孤立手勢識別挑戰(zhàn)賽[24-25]中兩次獲得第一名,這足以證明層次越深的網(wǎng)絡擁有更強的特征學習能力。而DenseNets[7]作為最新的卷積結構之一,逐漸被應用于動作識別,特別是人臉識別[26]和手勢識別。除圖像識別領域外,在最近的研究中,DenseNets也被用來對不同的行為進行分類,如文獻[27]使用DenseNets進行行為識別的研究。而深度信息作為除RGB信息外的額外視頻信息被國內(nèi)外研究所應用,其中文獻[28-29]使用深度圖對手勢進行識別。
對于視頻序列的時間信息,LSTM網(wǎng)絡是手勢識別的常用選擇。例如,文獻[30]將卷積長短期記憶模型(conv-LSTM)引入到時空特征圖中,從而通過手勢視頻中的前后關系進行識別。文獻[31]使用2S-RNN(RGB和深度圖)進行連續(xù)手勢識別。然而,包括LSTMs和GRUs在內(nèi)的RNNs在時域上存在著短時信息學習、存儲容量過大等缺點。為了彌補這些不足,人們提出TCNs并將其應用于手勢再現(xiàn)中。文獻[32]提出了基于骨架的動態(tài)手勢識別方法Res-TCNs,實驗結果表明,相較于傳統(tǒng)的RNNs,TCNs在結構上更加簡潔,并能夠有效地提高識別率。在整個時序數(shù)據(jù)中有許多冗余信息,因此,引入注意力機制顯得非常重要。文獻[33-34]在使用時序模型的同時,嵌入了相關的注意力機制模型,在原有時序模型識別率的基礎上降低了錯誤率。
本文方法具體工作如下:
1)為解決單幀圖像不能承載足夠的手勢空間和結構信息,而多視頻幀訓練又需要避免視頻片段所導致數(shù)據(jù)重復訓練的問題,結合截斷的3D-DenseNets(T3D-Dense)和局部時間平均池化(LTAP)兩種方法作為短時空間特征序列的提取模型。
2)利用時間卷積網(wǎng)絡代替?zhèn)鹘y(tǒng)的遞歸神經(jīng)網(wǎng)絡作為短時空間特征序列分析的主要模型,并對壓縮-激勵網(wǎng)絡(SENets)進行改進,使其能夠應用于時域維度嵌入TCNs中,重新調(diào)整層間的短時空間特征序列的權值,從而更有效地對短時空間特征序列進行分析,達到更高的分類精度。
本文提出一種新的模型來提取時空特征,并對時空特征序列進行識別和分類。模型流程如圖1所示,整個過程可分為以下2個部分:
1)通過截斷的T3D-Dense、局部時間平均池(LTAP)和多模式特征串接提取多模式的短時時空特征序列模塊。
2)基于TCN和TSE的時空特征序列識別模塊。
圖1 本文模型的流程
由于簽名視頻的性質(zhì),一個健壯的視頻特征表示需要結合多模態(tài)手勢信息。在手勢視頻中,前后幀之間存在著多種關系,包括位置、形狀和序列信息。因此,本文設計一個基于C3D的多流DenseNets作為時空特征提取器,從視頻中提取時空特征。在此模型中,所有視頻集的長度必須相同。因此,一個給定的視頻V和n幀需要規(guī)范化為k幀。本文設置的輸入為:
VS=[V1,V2,…,Vk]
(1)
其中,Vk是輸入視頻序列的第k幀圖像。
如前文所述,本文考慮多種形式的手勢視頻數(shù)據(jù)作為輸入。每種類型的數(shù)據(jù)被設置為一個數(shù)據(jù)流并饋送到相同的網(wǎng)絡結構,它們的輸出隨后將被融合,見圖1。每個數(shù)據(jù)流共享相同的網(wǎng)絡結構,網(wǎng)絡結構如表1所示,模型包含4個致密塊體,每個區(qū)塊包含6、12、24、16層密集連接卷積層,網(wǎng)絡的增長率為12,表1中顯示的每個“conv”層對應于BN-ReLU-conv序列。值得注意的是,大多數(shù)卷積層都使用3×3×3大小的卷積核,同時在空間和時域上進行分析,但是為了避免短期時間信息的融合,將所有過渡層的時間池大小和步長設置為1,這主要是區(qū)別與其他傳統(tǒng)的C3D模型。
表1 三維DenseNets架構
由于三維DenseNets是一個短期的時空特征提取器,因此在本文中其被截斷,使模型只得到經(jīng)過全局空間平均池化后的特征。具體來講,首先用孤立的手勢數(shù)據(jù)對模型進行預訓練,然后丟棄全局時間平均池層、最后一個softmax層和完全連接層。因此,模型可以在全局空間平均池層之后得到全局時空特征Fk:
Fk=[f1,f2,…,fk]
(2)
其中,時間長度為k,并且表示k幀的短時時空特征。
然后從全局特征Fk中剪切和合并T個短時時空特征。第t個短期時空特征xt構造為:
(3)
經(jīng)過局部時間平均合并后,本步驟可以得到一系列單模態(tài)的短期特征。多模特征序列在輸入TCN前融合成一個序列。整體短時時空特征模塊在預訓練時與截斷后的流程如圖2所示。
圖2 短時時空特征模塊流程
基于從各種數(shù)據(jù)模式(RGB、光流、深度等)中提取的短時時空特征,考慮整個視頻的長期時間特征,對給定手勢進行分類。本文采用一種序列識別模型TCNs,并對其進行了改進以處理長期時間信息。TCNs的主要特點是使用因果卷積和將輸入序列映射到相同長度的輸出序列。此外,考慮到序列具有較長的歷史,該模型使用了能夠產(chǎn)生大的卷積野的膨脹卷積以及允許訓練更深網(wǎng)絡的殘差連接??紤]到本文的任務是對手勢視頻的類別進行分類,TCN的輸出層通過一個完全連接層進行進一步處理,得到每個手勢序列的一個類標簽。改進的TCN模型結構如圖3所示。
圖3 本文改進的TCNtse模型結構
在TCN模型中,從短時時空特征模塊所學習得到的序列X=[x1,x2,…,xt]作為TCN的輸入序列,其經(jīng)過多層時間卷積后的輸出設定為Y=[y1,y2,…,yt]。而每一層的卷積核本文都將使用膨脹卷積使得TCNs能夠在不同層學習不同時序跨度的特征。膨脹卷積的計算公式為:
yt=(x*dh)t=∑xt-dmhm
(4)
(5)
其中,Wo、bo分別為訓練后得到的全連接層參數(shù)。
值得注意的是,X=[x1,x2,…,xt]中的特征在整個序列識別過程中的貢獻是有所不同的。由于手勢的組合特性和復雜性,在不同手勢中必然會有一部分的手勢片段是接近的,可將這些連續(xù)的手勢片段進行識別區(qū)分,本文是通過TCN模型來學習手勢片段間的時序關聯(lián)性。但與此同時,如何學習到特征序列中的關聯(lián)強度(權重)也是本文需要考慮的一個問題。為此,本文引入注意力機制,改進了壓縮-激勵網(wǎng)絡(SENets)并將其應用嵌入到時序特征序列模型TCN中。
如圖3所示,時域壓縮-激勵網(wǎng)絡模塊(TSENet,TSE)被嵌入到TCN模塊每一層時間卷積層輸入前,首先將時間卷積層的輸入X=[x1,x2,…,xT]在通道上進行全局平均卷積,從而獲得一條T×1大小的權值序列Z=[z1,z2,…,zT]。
假設時間卷積層輸入通道數(shù)為C,則t時刻的平均通道值zt計算公式如下:
(6)
與此同時,可以將平均通道所得到的值作為當前t時刻特征的權重,而本文為了重新調(diào)整各個時刻特征的權重,則加入了第2個操作,即壓縮-激勵操作。為使網(wǎng)絡能夠自動學習到這一權重值,加入了一個簡單的激活門控制整個權值序列的計算:
s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))
(7)
(8)
本文所提出的網(wǎng)絡結構由tensorflow平臺實現(xiàn),并使用NVIDIA Quadro gp100 GPU進行訓練。多模態(tài)截斷的密集卷積網(wǎng)絡(T3D-Dense)分別使用RGB、深度信息和光流信息(如果存在光流或可計算)數(shù)據(jù)作為輸入進行預訓練。Adam優(yōu)化器用于訓練T3D-Dense的預訓練模型3D-DenseNets,學習率初始化為6.4e-4,每25個epoch下降10倍。權值衰減率設置為1e-4,Drop_out設為0.2,3D-DenseNets內(nèi)每個block的壓縮率c和增長率k分別設置為0.5和12。對于TCN模型,本文使用Adam優(yōu)化器進行訓練,學習率初始化為1e-4,epsilon為1e-8。
本節(jié)將本文方法與其他最新的動態(tài)手勢方法進行比較。在實驗中,本文使用兩個公開的多模態(tài)動態(tài)手勢數(shù)據(jù)集來評估文中提出的模型。
1)VIVA[15]。VIVA challenge數(shù)據(jù)集是一個多模態(tài)的動態(tài)手勢數(shù)據(jù)集,專門設計用于在真實駕駛環(huán)境中研究自然人類活動的復雜背景設置、不穩(wěn)定照明和頻繁遮擋等情況。此數(shù)據(jù)集是由微軟Kinect設備捕獲的,共有885個RGB和深度信息視頻序列,其中包括8名受試者在車內(nèi)進行的19種不同的動態(tài)手勢。
2)NVGesture[6]。NVGesture數(shù)據(jù)集為了研究人機界面,采用多傳感器多角度進行采集。它包含1 532個動態(tài)手勢,這些手勢是由20名受試者在一個有人工照明條件的汽車模擬器中記錄下來的,這個數(shù)據(jù)集包括25類手勢。它還包括動態(tài)DS325裝置作為RGB-D傳感器,用DUO-3D進行紅外圖像采集。在實驗中,本文使用RGB、深度和光流模態(tài)作為模型的數(shù)據(jù)輸入,而光流圖則使用文獻[31]提出的方法從RGB流計算得到。
數(shù)據(jù)預處理包括數(shù)據(jù)增強和數(shù)據(jù)規(guī)范化2個部分:
1)數(shù)據(jù)增強。在VIVA數(shù)據(jù)集中,數(shù)據(jù)增強主要由3個增強操作組成,即基于視頻幀的反序、水平鏡像或同時應用前2個操作。如VIVA中有一類手勢是在視頻中從左往右移動,通過反序操作或者水平鏡像,能夠得到一個從右向左移動的手勢作為從右向左移動的手勢的增強。而同時應用反序和水平鏡像操作,就能夠得到一個從左往右移動的手勢作為從左往右移動的手勢的增強。
在NVGesture數(shù)據(jù)集中,每個視頻圖像被調(diào)整為256×256像素的圖像大小,然后用224×224塊隨機裁剪,在裁剪時,同一數(shù)據(jù)的裁剪窗口在視頻中位置不變。
2)數(shù)據(jù)規(guī)范化。對于機器學習而言,數(shù)據(jù)規(guī)范化是必要的,特別是對于時序模型,時序上的量是固定的,所以對時序維度的重采樣尤為重要。本文給定一個額定幀數(shù)k,對于小于額定幀大小或大于額定幀數(shù)大小的視頻,使用上采樣和下采樣的統(tǒng)一標準化來統(tǒng)一幀的數(shù)量。給定的視頻V和n幀需要壓縮或擴展到k幀,有以下2種情況:
(1)當n>k時,將視頻V平均分割為k節(jié)視頻集VS,其中VS=[V1,V2,…,Vk]。對于視頻集VS中的每個片段,隨機選擇一個幀作為多個連續(xù)視頻幀的表達。最后,將所有表示幀連接起來,并使它們成為規(guī)范化的結果。
(2)當n 在T3D-Dense模型和TCNs模型中,輸入數(shù)據(jù)的維數(shù)是固定的,具體來說,3D-DenseNet在預訓練過程中的所有輸入的幀數(shù)都應該是固定的。經(jīng)統(tǒng)計,VIVA數(shù)據(jù)集的平均幀數(shù)k是32幀,NVGesture數(shù)據(jù)集的平均幀數(shù)k是64幀,所以在實驗中本文將VIVA數(shù)據(jù)集中的k設置為32,NVGesture數(shù)據(jù)集中的k設置為64。 由于C3D計算的高復雜性,輸入的視頻圖像像素大小被重采樣為112×112像素。 表2為在VIVA數(shù)據(jù)集的RGB和深度信息2個模態(tài)上測試的動態(tài)手勢的性能。 表2 本文方法與其他方法在VIVA數(shù)據(jù)集上正確率對比 實驗結果表明,本文方法在VIVA數(shù)據(jù)集上獲得了91.54%的正確率。從表2可以看出,本文提出的T3D-Dense+TCNtse在正確率上遠優(yōu)于HOG+HOG2、CNN:LRN、CNN:LRN:HRN以及C3D方法,分別高出27.04%、17.14%、14.04%以及14.14%。而本文方法的識別正確率與I3D與MTUT方法正確率較為接近,這在一定程度上是由于I3D和MTUT與本文方法使用了較為相似的預訓練方式。盡管如此,可以看到本文方法RGB和depth網(wǎng)絡的性能在I3D和MTUT的基礎上分別提高了8.44%和5.46%。 同時,本文在VIVA數(shù)據(jù)集上測試了其他方法以證明各模塊的有效性,測試的方法主要有: 1)完整3D-DenseNets。3D-DenseNets預訓練的過程其本質(zhì)就是完整3D-DenseNets對動態(tài)手勢的識別訓練,所以可以直接對預訓練的3D-DenseNets進行測試,測試識別正確率為88.21%。 2)Res3D+TCNs。通過將短時時空特征提取模塊的主干框架T3D-Dense改變?yōu)镽es3D網(wǎng)絡,可以發(fā)現(xiàn)基本的T3D-Dense作為主干框架在正確率上優(yōu)于以Res3D為主干框架的Res3D+TCNs網(wǎng)絡。并且本文T3D-Dense+TCNs網(wǎng)絡的參數(shù)量僅為141萬,而Res3D+TCNs網(wǎng)絡的參數(shù)量為4 535萬,是T3D-Dense+TCNs參數(shù)量的30倍之多,證明了本文算法的優(yōu)越性。 3)T3D-Dense+TCNs與本文方法之間的區(qū)別在于TCN網(wǎng)絡中是否有TSE模塊的嵌入,可以看到TSE模塊的加入使得網(wǎng)絡獲得了0.81%的識別率提高。 本文統(tǒng)計了根據(jù)本文方法所得到的最終分類的混淆矩陣,如圖4所示。 圖4 VIVA數(shù)據(jù)集上輸入為RGB+深度信息的識別混淆矩陣Fig.4 Confusion matrix with RGB+depth information input on VIVA data set 在實驗中,發(fā)現(xiàn)在VIVA數(shù)據(jù)集上第1類與第2類、第16類與第17類上有著較高的誤識別率,尤其是第16類與第17類(其中第16類為手勢順時針劃圈,第17類為手勢逆時針劃圈)之間,誤識別率為15%。為此,從TCN各層中提取出第16類與第17類中TSE模塊的權值作可視化。從圖5中發(fā)現(xiàn),由于第16類與第17類的結構空間信息在短時上擁有較多的相似性,導致TSE在權值控制上并不能很好地區(qū)分開兩者,使得兩者在識別上會有較高的誤識別率。但在大多數(shù)手勢的權值上,尤其是TCNs第3層的5幀~12幀上擁有較大的區(qū)分度。實驗結果證明,TSE對于TCNs識別具有較好的效果。 圖5 VIVA數(shù)據(jù)集中TSE模塊可視化圖 為了在兩種以上數(shù)據(jù)流的任務中測試本文的方法,在NVGesture數(shù)據(jù)集上分別以RGB+深度信息、RGB+光流信息以及RGB+深度+光流信息作為輸入進行了測試,分類結果如表3所示。 表3 本文方法與其他方法在NVGesture數(shù)據(jù)集上正確率對比 在RGB+深度信息中,將本文方法與HOG+HOG2、I3D以及MTUT方法進行比較,可以看出,對于較為復雜的數(shù)據(jù)集,相較于傳統(tǒng)HOG+HOG2方法,本文方法具有較高的正確率,但與3D與MTUT方法相比識別率不明顯,甚至比MTUT正確率低了1.23%,可能是因為在復雜的數(shù)據(jù)集中,由于較為輕量的模型導致在時間跨度較大的數(shù)據(jù)中并不能很好地識別出視頻片段間的聯(lián)系。 在RGB+光流信息中,將本文方法與2S-CNNs、iDT、I3D以及MTUT方法進行比較。雖然iDT通常被認為是目前性能最好的手工識別方法,但可以看出,本文的方法識別正確率高于iDT方法19.88%。并且在此模態(tài)中,由于光流信息同時包含了許多前后幀的手勢變化信息,因此本文方法在精度上都高于其他方法。 在RGB+深度+光流信息中,將本文方法與R3DCNN、I3D以及MTUT方法進行比較。其中R3DCNN是該數(shù)據(jù)集原始方法,可以看出本文方法比原始方法正確率高2.57%,比I3D方法高0.69%。雖然本文方法正確率比最新的MTUT方法低0.56%,但由于模型在特征融合上較為簡單,因此結果在可接受范圍內(nèi)。在此基礎上,本文方法在NVGesture數(shù)據(jù)集中各手勢的誤判率較為平均,平均誤判率為0.51%,識別混淆矩陣如圖6所示。 圖6 NVGesture數(shù)據(jù)集輸入為RGB+深度+光流信息的識別混淆矩陣 綜上所述,本文方法在NVGesture數(shù)據(jù)集上的識別正確率取得了與當前最新方法相近的水平。 本文提出一種基于時域注意力機制的Dense-TCN模型。該模型通過截斷預訓練的3D-DenseNets和局部時域池化的方式來避免時間片段過多的重復訓練,同時根據(jù)嵌入時域注意力機制改進TSE模塊對短時時空特征序列進行識別。實驗結果表明,該模型具有較高的識別率,且參數(shù)量較少。由于3D-DenseNets需要預訓練且被截斷才能提取局部的短時時空特征,依賴于預訓練時3D-DenseNets的正確率和多模態(tài)融合方法,導致針對一些分類多、噪聲大的數(shù)據(jù)集時正確率較低,因此下一步擬將3D-DenseNets模型改為端到端模型,并對多模態(tài)融合方法進行改進,以進一步提高模型識別率。3.3 在VIVA上的測試結果
3.4 在NVGesture上的測試結果
4 結束語