伏娜娜, 劉大銘, 程曉婷, 景云云, 張馨芳
(寧夏大學(xué) 物理與電子電氣工程學(xué)院,寧夏 銀川 750021)
隨著老年人口數(shù)量的增多,如何對獨居老年人進行自動摔倒監(jiān)測是亟待解決的問題。目前,在室內(nèi)摔倒監(jiān)測領(lǐng)域中,基于可穿戴設(shè)備和基于環(huán)境傳感器等主流監(jiān)測方法面臨著設(shè)備復(fù)雜、成本較高等問題[1,2]。為此,引入人體姿態(tài)估計,提出了一種基于2D視頻的摔倒監(jiān)測算法。Fang H S等人[3]提出了區(qū)域多人姿態(tài)檢測(regional multiperson pose estimation,RMPE)框架,主要使用沙漏網(wǎng)絡(luò)進行姿態(tài)估計。Newel A等人[4]提出了一種Stacked Hourglass網(wǎng)絡(luò)模型,利用人體16個骨骼關(guān)節(jié)點進行姿態(tài)估計。Zhe C等人[5]提出了OpenPose模型,提出了部分親和力字段(part affinity fields,PAFs)方法,可以將預(yù)測得到的多個關(guān)節(jié)點匹配到不同人的姿態(tài)中,有效解決了多人肢干連接的問題,但OpenPose 模型仍存在很多的不足,例如模型較大,網(wǎng)絡(luò)參數(shù)較多等。隨后相繼提出了很多輕量化的網(wǎng)絡(luò),較為經(jīng)典的有MobileNets[6],ShuffleNet[7]等,這些輕量化網(wǎng)絡(luò)以損失很小的精度為代價來大大減少網(wǎng)絡(luò)的計算量和參數(shù)數(shù)量。
根據(jù)上述分析,為了提高姿態(tài)識別過程中的運算速度和跌倒檢測的準(zhǔn)確率,提出了一種基于輕量級OpenPose模型的跌倒檢測算法。
Yolov5目標(biāo)檢測有部署簡單、速度快等優(yōu)點。本文選擇Yolov5系列中深度最小,特征圖寬度最小的Yolov5s網(wǎng)絡(luò)。Yolov5s網(wǎng)絡(luò)主要由Input,Backbone,Neck,Output四個部分組成,網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。輸入端采用了Mosaic數(shù)據(jù)增強的方式。Backbone結(jié)構(gòu)包含F(xiàn)ocus結(jié)構(gòu)和跨階段局部網(wǎng)絡(luò)(cross stage partial network,CSPNet)。Focus結(jié)構(gòu)包含切片操作和卷積操作,將原始608×608×3的圖像輸入Focus結(jié)構(gòu),采用切片和卷積操作,變?yōu)?04×304×12的特征圖,再經(jīng)過一次32個卷積核的卷積操作,最終變?yōu)?04×304×32的特征圖[8]。Yolov5s設(shè)計了兩種不同的CSPNet,即CSP1_X結(jié)構(gòu)和CSP2_X結(jié)構(gòu)。CSP1_X應(yīng)用于Backbone主干網(wǎng)絡(luò);CSP2_X應(yīng)用于Neck中,其中,X表示使用殘差組件的個數(shù)。CSPNet通過不同層間的特征信息來獲得更加豐富的特征圖。Neck結(jié)構(gòu)在FPN結(jié)構(gòu)的基礎(chǔ)上添加了路徑聚合網(wǎng)絡(luò)(path aggregation network,PAN)結(jié)構(gòu),并采用借鑒CSPNet設(shè)計的CSP2結(jié)構(gòu),加強網(wǎng)絡(luò)特征融合的能力。輸出端使用了GIOU_Loss作為損失函數(shù),增加了相交尺度的衡量,緩解了IOU_Loss無法優(yōu)化兩個框不相交的問題。
圖1 Yolov5s網(wǎng)絡(luò)結(jié)構(gòu)
姿態(tài)估計的可靠性直接影響到后面跌倒檢測的性能和穩(wěn)定性,本文選擇基于PAFs的OpenPose[5]姿態(tài)估計來提取人體的骨骼關(guān)節(jié)點[9],根據(jù)實時獲取的骨骼關(guān)節(jié)點信息進行后續(xù)的人體跌倒動作檢測工作。OpenPose模型的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 OpenPose網(wǎng)絡(luò)結(jié)構(gòu)
OpenPose網(wǎng)絡(luò)結(jié)構(gòu)中的卷積塊C(由3個連續(xù)的3×3卷積核組成的網(wǎng)絡(luò))代替了原始方法中的7×7卷積核。圖像經(jīng)過VGG19網(wǎng)絡(luò)前10層后得到特征圖F(feature maps),然后特征圖F作為后面卷積神經(jīng)網(wǎng)絡(luò)的輸入。人體姿態(tài)估計有多個階段雙分支的卷積神經(jīng)網(wǎng)絡(luò),在每個階段,上支線均用來預(yù)測關(guān)節(jié)熱度圖St,下支線均用來預(yù)測關(guān)節(jié)親和域Lt,在每個階段的后面,兩個分支的預(yù)測輸出融合前端的F輸入到下個階段進行預(yù)測,最終得到整個網(wǎng)絡(luò)的關(guān)節(jié)熱度圖和關(guān)節(jié)親和域。
其中,ρ1和φ1為第一階段用于推理的卷積網(wǎng)絡(luò),分別對圖像特征F進行處理,生成關(guān)節(jié)熱度圖S1=ρ1(F)和關(guān)節(jié)親和域L1=φ1(F)。ρ1,ρt,φ1和φt均由5個卷積塊和2個1×1的卷積組成。每個階段的輸入為圖像特征F和前一階段的預(yù)測結(jié)果,然后使用本階段的卷積網(wǎng)絡(luò)分別預(yù)測出本階段的關(guān)節(jié)熱度圖和關(guān)節(jié)親和域,如式(1)、式(2)
St=ρt(F,St-1,Lt-1),?t≥2
(1)
Lt=φt(F,St-1,Lt-1)
(2)
為了使跌倒檢測可以達到實時效果,本文使用了MobileNets[6]中深度可分離卷積的思想,將原OpenPose模型中特征提取網(wǎng)絡(luò)VGG19中的常規(guī)卷積結(jié)構(gòu)替換為深度可分離卷積結(jié)構(gòu)。與標(biāo)準(zhǔn)卷積相比,這種卷積結(jié)構(gòu)可以極大地減少網(wǎng)絡(luò)模型參數(shù)。輕量級OpenPose網(wǎng)絡(luò)的特征提取網(wǎng)絡(luò)不再是VGG19網(wǎng)絡(luò)的前10層,而是在MobileNetv1[6]網(wǎng)絡(luò)結(jié)構(gòu)上進行調(diào)整后得到的12層網(wǎng)絡(luò),如表1所示。
表1 調(diào)整后的特征提取網(wǎng)絡(luò)結(jié)構(gòu)
其中,第一層是一個傳統(tǒng)卷積(Conv),其他11層均建立在深度可分離卷積(Conv dw)上。Conv dw_7層中的深度卷積擴張系數(shù)(dilation)設(shè)置為2,填充(padding)參數(shù)也為2,其他層的擴張系數(shù)均為1,不填充,所有卷積核的大小為3×3,并且卷積核的數(shù)量隨著層數(shù)的加深而增多。
通過使用輕量級OpenPose模型,大大減少了計算量,可以有效加快運算速度,能夠保證檢測過程的實時性。
輕量級OpenPose模型對人體目標(biāo)檢測模型輸出的每一幀圖片進行姿態(tài)估計,實時獲取包含鼻子、肩膀、膝蓋等18個關(guān)節(jié)點的人體骨架圖,骨架圖如圖3所示。
圖3 人體骨架圖
計算18個骨骼關(guān)鍵點在圖像中的坐標(biāo)(xj,yj),下標(biāo)j表示第j個關(guān)節(jié)點。本文選取關(guān)節(jié)點2(右肩)、關(guān)節(jié)點5(左肩)、關(guān)節(jié)點8(右胯)和關(guān)節(jié)點11(左胯)這4個點,計算這4個關(guān)節(jié)點坐標(biāo)的平均值作為人體中心點的坐標(biāo)值。由于人體在運動過程中,關(guān)節(jié)點的位置在不斷變化,所以,根據(jù)不同幀之間人體關(guān)節(jié)點坐標(biāo)的變化情況,每10幀計算一次人體中心點縱坐標(biāo)的移動速度vy,vy的表達式為式(3)
式中yj10和yj1分別為第j個關(guān)節(jié)點在第十幀和第一幀時的縱坐標(biāo)值;(t10-t1)為這10幀之間的時間差。vy的變化快慢可以反映人體運動的劇烈情況,跌倒屬于劇烈運動,而且跌倒的過程是瞬態(tài)的,因此,根據(jù)vy的變化快慢、動作的屬性以及結(jié)合人體的寬高比(aspect ratio,AR)可進行跌倒判斷。
跌倒檢測算法的主要步驟如下:
1)每10幀計算一次人體中心點縱坐標(biāo)的移動速度vy,如果連續(xù)的vy值在小范圍內(nèi)波動,表示當(dāng)前人體運動不劇烈,例如人站立時,人體不移動,vy不發(fā)生變化。而跌倒行為是突發(fā)的動作狀態(tài),發(fā)生過程快速劇烈,vy變化較大,因此,當(dāng)連續(xù)的vy值在小范圍內(nèi)波動時可以排除跌倒行為。
2)如果移動速度vy大幅度變化,且vy大于一定的閾值vth時,表示當(dāng)前人體運動劇烈。由于同一個跌倒行為不會重復(fù)發(fā)生,而很多其他運動(跑步、跳躍等)是可重復(fù)發(fā)生或持續(xù)發(fā)生的,所以在檢測到移動速度vy周期性或持續(xù)性的變化很大時,可以排除跌倒行為。進行了多次緩慢的跌倒實驗,每次跌倒需要3~4 s,每秒采集25幀圖片,每10幀計算一次中心點的移動速度vy,所以在4 s內(nèi),若連續(xù)檢測到10次以上vy≥vth,并且接下來的時間內(nèi)仍然檢測到vy≥vth時,就判斷vy為持續(xù)性變化很大。在4 s內(nèi),若檢測到vy≥vth和vy 3)當(dāng)vy大幅度變化但不是周期性或持續(xù)性變化時,在4 s內(nèi),若連續(xù)檢測到7~10次vy≥vth之后,持續(xù)檢測到vy 本文選用公共數(shù)據(jù)集MSCOCO 2017中的人體關(guān)鍵點檢測進行人體姿態(tài)估計訓(xùn)練,對人體的18個骨骼關(guān)鍵點進行檢測。用train2017進行訓(xùn)練,用val2017進行驗證。 本文自制了一個人體動作分類的數(shù)據(jù)集,包括7類動作,分別是行走、下蹲、坐在凳子上、彎腰、前倒、后倒和隨機側(cè)倒,各類動作對應(yīng)的骨架圖示例如圖4。每個動作采集15個視頻,每個視頻900幀,一共采集了94 500幀圖片,105段視頻,對采集的每一幀圖片獲取人體的18個骨骼關(guān)鍵點坐標(biāo),獲取的關(guān)鍵點坐標(biāo)按8︰2的比例劃分為訓(xùn)練集和測試集,其中,75 600幀圖片用來訓(xùn)練,18 900幀圖片用來測試。訓(xùn)練與測試所基于的軟硬件平臺如表2所示。 圖4 各類動作相應(yīng)骨架圖示例 表2 軟硬件實驗平臺 本文用單目相機進行了測試實驗,測試包括3種跌倒(fall)動作和4種正常(normal)動作,跌倒動作分別是:向前倒、向后倒和隨機側(cè)倒;正常動作分別是:下蹲、彎腰、行走和坐。實驗測試中,如果檢測到人體跌倒,則顯示fall,否則顯示normal。一共邀請了5名實驗者(3個男生和2個女生),為了使實驗具有更強的說服力,這里選擇實驗者身高體重差異較大,體重范圍為40~75 kg,身高范圍為1.4~1.9 m。每人分別對上述的7種動作各做20次,即測試實驗共做了5×7×20次,其中跌倒有300次,正常動作400次,在家居環(huán)境進行模擬實驗。 實驗中,為了使拍攝角度能夠盡可能覆蓋人體的整個活動范圍,將單目RGB攝像頭固定在距地面1.6 m處,相機的俯視角設(shè)置為30°。圖5是測試實驗中成功檢測到跌倒動作(a)和正常動作(b)的效果圖。表3為測試實驗的具體數(shù)據(jù)結(jié)果。 圖5 實驗結(jié)果 表3 實驗數(shù)據(jù)結(jié)果 由以上的實驗結(jié)果可知,當(dāng)攝像頭在固定位置處時,基于輕量級OpenPose模型的跌倒檢測算法的檢測準(zhǔn)確率平均值達到95.43 %,運行速度最高達到25 fps,對人體各個關(guān)鍵點的識別效果較好,尤其對站立、行走等類型的動作識別效果好,跌倒、下蹲等動作的個別關(guān)鍵點因為遮擋不能很好識別,這也是需要待解決的問題。而在相同配置環(huán)境下,使用OpenPose模型的跌倒檢測算法的運行速度為3.3 fps。輕量級OpenPose模型的文件大小為7.5 M,而OpenPose模型的文件大小為200 M。相比之下,輕量級網(wǎng)絡(luò)大大減少了計算量,使用輕量級網(wǎng)絡(luò)能夠保證跌倒檢測的實時性。 為了驗證算法的有效性,用準(zhǔn)確度Ac(accuracy)[10]、特異度Sp(specifity)[10]和靈敏度Se(sensitivity)[10]三種性能指標(biāo)評估提出算法的性能,并與一些其他的跌倒檢測算法性能進行了對比[11]。三種性能指標(biāo)的計算方式為式(4)~式(6) 不同跌倒檢測算法的對比如表4所示。 表4 不同跌倒檢測算法結(jié)果對比 % 通過表4可知,本文算法有較高的特異度,表明檢測的誤報率低。雖然本文算法的靈敏度和準(zhǔn)確率均低于文獻[13],但是文獻[13]提取人體背景使用幀差法,對環(huán)境要求較高,對噪聲較為敏感,容易受到周圍運動物體的影響。文獻[14]中使用Kinect深度相機,成本比普通RGB相機貴,且體積也大。文獻[10]以相對較多的計算開銷為代價來提升算法性能。文獻[12]容易受光照條件的影響,容易干擾背景建模和目標(biāo)提取。本文方法不受周圍環(huán)境的影響,使用常見的單目RGB攝像頭作為傳感器采集數(shù)據(jù),相比于深度相機有較好的適用性。通過對成本、性能指標(biāo)等的比較,本文方法有存在一定的優(yōu)越性。 從大量的實驗結(jié)果表明:本文算法的準(zhǔn)確率達到了95.43 %,網(wǎng)絡(luò)的運算速度達到了25 fps。使用Yolov5s人體目標(biāo)檢測網(wǎng)絡(luò)提高了識別準(zhǔn)確率,使用輕量化網(wǎng)絡(luò)結(jié)構(gòu)和傳統(tǒng)的全卷積網(wǎng)絡(luò)結(jié)構(gòu)相比,有效減少了運算參數(shù),加快了模型的運算速度。為了更好、更方便地對老年人日?;顒舆M行實時監(jiān)測,可以將模型部署在嵌入式NVIDIA Jetson Xavier nx上,再將嵌入式開發(fā)板安裝在小車或者機器人上,通過路徑規(guī)劃和目標(biāo)跟蹤等實現(xiàn)移動端實時監(jiān)測。2 實驗結(jié)果分析與評估
2.1 數(shù)據(jù)集和實驗環(huán)境
2.2 實驗結(jié)果分析
3 結(jié) 論