金瑋, 孟君, 黃宇飛, 何萍
(上海交通大學醫學院附屬新華醫院, 信息管理部, 上海 200025)
目前,在世界范圍內住院患者中老年人的比例在逐步提升,而老人跌倒的概率明顯高于其他患者。據統計,在美國每年記錄的352 000例髖部骨折中,約有90%是跌倒導致的且僅有1/4的患者能夠完全康復。本文提出一種基于CNN的人體姿態估計方法來實時檢測摔倒并及時發出告警。
卷積神經網絡(CNN)是在多層神經網絡的基礎上,在全連接層前加入了部分連接的卷積層和池化層,使其增加了特征學習的功能并實現深度學習[1-2]。
CNN的基本組成包括輸入層、卷積層、池化層、激活層以及輸出層。卷積層是 CNN的核心,其是由多個卷積單元組成,目的是提取圖像的特征;激活層具有非線性分割能力[3];池化層也稱為下采樣層,主要目的在于保持大部分重要信息的同時縮小卷積層提取特征后的參數,通??煞譃樽畲蟪鼗推骄鼗?。
如圖1所示,OpenPose是基于卷積神經網絡和監督學習的一種自底向上的網絡模型。其上分支網絡用于預測人體關節點的置信度P,下分支網絡用于預測人體部分親和字段M。各階段網絡前向傳播公式如下:
P1=ρ1(F),t=1
M1=φ1(F),t=1
Pt=ρt(F,Pt-1,Mt-1),?t≥2
Mt=φt(F,Pt-1,Mt-1),?t≥2
(1)
其中,F為由VGG網絡所得到的圖像特征,t代表第t級聯網絡。通過多級網絡級聯可以使系統提高置信度P和M,從而提高識別精度。

圖1 OpenPose 網絡結構
人體姿態估計是以RGB圖片或視頻中檢測出人體的一些關鍵點作為基本特征,構造出關節向量以及向量間的夾角與長度比值,通過這些特征信息來描述骨骼脈絡,進而判斷人體姿態。
在醫院中,最常見的監測姿態是跌倒姿態,跌倒監測系統工作流程見圖2。其通過攝像頭獲取視頻圖像數據,然后利用高速通信技術將數據傳送至處理器端,最后通過本文提出的人體姿態識別方法進行實時計算與分類識別出不同的人體姿態。當識別出人員存在跌倒姿態時,自動發出警告。因此,跌倒監控系統的核心是跌倒姿態的監測。

圖2 醫院跌倒監測系統工作流程圖
本文跌倒姿態檢測算法主要分為人體關鍵點提取、人體姿態分類以及人體姿態分析3部分,如圖3所示。

圖3 跌倒檢測算法流程圖
本文采用OpenPose[4-5]姿態估計算法提取的25個關鍵點,如圖4所示。圖5為該算法提取出的前10種骨架向量的特征重要程度。其中,f56指人體軀干與左大腿長度比值,f57指軀干與右大腿長度比值,f70指軀干與右小腿的向量夾角。

圖4 OpenPose提取到的25關鍵

圖5 特征重要程度
在獲取人體關鍵節點后,需要對關鍵點進行分類以確定人體所處的姿態,最終對姿態進行判斷。分類的作用是利用給定的類別與已知的訓練數據集來學習分類規則,并構建一個分類函數或分類模型,然后對未知數據進行預測。本文采用XGBoost[2]分類器來進行人體關鍵點的分類,其在GBDT算法基礎上將損失函數通過二階泰勒展開式做了近似,并對正則項進行了改進,使其更加高效、靈活和便攜。文中通過分類器將人體關鍵點分為正常狀態、跌倒狀態、平躺狀態以及其他狀態,如圖6所示。

(a) 正常狀態

(c) 平躺狀態
在獲取人體姿態分類后,需要判斷人體此時所處的狀態。由于每一幀圖像可能同時存在多個人,因此會導致同一幀圖像出現多個人體姿態,從而對最終的跌倒姿態檢測產生影響。為此其需要提取每一幀圖像中的關鍵狀態,即每一幀圖像中與跌倒姿態最接近的狀態,而對于其他狀態無需過度關注。文中4種姿態的重要程度按從大到小進行排序可表示為
pfalling>play>pother>pnormal
(2)
由于當一幀圖像中出現跌倒姿態時,發生跌倒事件的概率最大,因此跌倒狀態的重要程度最高;而平躺狀態下出現跌倒的可能性較大,故其重要程度次之;由于正常狀態最為常見,所以其重要程度排名最低。
由于跌倒不是一個單一行為,而是一個從正常到倒地的動態過程,因此采用一個單一狀態來判別是否跌倒容易出現誤判。本文采用{pfalling,play}序列來判斷是否存在跌倒事件,即當前一幀圖像的關鍵姿態為跌倒,后一幀的關鍵姿態為平躺時,則可認為發生了跌倒事件。
實驗情況為在單人與多人情況下的正常行走、半蹲、前倒、后倒和隨機方向側倒,實驗者共3人。該算法只檢測出人體的骨架圖與實驗者的體型、年齡、性別等因素無關。為了測試算法的兼容性,本文參與實驗的實驗者身高均不相等。另外,為了評估算法的魯棒性,實驗還模擬醫院環境設有柜臺、識別閘機、椅子等物體。實驗樣本情況,如表1所示。

表1 實驗樣本說明
為了提高算法的通用性,本文分別研究了單人與多人狀態下的跌倒檢測效果,如圖7和圖8所示。

(a) 正常行走

(a) 正常行走
在處理分類問題時,常用的模型分類效果評價指標主要有敏感度、特異度、準確率、精確率、召回率和F得分,其均可通過混淆矩陣計算得出。本實驗得出的測試集混淆矩陣,如圖9所示。
效果評價采用文獻[4]給出的度量標準,由混淆矩陣可得:TP=176;FP=2;TN=614;FN=0。
該模型的各項評價指標,如表2所示。

圖9 測試集的混淆矩陣

表2 模型的評價指標
在表2中,準確度為跌倒被檢測出來的概率,其值越高,分類效果越優;敏感度為發生跌倒且被判斷為跌倒的概率;特異度為未跌倒且被判斷為未跌倒的概率,兩者越高,誤判率越低;F1-score是精確度和召回率的調和平均,其值越大,表明模型質量越高。由表2中數據可知,該算法的誤判率較低,分類效果和模型質量較好。
本文在使用相同訓練集和測試集的情況下,分別測試了Hu J、Ren W、Kolivand H等[6-8]提出的跌倒算法識別準確度,并與文中結果進行比較,結果如表3所示。從表3可以看出,本文算法的識別準確度最高。
本文基于OpenPose的關鍵點提取以及XGBoost分類器的跌倒檢測方法,提出了一種人體姿態識別方法。在醫院環境下,以實時的監控視頻作為數據源,利用OpenPose結合XGBoost分類器進行人體姿態估計。實驗結果顯示,本文所提出方法的準確度為99.75%、敏感度為100%、特異度為99.68%,可以準確地檢測出跌倒動作,且應用簡單、實時性良好。