郭洪濤 龍娟娟
1(洛陽師范學院信息技術學院 河南 洛陽 471934)2(江南大學數字媒體學院 江蘇 無錫 214122)
動作識別和行為理解是目前計算機視覺領域的研究熱點[1],其難點在于需要從背景中檢測出目標和動作,同時需要準確識別動作的多樣化[2]。在傳統動作識別方法中,基于動作特征和軌跡特征的識別效果較好[3],但視頻中存在遮擋或者同一動作在不同環境下的差異導致傳統動作識別方法的準確率難以得到提高。傳統方法對某些動作具有較強的識別能力,但對動作多樣化的識別能力存在明顯的不足[4]。
隨著近期深度學習技術在模式識別領域的廣泛應用,日益增多的研究人員將深度學習技術應用到視頻識別的領域中[5],包括:基于深度學習的時空雙流視頻動作識別[6]、基于訓練圖卷積神經網絡的動作識別[7]、基于光流約束自編碼器的動作識別[8]等。這類動作特征學習方法的識別準確率在大型動作數據集上較傳統動作識別方法獲得了顯著的提升。
另外一些研究人員提出了基于無監督學習的視頻動作識別方法[9]。這類動作特征學習算法將視頻塊像素作為輸入信號,通過統計視頻塊中的像素分布信息學習動作特征。此類方法未考慮像素在時空域的特征,因此僅能描述視頻像素塊的外觀信息,忽略了動作的運動信息[10]。
本文利用深度學習的泛化能力和視頻的時空信息,提出了一種基于四元組Siamese網絡[11]的動作識別算法。為了提高動作識別的泛化效果,增強對動作多樣性的區分能力,提出了一種增強Siamese神經網絡的完全無監督學習算法提取視頻的動作特征。為了提高動作識別的效率,做了兩點設計:(1) 通過三維Harris角點檢測時空域中發生顯著變化的局部結構,對這些興趣點進行無監督學習,由此提高學習的速度;(2) 為興趣點的特征索引構建投影樹,由此提高模式匹配的搜索速度。


(1)


文獻[12]的慢特征分析(Slow Feature Analysis,SFA)框架能夠從向量形式的輸入信號學習緩慢變化的特征,視頻序列恰好是該模型的理想輸入信號,將連續視頻幀間的時間一致性作為監督結構。SFA具有以下屬性:在時域上接近的視頻幀在特征空間內的距離也接近,設一個學習的描述符為ψ,兩個連續視頻幀為Vi,t和Vi,t+1,可得ψ(W,Vi,t)≈ψ(W,Vi,t+1)。下文將ψ(W,Vi,t)簡寫為ψ(Vi,t),假設學習的特征描述符是一個關于網絡參數W的函數。
第1個Siamese模型的關鍵思想為:學習程序的目標是保證查詢幀和相鄰視頻幀在特征空間ψ中接近,而查詢幀和其他視頻的幀間距離大于某個閾值δ。圖1是本文的Siamese網絡結構,網絡由兩個基礎網絡組成,基礎網絡之間共享參數。模型的輸入是一對視頻幀:(Vi,t,Vi,t+1)或者(Vi,t,Vj,t′),以及相關的標記Y(兩個幀屬于相同的視頻,Y=1;否則Y=0)。基礎網絡的輸出均為4 096維的特征空間ψ(·),在訓練之前無需初始化基礎網絡和相關的權重參數,直接將網絡的參數設為隨機值,因此本模型為完全無監督模型。

圖1 第1個Siamese網絡的結構
假設查詢視頻為Vi,兩個連續幀Vi,t和Vi,t+1之間特征描述符的距離應當小于查詢幀Vi和其他任意隨機幀Vj的距離。
如果Vx=Vi,t,并且Vy=Vi,t+1

如果Vx=Vi,t,并且Vy=Vi,t′,那么:
max(0,δ-ψ(Vx),ψ(Vy))
(2)
式中:d為歐氏距離,式(2)(對比損失函數)懲罰連續幀之間的距離,獎賞不同視頻幀之間的距離。
在模型的訓練程序中未考慮視頻的標記,所以本模型支持任意的視頻,是一種完全無監督的學習方法。
第1個Siamese網絡僅僅學習了連續的視頻幀,第2個Siamese網絡為四元組Siamese網絡,負責提取視覺內容的細節特征。文獻[13]提出歸一化SFA模型,該模型在學習視頻描述符的過程中能夠產生一個二階時間導數,將三個時間緊密幀組成三元組(Vi,a,Vi,b,Vi,c),該模型使得緊密幀之間的特征變化也保持相似,即d(ψ(Vi,b),ψ(Vi,a))≈d(ψ(Vi,c),ψ(Vi,b))。該模型的目標函數結合了監督損失函數和無監督的正則化項,而本模型則是完全無監督的學習模型。
深度學習特征的核心思想是保證連續幀特征描述符之間的時間一致性,所以長度n的時間窗口內幀間距離應當小于不同視頻的幀間距離。圖2是本文設計的四元組Siamese網絡,該模型捕獲視頻的局部微小變化,并保持全局的判別力。

圖2 第2個Siamese網絡的結構(四元組Siamese網絡)
模型共有4個基礎網絡組成,網絡之間共享相同的參數。模型的輸入為四個視頻幀的元組(Vi,t,Vi,t+1,Vi,t+n,Vj,t′),每個基礎網絡的輸出為1024-D的特征空間。選擇4個視頻幀的原因在于:查詢幀Vi,t和相鄰視頻的幀Vi,t+1在學習的特征空間中極為靠近(ψ(Vi,t)≈ψ(Vi,t+1)),查詢幀Vi,t和相同視頻的幀Vi,t+n在特征空間中也較為接近,而查詢幀Vi,t和其他視頻的幀Vj,t′在特征空間則較為疏遠,即d(ψ(Vi,t),ψ(Vi,t+n)) 四元組Siamese網絡的損失函數定義為: d(ψ(Vi,t),ψ(Vi,t+1))+max{0,d(ψ(Vi,t), ψ(Vi,t+n))-d(ψ(Vi,t),ψ(Vi,t′))+α} (3) 式中:α表示全局的margin。 動作識別程序需要消耗大量的內存空間和計算時間,而且Siamese網絡的學習成本也較高,為了提高動作識別的效率和速度,提出一種基于局部最大差異圖像的興趣點檢測技術,將視頻分割為動作主要區域和動作次要區域,Siamese網絡僅學習主要區域的特征。在興趣點的檢測程序中,使用相鄰幀差分技術獲得差分圖像。 圖3是動作識別算法的流程框圖。算法主要由三個模塊組成:① 興趣點檢測模塊,檢測身體的移動部分,其優點在于提取運動行程較大的身體區域,這些區域對于動作區分具有較高的判別力。② 建立投影樹的過程中,設計了重疊區域分割機制,降低邊界點分類的錯誤率。③ 采用霍夫投票機制統計測試視頻和各個訓練分類的相似性,結合投票得分和投票數量的結果識別出目標動作。 圖3 動作識別算法的流程框圖 視頻的興趣點一般為邊緣和角點等,三維角點是一種效果較好的人體動作描述符,采用三維Harris角點檢測興趣點。將Harris角點檢測技術從空間域擴展到時間域和空間域,提取時空域中發生顯著變化的局部結構。三維Harris角點檢測一般通過Harris角點移動檢測三維角點的變化,但在一些視頻中發生三維角點變化的部分并非主要區域,因此無法檢測出關鍵的移動區域。所以設計了差分視頻幀的局部最大化機制,提高動作識別的精度。 算法1是興趣點檢測算法的偽代碼。假設查詢視頻V共有Nf個幀,計算連續幀之間的差分圖像Di。應用中值濾波器處理差分圖像,抑制多余的毛刺,計算三維局部最大值。計算目標像素的26個相鄰像素(3×3×3的三維立方體),分別和目標像素比較來判斷目標像素是否為局部最大值。圖4是判斷局部最大像素的實例,將圖中26個像素的強度值與中心像素比較,如果均小于中心像素,那么該中心像素為一個興趣點。 圖4 判斷局部最大像素的實例 最終計算所有興趣點之間的歐氏距離,如果兩個點的距離小于閾值θ,那么刪除其中一個興趣點,本文將θ設為20個像素對應的歐氏距離。 算法1檢測興趣點的算法 輸入:查詢視頻V,視頻幀數量Nf 輸出:興趣點IP,迭代次數i 1.whilei 2.D(i)=median_filter(V(i+1)-V(i)); /*中值濾波*/ 3.i++; 4.} /*計算目標像素的26個相鄰像素,判斷是否為局部最大*/ 5. foreachpixelinDdo { 6.center_pixel=pixel; 7.nei_pixel=pixel的26個鄰居像素 8. foreachlfrom 1 to 26 do { 9. ifnei_pixel[i]>center_pixelthen 10.pixel不是興趣點; 11. break; 12. endif 13. endfor 14.IP=center_pixel; //該中心點為興趣點 15.endfor /*刪除接近的冗余興趣點*/ 16.foreachiinIPdo { 17.dis=ED(IP(i),IP(i-1)); /*計算歐式距離*/ 18. ifdis<θthen 19. 刪除該冗余點; 20. endif 21.endfor 圖5是興趣點檢測的實例圖。(a)是一個拳擊動作的視頻幀;(b)是兩個連續幀的差分圖像;(c)是輪廓檢測的局部最大興趣點,刪除了近距離的興趣點和低強度的興趣點。 (a)(b) (c)圖5 檢測興趣點的實例圖 采用第1節無監督學習的神經網絡學習視頻幀興趣點的特征,特征集總體的維度為162。 采用投影樹構建特征空間的索引,提高興趣點的搜索速度。隨機投影樹(Random Projection tree,RP-tree)對于低維流形學習的效果好于近鄰樹,所以本文采用RP-tree建立特征空間的索引,RP-tree為訓練數據集建立索引,在測試過程中快速搜索查詢興趣點的匹配數據。但是RP-tree存在一個問題:如果不同分區的興趣點相似,則會導致RP-tree出現較高的失敗率。 將重疊區域分割能夠有效地降低失敗率,圖6是分割重疊區域的示意圖,將區域Χ沿隨機方向U分割,控制變量α,將區域分割為(1/2-α)和(1/2+α)。 圖6 重疊區域分割的示意圖 算法2是建立RP-tree的算法,將視頻提取的興趣點集表示為P={pi;i=1,2,…,NP},其中pi=[fi,li],fi和li分別為興趣點pi的描述符和時空位置,NP為興趣點的總數量,設參數td是tree的最大深度。mk_RPtree是建立RP-tree的程序,div_data(P)是分割重疊區域的函數(見算法3)。 算法2mk_RPtree函數 輸入:特征集P,深度depth。 輸出:投影樹tree 1.初始化:最大樹深度td,葉節點中興趣點的最少數量msz。 2.ifdepth 3. if |P| 4. returnleaf; 5. } else { 6. rule=div_data(P); 7.left_tree=mk_RPtree({x∈P:rule(x)=true}∪ {x∈P:x∈Pcommon}); 8.right_tree=mk_RPtree({x∈P:rule(x)=false}∪ {x∈P:x∈Pcommon}); 9. } 10.} 算法3分割重疊區域的函數div_data(P) 輸入:特征集P 輸出:數據分割規則rule 1.產生一個隨機方向v; /* 產生的列表為p1≤p2≤…≤pn。*/ 2.將投影值排序p(x)=v.x, ?x∈P; 3.for (i=1,…,n-1) { 7. 搜索ci的最小值, 8.θ=(pi+pi+1)/2; 9.rule(x)=v.x≤θ; 10.} 上節為興趣點構建了RP-tree,訓練數據為R={dr=[fr,lr];r=1,2,…,NR},fr和lr分別為興趣點dr的描述符和時空位置,NR為興趣點的總數量,V(x,t,ρ)表示時間中心為t、空間中心為x的測試視頻,ρ為測試視頻的縮放尺度。從V提取的興趣點表示為P,V和R之間的相似性匹配分數計算為: S(V(x,t,ρ),R)∝ (4) 如果fi,fr屬于樹Tj的同一個葉節點,那么Ij(fi,fr)=1,否則為0。lv=[xv,tv]為投票位置,xv和tv分別為: (5) 圖7是投票程序的詳細流程。 圖7 投票程序的詳細流程 相似性匹配度表示為[xv,tv],xv為查詢點和動作中心間的歐氏距離,tv為訓練興趣點和動作中心間的歐氏距離,[xv,tv]表示xv和tv之間的差值。如果不同分類的訓練視頻之間興趣點數量不相等,那么在tree某些深度的葉節點具有不等的興趣點數量,該情況導致誤檢率升高,容易將查詢視頻誤分類為假正類。為了避免該問題,對于投票技術進行修改,保持興趣點數量相等。 計算匹配點到查詢點間歐氏距離的差值之和,其結果用于計算相似性匹配度。此外,記錄每個分類的興趣點數量,綜合上述兩個結果,識別出查詢視頻。 圖8 查詢視頻的投票分數和興趣點匹配示意圖 算法4是改進投票算法的偽代碼,通過投票的分數初始化類Vi,統計和查詢興趣點匹配的興趣點數量,分別做如下不同處理:(1) 如果當前類匹配的興趣點數量最多,那么該查詢視頻增加該類的類標簽。(2) 匹配興趣點的數量和初始識別的類做比較,投票總分數更高的類作為識別的分類。 算法4改進的投票算法 輸入:匹配的興趣點數量Ij,分類數量N,投票分數Vi 1.ifi==j{ 2. 類標簽=i; 3.} else { 4.Ii=Vi; //匹配的興趣點數量 5. 搜索Ik>Ii的類標簽; 7. 類標簽=k; 8.} (1) 實驗方法。基于MATLAB(9.0.0.341360 release 2016a)實現實驗中的各個算法。實驗環境為PC機,CPU為Intel Core i5,主頻為3.2 GHz,內存為8 GB,操作系統為Window 10。 UCF101數據集是從YouTube網站采集的實際動作視頻,共包含12 000個視頻,101個動作類型。數據集分為3個子部分,本實驗采用其中第1個部分,該部分共有9 537個訓練視頻和3 783個測試視頻。上述數據集的視頻均包含標注信息,但是本文在學習視頻特征的過程中忽略了這些標注信息,而是從視頻集中提取一部分的子集作為訓練集。 J-HMDB數據集是一個單人交互的動作視頻數據集,該數據集能夠清晰地觀察動作識別算法的處理過程。該數據集共包含21個動作類型,每個動作類型有36~55個視頻。實驗從每個類型中隨機選出6個視頻作為訓練集,隨機選出30個視頻作為測試集。 實驗方法有以下幾個步驟:(1) 采用訓練視頻集以無監督的方式學習本文的神經網絡結構。(2) 計算測試視頻的特征。(3) 檢測視頻動作的類型。每組實驗獨立重復10次,統計每組實驗的平均值和標準偏差作為最終的實驗結果。 (2) 性能評價指標。采用條件熵(Conditional Entropy,CE)評估檢測的性能。CE定義為: (6) 式中:X為正定標簽;Y為算法檢測的標簽;變量(x,y)是從有限離散相交空間X×Y獲得的采樣。 圖9 CE與邊界寬度的關系 分別測試神經網絡fc6層和fc7層學習特征的效果,結果如圖10所示。綜合4個參數組合的結果,fc6層的性能優于fc7層。 圖10 fc6層和fc7層學習特征的結果 采用3個動作識別算法與本文算法做比較,分別為SVRL[16]、RVOT[11]、DLVF[3]。SVRL是一種無監督學習視頻特征的方法,該方法的分類準確率較高。RVOT是一種基于卷積神經網絡的視頻特征選擇算法,該算法設計了多尺度完全全局Siamese網絡,與本算法同屬于Siamese網絡的改進算法。DLVF也是一種使用神經網絡的人體動作識別算法,該算法是一種分布式動作識別算法。使用K-means聚類算法[15]和譜聚類(Spectral clustering,SC)分別測試特征子集的性能,基于高斯核距離的全連接方式生成SC的相似矩陣。 圖11是4個動作檢測算法的CE結果。觀察圖中的結果,本文算法均實現了最低的CE值,SVRL是一種提取視頻時空特征的算法,其特征的效果明顯低于其他三個深度學習的特征。在三個基于神經網絡的檢測算法中,本文算法實現了最低的CE值,并且雖然RVOT和DLVF的CE值與本文算法較為接近,但這兩個算法均為有監督特征學習方法,需要預知系統的參數和應用場景的先驗知識。本文算法則是完全無監督學習方法,無需任何的先驗知識。 圖11 4個動作檢測算法與不同分類器組合的CE結果 通過J-HMDB數據集能夠觀察動作檢測算法的細節信息,為J-HMDB數據集的動作類型編號:(1) Brush hair,(2) Catch,(3) Clap,(4) Climb stairs,(5) Golf,(6) Jump,(7) Kick ball,(8) Pull up,(9) Push,(10) Run,(11) Shoot ball,(12) Shoot bow,(13) Swing baseball,(14) Throw,(15) Walk,(16) Wave。采用3個指標評估本算法的總體性能[17],分別為靈敏度、準確度、特異度,敏感度高說明漏檢率低,特異度高說明誤檢率低。圖12是本文算法對于J-HMDB數據集的動作識別結果,(a)中15個數據集的靈敏度均達到了0.4以上,Push數據集的敏感度較低,漏檢率較高,主要原因是Push動作的幅度較小,提取的特征判別能力弱于其他類型的動作;(b)中Pull up動作和Push動作的準確率較低,其他14個動作的準確率也均高于0.4;(c)中所有動作的特異度均達到0.9以上,說明算法的誤檢率較低。 (a) 靈敏度 (b) 準確度 (c) 特異度圖12 J-HMDB數據集的動作識別結果 表1是4個動作識別算法對于H-HMDB數據集的平均準確率結果。本文算法的平均準確率接近0.6,明顯高于其他3個動作識別算法,表明本文算法具有較好的識別準確率性能。表2是4個動作識別算法對于H-HMDB數據集的平均時間結果,4個算法在時間效率上均具有良好的性能,均可在10秒以內成功完成檢測,而本文算法則具有最快的速度。 表1 4個動作識別算法的平均準確率 表2 4個動作識別算法的平均時間 本文設計了新的動作識別算法,主要包括三點創 新:(1) 設計了興趣點檢測模塊,檢測身體的移動部分,其優點在于提取運動行程較大的身體區域,這些區域對于動作區分具有較高的判別力。(2) 建立投影樹的過程中,設計了重疊區域分割機制,降低邊界點分類的錯誤率。(3) 采用霍夫投票機制統計測試視頻和各個訓練分類的相似性,結合投票得分和投票數量的結果識別出目標動作。最終通過實驗驗證了本文算法的有效性,在檢測準確率和時間效率上均具有明顯的優勢。未來將利用分布式計算和并行計算實現本算法,將算法的識別速度加快到1秒以內,進一步提高算法的實用性。
1.3 Siamese網絡的實現細節

2 動作識別的算法設計

2.1 檢測興趣點


2.2 特征提取
2.3 重疊區域分割的隨機投影樹



2.4 投票模型


2.5 改進投票算法




3 仿真實驗和結果分析
3.1 實驗環境和方法
3.2 神經網絡參數的效果



3.3 UCF101數據集實驗

3.4 J-HMDB數據集實驗





4 結 語