高大鵬,朱建剛
(中國(guó)民航飛行學(xué)院 計(jì)算機(jī)學(xué)院,四川 廣漢 618307)
基于機(jī)器學(xué)習(xí)的人體行為識(shí)別是近年研究領(lǐng)域的重點(diǎn)。行為識(shí)別研究主要分為兩個(gè)部分:行為特征提取和表達(dá)、行為識(shí)別和理解。如提高運(yùn)動(dòng)強(qiáng)度和運(yùn)動(dòng)趨勢(shì)的表征完整性和有效性[1],以提高行為識(shí)別率;又或采用隱動(dòng)態(tài)條件神經(jīng)域,在潛動(dòng)態(tài)條件隨機(jī)場(chǎng)上加上神經(jīng)網(wǎng)絡(luò)層[2]等方法。
近年來深度學(xué)習(xí)方法被應(yīng)用到了行為識(shí)別上,而且獲得了比以前更高的識(shí)別率。深度學(xué)習(xí)算法分為四大類[3]:①有監(jiān)督的卷積神經(jīng)網(wǎng)絡(luò)[4];②基于自編碼(auto encoder)的深度神經(jīng)網(wǎng)絡(luò)[5];③基于限制玻爾茲曼機(jī)的深度置信網(wǎng)絡(luò)(deep belief networks,DBN[6,7]);④基于遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network)的深度神經(jīng)網(wǎng)絡(luò)[8]。
條件限制玻爾茲曼機(jī)用于行為識(shí)別建模[9],建立了一個(gè)可用于帶標(biāo)簽視頻數(shù)據(jù)的門控因子分解模型。時(shí)空深度置信網(wǎng)絡(luò)[10](space-time deep belief network,ST-DBN)也被用于行為識(shí)別,ST-DBN在KTH[11]數(shù)據(jù)庫上獲得了91.13%的識(shí)別率。
以上算法具體應(yīng)用時(shí)需要較大的訓(xùn)練數(shù)據(jù)集。文獻(xiàn)[10]采用的方法是留一法,即每次只留下一個(gè)樣本做測(cè)試集,其它樣本都做為訓(xùn)練集。在這大樣本訓(xùn)練的前提之下,有超過90%的識(shí)別率,當(dāng)訓(xùn)練集較小的情況下,識(shí)別率降低很快。而在實(shí)際應(yīng)用中,小樣本的情況很常見,這就導(dǎo)致了上述算法在具體應(yīng)用中有很大的局限性。
為了解決這個(gè)問題,提出了滑動(dòng)窗口時(shí)空深度置信網(wǎng)絡(luò)行為識(shí)別算法,在同樣的視頻中,通過滑動(dòng)窗口,可以提供更多的訓(xùn)練數(shù)據(jù),在小樣本的前提下,也可以獲得較高的識(shí)別率。
限制玻爾茲曼機(jī)(restricted Boltzmann machine,RBM)的結(jié)構(gòu)如圖1所示。
圖1 限制玻爾茲曼機(jī)結(jié)構(gòu)
RBM由兩層神經(jīng)元連接而成:可見層神經(jīng)元v和隱藏層神經(jīng)元h。RBM與玻爾茲曼機(jī)(BM)不同在于BM允許層內(nèi)連接,而RBM要求層內(nèi)無連接,層間全連接。v和h之間通過權(quán)值矩陣W和兩個(gè)偏置向量a和b相連接。
用θ=(W,a,b)表示RBM的參數(shù)。給定v和h,能量函數(shù)可表達(dá)為矩陣-向量形式,如式(1)所示
E(v,h)=-hTWv-aTv-bTh
(1)
式(1)的聯(lián)合概率分布表示為式(2)
P(v,h)=exp(-Eθ(v,h))/Zθ
(2)
其中,Z用于保證概率p是歸一化的,稱為歸一化因子,如式(3)所示
(3)
在具體應(yīng)用中,需要求得v和h對(duì)應(yīng)于P(v,h)的概率分布函數(shù)P(v)和P(h),若輸入v是由0和1構(gòu)成的二值分布,則兩個(gè)條件分布函數(shù)分別如式(4)和式(5)所示
(4)
(5)
其中,σ函數(shù)為激活函數(shù),選用σ(x)=tanh(x)或σ(x)=1/(1+e-x)。采用對(duì)比散度算法[12]求重構(gòu)誤差最小,使用數(shù)據(jù)在RBM上進(jìn)行訓(xùn)練即可求得參數(shù)θ(W,a,b)。
為了解決處理視頻數(shù)據(jù)多幀的問題,提出條件限制玻爾茲曼機(jī)(conditional restricted boltzman machines,CRBM)[13]。在RBM的基礎(chǔ)上,CRBM前n時(shí)刻的可視層與當(dāng)前時(shí)刻的可視層進(jìn)行自回歸連接,并且前n個(gè)時(shí)刻的可視層與隱藏層進(jìn)行連接。其結(jié)構(gòu)如圖2所示。
圖2 條件限制玻爾茲曼機(jī)結(jié)構(gòu)
圖2是一個(gè)時(shí)間序列的非線性產(chǎn)生的無向模型,包含隱藏層神經(jīng)元集合h,它們與可見層神經(jīng)元集合v相聯(lián)。v可以用指數(shù)簇分布表示。每個(gè)時(shí)間間隔t中,在最后的N步,v和h從可視變量集接收直接連接。設(shè)數(shù)據(jù)在t-1,…,t-N步里串聯(lián)成一個(gè)向量,記為v p(vt,ht|v (6) 能量函數(shù)如式(7)所示 (7) 偏置向量ai,t和bj,t如下 ai,t=ai+∑kAkivk, (8) bi,t=bj+∑kBkjvk, (9) 表示將網(wǎng)絡(luò)的輸入從分別前面t個(gè)狀態(tài)傳遞數(shù)據(jù)到可視神經(jīng)元和隱含層神經(jīng)元。設(shè)σi=1。此時(shí),v和h的分布函數(shù)為式(10)、式(11)所示 (10) (11) 通過對(duì)前n幀數(shù)據(jù)的觀測(cè),可以實(shí)現(xiàn)對(duì)多幀視頻數(shù)據(jù)的處理。其參數(shù)為θ(W,b,c,A,B),同樣可以通過對(duì)比散度算法進(jìn)行優(yōu)化。CRBM一旦訓(xùn)練完成,就可以像深度置信網(wǎng)絡(luò)一樣向上添加層。新的層不論是結(jié)結(jié)構(gòu)還是訓(xùn)練過程都和原來的層一樣。 為了處理多幀視頻,將時(shí)間(幀數(shù))和空間(像素)維度最后變?yōu)閚*1維的數(shù)據(jù),需要將數(shù)據(jù)進(jìn)行多次卷積和最大池化處理。稱這種時(shí)空卷積RBM為時(shí)空深度置信網(wǎng)絡(luò)(spatiotemporal deep belief networks,ST-DBN)。基于滑動(dòng)窗口的深度置信網(wǎng)絡(luò)系統(tǒng)整體結(jié)構(gòu)如圖3所示。 圖3 系統(tǒng)整體結(jié)構(gòu) 滑動(dòng)窗口的目的是在訓(xùn)練樣本較小的情況下,提供盡量多的訓(xùn)練樣本;空間池化層的目的是為了降低視頻幀的維度;時(shí)間池化層的目的是降低時(shí)間上的維度。通過多層空間和時(shí)間池化并且通過最小化偏差更正各個(gè)參數(shù),輸出視頻的特征。通過這些特征對(duì)SVM進(jìn)行訓(xùn)練和測(cè)試,最后得到行為的識(shí)別率。需要說明的是時(shí)間和空間池化層的數(shù)量不是一比一的,而是根據(jù)需要進(jìn)行靈活設(shè)定。在本文涉及到的實(shí)驗(yàn)中,時(shí)間池化層是兩層,而空間池化層為三層。 為了便于描述,設(shè)視頻全長(zhǎng)為L(zhǎng)幀;滑動(dòng)窗口寬度為k,即窗口包含k幀;每次滑動(dòng)位移為t幀,k>t。如圖4所示。 圖4 滑動(dòng)窗口截取視頻 把滑動(dòng)窗口截取的k幀作為下一個(gè)階段的輸入。則一個(gè)L幀的視頻可截取并且輸出的視頻片段數(shù)量為(L-k+t)/t個(gè)。如視頻長(zhǎng)度L=300,k=20,t=5,則可產(chǎn)生57個(gè)20幀的視頻片段,如果不采用滑動(dòng)窗口,則只能分割出15個(gè)20幀的視頻片段。當(dāng)k與t值相同時(shí),退化為不采用滑動(dòng)窗口的一般形式。 卷積限制玻爾茲曼機(jī)(convolutional restricted Boltzmann machines,convolutional RBM)。如圖5所示,卷積RBM由三層單元組成:可視層v,二進(jìn)制隱藏層h和二進(jìn)制最大池化層p。v層元素Vc,i,j表示通道c的像素(i,j)。 圖5 卷積RBM單幀視頻處理 (12) 隱藏層和最大化池的約束條件來源于定義:當(dāng)且僅當(dāng)最大池化單元Pα至少與一個(gè)隱藏單元hi,j的隱藏塊Bα匹配[14]。 訓(xùn)練卷積RBM需要用到蒙特卡洛方法對(duì)隱藏單元對(duì)可視單元的條件分布和可視單元對(duì)隱藏單元的條件分布進(jìn)行采樣。定義可視神經(jīng)元的操作如式(13)所示 (13) 隱藏神經(jīng)元對(duì)群g的操作如式(14)所示 (14) 則條件概率表示為式(15)~式(17) (15) (16) (17) 卷積RBM是高度過完備的結(jié)構(gòu),此外在訓(xùn)練的時(shí)候需要正則化。在最大池化單元的活動(dòng)中放置懲罰項(xiàng),以使其偏向得到更小的常量值r。給一個(gè)包含k張圖像的數(shù)據(jù)集{v1,v2,v3,…,vk},就是找到一組參數(shù)θ,使得目標(biāo)函數(shù)最小[15],如式(18)所示 (18) 其中,B是Pg中最大池化單元的數(shù)量,λ是正則化常數(shù),r是常量,用以控制活動(dòng)的最大池化單元的稀疏度。使用1步差異對(duì)比[16]方法對(duì)數(shù)似然項(xiàng)的近似梯度,以及隨機(jī)梯度下降法對(duì)式(18)中的正則項(xiàng)做優(yōu)化。 時(shí)空深度置信網(wǎng)絡(luò)(space-time deep belief network,ST-DBN)對(duì)視頻的處理,是在分層聚合的網(wǎng)絡(luò)結(jié)構(gòu)中逐次處理視頻的時(shí)空維度。 圖6顯示了ST-DBN的第一層:空間池化層,它處理輸入的視頻幀序列nVt{v(0),v(1),v(2),…,v(nt)}。在每個(gè)時(shí)間間隔t,空間卷積RBM將輸入的一個(gè)視頻v(t)大小為ch*nVx*nVy,經(jīng)過池化變成大小為|W|*nPx*nPy的輸出p(t)。其中W表示權(quán)值矩陣,與參數(shù)向量θ一起為所有的空間卷積RBM共享。 圖6 空間池化層 圖7是第二層,時(shí)間池化層,它從上一層得到低分辨率的圖像序列{p(0),p(1),p(2),…,p(nvt)},然后輸出一個(gè)較短的序列{s(0),s(1),…,s(nst)}。從圖7中可以看出,圖像幀中的像素(i,j)隨著時(shí)間排列成一個(gè)時(shí)間序列sIij,大小為(W*nVt*1)。每個(gè)sIij輸入到卷積RBM中進(jìn)行卷積運(yùn)算,使用的濾波器為權(quán)值矩陣W′。與空間卷積RBM相似,時(shí)間卷積RBM使用的權(quán)值矩陣W′,其第g個(gè)時(shí)間濾波器W′g的長(zhǎng)度為nWt。與空間濾波器不同的是,時(shí)間卷積RBM池化只對(duì)時(shí)間維度進(jìn)行。 圖7 時(shí)間池化層 時(shí)間池化層總共有(nPx*nPy)個(gè)卷積RBM,因?yàn)閳D像幀中的每一個(gè)像素都要按時(shí)間順序進(jìn)行排列,然后用時(shí)間卷積RBM進(jìn)行處理。輸入像素點(diǎn)(i,j)的時(shí)間序列sIij,時(shí)間卷積RBM輸出更短的序列sOij。其大小為(W*nSt*1),nSt 序列{s(0),s(1),…,s(nst)}傳到下一層做進(jìn)一步的時(shí)空池化運(yùn)算。模型的訓(xùn)練通過貪婪算法[17]分層進(jìn)行。隨著每個(gè)池化層的訓(xùn)練,首先初始化隱藏層和最大池化層,使用式(15)、式(16),對(duì)濾波分布的對(duì)應(yīng)的平均場(chǎng)近似求值。采用文獻(xiàn)[16]的方法,重復(fù)塊Gibbs采樣直到收斂。 ST-DBN最后輸出的是視頻特征,利用這些特征,輸入一個(gè)多類SVM分類器進(jìn)行訓(xùn)練和測(cè)試,即可得到行為識(shí)別的正確率。 人體運(yùn)動(dòng)視頻數(shù)據(jù)庫采用的是中科院的CASIA action database[18]。該數(shù)據(jù)庫收集了戶外固定攝像機(jī)在不同角度拍攝的個(gè)人和多人不同的行為??偣?446個(gè)視頻序列,包括8種不同類型的個(gè)人行為以及7種不同的兩人交互行為。與國(guó)外同類的行為數(shù)據(jù)庫(如魏茨曼科學(xué)院行為識(shí)別數(shù)據(jù)庫Weizmann human action database)相比,該數(shù)據(jù)庫的背景較為復(fù)雜,而且部分前景有遮擋,具有一定的難度。 對(duì)全部共8種個(gè)人行為進(jìn)行了實(shí)驗(yàn)。按照不同大小的訓(xùn)練數(shù)據(jù)對(duì)模型進(jìn)行驗(yàn)證和原始的ST-DBN進(jìn)行了對(duì)比。首先我們實(shí)驗(yàn)了不同的滑動(dòng)窗口大小和步長(zhǎng)對(duì)實(shí)驗(yàn)結(jié)果的影響。采用的是較小的訓(xùn)練集,占總視頻數(shù)據(jù)的1/3,而測(cè)試集為2/3,結(jié)果如圖8所示。 圖8 不同窗口寬度和滑動(dòng)位移的識(shí)別率對(duì)比 在實(shí)驗(yàn)中發(fā)現(xiàn),當(dāng)滑動(dòng)窗口較寬時(shí),識(shí)別率會(huì)顯著上升,但當(dāng)窗口寬度大于20幀以后,識(shí)別率就不再明顯上升了。而且由于窗口寬度增加,計(jì)算時(shí)間也隨著增加,故20幀是窗口寬度性價(jià)比最高的選擇。同時(shí),發(fā)現(xiàn)滑動(dòng)位移為3幀時(shí),識(shí)別率達(dá)到最大。故選擇滑動(dòng)位移為3幀,窗口寬20幀。 找到了窗口的寬度以后,ST-DBN的結(jié)構(gòu)和參數(shù)就可以確定了。ST-DBN采用五層網(wǎng)絡(luò)結(jié)構(gòu),其中第二、第四層是時(shí)間卷積層,其余三層為空間卷積層。第一層采用25個(gè)濾波器,后面四層采用64個(gè)濾波器。所有卷積層的參數(shù)相同。nWx=nWy=10,池化參數(shù)ρ=3,學(xué)習(xí)率參數(shù)為0.1,稀疏化參數(shù)r=0.01,正則化常數(shù)λ=1。用高斯噪聲對(duì)濾波器權(quán)重進(jìn)行隨機(jī)初始化,得到的初始化矩陣乘以0.1。當(dāng)然,對(duì)于時(shí)間池化層還有一個(gè)參數(shù)nWt=20。 設(shè)定完參數(shù)以后,把數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集,訓(xùn)練集的大小分別占總數(shù)據(jù)的10%~90%,分別與原始ST-DBN做了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表1。 表1 不同大小測(cè)試集識(shí)別率 從表1中可以看出,當(dāng)測(cè)試集很小時(shí),本文算法的識(shí)別率要遠(yuǎn)高于原始的ST-DBN算法,當(dāng)測(cè)試集逐漸增大時(shí),二者的識(shí)別率逐漸靠近,但本文算法的結(jié)果仍優(yōu)于原始ST-DBN結(jié)果。 本文針對(duì)現(xiàn)有的ST-DBN行為識(shí)別在較小訓(xùn)練集下識(shí)別效果不佳的問題,提出了一種利用滑動(dòng)窗口來增加訓(xùn)練數(shù)據(jù)集方法。其基本步驟為:首先采用較小的訓(xùn)練集,通過反復(fù)實(shí)驗(yàn)找到滑動(dòng)窗口的最佳大小和移動(dòng)位移;滑動(dòng)窗口的大小確定了時(shí)間池化層的參數(shù)和層數(shù),視頻分辨率的大小確定了空間池化層的參數(shù)和層數(shù);即可開始訓(xùn)練ST-DBN,輸出視頻特征。 由于ST-DBN的計(jì)算復(fù)雜,參數(shù)多,迭代收斂時(shí)間復(fù)雜度高,所以要做到實(shí)時(shí)行為識(shí)別比較困難。未來的工作是降低參數(shù)數(shù)量和時(shí)間復(fù)雜度,以實(shí)現(xiàn)實(shí)時(shí)的行為識(shí)別。2 基于滑動(dòng)窗口的深度置信網(wǎng)絡(luò)
2.1 整體結(jié)構(gòu)和流程
2.2 滑動(dòng)窗口
2.3 卷積限制玻爾茲曼機(jī)
2.4 時(shí)空深度置信網(wǎng)絡(luò)
3 實(shí)驗(yàn)及討論
3.1 采用的數(shù)據(jù)庫
3.2 實(shí)驗(yàn)過程和結(jié)果
4 結(jié)束語