馬添力,肖文棟
(1.北京科技大學自動化學院,北京 100083;2.北京市工業(yè)波譜成像工程技術(shù)研究中心,北京 100083)
利用步態(tài)信息進行身份識別是近年來新興的一種生物識別技術(shù),它根據(jù)人體的步態(tài)特征來進行身份的認證。某些場景下,人們會對自己進行喬裝打扮,比如戴口罩和帽子以及化妝等,但自身的步態(tài)特征難以控制。在多重因素的影響下,人體走路姿態(tài)具有唯一性。相較于其他生物識別技術(shù),利用步態(tài)信息作身份識別具有非侵犯性、不易察覺、不易偽裝、遠距離識別等優(yōu)點[1],在安防領(lǐng)域具有非常大的應用前景和廣闊的研究空間。
利用步態(tài)信息識別身份的研究方法主要有兩類:基于非模型方法和基于模型的方法[2]。非模型的方法是對人體步態(tài)的輪廓、外形和原始圖像等進行特征提取,從而進行身份識別[3]。基于模型的方法是指對人體或者運動進行建模,獲得如人體的重心、肢體長度、關(guān)節(jié)角度、運動速度等參數(shù),在模型上進行度量和分類。這類方法存在計算量大、模型難以準確建立的問題。在分類的方法上,目前大多采用支持向量機(support vector machine,SVM)或深度學習的方法,存在訓練時間長、分類準確率不高的問題。
本文采用非模型的方法,利用步態(tài)能量圖作為識別基礎(chǔ);為了解決訓練時間長和準確率不高的問題,采用超限學習機(extreme learning machine,ELM)算法進行分類。與傳統(tǒng)的訓練方法相比,ELM具有學習速度快、泛化性能好等優(yōu)點。測試結(jié)果表明,采用ELM算法可以在保證準確率的前提下大幅縮短訓練時間。
首先將步態(tài)視頻數(shù)據(jù)進行分幀處理,然后對分幀后的圖像序列進行運動目標檢測。運動目標檢測的目的是提取步態(tài)圖像中有用的目標信息,削減圖像中的無效信息,便于后期對圖像進行處理和分析。常用的目標提取方法包括幀差法、光流法、背景減除法[4]。幀差法對于背景緩慢變化的情況不敏感;光流法計算復雜,實時性很差;背景減除法簡單、快速,適合視頻采集設(shè)備固定的場景。本文利用背景減除法提取運動目標。
背景減除法主要包括以下三種算法[5]:Back ground Subtract or MOG、 Back ground Subtract or GMG和Back ground Subtract or MOG2(以下簡稱MOG、GMG和MOG2)。其中,GMG算法僅用很少的圖像進行背景建模,準確度不高,現(xiàn)在使用的很少。本文選用MOG2算法進行前景提取。該算法是以高斯混合模型為基礎(chǔ)的前景分割算法。這個算法的特點是它為每一個像素選擇一個合適數(shù)目的高斯分布,相比于MOG算法中使用的K高斯分布(K為3或5),MOG2算法更適用于亮度發(fā)生變化而引起的場景變化。該算法還可以進行陰影檢測,速度也快于MOG算法。MOG2算法前景提取示意圖如圖1所示。
圖1 MOG2算法前景提取示意圖
通過背景減除法獲得的步態(tài)圖像存在空洞、噪聲等影響。為了減小這些瑕疵對最終識別的影響,可采用圖像處理中的形態(tài)學方法對獲得的二值步態(tài)圖像進行處理。常用的形態(tài)學方法有腐蝕、膨脹、開操作、閉操作等。
腐蝕是一種簡單地消除不相關(guān)元素的方法,可以消除圖像中的噪聲等。其定義為:
AΘB={x|(B)x?A}
(1)
式中:A為圖像;B為結(jié)構(gòu)元素;AΘB為B對A進行腐蝕操作,即使用B遍歷A,去除兩者不完全相交的像素值,以達到腐蝕的目的。
膨脹可以看作是一種簡單的連接操作,可以修復圖像中的斷裂。其定義為:
(2)
在腐蝕和膨脹的基礎(chǔ)上,又得到了開操作和閉操作兩種處理方法。
開操作能夠平滑物體的輪廓,斷開細小的間隔。其定義為:
A°B=(AΘB)⊕B
(3)
式中:A為圖像;B為結(jié)構(gòu)元素;AB為B對A進行開操作。
閉操作能夠?qū)D像中細小的空洞填充完整并且也可以平滑物體的邊界。其定義為:
A·B=(A⊕B)ΘB
(4)
式中:A為圖像;B為結(jié)構(gòu)元素;A·B為B對A進行閉操作。
本文對二值化后的步態(tài)圖像先進行開操作,再進行閉操作。形態(tài)學處理前后對比圖如圖2所示。
圖2 形態(tài)學處理前后對比圖
一般視頻采集設(shè)備是固定的,這就導致了在視頻設(shè)備的采集范圍內(nèi)目標的形狀由小到大再變小的過程,產(chǎn)生了不一致性。在步態(tài)特征提取過程中,相同的目標圖像會有更好的表達。因此,采用歸一化的方法對步態(tài)圖像進行處理,使不同運動目標的圖像相同,包括運動目標在圖像中的位置和大小[6]。
步態(tài)圖像歸一化首先從二值步態(tài)圖像中提取出人體運動目標,通過遍歷步態(tài)圖像的像素點找到人體輪廓的邊界,以此生成最大的運動目標矩形框,并裁剪出人體目標輪廓圖像。在程序中,設(shè)置圖像大小,將目標圖像歸一化至64×64像素。歸一化前后對比圖如圖3所示。
圖3 歸一化前后對比圖
ELM是一類基于單隱層前饋神經(jīng)網(wǎng)絡的機器學習算法。ELM算法隨機產(chǎn)生輸入層與隱藏層的連接權(quán)值,通過最小二乘優(yōu)化來訓練網(wǎng)絡,且在訓練過程中無需調(diào)整,只需要設(shè)置隱藏層神經(jīng)元個數(shù),便可獲得唯一的最優(yōu)解,學習過程僅需計算輸出權(quán)重。ELM具有學習效率高、泛化能力強的優(yōu)點,被廣泛應用于分類、回歸、聚類、特征學習等問題中[7]。
單隱層神經(jīng)網(wǎng)絡原理如圖4所示[8]。
圖4 單隱層神經(jīng)網(wǎng)絡原理圖
若有N個任意的樣本{(Xi,ti)}Ni=1?Rn×Rm,對于一個由L個隱藏層節(jié)點的單隱層神經(jīng)網(wǎng)絡,可以表示為:
(5)
式中:g(x)為激活函數(shù);WI=[ωi1,ωi2,…,ωin]T為輸入權(quán)重;βI為輸出權(quán)重;bi為第i個隱藏層單元的偏置;WiXj為Wi和Xj的內(nèi)積。
該神經(jīng)網(wǎng)絡的學習目標是使得輸出的誤差最小,可表示為:
(6)
即存在βi、Wi和bi,使得:
(7)
將式(7)矩陣表示為Hβ=T。其中,H為隱藏層的輸出矩陣,具體表示為:
H(W1,W2,…,WL,b1,b2,…,bL,X1,X2,…,XL)=
(8)
β為輸出權(quán)重,T為期望輸出,可分別表示為:
(9)
其中,i=1,2,…,L。這等價于最小化損失函數(shù):
(10)
綜上所述,ELM的訓練分為以下三步。
①隨機分配隱藏層參數(shù)。
②計算隱藏層輸出矩陣H。
③得到輸出權(quán)重向量β。
輸出權(quán)重β可以被確定為:
(11)
式中:H+為矩陣H的Moore-Penrose廣義逆。
系統(tǒng)結(jié)構(gòu)如圖5所示。
圖5 系統(tǒng)結(jié)構(gòu)圖
身份識別過程可以分為兩個階段:第一階段是利用特征提取算法進行步態(tài)特征的提??;第二階段是采用ELM算法進行分類。第一步是進行圖像的特征提取,采用步態(tài)能量圖(gait energy image,GEI)作為輸入。
首先介紹GEI的構(gòu)造過程。人體行走可以視為周期性動作。圖6是步態(tài)序列周期圖。從圖6可以看出,人體行走行為呈周期性展現(xiàn)。
圖6 步態(tài)序列周期圖
一個周期內(nèi)的二值圖像如圖7所示。灰度級的GEI定義為:
(12)
式中:N為一個周期內(nèi)的圖像幀數(shù)目,通過視頻分幀和圖像預處理可以得到每一幀二值步態(tài)圖;bI(x,y)為周期內(nèi)的每一幀二值步態(tài)圖;x,y為二維圖像平面坐標;G(x,y)為步態(tài)能量圖。
一個周期內(nèi)的二值圖像如圖7所示。
圖7 一個周期內(nèi)的二值圖像
步態(tài)能量圖反映了人體行走的步態(tài)輪廓在一個周期內(nèi)的變化。相比一般的二值圖像,GEI對圖像序列中的個別幀的圖像輪廓變形沒有那么敏感,對噪聲有很好的魯棒性。GEI反映了側(cè)影的主要形狀和在步態(tài)周期上人體運動信息的變化,可以作為身份識別的依據(jù)。步態(tài)能量如圖8所示。
圖8 步態(tài)能量圖
梯度方向直方圖(histogram of oriented gradient,HOG)是圖像處理中的一種特征提取算法。HOG算法原理圖如圖9所示。
圖9 HOG算法原理圖
HOG特征是將圖像像素點的方向梯度作為圖像特征,包括梯度大小和方向。通過計算圖像局部區(qū)域的梯度直方圖特征,將局部的特征串聯(lián)起來,構(gòu)成整幅圖像的HOG特征。該方法首先將圖像分成很多小的連通區(qū)域,叫作細胞單元(cell),比如大小可為8×8,采集細胞單元中各像素點的梯度和邊緣方向;然后在每個單元中累加一個一維的梯度方向直方圖,這就是一個細胞單元的描述符。將幾個細胞單元組成一個block,例如將2×2的細胞單元組成一個block,將一個block內(nèi)每個細胞單元的描述符串聯(lián),即可以得到一個block的HOG描述符。在統(tǒng)計一個cell的梯度直方圖時,一般考慮采用9個bin的直方圖來統(tǒng)計8×8像素的梯度信息,即將cell的梯度方向0~180°(不考慮正負)分成9個方向塊。若一個block由2×2個cell組成,每個cell包含8×8個像素點,每個cell提取9個直方圖通道,那么一個block的特征向量長度為2×2×9。再根據(jù)圖像的大小,即可得到一幅圖像的特征向量長度。然后將圖像的特征向量送入分類器進行訓練和識別[8-9]。
經(jīng)過對多幅GEI的HOG特征提取,可以得到每幅GEI的一行多維的特征向量。每一個特征向量用來描述一幅GEI的信息。選用的訓練集和測試集數(shù)據(jù)都進行標記,訓練集和測試集都是經(jīng)過HOG算法提取特征之后的特征向量。若有N類樣本,每個樣本的特征向量長度為n,則第i個樣本的ELM輸入如下:
II=(ai1,ai2,…,ain)T
(13)
本文ELM結(jié)構(gòu)如圖10所示。得到訓練后的模型并保存,接著在該模型上對用測試集的數(shù)據(jù)進行驗證。
圖10 本文ELM結(jié)構(gòu)圖
ELM在訓練之前可以隨機產(chǎn)生W和b,因此在參數(shù)設(shè)計上只需要確定隱含層節(jié)點個數(shù)即可,通過調(diào)整該參數(shù),可以計算出輸出層的權(quán)重β。因為ELM在訓練前產(chǎn)生參數(shù)的隨機性,因此選取節(jié)點個數(shù)后需要進行多次測試,對得到的測試結(jié)果取平均值,得出最終測試結(jié)果。
為了驗證本文方法的有效性和可行性,在CASIA數(shù)據(jù)集上進行了測試。該數(shù)據(jù)庫由中國科學院自動化研究所提供,可通過http://www.cbsr.ia.ac.cn/china/Gait%20Databases%20CH.asp進行申請后獲取。利用ELM算法和SVM算法進行了身份識別的測試,通過調(diào)節(jié)模型參數(shù)及對比試驗結(jié)果,驗證了使用ELM算法進行身份識別的可行性。將ELM算法和SVM算法進行對比,凸顯ELM算法在訓練速度上的優(yōu)勢。
本測試過程的計算機配置為處理器Intel(R)Core(TM)i5-8265U,軟件配置為Python3.7、PyCharm2018.2、opencv3.4.4、Matlab2016b。
本文測試選用CASIA步態(tài)數(shù)據(jù)庫中的數(shù)據(jù)。庫中共有三個數(shù)據(jù)集:Dataset A,Dataset B,Dataset C。在現(xiàn)實生活中所采集的步態(tài)視頻數(shù)據(jù)往往是少量的,并不像公開數(shù)據(jù)集中一樣可以獲得上百人的步態(tài)視頻。因此,本文選用Dataset B中的部分數(shù)據(jù),模擬視頻數(shù)據(jù)量少的情況下的識別情況。該數(shù)據(jù)集共有124個人的行走視頻,每個人有11個視角的視頻,在普通條件、攜帶包裹和穿大衣三種條件下行走采集。本測試對從該數(shù)據(jù)集中隨機選取的24個人共96個視角為90°的常規(guī)步態(tài)視頻進行處理。對這些視頻數(shù)據(jù)進行分幀以及圖像預處理后,共可生成96張GEI。接著,對這些GEI進行特征提取,并利用ELM算法和SVM算法進行身份識別。
數(shù)據(jù)過擬合現(xiàn)象如圖11所示。
圖11 數(shù)據(jù)過擬合現(xiàn)象圖
利用上述數(shù)據(jù)集進行處理,24個人共得到96張GEI(其中訓練集72張、測試集24張),提取GEI的HOG特征并送入ELM分類器進行測試。
圖11是激活函數(shù)為sigmoid、在不同的cell和block大小下進行測試的結(jié)果。從圖11可以發(fā)現(xiàn),隨著隱含層節(jié)點個數(shù)的增加,訓練集的準確率不斷提升,但測試集的準確率卻在下降。這是由于數(shù)據(jù)過少造成的過擬合。本次測試的訓練集為72張GEI、測試集為24張GEI,數(shù)據(jù)過少,因此需要對數(shù)據(jù)進行數(shù)據(jù)增強。本文采用了旋轉(zhuǎn)、鏡像和改變對比度等方法對數(shù)據(jù)集進行數(shù)據(jù)增強,將訓練集和測試集的數(shù)據(jù)分別擴增為2 160張和720張GEI。通過數(shù)據(jù)增強,可以有效地避免過擬合現(xiàn)象。
本文對測試選取的每個節(jié)點個數(shù)均進行了30次測試,取30次的測試結(jié)果的平均值,得到最后的識別率。
在隱含層不同節(jié)點個數(shù)下,將ELM算法識別的結(jié)果用Matlab繪制。Matlab試驗結(jié)果如圖12所示。
圖12 Matlab試驗結(jié)果
圖12(a)是4種參數(shù)下的測試結(jié)果匯總,圖12(b)~圖12(f)是不同參數(shù)下的具體測試結(jié)果。從圖12(f)中可以看出,當cell的大小取16×16、block的大小取2×2時,如隱含層節(jié)點個數(shù)增加,訓練集準確率不斷提升,但是測試集的準確率一直很低。因此,該特征提取參數(shù)對識別是無效的。經(jīng)計算可知,該參數(shù)下的特征向量長度為324,特征過少,因此無法訓練出有效的模型。將另外四種參數(shù)下的訓練和測試的結(jié)果繪制在同一個坐標系中,可以看出各個參數(shù)下的識別效果。當選取cell為2×2、block為2×2時,隨著隱含層節(jié)點個數(shù)的增加,測試準確率不斷提升。從圖12(e)中可以看出,當隱含層節(jié)點個數(shù)取30時,測試集準確率達到99.17%;之后,當節(jié)點個數(shù)再增加時,測試準確率也不再提升,而且訓練時間會增加。所以在該參數(shù)下,隱含層節(jié)點個數(shù)取30最為合適。在其他的cell和block取值下,測試準確率均沒有上述參數(shù)高,因此可以采用上述參數(shù)進行模型的訓練和測試。
ELM和SVM算法的識別結(jié)果對比如表1所示。
表1 識別結(jié)果對比
將結(jié)果繪制為條形圖,可以更直觀地看出ELM的優(yōu)勢。試驗結(jié)果如圖13所示。
圖13 試驗結(jié)果圖
從表1和圖13可以看出,SVM算法測試的準確率沒有ELM算法的準確率高,并且訓練模型的時間都比較長[10]。當cell大小為16×16、block大小為2×2時,雖然訓練的時間縮短了,但是由于特征向量的長度比較小,其準確率也下降了。ELM算法的一個顯著提升是訓練時間大大縮短。當cell選用2×2、block選用2×2時,雖然特征向量長度大,但是訓練時間只有9 s左右。這比SVM的訓練時間少得多,準確率達到了99.17%。
本文提出了一種利用步態(tài)信息的基于ELM的身份識別方法。通過對視頻進行分幀處理,從視頻數(shù)據(jù)中獲取測試對象行走的圖像幀,經(jīng)過圖像預處理后生成步態(tài)能量圖。為了避免過擬合現(xiàn)象進行了數(shù)據(jù)增強處理,利用HOG特征描述子對步態(tài)能量圖進行特征提取,使用ELM作為分類器進行身份的識別。試驗結(jié)果表明,本文使用的特征提取方法和分類算法可以取得較好的識別效果。與SVM相比,ELM能獲得更好的識別準確率,并且在訓練速度上有大幅提升。
在實際生活中,人行走時或多或少會受到衣物、灌木或路邊雜物的遮擋,并且獲得的視頻拍攝角度不一定是90°。這都會對識別準確率造成一定的影響。今后可在消除遮擋影響和多視角識別這兩個方面進行進一步研究。