尹志成,徐熙平,孫也堯
(長春理工大學(xué) 光電工程學(xué)院,長春 130022)
隨著中國人口老齡化加劇,高齡人群的出行安全面臨巨大挑戰(zhàn),有研究表明,約有28%至35%的65歲以上老人每年至少摔倒一次[1]。高齡人群在摔倒后,極易引發(fā)身體損傷,而長時(shí)間得不到救治的話,更會導(dǎo)致健康情況進(jìn)一步惡化等后果。再加上由于青壯年的學(xué)習(xí)工作壓力增加導(dǎo)致的注意力不集中、走路看手機(jī)等原因而引發(fā)的安全事故,研究一套智能的、行之有效的摔倒行為檢測系統(tǒng)迫在眉睫。它對于提高我國的行人出行安全系數(shù)、穩(wěn)定社會公共安全具有重大意義。
目前,主流的摔倒檢測方法主要分為兩種,一種是基于外部傳感器的摔倒檢測方法,該方法通常是將傳感器放置在室內(nèi)墻壁、頂棚、地板等環(huán)境或手表、衣物等隨身穿戴的物品中,以便采集到人體運(yùn)動數(shù)據(jù)[2],繼而通過機(jī)器學(xué)習(xí)等算法對采集到的數(shù)據(jù)進(jìn)行訓(xùn)練、分析,以達(dá)到檢測摔倒的目的。一種是基于計(jì)算機(jī)視覺的摔倒檢測方法,該方法則是通過對視頻或圖像進(jìn)行特征提取,機(jī)械學(xué)習(xí)、深度學(xué)習(xí)等算法訓(xùn)練分析的目標(biāo)為提取到的特征。
兩種方法中,傳感器的方法需要佩戴外部設(shè)備,存在適用范圍窄、硬件成本高等問題。而現(xiàn)行的計(jì)算機(jī)視覺方法存在檢測精度低、誤檢率高等問題。針對上述問題,提出了一種基于OpenPose和CNN的運(yùn)動目標(biāo)摔倒檢測算法。并自建數(shù)據(jù)集完成檢測實(shí)驗(yàn)及數(shù)據(jù)對比。
姿態(tài)提取作為行為識別的第一個(gè)步驟,其所提取到的特征將直接決定行為識別的準(zhǔn)確度。OpenPose是學(xué)者 Cao等人[3]于 2017年提出的開源項(xiàng)目庫,該項(xiàng)目庫運(yùn)用了現(xiàn)今較為流行的深度學(xué)習(xí)算法,能較為快速地識別圖像中單人及多人的二維姿態(tài),通過學(xué)習(xí)檢測圖像中人物的關(guān)鍵點(diǎn)位置,從而能夠不依賴于圖像中的局部特征完成人物目標(biāo)檢測,即使在圖像噪聲較大的條件下也可準(zhǔn)確提取人物的關(guān)鍵點(diǎn),然后使用建模重構(gòu)的方式對學(xué)習(xí)檢測到的像中人物關(guān)鍵點(diǎn)位置進(jìn)行姿態(tài)特征的提取,能更有效地保證精度及連續(xù)性。
OpenPose方法的總體流程如圖1所示,可概括為以下幾步:
圖1 OpenPose算法整體流程圖
(a)輸入一個(gè)w×h的彩色人物圖像;
(b)前饋網(wǎng)絡(luò)對檢測目標(biāo)的關(guān)鍵點(diǎn)位置進(jìn)行預(yù)測,并得到其二維置信度映射S以及一組2D矢量向量場L;
(c)用S和L來編碼檢測目標(biāo)各部間的關(guān)聯(lián)向量場;
(d)通過置信度分析檢測目標(biāo)的親和向量場,最終標(biāo)示出所有檢測目標(biāo)的2D關(guān)鍵點(diǎn)。
其中:
表示需對每個(gè)關(guān)鍵點(diǎn)位置進(jìn)行J次預(yù)測,有J個(gè)置信圖。
表示每次預(yù)測對檢測目標(biāo)的每個(gè)肢體都會得到C個(gè)向量場。
OpenPose 的整體網(wǎng)絡(luò)結(jié)構(gòu)采用 VGG[4]網(wǎng)絡(luò)作為骨架進(jìn)行預(yù)訓(xùn)練處理。如圖2所示,該網(wǎng)絡(luò)分為兩個(gè)部分,兩部分能同時(shí)對提取到的關(guān)鍵點(diǎn)進(jìn)行預(yù)測置信圖、編碼相鄰關(guān)鍵點(diǎn)間的關(guān)聯(lián)向量場并分別回歸S和L。圖中上半部分即第一分支用以預(yù)測置信圖,下半部分即第二分支用以預(yù)測關(guān)聯(lián)向量場。每回歸一次S和L即為完成一輪迭代預(yù)測,通過連續(xù)的t∈( )1,…,T 輪迭代,就能形成整個(gè)預(yù)測網(wǎng)絡(luò)體系結(jié)構(gòu)。每一階段統(tǒng)計(jì)一次反饋損失函數(shù),并把S、L及F即原始輸入連接起來,進(jìn)而得到下一階段預(yù)測訓(xùn)練的輸入。在進(jìn)行了n輪迭代之后,S能起到一定程度的區(qū)分預(yù)測網(wǎng)絡(luò)體系左右結(jié)構(gòu)的作用,迭代次數(shù)越多其區(qū)分程度越顯著。
圖2 OpenPose網(wǎng)絡(luò)體系結(jié)構(gòu)圖
圖中的F,即一、二分支初始階段的輸入,它是由CNN對原始圖像進(jìn)行分析所產(chǎn)生的一組映射;在網(wǎng)絡(luò)的第一階段預(yù)測訓(xùn)練時(shí)生成一組S1=ρ1(F)即置信度映射,和L1=φ1(F)即關(guān)聯(lián)向量場。然后將S1、T1和F聯(lián)接,以便使預(yù)測結(jié)果更加精細(xì)。進(jìn)行到第t階段時(shí)的預(yù)測結(jié)果可表示為:
式中,ρt、φt表示第t輪迭代的中間結(jié)果。
得到預(yù)測結(jié)果后,需要對每階段的每個(gè)分支都計(jì)算一次損失函數(shù),這是為了能夠更有效地提高預(yù)測精度,引導(dǎo)OpenPose網(wǎng)絡(luò)的體系結(jié)構(gòu)。同時(shí),考慮到實(shí)際問題中會存在某些檢測目標(biāo)的數(shù)據(jù)集未被完全標(biāo)定等情況,因此還需要考慮損失函數(shù)的加權(quán)權(quán)重。式(5)、式(6)表示第t階段時(shí)的損失函數(shù):
式中,表示真實(shí)的檢測目標(biāo)關(guān)鍵點(diǎn)置信度映射圖;表示真實(shí)的關(guān)聯(lián)域向量場;W表示一組用于避免懲罰訓(xùn)練時(shí)得到的真預(yù)測值的二進(jìn)制掩碼,即:當(dāng)檢測圖像的p位置未被標(biāo)定時(shí),W(p)=0;當(dāng)p位置被標(biāo)定時(shí),W(p) =1。
同時(shí)引入式(7)以規(guī)避神經(jīng)網(wǎng)絡(luò)中因梯度消失問題[5]而對預(yù)測結(jié)果造成的影響,在訓(xùn)練過程中的每個(gè)階段周期性的補(bǔ)充梯度。
相對于以往的特征提取方法,提出了一種新的摔倒檢測特征值,即完成對人體姿態(tài)特征的提取后,將目標(biāo)人物的頸部位置,與腳部位置導(dǎo)出,計(jì)算二者之間的距離差值V;對視頻每5幀提取一張圖片,計(jì)算檢測目標(biāo)的高度,以提取圖片的相鄰兩幀中檢測目標(biāo)的高度做差得參數(shù)D;此二者可用于判斷靜止姿態(tài)。根據(jù)提取圖片中相鄰兩幀間檢測目標(biāo)的頭部位置距離差值,計(jì)算檢測目標(biāo)的速度S,二軸加速度A用來判斷運(yùn)動姿態(tài)。
借由非最大抑制算法,能夠從網(wǎng)絡(luò)的置信度映射圖中得到一組候選的離散關(guān)鍵點(diǎn)位置。因?yàn)闄z測目標(biāo)數(shù)目的不確定性,即可能有復(fù)數(shù)的檢測目標(biāo),甚至是誤檢測關(guān)鍵點(diǎn)存在。因此,需要有多個(gè)候選區(qū)域來供每個(gè)關(guān)鍵點(diǎn)匹配,匹配得出很多的關(guān)鍵點(diǎn)對。如圖3所示,圖3(a)表示從檢測目標(biāo)中提取到的候選關(guān)鍵點(diǎn),圖3(b)表示各候選點(diǎn)匹配后得到的點(diǎn)對。
圖3 候選關(guān)鍵點(diǎn)離散匹配圖
然后,需要在所得匹配點(diǎn)對中找到最佳匹配結(jié)果,對每個(gè)匹配點(diǎn)對通過計(jì)算得到一個(gè)分?jǐn)?shù),可歸結(jié)為一個(gè)NP-hard匹配問題[6]。下面將引出一種遞歸匹配算法解決此問題。
假定,通過網(wǎng)絡(luò)置信度映射圖中所得到的所有離散關(guān)鍵點(diǎn)構(gòu)成的集合為DJ,如式(8)所示:
式中,Nj表示離散檢測點(diǎn)j的候選位置數(shù)目;表示第j個(gè)離散點(diǎn)的第m個(gè)候選坐標(biāo)。
將從屬于同一個(gè)檢測目標(biāo)的離散檢測點(diǎn)連成一體,即將其與同一檢測目標(biāo)的其他離散點(diǎn)相關(guān)聯(lián)。為此,定義變量,用以判斷兩離散候選點(diǎn)是否從屬于同一檢測目標(biāo)。即:當(dāng)時(shí),表示屬于同一檢測目標(biāo),可以相連,反之,則不能相連。進(jìn)而得到式(9):
對于第c個(gè)檢測目標(biāo)單獨(dú)區(qū)域(如軀干、左臂等部位),所需解決的問題就是找出一組權(quán)重最大的匹配點(diǎn)對。舉例說明:對于第c個(gè)左臂,假定j1、j2為其上的檢測點(diǎn),則j1、j2對應(yīng)的集合分別為,目標(biāo)可以用式(10)代替:
式中,Ec表示第c個(gè)左臂(軀干等單獨(dú)區(qū)域)所對應(yīng)的所有關(guān)鍵點(diǎn)匹配得權(quán)重總和;Zc表示左臂c對應(yīng)于圖片中含有的全部相同單獨(dú)區(qū)域(左臂)Z的子集;Emn表示兩個(gè)關(guān)鍵點(diǎn)間的關(guān)聯(lián)向量場。
公式(11)和公式(12)強(qiáng)制要求任意兩個(gè)相同類型的單獨(dú)區(qū)域(如:兩個(gè)左臂)不能共享一個(gè)關(guān)鍵點(diǎn)。即無法被連接到一個(gè)檢測目標(biāo)上。將其擴(kuò)展到所有的C個(gè)單獨(dú)區(qū)域Z上(左臂、軀干等),可得優(yōu)化后的公式(13):
對每個(gè)單獨(dú)區(qū)域重復(fù)公式(10)到(13)的步驟,可以獲得檢測目標(biāo)包含的每種獨(dú)立區(qū)域的所有關(guān)鍵點(diǎn)的最優(yōu)匹配對,將從屬于同一檢測目標(biāo)的關(guān)鍵點(diǎn)匹配對連接起來,就能組成一個(gè)完整的檢測目標(biāo)全身姿態(tài)。最終拼合成的全身姿態(tài)特征生成樹如圖4所示。
圖4 全身姿態(tài)特征生成樹
將圖4所示的全身特征姿態(tài)生成樹的關(guān)鍵位置檢測點(diǎn)數(shù)據(jù)寫入JSON格式文件,如圖5所示。
圖5 姿態(tài)關(guān)鍵點(diǎn)數(shù)據(jù)
圖中,“pose_keypoints”即為當(dāng)前幀中,檢測目標(biāo)的關(guān)鍵點(diǎn)數(shù)據(jù),共計(jì)18個(gè)關(guān)鍵點(diǎn)。每個(gè)關(guān)鍵點(diǎn)信息由三個(gè)數(shù)據(jù)組成,形式為:( )x,y,score,其中,x、y即為關(guān)鍵點(diǎn)坐標(biāo),score則表示經(jīng)過歸一化處理后的預(yù)測評分,score∈( )0,1,其值越趨近于1,表示預(yù)測的準(zhǔn)確性越高,同時(shí)關(guān)鍵點(diǎn)的預(yù)測置信度越高,生成樹的組合度也就越好。
綜合VGG預(yù)訓(xùn)練網(wǎng)絡(luò)與PAFs匹配算法最終實(shí)現(xiàn)的姿態(tài)特征提取效果如圖6所示。效果圖中可以明顯看到姿態(tài)特征生成樹的線條及包括頭、頸、肩、肘、手、膝、足等十八個(gè)檢測關(guān)鍵點(diǎn)。
圖6 姿態(tài)提取效果圖
現(xiàn)行的基于視覺的摔倒檢測算法中,更傾向于單獨(dú)提取檢測目標(biāo)的靜態(tài)特征或動態(tài)特征,這種提取單獨(dú)特征的檢測技術(shù)雖然能夠較為快速的得到檢測結(jié)果,但從動態(tài)角度判定時(shí),由于快速下蹲和摔倒的質(zhì)心率相近,所以難以區(qū)分兩者的區(qū)別;從靜態(tài)角度判斷時(shí),由于快速躺下和摔倒的姿態(tài)特征相近,同樣難以區(qū)分二者。
同時(shí)提取靜態(tài)特征與動態(tài)特征,提出一種綜合了基于位置姿態(tài)特征的靜態(tài)判別法和基于速度姿態(tài)信息的動態(tài)判別法的二次摔倒行為識別方法。
這種基于位置姿態(tài)特征的靜態(tài)特征識別方法以頸部和腳部的高度差值以及間隔為10幀的前后兩幀的頸部高度差作為判定參數(shù),前者適用于識別正向的前摔、橫摔;后者適用于側(cè)向的前摔、橫摔。同時(shí)引入基于速度姿態(tài)信息的運(yùn)動姿態(tài)特征識別方法,該方法主要參考運(yùn)動目標(biāo)的頸部位置關(guān)鍵點(diǎn)坐標(biāo)縱向幀間速度差值,大體方法流程如圖8所示。
圖8 速度姿態(tài)特征算法流程圖
對應(yīng)到圖像中,整個(gè)摔倒過程如圖9所示。
圖9 姿態(tài)特征識別摔倒行為
圖片從左到右依次為在第n-10幀、n-5幀、n幀時(shí)的被檢測目標(biāo)運(yùn)動姿態(tài),可以看出,在前后10幀內(nèi),當(dāng)被檢測目標(biāo)摔倒時(shí),頸部位置與腳部位置的平均高度差值具有較為明顯的變化,且變化較快,而蹲、躺等近似行為的變化較慢,整個(gè)動作完成通常在前后30幀的范圍內(nèi)完成相同的高度差值變化。
測試使用的數(shù)據(jù)集從十八個(gè)自建視頻序列中提取出來,該套視頻序列包括三名志愿者在兩種角度下的三種摔倒行為。分別為正向、側(cè)向前摔;正向、側(cè)向橫摔;正向、側(cè)向后摔。并結(jié)合包括蹲、躺、坐、行走、跳躍等五個(gè)非摔倒行為的三十個(gè)視頻序列共同組成實(shí)驗(yàn)數(shù)據(jù)集,每三幀提取一次姿態(tài)特征。數(shù)據(jù)集參數(shù)詳情如表1所示。
表1 數(shù)據(jù)集參數(shù)
由于實(shí)驗(yàn)使用最新的OpenPose-Darknet對檢測目標(biāo)進(jìn)行姿態(tài)提取,該框架采用最新的構(gòu)架進(jìn)行搭建,優(yōu)化了整體網(wǎng)絡(luò)結(jié)構(gòu),相較于原始Caffe,其實(shí)現(xiàn)速度提高了3倍。
以CNN分類算法對數(shù)據(jù)樣本進(jìn)行分類識別,訓(xùn)練樣本時(shí),將摔倒行為標(biāo)記為正例,將非摔倒行為標(biāo)記為反例。最終的分類結(jié)果如表2所示。
表2 預(yù)測結(jié)果
引入靈敏度(SE)和特異性(SP)作為分類結(jié)果的評價(jià)指標(biāo)。
其中,SE表示在真實(shí)正例中被成功識別為真正例的概率,即在摔倒行為中被成功識別的概率;SP表示的是在真實(shí)反例中被成功識別為真反例的概率,即在非摔倒行為中被成功識別的非摔倒行為的概率。實(shí)驗(yàn)結(jié)果如表3所示。
表3 實(shí)驗(yàn)結(jié)果
兩項(xiàng)實(shí)驗(yàn)指標(biāo)均高于96%,與文獻(xiàn)[7]采用其自建數(shù)據(jù)集所得到的實(shí)驗(yàn)結(jié)果靈敏度90.5%特異性93.3%及文獻(xiàn)[9]以雙流神經(jīng)網(wǎng)絡(luò)對不同背景下的摔倒行為進(jìn)行識別,并取得92%的平均識別率相比,實(shí)驗(yàn)所得的兩項(xiàng)評價(jià)指標(biāo):
96.52%的靈敏度與96.37%的特異性,均有所提升。
文獻(xiàn)[8]將閾值分類的算法應(yīng)用到摔倒檢測中,其進(jìn)行分類實(shí)驗(yàn)所得到的靈敏度為100%、特異性為87.72%,較低的特異性代表著存在部分假反例會被識別為真反例的情況,在實(shí)際應(yīng)用中,這種情況會帶來頻繁的誤報(bào)、錯(cuò)報(bào)等。相比之下,96.37%的特異性更加穩(wěn)定,能夠有效地規(guī)避各種誤檢測。
針對摔倒檢測問題,提出了一種基于OpenPose與CNN的檢測識別系統(tǒng)。通過OpenPose-Darknet對視頻數(shù)據(jù)集進(jìn)行姿態(tài)特征的提取,對檢測目標(biāo)的骨骼特征點(diǎn)進(jìn)行檢測,以卷積神經(jīng)網(wǎng)絡(luò)對提取的姿態(tài)特征進(jìn)行分類識別。采用自建數(shù)據(jù)集進(jìn)行數(shù)據(jù)實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果顯示檢測識別系統(tǒng)的靈敏度與準(zhǔn)確性均在96%以上,既能較為準(zhǔn)確的識別摔倒行為,同時(shí)兼顧了識別的穩(wěn)定性,減少誤判現(xiàn)象。