肖利雪 冀敏杰
(西安郵電大學(xué)計(jì)算機(jī)學(xué)院 西安 710121)
隨著監(jiān)控?cái)z的普及,社會(huì)治安越來(lái)越依靠監(jiān)控視頻[1],因此計(jì)算機(jī)視覺(jué)成為大數(shù)據(jù)時(shí)代下的一個(gè)備受關(guān)注領(lǐng)域。其中人體行為識(shí)別已經(jīng)成為計(jì)算機(jī)視覺(jué)領(lǐng)域中的熱點(diǎn)問(wèn)題[2]。人體行為廣泛應(yīng)用于行為監(jiān)控[3]、體育比賽、老年人監(jiān)護(hù)[4]以及健康狀況評(píng)估。其中,行為監(jiān)控是一種典型的應(yīng)用,常見(jiàn)的行為識(shí)別方法只要有兩種類:基于圖像分析[5~7]和基于可穿戴的傳感器設(shè)備[8~10],由于后者對(duì)硬件的依賴性較高,成本開(kāi)銷較大,本文采用了后者。
目前大量研究都是圍繞提高人體行為的識(shí)別率而展開(kāi)的。為了取得較高的行為識(shí)別率,Oua?nane A 等[11]提出對(duì)視頻圖像的每一幀進(jìn)行外觀形狀的特征提取形成一個(gè)特征袋,將特征袋與骨架特征相結(jié)合進(jìn)行K-means特征融合,獲得攻擊性特征編碼序列,通過(guò)編碼序列對(duì)攻擊性行為識(shí)別。Pei Xiaomin等[12]提出時(shí)空特征融合深度學(xué)習(xí)網(wǎng)絡(luò)人體行為識(shí)別方法,采用多視角信息建立人體骨架幾何不變性特征,結(jié)合CNN(Convolutional Neural Net?work)[13]學(xué)習(xí)到的局部空域特征進(jìn)行LSTM(Long Short Term Memory)網(wǎng)絡(luò)學(xué)習(xí)骨架空域節(jié)點(diǎn)之間的相關(guān)性特征,作用于時(shí)域的LSTM[14]網(wǎng)絡(luò)學(xué)習(xí)骨架序列時(shí)空關(guān)聯(lián)性特征,實(shí)現(xiàn)人體行為識(shí)別。M.Eichner 等[15]基于對(duì)Ramanan 圖形結(jié)構(gòu)模型的擴(kuò)展,采用圖像的邊緣信息和區(qū)域信息對(duì)人體上半身姿勢(shì)進(jìn)行識(shí)別,準(zhǔn)確地對(duì)人體運(yùn)動(dòng)姿勢(shì)進(jìn)行描述。基于計(jì)算機(jī)視覺(jué)行為識(shí)別分析的特征提取最初主要采用的人體輪廓作為姿勢(shì)特征表達(dá),而人體輪廓的提取主要描述了目標(biāo)人物的整體運(yùn)動(dòng)特征,忽略了人體各個(gè)部位的細(xì)節(jié)變化所發(fā)生的行為動(dòng)作,因而輪廓特征不能表達(dá)人體行為中各式各樣的行為動(dòng)作。在進(jìn)行人體行為識(shí)別分類時(shí),采用統(tǒng)計(jì)學(xué)習(xí)理論基本上不涉及概率測(cè)度的定義及大數(shù)定律。它避免了人工神經(jīng)網(wǎng)絡(luò)[16~17]等方法的網(wǎng)絡(luò)結(jié)構(gòu)選擇、過(guò)學(xué)習(xí)和欠學(xué)習(xí)以及局部極小等問(wèn)題?;谠摾碚摪l(fā)展的XGBoost[18~19]作為一種支持并行化的有監(jiān)督模型算法已經(jīng)被應(yīng)用于各種數(shù)據(jù)的分類中[14~17],其根本是邏輯回歸樹(shù)的集合,將所有樹(shù)的結(jié)果集合在一起作為最終的預(yù)測(cè)值,然而在數(shù)據(jù)采集中常常無(wú)法準(zhǔn)確的控制視頻的幀長(zhǎng)。因此在構(gòu)建特征向量時(shí)會(huì)產(chǎn)生訓(xùn)練樣本不平衡問(wèn)題。因此采用w-XGboost 對(duì)人體行為進(jìn)行識(shí)別。在人體行為識(shí)別中由于體形之間的差異相同動(dòng)作骨架信息依然存在較大的差異,因此對(duì)人體骨架信息進(jìn)行特征向量的構(gòu)建實(shí)現(xiàn)人體行為的分類和識(shí)別。
越來(lái)越多的技術(shù)能夠?qū)崿F(xiàn)從二維圖像中識(shí)別出執(zhí)行人的骨架,2017 年卡耐基梅隆大學(xué)的研究人員公開(kāi)了OpenPose[20]的人體骨架識(shí)別系統(tǒng)的原代碼,實(shí)現(xiàn)對(duì)監(jiān)控視頻下的目標(biāo)人物的實(shí)時(shí)跟蹤,它可以在RGB 視頻中捕捉到COCO 類型的人體骨架信息,同時(shí)可以提供場(chǎng)景中人體關(guān)節(jié)點(diǎn)(Joints)信息。本文充分利用了OpenPose 提供的二維人體骨架信息來(lái)提取有效人體運(yùn)動(dòng)特征構(gòu)建運(yùn)動(dòng)特征向量。同時(shí),采用改進(jìn)后的w-XGBoost算法對(duì)人體行為進(jìn)行分類識(shí)別。本文的主要貢獻(xiàn):
1)提出一種基于二維骨架的運(yùn)動(dòng)行為識(shí)別算法,該算法在構(gòu)建特征向量工程時(shí)只采用OpenPose輸出的人體骨架信息,而不需要采用硬件傳感器進(jìn)行行為識(shí)別信息采集的輔助工具。
2)提出在創(chuàng)建運(yùn)動(dòng)特征向量時(shí),引入伐里農(nóng)算法[21]將人體運(yùn)動(dòng)變化程度進(jìn)行向量特征的構(gòu)建,還包括人體變化角速度和距離差,通過(guò)特征向量實(shí)現(xiàn)對(duì)人體行為的識(shí)別。
3)改進(jìn)了w-XGBoost算法,通過(guò)對(duì)訓(xùn)練樣本數(shù)量進(jìn)行特征加權(quán)實(shí)現(xiàn)樣本的類別平衡,從而提高人體行為識(shí)別的準(zhǔn)確性。
在OpenPose骨架提取中,采用COCO模式對(duì)視頻流進(jìn)行2D 骨架進(jìn)行提取,獲取人體關(guān)節(jié)點(diǎn)信息。人體骨架由18 個(gè)關(guān)節(jié)點(diǎn),17 個(gè)肢體向量構(gòu)成人體骨架圖如圖1所示。
圖1 OpenPose骨架信息圖像
讓S=(V,E)表示兩個(gè)人體骨架信息,其中V={v0,v1,…,v17}表示的是關(guān)節(jié)點(diǎn)的位置集合,E={e0,e1,…,e17}表示剛性肢體向量的集合。
定義1關(guān)節(jié)位置(Joint positions-JP),在第t幀視頻中第j 個(gè)關(guān)節(jié)點(diǎn)的位置可以定義為vj(t)=(xtj,ytj),關(guān)節(jié)點(diǎn)的位置定義為vi(t)=(xti,yti),其中j,i∈{0,1,…,17}。直接將關(guān)節(jié)位置隨著時(shí)間的變化作為行為的一種描述子。
定義2關(guān)節(jié)向量(Joint Vector-JV),對(duì)肢體的有效部分進(jìn)行肢體向量提取,表示方式為eij(t),其中eij(t)=vj(t)-vi(t),其中j,i∈{0,1,…,17}。
由于環(huán)境復(fù)雜度回二維圖像的影響和人體自遮擋會(huì)導(dǎo)致OpenPose 在提取獲得的2D 人體骨架信息時(shí)產(chǎn)生數(shù)據(jù)缺失。因此在提取了人體骨架信息后需要對(duì)確實(shí)信息進(jìn)行預(yù)測(cè),本文采用三次數(shù)據(jù)預(yù)處理。
1)骨架信息數(shù)據(jù)清洗
針對(duì)復(fù)雜環(huán)境中出現(xiàn)人體骨架信息誤測(cè),會(huì)出現(xiàn)多余的骨架信息,主要是將視頻流中多余的人或錯(cuò)誤預(yù)測(cè)出的骨架進(jìn)行清洗,獲取易于特征提取的視頻數(shù)據(jù)流。
2)攻擊者的自遮擋導(dǎo)致數(shù)據(jù)缺失
為了保留人體整體姿態(tài)不變采用人體對(duì)稱進(jìn)行缺失值填充。
3)骨架信息缺失值預(yù)測(cè)
由于環(huán)境的復(fù)雜性導(dǎo)致關(guān)節(jié)點(diǎn)數(shù)據(jù)的丟失將會(huì)影響我們對(duì)攻擊性行為的特征分析和提取。在人體骨架提取中,數(shù)據(jù)的缺失是隨機(jī)的甚至?xí)l(fā)生在相鄰的幾幀中,而且視頻流中骨架信息特征值是波動(dòng)性較大的連續(xù)性變化,因此采用K 最近鄰(k-NearestNeighbor,kNN)算法進(jìn)行缺失值預(yù)測(cè),采用k=10作為最相近的臨近樣本預(yù)測(cè)數(shù)。
通過(guò)OpenPose 獲得的人體骨架關(guān)節(jié)點(diǎn)之間存在較大的相關(guān)性如圖2,并且用關(guān)節(jié)點(diǎn)信息直接進(jìn)行人體行為分類時(shí)由于身高、人與鏡頭的距離之間的不同會(huì)產(chǎn)生不同的特征向量,所以直接對(duì)關(guān)節(jié)點(diǎn)進(jìn)行人體行為識(shí)別時(shí)需要對(duì)人體關(guān)節(jié)點(diǎn)進(jìn)行歸一化處理,但這個(gè)歸一化的標(biāo)準(zhǔn)很難確定。
圖2 人體骨架關(guān)節(jié)點(diǎn)之間相關(guān)關(guān)系
因此,本文提出人體運(yùn)動(dòng)特征向量主要由關(guān)節(jié)環(huán)節(jié)之間角度變化和重心運(yùn)動(dòng)速度作為人體行為識(shí)別的特征向量。特征向量元素之間的相關(guān)關(guān)系如圖3所示。
在視頻流中將攻擊者抽象成一個(gè)“質(zhì)點(diǎn)”,而忽略攻擊者自身的形態(tài)變化,通過(guò)計(jì)算這個(gè)“質(zhì)點(diǎn)”在視頻流中的位移變化信息來(lái)代表人的運(yùn)動(dòng)狀態(tài)信息。根據(jù)人體運(yùn)動(dòng)學(xué)原理,人體重心的位置隨人體的位移和姿態(tài)變化而發(fā)生改變。因此,在特征提取時(shí)我們用人體的重心來(lái)代表這個(gè)“質(zhì)點(diǎn)”,將重心變化軌跡作為人體發(fā)不同運(yùn)動(dòng)時(shí)的運(yùn)動(dòng)特征點(diǎn)進(jìn)行分析。根據(jù)人體重心變化和時(shí)序性運(yùn)動(dòng)軌跡特征,我們可以區(qū)分人體是在運(yùn)動(dòng)中還是處于靜止?fàn)顟B(tài)。
圖3 特征向量元素之間的相關(guān)關(guān)系
定義3人體全部環(huán)節(jié)所受到的重力的合力的作用點(diǎn)叫做人體的重心。
伐里農(nóng)定理[21](varignon's theorem):物體各部分相對(duì)于某軸力矩的代數(shù)和就等于該物體總重量對(duì)該軸的力矩。即:
其中,(xn,yn)表示人體重心坐標(biāo),Pm表示人體第m環(huán)節(jié)的點(diǎn)總重心的概率和環(huán)節(jié)重心的坐標(biāo)。
在視頻流中,攻擊者在每一幀中的姿態(tài)變化可以看作是攻擊者發(fā)出攻擊行為時(shí)的原子動(dòng)作,通過(guò)對(duì)原子動(dòng)作的分析,獲取攻擊者在發(fā)出攻擊時(shí)的變化特征。人體行為可以看作是幾個(gè)典型的關(guān)鍵幀組成,而其他幀都可以看作是這幾個(gè)關(guān)鍵幀的過(guò)渡。本文主要采用當(dāng)前幀與過(guò)去的5 幀之間的骨架旋轉(zhuǎn)角變化特征對(duì)攻擊者進(jìn)行攻擊性特征提取。針對(duì)當(dāng)前幀和該幀的之前5 幀之間攻擊者的各個(gè)骨骼環(huán)節(jié)在時(shí)域和空域上的旋轉(zhuǎn)角變化最為攻擊性行為特征。人體運(yùn)動(dòng)時(shí)關(guān)節(jié)角度變化構(gòu)建旋轉(zhuǎn)角:目標(biāo)人物大臂和小臂夾角的角速度變化、目標(biāo)人物大腿和小腿夾角的角速度變化、目標(biāo)人物臀部中心到頭部的向量與豎直方向向量的夾角、身體與手腕呈現(xiàn)的角速度、身體與腳腕呈現(xiàn)的角速度。計(jì)算公式為式(3)、(4):
其中,v1(t+1)-v1(t)>0 表示以視頻幀的右側(cè)為正方向,而v1(t+1)-v1(t)<0 表示以視頻幀的左側(cè)為正方向。
在交互行為識(shí)別的過(guò)程中,通常會(huì)根據(jù)特征描述的數(shù)據(jù)特征點(diǎn)進(jìn)行識(shí)別方法的判斷與選擇。在本文中,采用w-XGBoost 對(duì)特征向量進(jìn)行分類訓(xùn)練。XGBoost算法是對(duì)XGBoost算法的加權(quán)平衡樣本數(shù)量的改進(jìn)算法,采用樹(shù)形結(jié)構(gòu)對(duì)構(gòu)建的特征向量進(jìn)行分類。在訓(xùn)練模型時(shí)由于在采集數(shù)據(jù)時(shí)視頻中人的動(dòng)作數(shù)據(jù)的時(shí)長(zhǎng)無(wú)法限定,因此采集的樣本存在樣本不平衡的問(wèn)題,對(duì)此問(wèn)題采用樣本加權(quán)對(duì)樣本特征的平衡性進(jìn)行修正。
Step1:獲取視頻流人體骨架信息關(guān)節(jié)點(diǎn)信息;
Step2:對(duì)骨架關(guān)節(jié)點(diǎn)信息進(jìn)行攻擊性行為特征向量的構(gòu)建;
Step3:對(duì)于多分類樣本種類數(shù)量不平衡問(wèn)題進(jìn)行種類加權(quán),其中N 表示樣本種類,nkind表示這類的樣本數(shù)量,Mˉ表示樣本平均數(shù);α為經(jīng)驗(yàn)值,一般為1.5。原理如式(5)~(7):
為了驗(yàn)證特征向量的有效性,本文采用兩個(gè)常用的視頻行為分析數(shù)據(jù)集Weizmann和KTH。數(shù)據(jù)集Weizmann 包含數(shù)據(jù)庫(kù)包含了10 個(gè)動(dòng)作(bend,jack,jump,pjump,run,side,skip,walk,wave1,wave2),每個(gè)動(dòng)作有9 個(gè)不同的樣本。視頻的視角是固定的,背景相對(duì)簡(jiǎn)單,每一幀中只有1 個(gè)人做動(dòng)作。數(shù)據(jù)庫(kù)中標(biāo)定數(shù)據(jù)除了類別標(biāo)記外還包括:前景的行為人剪影和用于背景抽取的背景序列。數(shù)據(jù)集KTH 數(shù)據(jù)庫(kù)包括在4 個(gè)不同場(chǎng)景下25 個(gè)人完成的6 類動(dòng)作(walking,jogging,running,boxing,hand waving and hand clapping)共計(jì)2391 個(gè)視頻樣本,是當(dāng)時(shí)拍攝的最大的人體動(dòng)作數(shù)據(jù)庫(kù),它使得采用同樣的輸入數(shù)據(jù)對(duì)不同算法的性能作系統(tǒng)的評(píng)估成為可能。數(shù)據(jù)庫(kù)的視頻樣本中包含了尺度變化、衣著變化和光照變化,但其背景比較單一,相機(jī)也是固定的。圖4 表示W(wǎng)eizmann 數(shù)據(jù)集上的骨架識(shí)別結(jié)果。圖5 表示KTH 數(shù)據(jù)集上的骨架識(shí)別結(jié)果。
圖4 Weizmann數(shù)據(jù)集上的骨架識(shí)別結(jié)果
圖5 Weizmann數(shù)據(jù)集上的骨架識(shí)別結(jié)果
本次實(shí)驗(yàn)采用w-XGBoost 算法對(duì)人體行為特征進(jìn)行識(shí)別,采取交叉驗(yàn)證算法對(duì)數(shù)據(jù)庫(kù)進(jìn)行測(cè)試是實(shí)驗(yàn)。實(shí)驗(yàn)所用計(jì)算機(jī)硬件配置為Intel(R)Core(TM)i7-6700HQ CPU @ 2.60GHz 2.59GHz,8 GB內(nèi)存,軟件環(huán)境為64 位Windows10 操作系統(tǒng)下使用Visual Studio 2015平臺(tái)上完成。
實(shí)驗(yàn)中,同時(shí)采用精確度(Precision)、召回率(Recall)和F 值(F-measure),支持?jǐn)?shù)(support)4 個(gè)評(píng)價(jià)指標(biāo)對(duì)所改進(jìn)的算法進(jìn)行了有效性評(píng)價(jià)。精確度表示算法對(duì)動(dòng)作預(yù)測(cè)的準(zhǔn)確比例,一般來(lái)說(shuō)正確率越高,分類器越好。召回率表示覆蓋面的度量,度量有多個(gè)正例被分為正例。F 值是一種綜合評(píng)價(jià)指標(biāo),是精確度和召回率的加權(quán)調(diào)和平均值,F(xiàn)值越高說(shuō)明實(shí)驗(yàn)方法越有效,支持?jǐn)?shù)表示每種行為樣本數(shù)量。如式(8)~(10)所示:
對(duì)于二分類問(wèn)題來(lái)說(shuō),TP 對(duì)應(yīng)于被分類模型正確預(yù)測(cè)的正樣本數(shù);FP 對(duì)應(yīng)于被分類模型錯(cuò)誤預(yù)測(cè)為正類的負(fù)樣本;FN 為對(duì)應(yīng)于被分類模型錯(cuò)誤預(yù)測(cè)為負(fù)類的正樣本數(shù)。這些公式可以推廣得到多分類問(wèn)題中。
表1 真實(shí)數(shù)據(jù)集信息
為了驗(yàn)證構(gòu)建的特征向量的有效性,本文選擇XGBoost算法和w-XGBoost算法進(jìn)行比較。對(duì)于每個(gè)數(shù)據(jù)集采用XGBoost 算法中自帶的交叉驗(yàn)證算法,實(shí)驗(yàn)采用學(xué)習(xí)率為0.15,邏輯回歸樹(shù)的最大深度為12,采用60%數(shù)據(jù)集進(jìn)行采樣訓(xùn)練。注意在此過(guò)程中保持各個(gè)集合中的數(shù)據(jù)類別比例與原數(shù)據(jù)集相同,實(shí)驗(yàn)結(jié)果分別如表2所示。
由表2 可以看出將w-XGBoost 分類模型應(yīng)用于人體行為識(shí)別,在Weizmann 數(shù)據(jù)集和KTH 數(shù)據(jù)集上F 值整體評(píng)估達(dá)到94%,同時(shí)準(zhǔn)確率和召喚率也都較高,試驗(yàn)結(jié)果表明采用w-XGBoost分類模型方法在人體行為識(shí)別分類上具有很好的分類效果。相較于XGBoost 分類算法模型,本文提出的算法能夠?qū)崿F(xiàn)對(duì)視頻樣本特征向量的平衡,行為識(shí)別準(zhǔn)確率達(dá)到94.以上。
本文提出了基于二維骨架運(yùn)動(dòng)特征向量的行為識(shí)別。首先,采用傳統(tǒng)的機(jī)器學(xué)習(xí)算法對(duì)人體骨架缺失信息進(jìn)行預(yù)測(cè)填充獲得完整的骨架信息。然后,對(duì)人體骨架信息進(jìn)行特征向量的構(gòu)建,主要分析人體運(yùn)動(dòng)時(shí)關(guān)節(jié)之間的角度變化和人體運(yùn)動(dòng)時(shí)重心的變化。最后,對(duì)于視頻流中獲取的特征向量個(gè)數(shù)進(jìn)行平衡,采用改進(jìn)的w-XGBoost分類模型實(shí)現(xiàn)對(duì)人體行為的分類。實(shí)驗(yàn)表明本文提出的運(yùn)動(dòng)特征向量和改進(jìn)w-XGBoost 對(duì)能夠有效地對(duì)人體行為進(jìn)行識(shí)別。
表2 XGBoost和w-XGBoost算法在數(shù)據(jù)集Weizmann和KTH測(cè)試結(jié)果