程淑紅, 謝文銳, 張典范, 徐 南
(1.燕山大學 電氣工程學院,河北 秦皇島 066004;2.燕山大學 車輛與能源學院,河北 秦皇島 066004;3.秦皇島職業(yè)技術學院,河北 秦皇島 066100)
在威脅老年人生命安全等健康因素中,據(jù)相關數(shù)據(jù)統(tǒng)計,跌倒造成的傷害占比最高[1],由此帶來的醫(yī)療成本是相當巨大的?,F(xiàn)階段,人體跌倒檢測主要分為基于傳感器和基于計算機視覺[2]兩大類?;趥鞲衅饕话阃ㄟ^可穿戴設備收集數(shù)據(jù)并提供給計算機系統(tǒng),然后分析數(shù)據(jù)以檢測是否發(fā)生跌倒[3,4]?;谟嬎銠C視覺則通常使用圖像處理、深度學習等方法對視頻進行跌倒檢測。其中Min W等[5]使用Faster-RCNN檢測人體和周圍家具之間的關系來判斷是否發(fā)生跌倒;Shengke Wang等[6]將CNN擴展到三維卷積神經(jīng)網(wǎng)絡(3D-CNN)來處理視頻信息,用以檢測跌倒;蔡文郁等[7]提出一種基于SVM-MultiCNN模型的視覺感知跌倒檢測算法,減少神經(jīng)網(wǎng)絡計算量。以上這些算法雖然可以根據(jù)跌倒的某些特征來進行檢測,但其檢測精確度和誤檢率仍需改善。
本文把改進的YOLO檢測算法和AlphaPose姿態(tài)識別框架及時空圖卷積神經(jīng)網(wǎng)絡相結合進行跌倒檢測。在有效降低誤檢率的前提下,能對目標視頻進行快速檢測和框定。同時,針對不同場景及復雜的環(huán)境條件下的跌倒檢測,對SSD[8]、PCANet[9]、Two-Stream CNN[10]算法進行了對比,進而驗證了本文算法的魯棒性和有效性。
本文融合算法主要分為3部分。第1部分利用改進的YOLO檢測算法把跌倒數(shù)據(jù)集作為輸入,在模型中進行訓練和調(diào)整參數(shù),最后生成表征人體特征的權重,并在驗證數(shù)據(jù)集調(diào)用權重進行人體檢測,得到相應的目標前景;第2部分主要采用AlphaPose姿態(tài)識別網(wǎng)絡進行人體骨骼關鍵點檢測,識別出人體主要關鍵點的位置;第3部分基于AlphaPose框架提取出的人體骨骼關鍵點,采用時空圖卷積神經(jīng)網(wǎng)絡ST-GCN,最終實現(xiàn)對跌倒動作行為的識別。融合算法流程如圖1所示。
圖1 融合算法流程圖
YOLO檢測算法速度快且精度高,能實現(xiàn)端到端檢測,因此更適用于實際場景[11,12]。由于只對人體進行單類別檢測,因此采用改進的輕量級YOLOv3 tiny檢測算法[13],該算法由13個卷積層、6個池化層、2個殘差層和2個YOLO檢測層組成,每個卷積層后面都添加批歸一化,以此來均衡數(shù)據(jù)分布,提高收斂速度。
根據(jù)視頻中人體的分布特征及不同場景下人體運動軌跡,為了降低模型計算復雜度和提高算法整體檢測精度,本文對YOLOv3 tiny算法進行改進,來適應人體前景提取。具體改進步驟如下:
(1)對訓練集標注的人體邊界框進行k-means聚類分析,得到與訓練視頻中人體目標邊界框相近的先驗框,從而優(yōu)化算法中的anchor參數(shù)設置,使之與人體目標形態(tài)相適應,加快網(wǎng)絡收斂的速度。
(2)YOLOv3 tiny網(wǎng)絡以Darknet-53為主干網(wǎng)絡來提取特征。作為模型后續(xù)輸入,其特征提取的好壞直接影響人體識別精度。YOLOv3 tiny算法在運算過程中,對不同位置、不同通道的“關注”是平均的,沒有學習特征通道之間的相關性,這極大的抑制了網(wǎng)絡的特征提取能力,導致在某些場景檢測效果出現(xiàn)偏差,這對后續(xù)的跌倒檢測產(chǎn)生一定影響。針對這種情況,在YOLOv3 tiny主干網(wǎng)絡backbone引入注意力機制模塊SE Block(Squeeze-and-Excitation)[14],加強特征提取能力。
SE Block由全局平均池化層、全連接層、ReLU和Sigmoid激活函數(shù)組成,分為壓縮和激發(fā)2部分。壓縮通過在特征圖上執(zhí)行全局平均池化來聚合全局特征量,將每個通道變成1個具有全局感受野的實數(shù)。激發(fā)則使用全連接神經(jīng)網(wǎng)絡[15,16]對壓縮部分得到的參數(shù)為每個特征維度生成權重,通過乘法逐通道加權到先前的特征,完成通道維度對原始特征的自適應重調(diào)。最后使用sigmoid激活函數(shù)做非線性變換,從而突出重要特征,抑制無關信息。如圖2中間部分所示。
(3)針對大部分場景中人體邊界框大小都相近或是只有特定幾種尺度,不需要多尺度強制分層檢測,因此移除1個YOLO檢測層,即把3層YOLO層改成2層YOLO層,以防止標簽重寫及減少其它預測分支空跑浪費資源,提高檢測速度。單類別YOLO人體檢測網(wǎng)絡如圖2所示。
圖2 改進的YOLO人體檢測網(wǎng)絡圖
(4)把標注好的數(shù)據(jù)集送入YOLOv3 tiny模型進行端到端訓練,直至訓練成最佳檢測模型,保存模型權重。
圖3為改進前后YOLO算法對比圖。圖3(a)所示為跌倒數(shù)據(jù)集的場景原圖;圖3(b)為改進前YOLOv3 tiny人體單類別檢測算法的類激活映射熱力圖;可見,改進前的類激活映射熱力圖主要集中在旁邊的物體上,造成人體單類別檢測誤差較大;圖3(c)是改進后的YOLOv3 tiny算法類激活映射熱力圖。從圖中可以看出類激活映射熱力圖主要集中在人體上,可以大大提高人體檢測的正確率。
圖3 改進前后YOLO算法對比圖
AlphaPose姿態(tài)識別框架[17]采用自頂向下[18]的方法,提出了區(qū)域多人姿態(tài)檢測框架(RMPE)。該框架主要分為對稱空間變換網(wǎng)絡(SSTN)、由姿態(tài)引導的樣本生成器(PGPG)及姿態(tài)非極大值抑制器(PPNMS)3部分。對SSTN接收定位網(wǎng)絡生成的參數(shù),利用并行單人姿態(tài)估計所有層的所有權重增強對SSTN提取單人姿態(tài)區(qū)域的能力,得到高精度的人體姿態(tài)檢測;PGPG是對已有的數(shù)據(jù)進行增強擴充,有助于對稱空間變換網(wǎng)絡適應不完美的人體區(qū)域定位及姿態(tài)檢測結果。PPNMS則是一種參數(shù)化非極大值抑制法,通過定義姿態(tài)距離度量來衡量姿態(tài)的相似度。當姿態(tài)距離度量小于設定的某一閾值時,姿態(tài)就被消除,從而達到更精確的骨骼關鍵點檢測,檢測效果如圖4所示。
圖4 AlphaPose檢測效果圖
時空圖卷積神經(jīng)網(wǎng)絡ST-GCN[19]以AlphaPose框架提取出的人體骨骼關鍵點坐標為模型輸入,構建1個以關節(jié)為圖節(jié)點,以人體骨架自然連接和相同關節(jié)的時間關系為圖邊的時空圖,使得信息在時間和空間域被整合起來。
時空圖卷積神經(jīng)網(wǎng)絡分為空間圖卷積和時間圖卷積??臻g圖卷積是根據(jù)人體關節(jié)的自然連通性,構建幀內(nèi)的空間圖卷積,可記為GS=(VS,ES)。其中VS={vti|i=1,…,NS}表示一個骨架中所有的關節(jié)點,ES=vtivtj|(i,j)∈H表示關節(jié)點之間的連接,每個節(jié)點由一個特征向量F(Vti)來描述空間特征,該特征通過空間圖卷積得到。時間圖卷積則在空間圖上將連續(xù)多幀圖像中的同關節(jié)點連接,構成骨架序列的時空圖,記為GT=(VT,ET)。其中VT={vti|t=1,…,Nt}表示同一部位的關節(jié)點序列,ET={vtiv(t+1)i}表示它們之間的連接,見圖5。
圖5 人體關節(jié)時空圖構建過程
時空圖卷積算法結合運動分析研究,將空間圖劃分為3個子集,分別表示向心運動、離心運動和靜止的特征。根節(jié)點即選定骨架關節(jié)點本身,包含靜止的特征;連接比根節(jié)點更靠近骨架重心的鄰居節(jié)點,包含向心運動特征;連接比根節(jié)點遠離骨架重心的鄰居節(jié)點,包含離心運動特征。3個子集卷積結果分別表達了不同尺度的動作特征。
時空圖卷積神經(jīng)網(wǎng)絡模型以圖節(jié)點的關節(jié)坐標向量為輸入,經(jīng)由9層ST-GCN卷積模塊來提取更深層次的特征,得到每個節(jié)點的特征維度為256,關鍵幀維度為38,然后對得到的張量進行全局池化,并利用反向傳播對模型進行端到端訓練,最后SoftMax分類器得到相應的動作類別概率,輸出概率最大的動作。
每個ST-GCN層采用Resnet結構,增強梯度傳播,并在ST-GCN層添加dropout策略,解決梯度爆炸問題。模型整體流程如圖6所示。
損失函數(shù)為交叉熵函數(shù),其計算表達式為
(1)
式中:c表示類別;M表示類別數(shù)量;yc表示指示變量(0或1),當該類別和樣本類別一致時為1,反之為0;pc表示類別c的預測概率。
為了對提出的融合跌倒檢測算法進行驗證,本文先在公開的跌倒數(shù)據(jù)集上進行訓練驗證,然后利用攝像頭實時監(jiān)控人體不同動作并檢測是否發(fā)生跌倒,最后對檢測精度、召回率等進行對比分析。所有實驗運行環(huán)境均為Ubuntu18.04+Pytorch 1.3.1+OpenCV3.4;硬件配置為:Intel i5-9400F處理器,NVIDIA GeForce GTX1660顯卡,高清1080P 60幀星光級低照度夜視攝像頭模組。
本研究在公開的跌倒數(shù)據(jù)集UR fall detection dataset(URFD)進行重新標注、訓練,最后用訓練完成的最優(yōu)化模型在部分UR跌倒數(shù)據(jù)集驗證并用攝像頭進行實時跌倒檢測。URFD數(shù)據(jù)集用不同視角的攝像機拍攝人類活動序列視頻,包含30個跌倒視頻和40個日常生活視頻。實驗將數(shù)據(jù)集動作標注為5個類別,分別是:站立(standing)、走路(walking)、坐著(sitting)、躺著(lying down)、及跌倒(fall down)。該數(shù)據(jù)集包含多種場景,且存在光照變化等諸多干擾因素,因此檢測該數(shù)據(jù)集的跌倒行為存在很大挑戰(zhàn)。
本文將實驗樣本分為4類,其中真正例(true positives,TP)表示模型分類為跌倒的正確次數(shù);假正例(false positives,FP)表示模型錯誤分類為跌倒的次數(shù);假反例(false negative,FN)表示模型錯誤分類為非跌倒的次數(shù);真反例(true negative,TN)表示模型分類為非跌倒的正確次數(shù)。
本文選用了跌倒檢測常用的3個評價指標來評判實驗的檢測效果。準確率與召回率示意圖如圖7所示。
圖7 準確率與召回率示意圖
準確率Acc表示模型正確檢測跌倒及非跌倒樣本占總樣本的比重,用于評估跌倒檢測算法整體的識別能力。
(2)
召回率Re表示跌倒被模型正確檢測到的樣本占實際跌倒的樣本的比重。
(3)
特異性Spec表示非跌倒樣本被模型正確分類占實際非跌倒樣本的比重。
(4)
本文通過2組實驗來驗證跌倒檢測算法模型的有效性和可靠性。
1組是公開的跌倒數(shù)據(jù)集;另1組是用攝像頭實時檢測是否發(fā)生跌倒動作。
圖8分別展示了本文跌倒檢測算法在UR fall detection dataset上和應用到攝像頭實時檢測的部分檢測結果。
圖8 本文算法部分檢測結果
圖8(a)為在UR數(shù)據(jù)集上的檢測結果;圖8(b)為攝像頭實時檢測的結果。
這2組實驗結果表明本文算法能準確定位目標位置并識別目標動作類別,能從多角度和遠距離檢測跌倒行為,有效的提高了跌倒檢測的準確率。同時也表明該算法在不同場景具有強魯棒性。
圖9為本文算法與SSD、PCANet和Two-stream CNN3種算法的不同動作檢測準確率對比圖。由圖9可知,在跌倒這一行為中,本文算法的準確率達到97.4%,比其它算法體現(xiàn)出更強的檢測正確能力。在其它動作類別諸如走路等檢測中,本文方法的性能也略優(yōu)于其它算法,這進一步表明本文提出的跌倒檢測模型更具穩(wěn)定性和魯棒性。
圖9 不同算法模型的動作檢測結果
表1統(tǒng)計了不同方法在UR數(shù)據(jù)集及攝像頭實時檢測的平均準確率Acc、召回率Re及特異性。由表可知,本文算法在確保準確率Acc較高的情況下也保持較高的召回率Re與特異性。
表1 不同算法的檢測結果
本文針對人體跌倒檢測方法在不同場景識別率較低、誤檢率較高等問題,設計了一種基于改進的YOLOv3 tiny檢測網(wǎng)絡、ALphaPose姿態(tài)識別框架及時空圖卷積神經(jīng)網(wǎng)絡相融合的跌倒檢測算法。在融合算法中,首先,利用改進的YOLO檢測算法對人體前景進行特征提取,去除不同背景帶來的干擾;然后,使用AlphaPose框架檢測人體骨骼關鍵點;最后利用時空圖卷積神經(jīng)網(wǎng)絡對提取出的人體關鍵點進行訓練,識別出跌倒等不同動作類型。實驗結果表明:本文算法從人體關鍵點檢測效果考慮,適用于不同場景的跌倒檢測,相比其它算法具有更高的檢測精度,檢測準確率可達到97.4%,并在一定程度上提高了跌倒檢測的召回率。