魏振鋼, 孔勇強, 魏兆強, 張小龍
(中國海洋大學信息科學與工程學院,山東 青島266100)
經(jīng)濟社會的發(fā)展使老齡化日益嚴重,空巢老人數(shù)量也在逐年增加,這種現(xiàn)象無論是在發(fā)達國家還是發(fā)展中國家都很普遍[1]。人們對老年人生命健康的重視造就了一大批專為老人服務(wù)的醫(yī)療保健系統(tǒng),提高其晚年的生活質(zhì)量。統(tǒng)計表明,跌倒是威脅空巢老人生命安全的主要因素之一[2]。當老人跌倒時,輕則受傷影響正常生活,重則失去意識威脅生命。對于高齡老人來說,很多時候跌倒會導致失去行動能力,從而無法及時呼救。因此,室內(nèi)跌倒檢測系統(tǒng)在學術(shù)界和工業(yè)界都得到了廣泛關(guān)注。
由于跌倒檢測系統(tǒng)可以自動識別老人跌倒而不需要專門護士照看,所以其市場前景十分廣闊。目前主流的跌倒檢測系統(tǒng)分為兩大派:一種是基于傳感器的穿戴檢測設(shè)備;另一種是基于計算機視覺的監(jiān)控識別系統(tǒng)。穿戴式設(shè)備通常采用加速度傳感器[3],陀螺儀[4]或輔助報警按鈕[5]來實現(xiàn)實時跌倒檢測。然而這類設(shè)備有很多致命缺點,主要體現(xiàn)在以下兩個方面。一方面是傳感器設(shè)備必須定期充電或者更換電池,記憶力不好的老年人一旦忘記這點,就會導致設(shè)備因電量不足無法工作。另一方面,長時間穿戴這種設(shè)備會引起身體不適,這導致很多老年人經(jīng)常不穿戴相關(guān)設(shè)備。此外,對于使用輔助報警按鈕的穿戴設(shè)備來說,如果老人因跌倒導致昏迷,報警按鈕就變得毫無意義了。
計算機視覺為分析各種復(fù)雜的人體行為活動并進行異常檢測提供了有效途徑。為了克服穿戴式跌倒檢測設(shè)備的缺點,研究者們提出了很多基于視覺的跌倒檢測方法。文獻[6]提取人體輪廓圖像,使用輪廓匹配算法量化人體姿態(tài),最后采用混合高斯模型(GMM)來區(qū)分跌倒和其他行為。文獻[7]提出一種基于前景提取的跌倒檢測算法,提取前景圖像的變化作為特征,采用支持向量機(SVM)對各種人體活動進行分類。文獻[8]提取視頻中的形狀,形態(tài)以及運動3種特征,然后結(jié)合特征融合算法訓練一個集成學習分類器,從而識別出跌倒行為?;谝曈X的方法最大優(yōu)點是不需要老年用戶穿戴任何傳感器設(shè)備,而是從視頻數(shù)據(jù)中挖掘出有用的信息并進行分析。視頻數(shù)據(jù)來源于安裝在室內(nèi)的監(jiān)控攝像機,包含人在室內(nèi)的各種活動信息。然后通過一系列算法識別人體的各種行為,從而檢測出跌倒行為。
本文提出一種基于計算機視覺的人體跌倒檢測算法。該算法包含一個兩級檢測過程,核心思想是由粗粒度到細粒度(Coarse-to-Fine granularity)。粗粒度檢測是對前景二值掩膜采用矩形框法(Bounding box)進行分析,較為粗略地檢測出有可能是跌倒的行為。細粒度檢測是在粗粒度檢測結(jié)果的基礎(chǔ)上,對人體前景圖像做更精確的形態(tài)分析,從而檢測出真正的跌倒行為。雖然直接對前景圖像做細粒度檢測也能達到最終目的,但是會增加算法的復(fù)雜度。因此本文引入的粗粒度篩選策略可以大大提高算法的運行效率,滿足應(yīng)用系統(tǒng)的實時性需求。
本文主要貢獻包括:(1)經(jīng)典的矩形寬高比特征作為跌倒檢測有很大的局限性,本文引入多攝像頭投票機制可以有效克服其缺點,既能保證檢測率也能保持較低的算法復(fù)雜度;(2)對經(jīng)典的前景檢測滑動高斯平均法進行了改進,使用選擇更新策略來防止原更新機制的“過度更新”情況。而且引入二值圖像連通域技術(shù)去除前景閃爍點以及較大的圖像空洞。
對于基于計算機視覺的跌倒檢測系統(tǒng)來說,最大的挑戰(zhàn)是從各種日常生活行為中識別出跌倒行為。人類在室內(nèi)可能做出的日常行為大致包含3種狀態(tài):直立狀態(tài)(走),中間狀態(tài)(蹲、跪或坐)以及臥倒狀態(tài)(躺)。其中直立狀態(tài)行為最容易與跌倒區(qū)分。而臥倒狀態(tài)行為則難以與跌倒區(qū)分,比如往沙發(fā)或床上躺這類行為與跌倒十分相似。然而正常的室內(nèi)活動與跌倒還是有一定區(qū)別的,比如姿態(tài)變化的速度,人體在跌倒過程中,其姿態(tài)變化要比正常躺下快很多。
根據(jù)以上論點,本文提出一種基于前景提取和前景形態(tài)分析的跌倒檢測算法。算法流程如圖1所示。首先要進行背景消除,由于監(jiān)控攝像機是靜止的,我們的目標是分析人體行為,因此消除背景提取前景圖像(二值掩膜)是很好的選擇。第二步是采用形態(tài)學操作為提取出來的前景塊畫一個矩形邊界,根據(jù)矩形的寬高比值對人體活動做粗粒度分析。受以往工作啟發(fā)[9-10],我們規(guī)定:直立狀態(tài)行為的比值小于1,中間狀態(tài)行為的比值在1左右徘徊,跌倒行為的比值大于1。本文實驗表明這種寬高比設(shè)定效果十分顯著。粗粒度檢測一般能排除全部直立狀態(tài)的活動以及一大部分中間態(tài)活動。算法第三步是為人體前景繪制一個能恰好將其包含的橢圓形邊界,對其形態(tài)變化做進一步分析。細粒度分析只針對粗粒度檢測過程中未被排除的人體活動,這種機制既能保證算法的精確率,又可以大大提高算法的運行效率,使其能夠不依賴于昂貴的設(shè)備就能應(yīng)用于實時系統(tǒng)之中。由于寬高比檢測有一個缺點就是無法識別人體垂直于鏡頭光軸方向的跌倒(即人體面對鏡頭向后跌倒的時候,其矩形寬高比不會大于1;注意面對鏡頭向前跌倒是可以檢測出來的)。因此本文采用多攝像頭監(jiān)控來彌補這個缺點。在算法最后一步,我們引入一個簡單的投票機制,根據(jù)裝在不同位置的攝像頭分析的結(jié)果進行投票表決,作為最后的檢測結(jié)果。
圖1 本文算法流程圖Fig.1 Flow chart of the proposed algorithm
前景檢測(Foreground detection)又被稱為背景減法(Background subtraction),目的是將視頻中運動的物體從相對靜止的背景中分離。本文采用文獻[11]提出的滑動高斯平均法(Running Gaussian average)實現(xiàn)前景檢測。首先建立并初始化背景模型,為視頻幀的每一個像素保存其強度值,并且對其實時更新:
Bt=rIt+(1-r)Bt-1。
(1)
式中:Bt代表當前背景像素值;It是當前視頻幀的像素值,像素值的取值范圍為[0, 255];r是一個用來控制背景模型更新速度的超參數(shù),其取值范圍為[0, 1]。像素點分類策略如下式:
(2)
式中TB是一個給定閾值,用來衡量當前像素點與背景模型中相應(yīng)位置的差距,合理分類前景和背景。然而這種更新機制的最大缺點是會存在“過度更新”情況,由于所有像素點在更新過程中都被用來更新背景模型,所以會在運動目標后方引入大塊前景陰影。而且當前景目標停止運動時,相應(yīng)位置會快速被更新為背景。本文對背景更新機制進行了簡單的改進:
Bt=MBt-1+(1-M)[rIt+(1-r)Bt-1]。
(3)
式中M只能取值0或1。設(shè)t時間被判定為前景的區(qū)域為Ft,則M的取值條件如下:
(4)
結(jié)合公式(3)和(4)可以看出,對于在上一幀中像素值屬于前景的區(qū)域,在背景模型中不會被更新。這種選擇更新策略不會引入大塊陰影,并且靜止的前景也能夠保留一段時間。
然而,對于在燈光照耀下的室內(nèi)環(huán)境,用本方法進行前景提取是會有很多閃爍點和空洞。閃爍點主要是由于燈光以及攝像機自身性質(zhì)產(chǎn)生的,空洞是由于運動目標走過的地方與自身的像素值很相近,導致相應(yīng)區(qū)域被識別為背景沒有更新。針對這兩個問題,形態(tài)學中的開運算(相當于先腐蝕后膨脹)是一種經(jīng)常被采用的方法。然而這種方法只能去除閃爍點以及填補較小的空洞,對于大的空洞區(qū)域是無法填補的?;诖耍疚脑诂F(xiàn)有更新機制基礎(chǔ)上,對前景提取算法進行兩方面的改進:閃爍點去除和空洞填補。本方法引入二值圖像聯(lián)通域(Connected component)概念,計算出更新背景的連通域,通過移除小面積的連通域去除閃爍點像素,并填充含有空洞的連通域。
圖2 改進滑動高斯平均的前景掩模Fig.2 Foreground masks using modified running Gaussian average
具體來講,首先進行圖像中連通域標記,本文采用文獻[12]提出的快速標記算法來計算并標記更新二值掩膜中的連通區(qū)域。然后定義一個連通域集合,假設(shè)L為連通域的數(shù)量:
(5)
粗粒度檢測是通過分析前景圖像的矩形邊界來實現(xiàn)的,因此需要為人體前景畫出合適的矩形框。在上一節(jié)中我們提到了二值圖像的連通域標記,矩形框的繪制也是基于連通域的。具體來講,標記過每個連通域后,對面積大于一個給定閾值(對于320 × 240的圖像而言,此閾值為35比較合適)的前景塊繪制矩形邊界。如果只有一個滿足條件的連通域的話,就會繪制出一個矩形邊界。然而很多時候時候人體前景塊是由多個連通域組成的,這時就可以將繪制出的多個矩形框合并為一個大矩形框。使用OpenCV庫函數(shù)cvFindContours和cvRectangle能很方便地達到目的。圖3給出了各種情況下繪制出的矩形框。
圖3 不同人體活動的矩形框Fig.3 Bounding boxes of various human activities
假設(shè)矩形框的寬為w,高為h,我們規(guī)定正常人體活動的寬高比不會大于1。因此,如果w/h< 1,那么該活動就默認是正常活動,不需要進行細粒度檢測。然而,滿足w/h≥ 1的活動并不一定都是跌倒,也有可能是正常躺下或者大幅度彎腰等。所以對于粗粒度檢測出來的候選動作,再對其前景形態(tài)變化做進一步分析,即細粒度檢測。具體實現(xiàn)方法為:實時計算前景矩形框的寬高比,一旦寬高比大于1,就立即進行細粒度檢測。
圖4 本文算法對3種不同行為序列的檢測示例Fig.4 Examples of the proposed algorithm on three action sequences
本文依據(jù)圖像空間前景分割寬高比w/h≥ 1作為粗/細粒度檢測控制條件。但這個控制條件與圖像空間成像角度有密切關(guān)系。給定一個鏡頭,有部分跌倒狀態(tài)前景塊的寬高比不會大于1,因而無法啟動細粒度檢測,而且這種情況可能同時發(fā)生于多個鏡頭。當前供研究的數(shù)據(jù)集可能無法完全包含這些情況,因此在實際應(yīng)用中,有兩種方式可以彌補這類情況產(chǎn)生的誤差。一個是減小寬高比設(shè)定,比如設(shè)寬高比大于0.8時就進入細粒度檢測;另一種是適度放寬跌倒和非跌倒的票數(shù)比,比如設(shè)定如果半數(shù)攝像頭判別當前活動為“跌倒”,就認定跌倒發(fā)生。
如果一段前景活動序列沒有在粗粒度檢測中排除,那么我們就進一步分析相應(yīng)視頻序列的前景變化情況來判斷是否出現(xiàn)跌倒。人類日常生活行為是復(fù)雜多樣的,手持物品的運動更是極其常見,而相應(yīng)物品也會被檢測為前景圖像的一部分。這時分析前景矩形框往往會得出錯誤結(jié)論(圖3第一行最后一張“跪倒”的矩形框就是受物品干擾的情況),因此要排除物品對人體形態(tài)分析的干擾。利用統(tǒng)計矩(Moment)為人體前景繪制一個合適的橢圓邊界是非常合理的選擇[13-14]。設(shè)F(x,y)為一段連續(xù)的視頻幀序列,其聯(lián)合概率密度的矩M定義如下:
(6)
(7)
橢圓框的長軸(記為a)對應(yīng)人體前景塊,短軸(記為b)捕獲了橢圓的方向信息。為了找到最合適的a與b,需要計算出相應(yīng)的最大慣性矩MImax和最小慣性矩MImin:
(8)
根據(jù)公式(8),可以得到橢圓框的長軸a和短軸b:
(9)
本文第一節(jié)中提到,由于粗粒度檢測無法識別出人體垂直于攝像機光軸方向的跌倒行為,這意味著算法不會為這類跌倒行為進行細粒度檢測。因此,在細粒度檢測中,我們主要針對不垂直于鏡頭光軸方向的跌倒行為。為實現(xiàn)這個目的,我們對一段連續(xù)時間內(nèi)橢圓方向變化進行分析。首先必須量化這個變化過程,本文以橢圓長軸a與水平方向x之間的角度(記為θ)作為衡量指標:
(10)
根據(jù)公式(10),我們以一個時間段(通常是1 s)為單位實時計算θ的標準差(記為σθ)。假設(shè)一段視頻序列幀速率為Nfps,那么時刻t對應(yīng)的橢圓方向標準差定義如下:
(11)
式中θavg代表一段時間內(nèi)θ的平均值。即如果一段視頻幀速率為25 fps,那么至少從第25幀開始才有可能得到σθ的值。當人體跌倒的時候,前景形態(tài)將會大幅度變化,比其他正?;顒痈鼊×腋焖伲瑥亩鴻E圓的方向變化也會很大。因此,當?shù)拱l(fā)生時,σθ的值會很大;而正?;顒拥摩姚戎禃苄?。利用這個性質(zhì)可以有效區(qū)分與跌倒十分相似的人體活動(比如正常躺下與跌倒很相似,但是其σθ值卻不會像跌倒時那么大)。我們規(guī)定如果σθ≥ 25,則認為跌倒發(fā)生。圖4給出了幾種不同動作視頻序列的兩級粒度檢測結(jié)果。由圖4可以看出,如果矩形框的寬高比不大于1的話,細粒度分析便不會啟動。一旦發(fā)現(xiàn)寬高比大于1的行為,就立即繪制橢圓框并按公式(11)計算σθ。
表1 多攝像頭跌倒數(shù)據(jù)集的定量描述Table 1 Quantitative specifications on multi-camera fall dataset
本文算法在多攝像頭跌倒數(shù)據(jù)集[15]上進行了仿真實驗。數(shù)據(jù)集包含從8個室內(nèi)監(jiān)控攝像頭中采集的視頻數(shù)據(jù),視頻中既有各種日常活動,也有跌倒行為(見表1)。我們同時對8個攝像頭中相同場景的視頻進行檢測,即建立了8個實時跌倒檢測模型。然后引入投票機制,將每個模型對應(yīng)的跌倒檢測匯總進行投票表決出最終結(jié)果。如果人體在垂直于攝像頭光軸方向向后跌倒,那么該攝像頭對應(yīng)的模型無法檢測出跌倒行為??紤]到這一情況,我們將投票比例閾值設(shè)為3∶1。即8個攝像頭模型中,至少有6個檢測結(jié)果為跌倒的時候,才認為跌倒事件發(fā)生。為了評估本文算法的效果,我們采用文獻[15]給出的度量標準:
·真陽性(True positive):包含跌倒的視頻序列被檢測為跌倒。
·假陽性(False positive):不包含跌倒的視頻序列卻被檢測為跌倒。
·真陰性(True negative):不包含跌倒的視頻序列沒有被檢測為跌倒。
·假陰性(False negative):包含跌倒的視頻序列卻沒有被檢測為跌倒。
我們規(guī)定:TP代表真陽性的個數(shù),F(xiàn)P代表假陽性的個數(shù),TN代表真陰性的個數(shù),F(xiàn)N代表假陰性的個數(shù)。之后就可以得到算法的敏感度(Sensitivity)和特異度(Specificity):
(12)
本文算法與5個當前比較前沿的跌到檢測方法(這些方法都是在多攝像頭跌倒數(shù)據(jù)集[15]上進行的實驗)進行了對比,對比結(jié)果如表2所示。
表2 不同跌倒檢測方法的對比結(jié)果Table 2 Comparison of different fall detection methods
從表2可以看出,方法[7]的敏感度最高;方法[16]的特異度最高,但敏感度偏低;綜合效果最好的是方法[8];本文方法有很高的敏感度和特異度,達到了當前先進方法的效果。在實驗中我們發(fā)現(xiàn)本文方法錯檢了很多速度很快的人體活動,比如數(shù)據(jù)集中有相當一部分快速坐下,快速躺下的活動。因此本方法的特異度要比敏感度低很多。此外,由于遮擋和類間相似導致前景提取不準確也會導致檢測錯誤。當前大部分跌到檢測方法都是基于機器學習的,一般要有樣本采集和訓練的過程。相對于這些方法,本文算法最大的優(yōu)點就是不需要耗時耗力的數(shù)據(jù)采集和訓練,擁有較低的計算復(fù)雜度。并且本文算法對于日常生活中大部分活動可能都不會啟動細粒度檢測,這在實時系統(tǒng)中大大節(jié)省了資源。在低復(fù)雜度的前提下獲得了很好的效果,證明本文算法是非常有實用價值的。
本文提出了一種基于多攝像頭監(jiān)控的人體跌倒算法,包含從粗粒度到細粒度的兩級檢測過程。粗粒度檢測能夠篩選出大量變化幅度較小的日常生活行為,僅當類似跌倒的行為出現(xiàn)時才啟動細粒度檢測。這種機制不僅能夠保證檢測率,同時也大大減少了算法的計算復(fù)雜度。而且本文算法不需要數(shù)據(jù)采集和訓練就能直接能夠應(yīng)用在實時監(jiān)控系統(tǒng)之中。算法的缺點是對于變化速度較快的人體行為魯棒性不夠強,而且非常依賴于精確的前景提取。夜晚環(huán)境中前景提取捕捉不到任何信息。幸好近些年深度攝像頭的出現(xiàn)可以彌補這一缺點,在無光環(huán)境也能捕獲室內(nèi)的深度圖像。在未來的工作中我們會針對深度圖像的跌倒檢測進一步研究。