周 航,劉於錫,龔 越,寇福蔚,許國梁
北京交通大學 電子信息工程學院,北京 100044
人體行為識別是計算機視覺的重要研究方向,具有非常深遠的應用前景。目前人體行為識別的方法主要有兩種:一種是傳統方法即基于手動提取特征的方法,如本文使用到的iDT算法[1];另一種是基于深度學習的行為識別方法,其中較為經典的是Simonyan等[2]提出的用于行為識別的雙流卷積神經網絡。
傳統識別方法的過程主要有三步:特征提取、特征編碼和動作分類。其中特征提取就是先對視頻進行采樣,然后在采樣點或者采樣區域內提取蘊含動作信息的特征描述符。近年來,隨著深度學習領域的發展,越來越多基于深度學習的特征提取算法應運而生,逐漸取代了傳統的手動提取特征的方法并成為了該領域的主流。然而,基于深度學習的算法需要大量數據對其模型進行訓練,有著一定局限性,因此很多研究提出將手動提取出的特征與深度學習得到的特征結合形成新的特征描述符,比如Wang等[3]提出的描述符TDD(trajectorypooled deep-convolutional descriptor),這種描述符是通過將傳統算法中的iDT算法所提取出的描述符與多尺度的卷積特征一起池化所得,保留了手動特征和深度特征各自的優點,并取得了很高的準確率。
由上可知,雖然目前基于深度學習的方法相較于傳統方法有著明顯的提升,但是傳統方法的很多模塊仍能運用到深度學習算法中,所以基于傳統算法的研究仍有重要的研究價值。其中,Wang等[4]提出的密集軌跡算法(dense trajetcories,DT)是傳統算法中非常經典的算法,該算法首先在每幀中按照一定間隔密集采樣興趣點,并利用密集光流算法對其進行跟蹤并連接成運動軌跡,之后將軌跡鄰域劃分成細小的子空間,從每個子空間中提取特征描述符。該算法在當時是非常有效的算法,但其缺點是對相機運動敏感,此后Jain等[5]提出了一種補償相機運動的方法,以濾除因鏡頭移動引起的光流。之后Wang等[1]同樣考慮到了相機的運動,提出了一種改進的密集軌跡算法iDT,該算法使用SURF(speeded up robust features)興趣點匹配以及光流匹配來估計相機的運動,從而減少了其產生的影響。從此iDT算法取代了DT算法,成為了傳統方法中的主流方法。
此后出現了很多基于iDT的改進算法,其中較為常見的改進方向是改進iDT算法用到的特征描述符,即Laptev等[6]在識別過程中運用的定向梯度直方圖(histograms of oriented gradients,HOG)和光流直方圖(histograms of optical flow,HOF),以及Wang等[4]用到的基于光流的運動邊界直方圖(motion boundary histograms,MBH),其中HOG專注于靜態外觀信息;而HOF捕獲的則是局部運動信息;效果最好的MBH可以在一定程度上消除恒定的攝像機運動,從而保留了運動邊界信息,并且可以很好地檢測到人體,因此能具備更好的魯棒性。在上述描述符的基礎上,Jain等[5]基于差分運動標量、散度、旋度和剪切特征設計一個新的運動描述符即DCS描述符,它捕獲有關局部運動模式的其他信息,從而提高了識別準確率。Ali等[7]提出了一些基于光流的運動學特征,包括散度、旋度、對稱和反對稱流場,流動梯度和應變張量的速率的第二和第三主要不變量,以及旋轉張量速率的第三主要不變量。Carmona等[8]介紹了一種添加時間模板的方法,將視頻序列視為三階張量,并計算三個不同的投影,使用幾個函數從視頻序列中投射數據,并通過求和池將它們組合在一起。Liao等[9]提出了軌跡的多個相對描述符,即相對運動描述符和相對位置描述符,它們分別用于捕獲相對運動信息和相對位置信息,此外提出了將深度特征與手工特征相結合的相對深度特征描述符。隨著更多新的描述符的提出,多種特征的融合成為了新的挑戰。李嵐等[10]在DT算法的基礎上加入了時空興趣點特征(STIP),更重要的是實現了全新加權方式的特征融合,可以突出性能更加優越的特征描述符。
以上對于特征描述符的改進算法相較于iDT算法雖然能夠取得更高的準確率,但往往增大了數據量和計算量。然而iDT算法本就有著很多數據量的冗余,其提取的軌跡數量往往非常龐大,其中混雜著一些不需要的背景軌跡,因此軌跡的濾除也是iDT算法的一種重要的改進方向。王曉芳等[11]利用兩個階段的顯著性檢測,識別出人體行為區域,繼而獲取該區域的軌跡,刪除了大量無關軌跡,但此方法的顯著性檢測過程過于復雜。Dong等[12]通過采樣點和光流的大小確定前景區域,然后在前景中提取軌跡,從而減少了冗余的軌跡,與此同時提出運動差異描述符(motion difference descriptor,MDD)來表示相關時間信息。
本文的主要貢獻在于提出了基于iDT的軌跡濾除算法,相較于上述算法有著計算速度非常快的優點,并且能夠在保證準確率的同時減少了軌跡數量。本文提出的軌跡濾除算法通過將光流圖進行二值化來表示各點的相對有效性并基于此判斷軌跡是否滿足有效條件,濾除不滿足條件的軌跡。這種算法的計算量較小,有著很好的實用性。
2013年,Wang等[4]提出了DT算法,在當時識別準確率領先于其他算法,隨后,為了消除相機運動的影響,Wang等[1]在DT算法的基礎上提出了iDT算法。算法過程如下:
首先將視頻的每一幀分出至多8個尺度,之后在每個尺度按照固定的像素步長進行采樣,并將自相關矩陣的特征值較小的興趣點濾除。
密集采樣得到興趣點之后,計算出當前幀的密集光流場,光流場是一個二維矢量場,表示像素的灰度瞬時變化率,蘊含目標的瞬時速度的信息,因此可以利用光流跟蹤獲得的密集采樣點進而形成軌跡,如公式(1)。其中(xt,yt)為當前第t幀的興趣點的位置,(xt+1,yt+1)為下一幀的位置。M是3×3的中值濾波內核,ωt為光流場。

之后把得到的興趣點在每一幀的位置串聯起來組成密集軌跡(pt,pt+1,pt+2,…)。為了防止漂移現象的發生,限定軌跡的長度L=15幀。得到軌跡之后對兩幀軌跡坐標做差得到靜態軌跡的形狀描述符,即位移向量的序列(Δpt,…,Δpt+L-1),密集軌跡本身的形狀描述符為30維。
如圖1所示,圖(a)表示在該幀進行密集采樣得到興趣點;圖(b)表示計算得到的光流場,這里用光流矢量圖表示光流矢量在每個像素的大小和方向;圖(c)表示由公式(1)計算出的興趣點下一幀的位置,以及興趣點在兩幀之間的位移組成的軌跡;圖(d)表示興趣點經過第L幀之后的連續軌跡,這里L=15。

圖1 密集采樣及軌跡跟蹤示意圖Fig.1 Dense sampling and trajectory tracking diagram
iDT算法采用的其他特征描述符有:梯度方向直方圖(HOG)、光流梯度方向直方圖(HOF)、運動邊界直方圖(MBH)。HOG的方向量化為8個bin,故其描述符維數為96(即2×2×3×8);HOF與HOG相比添加了一個額外的bin用來記錄光流幅度低于閾值的像素,所以最終描述符維數為108(即2×2×3×9);分別為光流的水平和垂直分量求導數,得到MBH的兩個方向上的值MBHx和MBHy,兩者的方向也量化為8個bin,故維數均為96(即2×2×3×8)。
將上述各特征向量串聯,得到每條軌跡的總特征向量維數為426(30+96+108+192)。
在原本的iDT算法中,對是否濾除軌跡有兩種判別依據,其依據如下:在由L=15幀的位移組成的軌跡T=(Δpt,…,Δpt+L)上,計算出所有位移的標準差σ,將不滿足t1<σ<t2的軌跡濾除。并且找到軌跡中的最大位移Δpmax,將不滿足t3<Δpmax<t4濾除。其中t1、t2、t3和t4都是固定的閾值。
上述濾除軌跡的算法主要濾除的是固定背景點以及漂移點,在鏡頭固定且背景簡單的場景下能起到可靠的效果,如在KTH、Weizmann數據集。然而在較為復雜的場景中,則不能有效濾除無關的背景軌跡,尤其是在鏡頭快速移動或強烈晃動的情況下。這是由于上述算法的濾除閾值是固定的,而每個興趣點會隨著鏡頭的移動產生一定的位移,這些鏡頭引起的位移在之前的算法中也常常被認為是有效的,導致從有鏡頭移動的視頻中提取的軌跡往往數量龐大。在iDT算法中,Wang等[4]在DT算法的基礎上考慮了鏡頭移動產生的影響,利用SURF興趣點匹配以及光流匹配對鏡頭移動進行了抑制,并得到了抵消鏡頭移動的光流圖。盡管如此,其對于濾除閾值t1、t2、t3和t4并沒有改進。由于閾值還是固定的,在很多背景復雜的情況下還是不能得到理想的濾除效果。
因為人體的運動相較于背景的運動更為復雜和劇烈,所以光流圖中最為顯著的部分通常就是人物主體。因此,可以通過保留光流圖中的主要部分對背景中雜亂的光流進行濾除,從而濾除背景軌跡。在與行為識別領域相關的運動目標跟蹤領域,通過對光流灰度圖進行二值化來識別目標也是一個比較有效的方法(如文獻[13-14]),所以基于此思想提出的本文算法可以取得較好的效果。
為了減小iDT算法提取的軌跡數量,同時保證濾除的是人物主體以外的部分,本文提出基于光流灰度二值化的軌跡篩選算法。這種算法的優點是能在保證準確率的同時濾除一定數量的軌跡,并且其對計算量的需求很小。在濾除閾值tv=5的條件下濾除的效果如圖2所示。圖2中(a)表示原始視頻中的某一幀,(b)的白色軌跡表示閾值為5時被濾除的軌跡,(c)表示原本iDT算法保留的軌跡。

圖2 本文算法與iDT算法的軌跡對比Fig.2 Trajectories extracted by proposed algorithm compared with iDT
下面將介紹本文提出的基于光流二值化的軌跡濾除算法,其算法流程圖如圖3。

圖3 本文提出的軌跡濾除算法流程圖Fig.3 Flowchart of proposed trajectory filtering algorithm
首先,對每幀光流灰度圖進行最大值歸一化,得到歸一化后的光流灰度圖Fnorm,這一步在每個尺度上都進行。之后利用Otsu算法求得Fnorm的二值化閾值tbin,并由此進行二值化得到光流二值化圖Fbin,如公式(2)。其中q1和q2分別表示C1和C2的像素所占比例(C1和C2分別表示大于和小于閾值tbin的灰度像素),m1和m2分別表示C1和C2的像素灰度均值。Fbin上值為1的點表示該點光流有效、0表示無效,p表示像素點。

光流灰度圖上的每一個點表示該點光流的大小,代表該點運動的劇烈程度。而經過最大值歸一化后的Fnorm圖表示的是該點的運動相對于這一幀上所有點的運動的有效程度,是相對量。在人體運動視頻中,人體的運動往往相對于背景的運動更為有效,因此歸一化以后可以抑制部分背景點的光流。
需要注意的是,在實際場景中由于光流會受到反光等外部環境因素的影響,在個別幀會出現局部背景點光流聚焦的情況,由于存在這種情況,第一次二值化后的有效區域會過小。因此,需要計算出Fbin上每個連通區域的面積,若不滿足條件(3):

則將會根據公式(4)減小Fnorm上光流較大的值以抑制光流聚焦的情況,并計算出新的S1max,重復上述過程直到其滿足條件(3)。其中S1max為光流有效部分中最大連通域的面積,S0為所有光流不有效部分的面積。這樣就可以確保有效光流的面積不會被背景點的突變造成的光流聚焦所影響。

得到符合條件(3)的Fbin之后,遍歷每條軌跡(pt,…,pt+L),計算該軌跡中滿足光流有效條件的點的數量n,如公式(5)。之后設置閾值tv,若n≥tv則保留該軌跡,否則就濾除。其中L表示軌跡的長度,采用文獻[1]中的默認值15;pt表示軌跡的第t個點表示軌跡中與pt對應的光流二值化圖,和該軌跡(pt,…,pt+L)在同一尺度下,但是只和pt在同一幀。

在第2.3節本文將探討不同數據庫中tv的大小對準確率和濾除率的影響,并綜合考慮準確率和濾除率后,在KTH數據集中取tv=3,在UCFsports中取tv=1。
針對光流聚焦情況的處理過程示例如圖4所示,該幀經過三次二值化之后得到了滿足條件的光流二值化圖。其中為了區別于其他連通域,圖4中最大連通域以網格填充來表示;不受光流聚焦影響的理想情況下,光流灰度圖應該如(c)所示,而實際的結果則是(b)。對(b)進行最大值歸一化處理后得到了(d),此時圖像整體的灰度值得到了提升。對(d)用Otsu算法求得其第一次的二值化閾值tbin=29(單位為像素灰度,其范圍是0~255),并由此進行光流二值化后得到圖(e)。在(e)中進行連通區域面積計算,發現其不滿足條件(3),于是根據公式(4)對光流聚焦區域進行兩次抑制后得到(h)。對(h)進行二值化后,計算得到其S1max=3 239(單位為像素數),此時的S1max已經足夠大并滿足條件(3),于是將其作為最終的光流二值化結果。

圖4 針對光流聚焦現象的處理過程示例圖(目標人體區域和光流聚焦區域分別用大小框標識出)Fig.4 Example of processing process for optical flow focusing phenomenon
從篩選后的軌跡周圍提取特征之后,每條軌跡形成了426維的軌跡特征向量Tk,將從一個視頻中提取出的m個軌跡并聯得到m×426的特征矩陣E。對于不同的視頻m的值不同,即提取出的軌跡數不同,與視頻的分辨率和時長等因素有關。軌跡特征向量Tk由30維軌跡、96維HOG、108維HOF和192維MBH特征組成。Tk和特征矩陣E的表達式:

從訓練集中隨機抽取約200 000條軌跡特征向量,用k-means算法對這些軌跡特征向量進行聚類,得到256個聚類中心向量Ci(i=0,1,…,256),并把這些聚類中心的集合作為視覺詞典。其中,初始中心點為隨機選取。之后用VLAD(vector of locally aggregated descriptors)算法對訓練集的每個視頻的特征向量進行編碼,得到大小為256×426的編碼矩陣,用以描述一個視頻。具體過程如下,在一個視頻中,對每個軌跡特征向量Tk找到與其歐氏距離最小的聚類中心Ci,同時稱Tk是Ci的其中一個軌跡元素。一個視頻中,Ci的所有軌跡元素的集合表示為TCi。計算Ci與TCi中各個軌跡Tk的殘差向量,將其求和并得到Vi,如公式(6):

將每個聚類中心對應的Vi并聯得到一個大小為256×426的矩陣VLAD={V1,V2,…,V256},對該矩陣進行L2歸一化得到該視頻的VLAD編碼矩陣。
對訓練集的每個視頻進行編碼后,給每個編碼矩陣貼上動作標簽然后訓練SVM(support vector machines)分類器,實現行為的分類識別。其中,SVM采用線性核函數,懲戒因子C=100,所有類等權重,采用one-vs-rest分類策略。本文在2.3節對算法的識別性能進行測試。
在KTH數據集中,從動作標簽為boxing的第一個視頻提取的特征矩陣和編碼矩陣的結果如下:

本文使用的數據集是KTH和UCF sports。其中KTH有6個動作,595個視頻,訓練集和測試集的比例為7∶3。UCF sports有10個動作,150個視頻,訓練集和測試集的比例采用官方建議的2∶1。
本文使用了VLAD算法進行向量編碼,并使用線性SVM分類器進行分類。實驗環境為Windows 10 64位操作系統,VS2019搭配OpenCV 3.4.1作為開發環境,計算機配置為IntelCorei7-10710U。
圖5(a)為UCFsports庫里每個動作類中的一個視頻,圖(b)、(c)、(d)是不同閾值tv下將n<tv的軌跡濾除后所保留的軌跡結果,其中圖(b)中tv=0(不濾除任何軌跡),(c)中tv=6,(d)中tv=12。據圖5所示,n較大的軌跡對人體的跟蹤相對更緊密,而n較小的軌跡一般都是背景產生的軌跡,所以這也側面證明了通過設置閾值tv來濾除軌跡可以一定程度上提高準確率。然而,若tv設置得過大,則可能也會將人體上的軌跡濾除導致準確率降低,在第2.3節將會對這一結論有所體現。

圖5 UCFsports中的動作用不同閾值過濾后的軌跡Fig.5 Filtered trajectories for different thresholds
如圖6,橫軸表示濾除閾值tv,縱軸表示該數據庫中n≤tv的軌跡數占總數的比值,即需要濾除的部分,其中n為軌跡中滿足光流有效條件的點的數量,如公式(5)。據統計,在KTH和UCF sports數據庫中用iDT算法提取的軌跡數量都是約1 000 000條。由圖6可知整體來看在tv相同的情況下,KTH中的軌跡相較于UCFsports更難被濾除。在KTH中軌跡集中在閾值較大的區間,n≤3的軌跡數僅占整體的10%,其中滿足n=15的軌跡數最多,約占全部軌跡的13%。而UCF sports則與之相反,軌跡集中在閾值較小的區間,n≤3的軌跡數占據了整體的51%。這是因為KTH的場景比較單一,興趣點及其組成的軌跡在人體上的跟蹤非常緊密,所以n的值較大,且非常多的軌跡能夠滿足n=15,表明該軌跡全程都在人體的主要活動位置。而UCF sports的場景較為復雜,高質量的軌跡較少,所以n的值較小。從第2.3節KTH與UCFsports兩個數據集的實驗結果對比來看,KTH中的動作準確率相對較高,這證明了n值的大小可以反映軌跡的有效性這一結論。

圖6 濾除率隨tv的變化情況Fig.6 Filtering rate for change of tv
本節將給出濾除n<tv后的實驗結果,閾值tv=0表示不濾除任何軌跡,其結果即iDT算法原本的準確率。其中,準確率=識別正確動作數/測試集總數,濾除率=由本文算法濾除的軌跡數/軌跡總數。如表1所示,對于KTH庫來說,tv=3的情況下,能夠在提高1.7個百分點的準確率的同時濾除5.8個百分點的軌跡;tv=5的情況下,能夠在準確率不變的情況下濾除16.2個百分點的軌跡。如表2所示,對于UCF sports庫來說,tv=1的情況下,能在提高0.2個百分點的準確率的同時濾除13.9個百分點的軌跡。

表1 本文算法在KTH庫的準確率和濾除率Table 1 Accuracy and filtering rate on KTH

表2 本文算法在UCF sports庫的準確率和濾除率Table 2 Accuracy and filtering rate on UCF sports
如表3所示,在本文實驗環境下測得本文算法的計算速度非常快,速度差(v1-v2)/v1僅約3‰,其中v1表示iDT算法速度,v2表示iDT+本文算法速度。

表3 本文算法的平均計算速度Table 3 Average speed of proposed algorithm
以上實驗表明在KTH中取tv=3時以及在UCFsports中取tv=1時的識別準確率最高。圖7以混淆矩陣的形式給出了這兩種情況下的識別結果。由(a)可知,在KTH中的整體準確率很高,其中running的準確率最低,主要原因是running和jogging兩個動作本身區別較小。由圖7(b)可知,在UCFsports上的準確率相對于KTH較低,原因是前者的運動更多、場景更復雜并且每個動作的樣本數更少。其中,Riding-Horse的準確率最低,原因是該動作樣本較少且人體本身運動不明顯。

圖7 在兩個數據集上的混淆矩陣結果Fig.7 Confusion matrix on two datasets
表4是本文算法與近年來其他基于iDT的傳統識別算法的比較。其中文獻[4]提出了DT算法,在KTH和UCF sports數據集上的準確率分別為94.2%和88.0%,在當時領先于其他算法。文獻[1]對DT算法進行改進并提出了iDT算法,其準確率分別為95.4%和88.8%,較文獻[4]有一定提升(由于文獻中沒有使用這兩種數據集測試準確率,因此數據僅代表在本文實驗環境下的測試結果)。文獻[15]根據顯著性檢測和低秩矩陣回歸提出了一種區分前景和背景軌跡的方法,并取得了很高的準確率,分別為97.5%和91.5%,然而該算法對計算量的需求相對較大。文獻[16]通過顯著性檢測確定人體位置并由此縮小采樣范圍,取得95.4%和88.4%的準確率。文獻[17]提出了一種基于動態高斯金字塔改進的SURF算法以加強興趣點的匹配精度,取得了95.5%和91.4%的準確率。

表4 各算法識別準確率對比Table 4 Accuracy compared with other algorithms
而本文提出的軌跡濾除算法在KTH數據集上的準確率為97.1%,在文獻[1]的基礎上有1.7個百分點的提升,在同類型算法中準確率較高。而在UCF sports數據集上的表現稍遜色,準確率為89.0%,只有0.2個百分點的提升。考慮到目前很多算法雖然能提高準確率,但往往增加了數據量和計算量,而本文算法與其他算法不同,能夠在文獻[1]的基礎上減小數據量,并且計算速度與文獻[1]相比只有大約3‰的降低(如表3),在實際應用中可以忽略不計,因此本文算法得到的準確率結果可以說是比較理想的。
目前很多基于密集軌跡算法的人體行為識別算法往往使得特征向量更為冗長,加大了數據量和計算量。而本文提出的通過對光流二值化來判斷軌跡是否有效的算法不僅能使準確率得到提升,還能濾除一定數量的軌跡。并且測試結果表明該算法計算量比較小,實時性好。然而該算法還有一定的改進空間,濾除的軌跡超過約20%時會造成準確率的降低,日后將會對這種現象進行深入研究并改進。