宋 垚,陳慶奎
(上海理工大學(xué) 光電信息與計(jì)算機(jī)工程學(xué)院,上海 200093)
E-mail:chenqingkui@usst.edu.cn
如今我國(guó)已步入老齡化社會(huì),隨著人口老齡化問(wèn)題的加劇,獨(dú)居“空巢老人”的養(yǎng)老照護(hù)問(wèn)題得到了社會(huì)的密切關(guān)注,其中老年人因跌倒而受到意外傷害的情況越來(lái)越受到重視.老年人獨(dú)自生活或無(wú)人看管的情況下發(fā)生摔倒卻無(wú)法及時(shí)得到救援就成了老年人的健康和安全隱患,利用AI視頻傳感器采集視頻,對(duì)摔倒動(dòng)作進(jìn)行檢測(cè)并及時(shí)通知很有必要.
目前,人體摔倒檢測(cè)主要有基于可穿戴設(shè)備檢測(cè)、基于外部環(huán)境傳感器檢測(cè)和基于計(jì)算機(jī)視覺(jué)檢測(cè)3種.基于可穿戴設(shè)備檢測(cè)法通常將傳感器嵌入手環(huán)、腰帶等可隨身攜帶的物品,采集人體運(yùn)動(dòng)數(shù)據(jù),進(jìn)而通過(guò)閾值法、SVM等完成摔倒檢測(cè)[1-4].可穿戴設(shè)備需要老人時(shí)刻佩戴,對(duì)于一些高齡特別是記憶力衰退的老人,可能會(huì)忘記;另外一些老人還會(huì)因身體舒適性而抵觸該類(lèi)設(shè)備,不喜歡佩戴.基于外部環(huán)境傳感器檢測(cè)法,通常是利用人體運(yùn)動(dòng)對(duì)環(huán)境中一些物理量如壓力、振動(dòng)、紅外熱源的變化來(lái)識(shí)別摔倒行為,這種方法需要在環(huán)境中部署傳感器,受周?chē)h(huán)境噪音影響,系統(tǒng)較為復(fù)雜且成本高[5].基于計(jì)算機(jī)視覺(jué)檢測(cè)法,可利用低成本邊緣設(shè)備采集視頻,獲取圖像信息,使用圖像處理、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等方法進(jìn)行特征提取和摔倒行為檢測(cè),便于部署,覆蓋范圍廣,且準(zhǔn)確率和實(shí)時(shí)性都有所保障.文獻(xiàn)[6]從邊界框和輪廓中提取少量特征,配合有限狀態(tài)機(jī)的轉(zhuǎn)換進(jìn)行摔倒識(shí)別.文獻(xiàn)[7]首先在不同視頻序列中提取視頻幀作為訓(xùn)練集訓(xùn)練PCANet模型,根據(jù)訓(xùn)練好的模型對(duì)連續(xù)幀進(jìn)行預(yù)測(cè),并將結(jié)果與SVM結(jié)合從而識(shí)別摔倒行為.文獻(xiàn)[8]利用Alphapose檢測(cè)連續(xù)多幀人體骨骼關(guān)鍵點(diǎn),將骨骼關(guān)鍵點(diǎn)坐標(biāo)序列分為x坐標(biāo)序列和y坐標(biāo)序列分別輸入到兩個(gè)LSTM提取時(shí)序特征,隱層輸出接入全連接層得到摔倒檢測(cè)結(jié)果.文獻(xiàn)[9]提出卷積時(shí)空注意力網(wǎng)絡(luò)RSTAN對(duì)RNN每一步長(zhǎng)預(yù)測(cè)結(jié)果做全局自適應(yīng)調(diào)整,從而識(shí)別出關(guān)鍵特征,并設(shè)計(jì)注意力驅(qū)動(dòng)的時(shí)空LSTM融合策略對(duì)最終框架進(jìn)行端到端訓(xùn)練.
Openpose[10]人體姿態(tài)識(shí)別項(xiàng)目是美國(guó)卡耐基梅隆大學(xué)(CMU)基于卷積神經(jīng)網(wǎng)絡(luò)和監(jiān)督學(xué)習(xí)并以caffe為框架開(kāi)發(fā)的開(kāi)源庫(kù),是世界上首個(gè)基于深度學(xué)習(xí)的實(shí)時(shí)多人二維姿態(tài)估計(jì)應(yīng)用.本文將利用Openpose提取摔倒視頻中人體的25個(gè)骨架關(guān)節(jié)點(diǎn),進(jìn)行后續(xù)識(shí)別任務(wù).
本文主要貢獻(xiàn)有:1)針對(duì)骨架類(lèi)型數(shù)據(jù)提出幾種數(shù)據(jù)預(yù)處理方法,包括關(guān)節(jié)點(diǎn)坐標(biāo)歸一化、關(guān)節(jié)點(diǎn)缺失情況處理、時(shí)序特征選擇,解決不同目標(biāo)位移、尺度大小變化以及部分被遮擋問(wèn)題;2)多方面具體分析骨架數(shù)據(jù),從時(shí)空維度上提取多種特征對(duì)某一時(shí)刻姿態(tài)進(jìn)行描述,多個(gè)連續(xù)時(shí)刻形成骨架序列特征;3)提出一種結(jié)合門(mén)控循環(huán)單元和時(shí)空注意力機(jī)制(STM-GRU)的摔倒識(shí)別模型,在人體骨架數(shù)據(jù)上進(jìn)行訓(xùn)練,進(jìn)而利用訓(xùn)練好的模型識(shí)別摔倒動(dòng)作.本文提出的摔倒動(dòng)作識(shí)別方法主要針對(duì)于老年人摔倒時(shí)的行為特點(diǎn)用于養(yǎng)老照護(hù),同樣適用于年輕人,但主要?jiǎng)幼鞯臅r(shí)間等參數(shù)不同,對(duì)年輕人的摔倒動(dòng)作識(shí)別情況在本文中不予以討論.
本文總體設(shè)計(jì)方案如圖1所示:首先采用留出法將視頻提取骨架數(shù)據(jù)集劃分為兩個(gè)互斥集合分別作為訓(xùn)練集和測(cè)試集,劃分比例為4∶1.不同的劃分伴有一定隨機(jī)性,單次采用留出法最終得到的估計(jì)結(jié)果往往不夠穩(wěn)定可靠,因此本文采用多次隨機(jī)劃分,重復(fù)試驗(yàn)之后取平均值作為評(píng)估結(jié)果.然后通過(guò)數(shù)據(jù)清理進(jìn)行數(shù)據(jù)預(yù)處理,就數(shù)據(jù)清理而言,主要任務(wù)就是排除姿態(tài)估計(jì)算法提取錯(cuò)誤或骨架數(shù)據(jù)集本身存在冗余數(shù)據(jù)帶來(lái)的噪聲干擾,只保存有效關(guān)節(jié)點(diǎn)數(shù)據(jù),從而處理缺失值和離群點(diǎn)來(lái)解決數(shù)據(jù)不一致的問(wèn)題,得到標(biāo)準(zhǔn)、干凈的關(guān)節(jié)點(diǎn)數(shù)據(jù)集.接下來(lái)對(duì)摔倒過(guò)程進(jìn)行分析,分別提取骨架空間特征與時(shí)序特征.在網(wǎng)絡(luò)模型加載訓(xùn)練數(shù)據(jù)前,需要對(duì)骨架時(shí)空特征集進(jìn)行shuffle操作,從而保證打亂后的樣本排列具有一定隨機(jī)性,隨機(jī)化權(quán)值更新方向,從而防止訓(xùn)練過(guò)程模型抖動(dòng)和過(guò)擬合.最后分別加載訓(xùn)練數(shù)據(jù)與測(cè)試數(shù)據(jù),在訓(xùn)練集上訓(xùn)練出模型后,在測(cè)試集上評(píng)估其測(cè)試誤差,作為對(duì)泛化誤差的近似,訓(xùn)練好的模型可以有效識(shí)別摔倒動(dòng)作.
圖1 整體設(shè)計(jì)流程圖Fig.1 Overall design flow chart
視頻采集骨架數(shù)據(jù)數(shù)量龐大且來(lái)自于不同目標(biāo)的動(dòng)作,一些數(shù)據(jù)會(huì)出現(xiàn)異常.鑒于高質(zhì)量數(shù)據(jù)直接決定了模型的預(yù)測(cè)和泛化能力好壞,數(shù)據(jù)預(yù)處理很有必要.考慮到真實(shí)場(chǎng)景中并非所有時(shí)刻都有目標(biāo)完整地出現(xiàn)在攝像范圍內(nèi),骨架提取算法采集到的骨架關(guān)節(jié)點(diǎn)數(shù)量缺失,不足以代表某一動(dòng)作甚至完整個(gè)體;另外算法本身也會(huì)出現(xiàn)將單目標(biāo)識(shí)別為多目標(biāo),結(jié)果中保存了多目標(biāo)數(shù)據(jù)的異常情況,對(duì)骨架數(shù)據(jù)集進(jìn)行數(shù)據(jù)預(yù)處理很有必要.預(yù)處理階段將對(duì)骨架數(shù)據(jù)進(jìn)行數(shù)據(jù)清理,對(duì)于未檢測(cè)到人體而缺失目標(biāo)骨架數(shù)據(jù)或有效關(guān)節(jié)點(diǎn)數(shù)量低于一定閾值的無(wú)效樣本,只需丟掉這一幀數(shù)據(jù),因?yàn)橐粋€(gè)視頻對(duì)應(yīng)的骨架數(shù)據(jù)量足夠多,無(wú)效樣本覆蓋率和重要性都很低,刪除處理對(duì)我們的研究目標(biāo)影響不大;對(duì)于個(gè)別關(guān)節(jié)點(diǎn)被遮擋,如腳部或頭部,以周?chē)P(guān)節(jié)點(diǎn)或周?chē)P(guān)節(jié)點(diǎn)的幾何中心代替;對(duì)于單目標(biāo)誤檢測(cè)為多目標(biāo)的冗余噪聲樣本,可根據(jù)樣本中關(guān)節(jié)點(diǎn)置信度對(duì)每一骨架單獨(dú)進(jìn)行有效關(guān)節(jié)點(diǎn)計(jì)數(shù),置信度大于一定閾值為有效關(guān)節(jié)點(diǎn),選擇有效關(guān)節(jié)點(diǎn)個(gè)數(shù)較多的骨架數(shù)據(jù)作為該樣本真實(shí)目標(biāo).數(shù)據(jù)預(yù)處理將為下一階段準(zhǔn)備“清理”過(guò)后的骨架關(guān)節(jié)點(diǎn)數(shù)據(jù)集.
圖2為Openpose提取人體骨架關(guān)節(jié)點(diǎn)分布圖,本節(jié)將從骨架關(guān)節(jié)點(diǎn)分布關(guān)系出發(fā),具體分析不同情況下,能有效描述摔倒動(dòng)作的特征.t時(shí)刻空間特征Ftspatial應(yīng)包含關(guān)節(jié)點(diǎn)間相對(duì)位置特征F1、高寬比特征F2、與肢體間角度特征F3,即Ftspatial=concatenate(F1,F(xiàn)2,F(xiàn)3)∈1×KS,其中F1∈1×K1,F(xiàn)2∈1×K2,F(xiàn)3∈1×K3,KS=K1+K2+K3.接下來(lái)對(duì)不同特征的提取方法做具體分析.
圖2 骨架關(guān)節(jié)點(diǎn)示意圖Fig.2 Schematic diagram of skeleton joints
視頻中的每一幀對(duì)應(yīng)著人體摔倒動(dòng)作的每一靜止姿態(tài),可看作由一系列關(guān)節(jié)點(diǎn)坐標(biāo)構(gòu)成的骨架點(diǎn)集,考慮到人體骨架是一個(gè)整體框架,不同關(guān)節(jié)點(diǎn)間有順序、位置分布關(guān)系,其中也包含著隱含信息,不可忽略這些結(jié)構(gòu)信息.關(guān)節(jié)點(diǎn)間的相對(duì)位置關(guān)系可區(qū)分不同個(gè)體摔倒的類(lèi)內(nèi)差異,相比毫無(wú)聯(lián)系的原始關(guān)節(jié)點(diǎn)坐標(biāo),包含了人體靜止姿態(tài)各關(guān)節(jié)點(diǎn)的空間分布特征,在物理意義上表現(xiàn)為關(guān)節(jié)點(diǎn)坐標(biāo)間歐式距離.考慮到遠(yuǎn)近尺度、不同目標(biāo)情況下同一動(dòng)作識(shí)別出骨架大小存在縮放問(wèn)題,且目標(biāo)在視頻畫(huà)面中出現(xiàn)的位置不定,空間位置特征直接由關(guān)節(jié)點(diǎn)坐標(biāo)計(jì)算歐氏距離會(huì)存在很大差異,因此需要提前將每組K個(gè)關(guān)節(jié)點(diǎn)坐標(biāo)做歸一化處理,公式如下:
Xstd=(X-X.axis_min)(X.axis_max-X.axis_min)
(1)
Xscaled=Xstd·(max-min)+min
(2)
采用離差標(biāo)準(zhǔn)化方法,對(duì)原始關(guān)節(jié)點(diǎn)坐標(biāo)數(shù)據(jù)進(jìn)行線(xiàn)性變換,公式(1)中X是形狀為(K,D)的numpy數(shù)組,K表示關(guān)節(jié)點(diǎn)個(gè)數(shù),D表示坐標(biāo)維度,X.axis_min、X.axis_max表示各維度下坐標(biāo)最小值與最大值;公式(2)中的min,max是給定縮放范圍的最小值和最大值,此處取0和1,目的是將關(guān)節(jié)點(diǎn)坐標(biāo)按維度分別歸一化到0-1范圍內(nèi).
將25個(gè)歸一化關(guān)節(jié)點(diǎn)記為p={p0,p2,…,p24},設(shè)第i個(gè)關(guān)節(jié)點(diǎn)pi坐標(biāo)記為(xi,yi),為提取t時(shí)刻靜止姿態(tài)骨架關(guān)節(jié)點(diǎn)相對(duì)位置作為空間特征F1,本文選取p8作為中心點(diǎn),計(jì)算p3、p4、p6、p7、p11、p14到p8歐氏距離E,因?yàn)樗さ惯^(guò)程中這6個(gè)關(guān)節(jié)點(diǎn)相對(duì)p8的位置變化最為明顯,最有代表性.平面兩點(diǎn)(x1,y1)與(x2,y2)歐氏距離公式計(jì)算如下:
E=(x2-x1)2+(y2-y1)2
(3)
則F1可表示為這6對(duì)關(guān)節(jié)點(diǎn)之間歐氏距離E的集合如公式(4)所示,其中i表示骨架關(guān)節(jié)點(diǎn)序號(hào),對(duì)應(yīng)圖2中0-24個(gè)關(guān)節(jié)點(diǎn),Epi-p8表示關(guān)節(jié)點(diǎn)pi到關(guān)節(jié)點(diǎn)p8的歐式距離.
F1={Epi-p8|i=3,4,6,7,11,14}
(4)
真實(shí)場(chǎng)景中人體摔倒的方向無(wú)法確定,但大致有3種情況:沿視頻畫(huà)面水平兩個(gè)方向上的摔倒、正對(duì)攝像頭或背對(duì)攝像頭方向的摔倒和剩余任意方向的摔倒,不同摔倒方向上人體姿態(tài)變化有所不同.對(duì)于第一種情況,摔倒過(guò)程中,腿部彎曲會(huì)使大腿與小腿間角度Ang1先變大后變小,變化較為明顯;人體處于直立狀態(tài)時(shí),背部與腿部基本在一條線(xiàn)上,而發(fā)生摔倒時(shí),背部與大腿間角度Ang2逐漸增大后減?。涣硗獗巢肯蛄颗c水平方向向量之間的角度Ang3,由直立接近90°到最終“躺姿”的過(guò)程中逐漸增大,提取上述空間特征較為重要.記背部向量為Cback、左右大腿向量Clbleg、Crbleg,左右小腿向量分別為Clsleg、Crsleg,水平方向向量為Chorizon,垂直方向向量為Cvertical,表示如下:
Cback=(p1,p8)
Chorizon=(1,0)
Cvertical=(0,1)
Clbleg=(p12,p13)
Crbleg=(p9,p10)
Clsleg=(p13,p14)
Crsleg=(p10,p11)
兩向量a→與b→夾角A計(jì)算公式如下:
A=arccosa→·b→|a→|·|b→|∈[0,π]
(5)
第1種情況下腿部運(yùn)動(dòng)方向基本一致,選擇未被遮擋肢體參與計(jì)算.此處左右腿不做區(qū)分,僅以左腿向量舉例,角度計(jì)算公式如下:
Ang1=arccosClbleg·Clsleg|Clbleg|·|Clsleg|
(6)
Ang2=arccosCback·Clbleg|Cback|·|Clbleg|
(7)
Ang3=arccosCback·Chorizon|Cback|·|Chorizon|
(8)
對(duì)于第2種情況,背對(duì)攝像頭摔倒過(guò)程中Ang3變化不大;正對(duì)攝像頭摔倒時(shí),Ang1、Ang2、Ang3基本不變且小腿向量會(huì)被大腿向量遮擋,而人在摔倒時(shí)會(huì)下意識(shí)使用胳膊撐地保護(hù)身體,胳膊由直立行走時(shí)基本下垂的狀態(tài)變得彎曲,該情況下,左右肘部彎曲的角度Ang4、Ang5較為明顯.由于兩只胳膊支撐動(dòng)作各異,需分別計(jì)算,記Ctlarm表示左肘至左肩部分,Cblarm表示左肘至左腕部分,Ctrarm表示右肘至右肩部分,Cbrarm表示右肘至右腕部分,即:
Ctlarm=(p6,p5)
Cblarm=(p6,p7)
Ctrarm=(p3,p2)
Cbrarm=(p3,p4)
則Ang4、Ang5計(jì)算公式如下:
Ang4=arccosCtlarm·Cblarm|Ctlarm|·|Cblarm|
(9)
Ang5=arccosCtrarm·Cbrarm|Ctrarm|·|Cbrarm|
(10)
另外,該方向上骨架高寬比對(duì)于摔倒動(dòng)作的識(shí)別很有意義,身體由直立到摔倒的過(guò)程,骨架高寬比值隨著摔倒動(dòng)作的進(jìn)行,會(huì)發(fā)生明顯變化.考慮攝像頭高度問(wèn)題,采集視頻中骨架高寬比變化過(guò)程不盡相同.攝像頭較高時(shí),骨架高寬比由接近于1或稍大于1的值逐漸增大到遠(yuǎn)大于1;攝像頭較低時(shí),骨架高寬比由遠(yuǎn)大于1的值逐漸減小到接近于1或小于1.計(jì)算骨架高寬比為Phw作為空間特征F2,如公式(11)所示,其中Jy_Max、Jy_Min分別代表關(guān)節(jié)點(diǎn)中y坐標(biāo)最大、最小值,Jx_Max、Jx_Min分別代表關(guān)節(jié)點(diǎn)中x坐標(biāo)最大、最小值.
F2=Phw=Jy_Max-Jy_MinJx_Max-Jx_Min
(11)
最后一種情況,摔倒過(guò)程中Ang1、Ang3變化仍明顯,Ang4、Ang5只在接近“躺”姿狀態(tài)下有所變化,Ang2變化不明顯.該情況下小腿向量、背部向量與垂直方向向量Cvertical之間夾角逐漸增大,因此將計(jì)算該情況下Cback、Clsleg與Cvertical間夾角Ang6、Ang7作為空間特征描述,同樣左右小腿運(yùn)動(dòng)方向基本一致,不做區(qū)分,選擇未被遮擋肢體參與計(jì)算.此處僅以左小腿向量舉例,角度計(jì)算公式如下:
Ang6=arccosCback·Cvertical|Cback|·|Cvertical|
(12)
Ang7=arccosClsleg·Cvertical|Clsleg|·|Cvertical|
(13)
F3={Angi|i=1,2,3,…,7}
(14)
公式(14)為空間特征F3表示,其中7個(gè)角度與描述對(duì)應(yīng)關(guān)系如表1所示.
表1 角度說(shuō)明Table 1 Angles description
對(duì)于t個(gè)連續(xù)時(shí)刻構(gòu)成序列長(zhǎng)度為T(mén)的骨架序列,空間特征Fspatial可表示為:
Fspatial={Ftspatial|t=1,2,…,T}
(15)
視頻中連續(xù)多幀對(duì)應(yīng)骨架關(guān)節(jié)點(diǎn)數(shù)據(jù)構(gòu)成了骨架動(dòng)作序列,如何選擇一種特征來(lái)描述隨時(shí)間動(dòng)態(tài)變化的骨架序列數(shù)據(jù)也是本文要解決的問(wèn)題.隨著時(shí)間變化,同一關(guān)節(jié)點(diǎn)在空間上的位置變化信息,構(gòu)成了該關(guān)節(jié)點(diǎn)的運(yùn)動(dòng)軌跡,相鄰時(shí)刻關(guān)節(jié)點(diǎn)的位移變化就近似代表了該關(guān)節(jié)點(diǎn)的運(yùn)動(dòng)特征,但考慮到同一動(dòng)作被拍攝目標(biāo)距離攝像頭遠(yuǎn)近不同,計(jì)算相鄰時(shí)刻關(guān)節(jié)點(diǎn)位移距離特征存在較多噪聲,同一動(dòng)作計(jì)算出來(lái)的時(shí)序特征可能相差較大.另外,老年人普遍行動(dòng)緩慢,摔倒過(guò)程相比于青年人會(huì)持續(xù)更長(zhǎng)的時(shí)間,相鄰幀動(dòng)作間隔會(huì)更長(zhǎng),為體現(xiàn)摔倒過(guò)程前后幀姿態(tài)差異性,本文選取前后幀肢體夾角變化F4及高寬比變化率F5作為t時(shí)刻時(shí)序特征,即Fttiming=concatenate(F4,F(xiàn)5)∈1×KT,其中F4∈1×K4,F(xiàn)5∈1×K5,KT=K4+K5.
經(jīng)上文分析,整個(gè)摔倒過(guò)程中Ang1-7變化較為明顯,通過(guò)計(jì)算t-1與t時(shí)刻Ang1-7對(duì)應(yīng)角度差值來(lái)有效描述摔倒過(guò)程中t時(shí)刻姿態(tài)的動(dòng)態(tài)變化特征.角度差計(jì)算公式如下:
ΔAng=Angt-Angt-1
(16)
ΔAng值的大小能夠表明某一動(dòng)作指定肢體運(yùn)動(dòng)幅度的大小,不同動(dòng)作涉及不同身體部位,而不同身體部位運(yùn)動(dòng)情況也是不一樣的.相鄰時(shí)刻ΔAng值越大表明肢體間相對(duì)運(yùn)動(dòng)越快,反之則相對(duì)緩慢.ΔAng值的正負(fù)包含著前后時(shí)刻肢體運(yùn)動(dòng)方向信息,隨著動(dòng)作的進(jìn)行,ΔAng值為正表明該肢體朝著夾角越來(lái)越大的方向運(yùn)動(dòng);ΔAng接近于零表明該肢體相對(duì)其他肢體的夾角基本不變;ΔAng為負(fù)表明該肢體朝著夾角縮小的方向運(yùn)動(dòng).t時(shí)刻角度變化特征F4可表示為:
F4={ΔAngi|i=1,2,3,…,7}
(17)
人體由直立狀態(tài)逐漸摔倒,當(dāng)前幀高寬比與前一幀高寬比的比值Qt作為時(shí)序特征F5,可體現(xiàn)人體姿態(tài)幀間變化率.t時(shí)刻,Qt計(jì)算公式如下:
F5=Qt=PthwPt-1hw
(18)
當(dāng)人保持同一個(gè)姿態(tài)時(shí),Q接近1;當(dāng)人正常的坐下或者躺下時(shí),Q緩慢增大;當(dāng)人摔倒時(shí),Q迅速增大.因而人的高寬比變化率可作為識(shí)別摔倒動(dòng)作的依據(jù).
對(duì)于t個(gè)連續(xù)時(shí)刻構(gòu)成序列長(zhǎng)度為T(mén)的骨架序列,時(shí)序特征Ftiming可表示為:
Ftiming={Fttiming|t=1,2,…,T}
(19)
與近年來(lái)基于深度學(xué)習(xí)的特征提取方法相比,本文特征提取方法簡(jiǎn)單直觀(guān),相比于深度學(xué)習(xí)黑盒模型復(fù)雜的設(shè)計(jì),更容易理解;對(duì)于骨架類(lèi)型數(shù)據(jù),深度學(xué)習(xí)對(duì)輸入數(shù)據(jù)進(jìn)行組合、變換獲取高級(jí)特征并非高效,利用先驗(yàn)知識(shí)構(gòu)造的特征也有比較好的效果.
本文的目的是根據(jù)未知視頻中提取的骨架序列數(shù)據(jù)正確識(shí)別出摔倒動(dòng)作,一個(gè)完整的動(dòng)作由一系列靜止姿態(tài)構(gòu)成.姿態(tài)序列是一串相互依賴(lài)的數(shù)據(jù)流,在時(shí)序上,隨著動(dòng)作的進(jìn)行,前中后階段對(duì)應(yīng)靜止姿態(tài)所含有的信息量并非始終如一,基于骨架序列數(shù)據(jù)的動(dòng)作識(shí)別是一個(gè)序列預(yù)測(cè)問(wèn)題,傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Network)及其變體適用于處理序列數(shù)據(jù).1997年提出的長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)LSTM(Long Short Term Memory)雖然解決了傳統(tǒng)RNN梯度爆炸或消失問(wèn)題,但由于模型本身結(jié)構(gòu)較為復(fù)雜,使得模型訓(xùn)練緩慢;2014年提出的門(mén)控循環(huán)單元GRU(Gate Recurrent Unit)改進(jìn)了LSTM,單元內(nèi)部使用更新門(mén)代替輸入門(mén)和遺忘門(mén)來(lái)控制細(xì)胞狀態(tài),參數(shù)量較LSTM少,這種方式的優(yōu)勢(shì)是計(jì)算量得以減小,訓(xùn)練速度會(huì)更快,且模型表達(dá)能力不弱于LSTM.本文網(wǎng)絡(luò)模型如圖3所示,該網(wǎng)絡(luò)模型分為空間注意力模塊、時(shí)間注意力模塊和分類(lèi)模塊.
圖3 STM-GRU網(wǎng)絡(luò)模型Fig.3 STM-GRU network model
RNN能夠?qū)⑤斎胄蛄?x1,…,xt)映射為隱結(jié)點(diǎn)序列(h1,…,ht),因此可以從輸入序列中遞歸學(xué)習(xí)復(fù)雜的時(shí)間動(dòng)態(tài)特征.然而,當(dāng)時(shí)序信息經(jīng)多個(gè)時(shí)間步傳遞后,RNN會(huì)遇到梯度彌散或梯度爆炸問(wèn)題,網(wǎng)絡(luò)參數(shù)更新受阻,從而很難學(xué)到長(zhǎng)時(shí)動(dòng)態(tài)信息.GRU是RNN的一種,也可視為L(zhǎng)STM的變體,其門(mén)控機(jī)制能夠解決上述問(wèn)題.單個(gè)門(mén)控循環(huán)單元結(jié)構(gòu)如圖4所示,包含更新門(mén)zt和重置門(mén)rt,更新門(mén)決定多少隱藏狀態(tài)信息保留到當(dāng)前狀態(tài),重置門(mén)決定過(guò)去的信息需要被遺忘的程度.
GRU的門(mén)結(jié)構(gòu)通過(guò)非線(xiàn)性激活函數(shù)控制.設(shè)σ(x)=(1+e-x)-1表示非線(xiàn)性函數(shù)sigmoid,φ(x)=ex-e-xex+e-x表示雙曲正切非線(xiàn)性函數(shù)tanh.GRU門(mén)控結(jié)構(gòu)中的參數(shù)可由以下公式表示:
zt=σ(Wz·[ht-1,xt])
rt=σ(Wr·[ht-1,xt])
t=φ(W·[rt*ht-1,xt])
ht=(1-zt)*ht-1+zt*t
(20)
其中xt為t時(shí)刻輸入向量,即輸入序列X的第t個(gè)分量,ht-1保存的是前一時(shí)刻隱藏層輸出信息,t為當(dāng)前記憶內(nèi)容,ht為最終輸出,WZ、Wr、W為權(quán)重矩陣,通過(guò)訓(xùn)練習(xí)得.
圖4 GRU內(nèi)部結(jié)構(gòu)圖Fig.4 GRU internal structure
人的動(dòng)作可由關(guān)節(jié)點(diǎn)骨架表示的一系列靜止姿態(tài)演變來(lái)描述.在空間維度上,不同部位關(guān)節(jié)點(diǎn)運(yùn)動(dòng)情況相互影響,具有動(dòng)態(tài)性特點(diǎn),且不同身體部位對(duì)某一動(dòng)作重要性程度明顯不同.對(duì)于“摔倒”動(dòng)作來(lái)說(shuō),相對(duì)于髖關(guān)節(jié)點(diǎn),踝關(guān)節(jié)點(diǎn)、肘關(guān)節(jié)點(diǎn)、腕關(guān)節(jié)點(diǎn)運(yùn)動(dòng)較為明顯,體現(xiàn)在摔倒過(guò)程中與髖節(jié)點(diǎn)間相對(duì)距離發(fā)生較為明顯的大小變化,而其余關(guān)節(jié)點(diǎn)如肩關(guān)節(jié)點(diǎn)、膝關(guān)節(jié)點(diǎn)、臀關(guān)節(jié)點(diǎn)等與髖關(guān)節(jié)點(diǎn)之間的相對(duì)運(yùn)動(dòng)幅度小一點(diǎn).另外人體摔倒的方向無(wú)法確定,不同方向下哪些關(guān)節(jié)間角度變化較為明顯,哪些關(guān)節(jié)間角度變化不明顯;哪種情況下通過(guò)角度無(wú)法區(qū)分摔倒、直立與坐下動(dòng)作,需提取別的特征,都需要考慮在內(nèi).然而為所有特征都賦予相同權(quán)重的做法是不合理的,一些情況下某一特征不能提供足夠的區(qū)分度,反而會(huì)對(duì)摔倒的識(shí)別帶來(lái)干擾,因此本文提出空間注意力模塊為每種特征自動(dòng)分配不同權(quán)重,聚焦于高信息量的摔倒特征,使得模型獲取更多所需要關(guān)注部位的細(xì)節(jié)信息,而不單純依賴(lài)簡(jiǎn)單的內(nèi)容向量,重視關(guān)鍵部位,降低對(duì)其他部位的關(guān)注度,抑制無(wú)用信息.空間注意力模塊包含GRU層、空間注意力層、全連接層和tanh激活單元,如圖3所示.
圖5 空間注意力計(jì)算圖Fig.5 Spatial attention calculation graph
空間注意力計(jì)算過(guò)程如圖5所示,t時(shí)刻,2.2節(jié)所述空間特征Ftspatial=(ft,1,ft,2,…,ft,KS)t對(duì)應(yīng)分?jǐn)?shù)st=(st,1,st,2,…,st,KS)t由以下加性模型計(jì)算:
st=Us·tanh(Ws·[hst-1,F(xiàn)tspatial]+bs)+bus
(21)
其中,hst-1為上一時(shí)刻GRU輸出,Us、Ws為可學(xué)習(xí)權(quán)重參數(shù),bs、bus為偏置項(xiàng).則t時(shí)刻空間特征注意力分布計(jì)算公式為:
αt,k=exp(st,k)∑KSi=1exp(st,i)
(22)
相當(dāng)于對(duì)分?jǐn)?shù)進(jìn)行了SoftMax正則化處理.對(duì)于某一特征而言,計(jì)算αt,k所得分?jǐn)?shù)越高表明該特征對(duì)識(shí)別該動(dòng)作提供的價(jià)值越大.經(jīng)空間注意力模塊處理后,空間特征為F′spatial={Ft′spatial|t=1,2,…,T},其中Ft′spatial=(f′t,1,f′t,2,…,f′t,KS)t,f′t,k=αt,k·ft,k.
完整的動(dòng)作大致可分為開(kāi)始、中間和結(jié)束3個(gè)階段,在時(shí)間維度上體現(xiàn)在視頻幀的重要性不同.如“坐下”動(dòng)作,開(kāi)始階段接近“站立”的姿態(tài)并不能為識(shí)別“坐下”動(dòng)作提供足夠有價(jià)值的信息,而中間階段“彎腰”姿態(tài)和結(jié)束階段坐在椅子上的姿態(tài)對(duì)于“坐下”動(dòng)作的識(shí)別來(lái)說(shuō)就非常重要;再如“摔倒”動(dòng)作會(huì)經(jīng)歷一個(gè)由慢到快的過(guò)程,開(kāi)始動(dòng)作幅度較小,接近于“站立”或“彎腰”,隨著時(shí)間進(jìn)行,中間和結(jié)束階段,腿部及肘部彎曲逐漸明顯,身體姿態(tài)傾斜趨于“躺”姿.摔倒前身體較為直立的姿態(tài)與摔倒動(dòng)作關(guān)聯(lián)性不大,反而可能對(duì)該動(dòng)作的識(shí)別過(guò)程帶來(lái)干擾,可見(jiàn)身體姿態(tài)在不同階段所蘊(yùn)含的信息量并不是對(duì)等的,不同的人摔倒過(guò)程也不一樣.因此,本文提出時(shí)間注意力模塊使得模型選擇性地關(guān)注幀序列不同階段中的關(guān)鍵幀,由幀選擇門(mén)計(jì)算時(shí)間注意力權(quán)重θ,為不同幀分配不同權(quán)重以選擇該摔倒動(dòng)作對(duì)應(yīng)的關(guān)鍵幀.時(shí)間注意力模塊包含GRU層、時(shí)間注意力層、全連接層和Relu激活單元,如圖3所示.
圖6 時(shí)間注意力計(jì)算圖Fig.6 Temporal attention calculation graph
時(shí)間注意力計(jì)算過(guò)程如圖6所示,t時(shí)刻,2.3節(jié)所述時(shí)間特征Fttiming=(ft,1,ft,2,…,ft,KT)t對(duì)應(yīng)幀選擇門(mén)激活函數(shù)計(jì)算公式為:
θt=ReLU(WT·[hTt-1,F(xiàn)ttiming]+bT)
(23)
其中,hTt-1為上一時(shí)刻GRU輸出,WT為學(xué)習(xí)權(quán)重參數(shù),bT為偏置項(xiàng),幀選擇門(mén)控制著不同幀對(duì)之后動(dòng)作識(shí)別的重要程度.t時(shí)刻視頻幀注意力值由以下點(diǎn)積模型計(jì)算:
vt=θt·Fttiming
(24)
對(duì)于步長(zhǎng)為T(mén)的幀序列,t時(shí)刻視頻幀權(quán)重由SoftMax對(duì)注意力值進(jìn)行數(shù)制轉(zhuǎn)換,公式如下:
βT,t=exp(vt)∑Ti=1exp(vi)
(25)
經(jīng)時(shí)間注意力模塊處理后,時(shí)序特征F′timing={Ft′timing|t=1,2,…,T},其中Ft′timing=(f′t,1,f′t,2,…,f′t,KT)t,f′t,k=βT,t·ft,k.
對(duì)時(shí)空注意力模塊的輸出張量進(jìn)行信息融合能全面描述動(dòng)作骨架序列的時(shí)間特征和空間特征,為此需要對(duì)時(shí)空特征進(jìn)行特征融合操作.常見(jiàn)的融合方式有Max、Mean和Concat,其中Max方式會(huì)逐元素比較取較大值,丟棄較小值,空間特征與時(shí)間特征量綱不同,舍棄較小值不合理且會(huì)丟失部分信息;Mean方式會(huì)逐元素計(jì)算時(shí)空張量的均值,相當(dāng)于對(duì)時(shí)空張量各加0.5的權(quán)重系數(shù)相乘后相加,要求時(shí)空張量形狀必須相同,而本模型時(shí)空張量形狀并非嚴(yán)格相同,不適用于該方式;Concat方式將時(shí)空張量進(jìn)行拼接,增加了描述動(dòng)作的張量維數(shù),將時(shí)空注意力模塊輸出信息結(jié)合互補(bǔ),為后續(xù)分類(lèi)模塊提供多方位細(xì)節(jié)信息.本文在實(shí)驗(yàn)部分將對(duì)比上述幾種融合方式對(duì)摔倒動(dòng)作識(shí)別率影響.Concat融合后:
Ffusion=[Fout_s,F(xiàn)out_t]
(26)
其中Fout_s、Fout_t分別代表時(shí)空注意力模塊輸出張量,F(xiàn)out_s、Fout_t∈1×D,D為時(shí)空注意力模塊輸出張量維度.Ffusion∈1×2D,表示連續(xù)T幀骨架序列融合層特征張量輸出.
分類(lèi)模塊加入Dropout層使得模型在訓(xùn)練過(guò)程中以一定概率隨機(jī)暫時(shí)丟棄一些神經(jīng)元,避免模型過(guò)擬合.使用Adam 優(yōu)化器訓(xùn)練最優(yōu)模型,適合求解帶有大規(guī)模數(shù)據(jù)或參數(shù)的問(wèn)題,有很高的計(jì)算效率和較低的內(nèi)存需求.損失函數(shù)為二分類(lèi)交叉熵?fù)p失函數(shù)配合輸出層激活函數(shù)Sigmoid,公式如下:
L=-1N∑Ni[ilogyi+(1-i)log(1-yi)]
(27)
其中,N為樣本數(shù),i為樣本i的標(biāo)簽,正類(lèi)為1,負(fù)類(lèi)為0,yi為預(yù)測(cè)為正的概率.
本實(shí)驗(yàn)的硬件環(huán)境為GeForce GTX970*2顯卡、8G DDR3*4內(nèi)存的PC,軟件平臺(tái)為64位Ubuntu16.04.采用Python 3.7進(jìn)行編程,使用Openpose 1.4提取骨架關(guān)節(jié)點(diǎn)數(shù)據(jù),利用Keras 2.3.1深度學(xué)習(xí)框架進(jìn)行網(wǎng)絡(luò)搭建、訓(xùn)練和測(cè)試,后端引擎為T(mén)ensorFlow 2.1.0.
自建摔倒數(shù)據(jù)集包含行走、跑步、拍手及摔倒動(dòng)作組成,其中的摔倒視頻由4個(gè)不同受試者模擬老人摔倒在米字型8個(gè)方向上錄制提供,分辨率為800×600,分別在1.8m和2m兩種攝像頭高度條件下各采集100個(gè)視頻共200條視頻流,其余3種動(dòng)作視頻取自KTH數(shù)據(jù)集,該數(shù)據(jù)集視頻場(chǎng)景中的背景、攝像機(jī)位置相對(duì)固定,遠(yuǎn)近、視角、動(dòng)作方向不同,有一定挑戰(zhàn)性.除摔倒外其余3種動(dòng)作作為非摔倒樣本,所有樣本的80%作為訓(xùn)練集,20%作為測(cè)試集.
本文選用準(zhǔn)確率(Accuracy)和漏警率(MA)作為摔倒模型評(píng)價(jià)標(biāo)準(zhǔn),具體計(jì)算公式如下:
Accuracy=TP+TNP+N
(28)
MA=FNTP+FN
(29)
實(shí)驗(yàn)選取摔倒動(dòng)作為正樣本,其余動(dòng)作為負(fù)樣本.公式中真正例TP(True Positive)表示被模型預(yù)測(cè)為摔倒的摔倒樣本;真負(fù)例TN(True Negative)表示被模型預(yù)測(cè)為非摔倒的非摔倒樣本;P、N分別表示正、負(fù)樣本;假負(fù)例FN(False Negative)表示被模型預(yù)測(cè)為非摔倒的摔倒樣本.在摔倒識(shí)別應(yīng)用場(chǎng)合下,模型Accuracy要盡可能高,MA要盡可能小,因?yàn)樗さ拱l(fā)生時(shí)未檢測(cè)出來(lái)可能有很?chē)?yán)重的后果.
在本文模型中,GRU隱藏單元數(shù)為128,時(shí)空注意力模塊全連接層神經(jīng)元數(shù)均為64,分類(lèi)模塊第1個(gè)全連接層神經(jīng)元數(shù)為32,第2個(gè)全連接層神經(jīng)元數(shù)為動(dòng)作類(lèi)別個(gè)數(shù)4.其余參數(shù)配置如表2所示.
表2 模型參數(shù)Table 2 Model parameters
圖7為其中一位受試者在米字8個(gè)方向上摔倒視頻中的某一幀畫(huà)面Openpose識(shí)別骨架效果.
圖7 骨架識(shí)別效果Fig.7 Skeleton recognition result
實(shí)驗(yàn)首先對(duì)比了時(shí)序特征F4選擇距離與角度、提取空間特征F1前關(guān)節(jié)點(diǎn)坐標(biāo)歸一化與否及Mean、Max、Concat這3種融合方式對(duì)“摔倒”動(dòng)作識(shí)別準(zhǔn)確率的影響,如表3所示.顯然F4提取角度而非距離特征有效規(guī)避了尺度問(wèn)題,在3種融合方式下識(shí)別準(zhǔn)確率分別提高了4.22%、8.13%、5.27%;提取空間特征F1前,對(duì)關(guān)節(jié)點(diǎn)各坐標(biāo)做歸一化處理,使得F1不受畫(huà)面中目標(biāo)位置變化的干擾,Concat方式下提高了1.49%;Concat方式將時(shí)空注意力模塊輸出特征張量進(jìn)行拼接,不會(huì)損失信息且融合后的信息更加豐富,有助于模型習(xí)得更好的參數(shù),相較于Mean、Max準(zhǔn)確率高出了1.44、3.77個(gè)百分點(diǎn).
表3 特征及融合方式對(duì)摔倒動(dòng)作識(shí)別率影響Table 3 Influence of feature and fusion method on fall action recognition rate
實(shí)驗(yàn)測(cè)試了不同幀序列長(zhǎng)度length對(duì)模型識(shí)別準(zhǔn)確率的影響.圖8表明,length從20至46逐漸增大的過(guò)程模型識(shí)別準(zhǔn)確率上升較明顯,準(zhǔn)確率最高時(shí)對(duì)應(yīng)幀序列長(zhǎng)度為46,達(dá)到了97.32%.本文摔倒視頻采集幀率為25幀/秒,說(shuō)明1.84s為描述老年人摔倒動(dòng)作的最佳時(shí)長(zhǎng),老年人行動(dòng)緩慢,1.4s以下不足以包含完整摔倒過(guò)程.length大于50即2s以上模型準(zhǔn)確率緩慢降低,是因?yàn)樗さ购筇稍诘厣系男蛄袝?huì)對(duì)摔倒識(shí)別帶來(lái)一定干擾.
圖8 準(zhǔn)確率隨骨架序列長(zhǎng)度變化曲線(xiàn)Fig.8 Accuracy curve with different sequence length
表4 不同方向模型識(shí)別結(jié)果Table 4 Model recognition results in different directions
實(shí)驗(yàn)分別計(jì)算圖7所示8個(gè)方向上模型摔倒識(shí)別準(zhǔn)確率和漏警率,結(jié)果如表4所示.水平向左、向右摔倒識(shí)別率最高,漏警率最低,因?yàn)樵摲较蛳翺penpose骨架數(shù)據(jù)提取完整,姿態(tài)時(shí)空特征變化明顯;而正對(duì)、背對(duì)攝像頭識(shí)別準(zhǔn)確率最低、漏警率最高,因?yàn)槟P团紶枙?huì)將摔倒姿態(tài)與站立姿態(tài)混淆,未檢測(cè)出摔倒動(dòng)作.
不同摔倒情況下,空間注意力模塊計(jì)算各空間特征的注意力值,從而為不同的空間特征分配不同權(quán)重;時(shí)間注意力模塊計(jì)算每一幀注意力值,為摔倒階段關(guān)鍵幀賦予更多權(quán)重.圖9表明,時(shí)間注意力模塊和空間注意力模塊相比于未使用注意力機(jī)制識(shí)別準(zhǔn)確率分別提升了2.66和3.93個(gè)百分點(diǎn),同時(shí)使用時(shí)空注意力模塊使得模型對(duì)摔倒動(dòng)作識(shí)別準(zhǔn)確率提升了9.04個(gè)百分點(diǎn),結(jié)果表明本文時(shí)空注意力模塊有助于后續(xù)分類(lèi)模塊進(jìn)行動(dòng)作識(shí)別.
圖9 時(shí)空注意力模塊有效性Fig.9 Effectiveness of spatial-temporal module
損失函數(shù)值與準(zhǔn)確率隨訓(xùn)練迭代輪數(shù)的變化曲線(xiàn)如圖10所示.
圖10 損失和準(zhǔn)確率變化曲線(xiàn)Fig.10 Loss & accuracy curve
使用訓(xùn)練集的所有數(shù)據(jù)對(duì)模型進(jìn)行一次完整的訓(xùn)練,稱(chēng)為一個(gè)epoch.本實(shí)驗(yàn)將數(shù)據(jù)集3665個(gè)樣本中的2932個(gè)用作訓(xùn)練集,733個(gè)用作測(cè)試集,訓(xùn)練集中再劃分出586個(gè)樣本作為驗(yàn)證集.圖10顯示當(dāng)模型迭代訓(xùn)練到第27輪時(shí),訓(xùn)練與驗(yàn)證曲線(xiàn)損失值都不再有明顯下降,之間相差較小,且訓(xùn)練損失值接近于0,達(dá)到了理想的擬合.開(kāi)始時(shí)模型在訓(xùn)練集上的表現(xiàn)稍差于驗(yàn)證集,是因?yàn)橛?xùn)練accuracy是在每輪epoch上測(cè)量,而驗(yàn)證accuracy是在經(jīng)過(guò)一輪epoch后測(cè)量而得;前15輪模型優(yōu)化速度較快,之后準(zhǔn)確率曲線(xiàn)趨于收斂,驗(yàn)證曲線(xiàn)接近稍低于訓(xùn)練曲線(xiàn),值基本保持不變,表明模型無(wú)過(guò)擬合問(wèn)題,各項(xiàng)參數(shù)經(jīng)訓(xùn)練達(dá)到最優(yōu).
本文基于人體摔倒過(guò)程分析,提出適用于骨架序列的人體動(dòng)作特征表示,從時(shí)空兩個(gè)維度上提取特征同時(shí)做了歸一化處理,解決了尺度、位移變化問(wèn)題;另外STM-GRU模型結(jié)合門(mén)控循環(huán)單元與注意力機(jī)制,對(duì)時(shí)空特征分別加權(quán)處理,使得模型關(guān)注于動(dòng)作序列關(guān)鍵特征和關(guān)鍵幀,提高了動(dòng)作識(shí)別準(zhǔn)確率.在自建數(shù)據(jù)集上的對(duì)比和相容實(shí)驗(yàn)結(jié)果表明本文提出的摔倒識(shí)別方法在不同場(chǎng)景、方向和不同個(gè)體情況下都有較高的識(shí)別準(zhǔn)確率.