汪 濤,汪泓章,夏 懿,張德祥
(安徽大學電氣工程與自動化學院)
步態(tài)是指人們行走時所表現(xiàn)的姿態(tài),不同于人臉、指紋、虹膜等,步態(tài)是唯一可以在遠距離非接觸狀態(tài)下獲得的生物特征。每個人的步態(tài)都有一定的差異性,所以可以用作不同身份的識別。步態(tài)分析始于上世紀60年代[1],根據(jù)所依賴的傳感器類型,目前步態(tài)識別主要分為以下三類:基于圖像傳感器、基于壓力傳感器以及基于加速度傳感器?;趫D像傳感器的步態(tài)識別主要受到拍攝的角度、光照和遮擋等因素的影響,識別的難度較大[2]。壓力傳感器則需要被識別人在壓力感知的場地上行走,或者穿上裝有壓力傳感器的鞋,才能進行步態(tài)信息的采集,因此在實際生活中限制較大、成本較高[3]。而加速度傳感器可以安放在人體的多個部位,數(shù)據(jù)采集簡單而高效[4]。
過去的幾十年里,步態(tài)識別領域開展了大量研究工作,已經(jīng)取得了不少進展[5-8]。近年來,隨著可穿戴技術的快速發(fā)展,通過攜帶方便的可穿戴傳感器來進行步態(tài)信息的采集正受到越來越多研究者的重視。Mantyjarvi等人提出利用加速度數(shù)據(jù)進行步態(tài)識別,他們利用佩戴在皮帶上的三軸加速度計來采集行走過程中的步態(tài)信息,然后通過簡單的峰值檢測方法進行步態(tài)周期提取,并為每個受試者建立步態(tài)模板[9]。Derawi等人在隨后的研究中,首先使用時間插值和濾波對數(shù)據(jù)進行預處理,然后為了刪除不規(guī)整的步態(tài)周期數(shù)據(jù),他們利用動態(tài)時間歸整DTW(Dynamic Time Warping)來計算所有步態(tài)周期數(shù)據(jù)之間的相互距離并刪除與其他步態(tài)周期數(shù)據(jù)具有明顯異常距離的步態(tài)周期數(shù)據(jù)[10]。Hoangt等人利用加速度傳感器和磁力計來采集步態(tài)信息,他們提出將加速度傳感器測量的數(shù)據(jù)轉(zhuǎn)化到標準的坐標軸,以減少放置位置不穩(wěn)定的影響[11]。Bieber等利用手機內(nèi)置的加速度傳感器和麥克風來同時采集加速度和聲音信息,然后利用決策樹來進行步態(tài)識別[12]。
前人的這些工作表明,利用機器學習來加工處理加速度、角速度信號中所體現(xiàn)的步態(tài)信息,從而實現(xiàn)身份識別是一個非常有意義的研究方向[13-14]。然而,由于智能手機等設備在行走過程的位置變化,以及傳感器本身的信號漂移所帶來的噪音以及異常點等問題,使得利用智能手機來進行步態(tài)識別的準確率,特別是在大規(guī)模數(shù)據(jù)集上的準確率仍然有很大的提升空間。近年來,以卷積神經(jīng)網(wǎng)絡CNN(Convolutional Neural Network)為代表的深度學習技術在信號特別是圖像信號的特征提取和識別方面取得了巨大的成功。CNN本質(zhì)上是一個模擬局部感受野的多層感知機,通過多次卷積和池化來提取數(shù)據(jù)在不同尺度上的特征,其成功的原因關鍵在于它所采用的局部連接和共享權值的方式,一方面減少了權值的數(shù)量使得網(wǎng)絡易于優(yōu)化,另一方面降低了過擬合的風險。注意力機制(attention)基于人類視覺注意機制,具體來說就是模擬人類觀看一張圖片時,總是聚焦圖片的某些特定區(qū)域而不是整張圖片[15]。注意力機制最早是在圖像視覺領域提出來的,其代表性工作是Google的Deepmind團隊所做的一項工作,他們在循環(huán)神經(jīng)網(wǎng)絡RNN(Recurrent Neural Network)模型上使用了注意力機制來進行圖像分類[16]。本文提出一種基于深度學習的步態(tài)識別方法,該方法融合卷積神經(jīng)網(wǎng)絡和注意力機制。卷積神經(jīng)網(wǎng)絡具有捕捉局部特征的優(yōu)勢,而注意力機制可以對特征中的關鍵點進行進一步強化。實驗表明,具有注意力機制的卷積神經(jīng)網(wǎng)絡可以更好的表達步態(tài)特征,從而取得更高的識別準確率。
如圖1所示,步態(tài)識別過程一般包括以下幾個方面:預處理、特征提取、步態(tài)分類以及性能評估。步態(tài)識別的難點主要是如何有效且魯棒的特征提取。本研究首先獲取行走過程中的加速度、角速度信號,然后通過插值、去噪對數(shù)據(jù)進行預處理,最后通過基于注意力機制的卷積神經(jīng)網(wǎng)絡來學習步態(tài)特征。其主要流程如下圖1所示:
圖1 步態(tài)識別流程
由于軟件時鐘的不準確性,智能手機對步態(tài)數(shù)據(jù)的采樣是不均勻的,所得到的數(shù)據(jù)采樣間隔不一致。為了處理的方便,首先對數(shù)據(jù)進行三次樣條插值,實現(xiàn)每隔5 ms取一個數(shù)據(jù),一個完整的步態(tài)周期大約需要1 s左右的時間,因此一個步態(tài)周期大約有200個數(shù)據(jù)點;然后利用低通有限脈沖響應FIR(Finite Impulse Response)濾波器對將插值之后的數(shù)據(jù)去噪并減少可能出現(xiàn)在較高頻率的運動偽影,一般使用截止頻率為f=40 Hz,漢寧窗口長度設為1 s。
一個完整的步態(tài)周期是指行走時一側足跟著地到該側足跟再次著地的過程,它包含了步態(tài)的單步特征,是實現(xiàn)步態(tài)識別的重要基礎。一般來說,同一個人的步態(tài)特征是穩(wěn)定且唯一的,因此連續(xù)的步態(tài)周期應當具有高度的相關性。為了檢測動態(tài)變化的步態(tài)周期,首先識別一個較容易區(qū)分的步態(tài)周期,并以此周期的步態(tài)信號作為模板,進而通過模板匹配的方式找尋與模板具有最大相關性的信號片段作為下一個步態(tài)周期,同時進行模板的迭代更新,從而使得下一個周期的檢測更加準確[17]。步態(tài)周期檢測過程中,所使用的步態(tài)信號主要是總加速度的幅度信號。對于每個樣本i(i=1,2,…),其總加速度幅度信號計算如下:
設i′的幅度值amag(i′)是步態(tài)信號開始端的一個最小值,以i′為中心,提取200個加速度數(shù)據(jù)集,公式如下:
Z=(amag(i′-99),…,amag(i′),…,amag(i′+100))
(2)
式中:Z表示的是第一個周期內(nèi)的加速度模板。設C(i)是下一個以i點為起始的連續(xù)數(shù)據(jù)片段,其長度N=200,也即:
C(i)=(amag(i),…,amag(i+N-1))
(3)
C(i)與模板的相關距離V(i)的計算如下:
(4)
(5)
圖2 步態(tài)相關距離V(i)
圖2顯示的是所計算的對應不同點的相關距離,兩個最大值之間所對應的就是一個步態(tài)周期。最大值所在位置可以通過簡單的閾值法進行定位。根據(jù)圖2顯示,閾值設為0.5可以滿足要求。通過第一個模板找到下一個緊鄰的步態(tài)周期,也就是第二個周期Z′。其更新公式如下所示:
Z=0.9Z+0.1Z′
(7)
可以看出新的模板是舊模板Z和Z′的加權平均。上述過程一直進行到數(shù)據(jù)的最后一個步態(tài)周期為止。通過這種方法可以在每個新周期獲得相對準確的模板。
由于數(shù)據(jù)是通過褲子口袋中的手機來采集的,而手機的位置并沒有固定,因此加速度和角速度會有輕微的方向偏移。為此,需要為所采集的數(shù)據(jù)建立一個新的方向不變坐標系。新坐標系中三個正交的坐標軸,其方向與智能手機的方向無關,并與重力和運動方向?qū)R[18]。設一個步態(tài)周期樣本長度為N1,其每個樣本的加速度、角速度表示如下:
A=[ax,ay,az]
(8)
K=[kx,ky,kz]
(9)
式中:x代表面向手機垂直屏幕的方向,y代表從手機左側到右測的方向,z代表手機底端到頂端的方向,A表示加速度,K表示角速度,ax、ay和az代表著x、y和z方向上的加速度向量,kx、ky和kz代表著x、y和z方向上的角速度向量。
重力方向的加速度是加速度計數(shù)據(jù)中的主要低頻分量,然而由于智能手機在行走過程中位置會出現(xiàn)一些變化,因此在智能手機(x,y,z)坐標系中,重力方向的加速度并不是一個常矢量。為此,我們利用一個步態(tài)周期內(nèi)的加速度矢量均值來估計重力加速度矢量,其表示如下:
A1=A-f1×(ATf1)T
(12)
在水平面方向,我們將加速度數(shù)據(jù)變化最大的方向(也就是行進方向,方差最大)設為新坐標系的第二個坐標軸。為此,利用主成分分析PCA(Principal Component Analysis)來計算數(shù)據(jù)方差最大的方向。首先計算協(xié)方差矩陣,公式如下所示:
(13)
式中:1N1是長度為N1的全1向量。H1最大特征值對應的特征向量h1是數(shù)據(jù)中的最大方差方向,這樣第二個坐標系方向計算如下:
由于以上兩個方向正交,所以第三個方向可通過叉積獲得:
f3=f1×f2
(15)
將原始的加速度、角速度數(shù)據(jù)投影到新的坐標空間,各個分量計算如下:
af1=ATf1;af2=ATf2;af3=ATf3
(16)
kf1=KTf1;kf2=KTf2;kf3=KTf3
(17)
于是得到坐標轉(zhuǎn)換后的新的步態(tài)數(shù)據(jù):
A′=(af1,af2,af3);K′=(kf1,kf2,kf3)
(18)
由于步行速度和步幅的變化,每個步態(tài)周期都有不同的持續(xù)時間,從而導致每一個步態(tài)周期的數(shù)據(jù)長度不一致,而深度學習模型通常需要輸入數(shù)據(jù)的長度要一致,也即長度大小要固定。根據(jù)本文步態(tài)數(shù)據(jù)的特點,實驗中通過插值再抽取的方式將數(shù)據(jù)長度統(tǒng)一為200。為了取得更好的訓練和分類性能,對數(shù)據(jù)進行幅度歸一化處理,以獲得具有零均值和單位方差的向量。由于加速度、角速度各自有三個方向(x、y、z)的數(shù)據(jù),加上所計算的總加速度和總角速度,故而針對每個步態(tài)周期共有八個長度為200的向量,它們共同組成本文實驗中的輸入信號。
本文所提基于注意力機制的卷積神經(jīng)網(wǎng)絡其主要流程如圖3所示。在圖3所示的網(wǎng)絡結構中,Acc代表加速度,Gry代表角速度,Con代表卷積核,Pool代表池化操作,⊕表示加速度與角速度分別通過卷積之后的特征融合(本文采用的是串接融合),Attention代表注意力機制模塊,Output代表最后輸出的分類特征,其維度為類別數(shù)35。
圖3 DCCNN+attention算法結構圖
考慮到本文所使用的數(shù)據(jù)集同時包含加速度和角速度數(shù)據(jù),因此設計了一個雙通道的CNN結構,以下簡稱為DCCNN(Double-Channel CNN)。如圖3所示,兩個通道的CNN分別對步態(tài)的加速度和角速度信息進行特征提取,之后進行特征的串接融合。將加速度與角速度分別用CNN訓練,可以分割不同模態(tài)數(shù)據(jù)的特征空間,有利于訓練時得到最優(yōu)的梯度下降,從而可以更好的提取加速度和角速度的特征信息。
注意力機制的結構如圖4所示,其主要作用是強化學習步態(tài)信息中對特征表達比較重要的部分。
設f=(f1,f2,…,fi,…,fn)∈RM×N表示通過DCCNN所提取到的特征圖(feature map),而fi∈RM×N是其中的一個特征向量,于是對應于fi的注意力αi,其計算公式如下:
圖4 注意力模型
(20)
(21)
式中:βi是fi通過單層感知器所得到的隱變量,VT是參數(shù)矩陣,W1和b1是權重矩陣。式(21)對隱變量進行基于指數(shù)函數(shù)的非線性變換,從而得到每一個特征fi的注意力值αi,而αi的值越大,說明所分配的注意力越多,則該特征向量對步態(tài)分類具有更重要的作用[19]。計算注意力加權的特征向量公式如下所示。
在分類階段,我們利用全連接層將高維特征ε壓縮到與類別數(shù)相等的較低維度,進而通過分類器計算相應類別的概率,公式如下:
p=softmax(W2ε+b2)
(23)
式中:W2和b2是權重矩陣。整個網(wǎng)絡的損失函數(shù)為分類交叉熵函數(shù),其定義為:
式中:k代表訓練樣本的數(shù)目。訓練過程中采用隨機梯度下降算法[20]來對注意力卷積神經(jīng)網(wǎng)絡中的所有參數(shù)進行優(yōu)化更新。
實驗所使用的數(shù)據(jù)集由Gadaleta等人貢獻[4],也即IDNet數(shù)據(jù)集。IDNet數(shù)據(jù)集由50個人的步態(tài)信息所組成。在采集過程中,測試者攜帶不同品牌的手機進行測試,每次測試大約5 min,由于測試者行走能力的差異,每個人的測試次數(shù)從幾次到十幾次不等。測試者以自己習慣的方式行走,以模仿真實的場景。采集所得到的加速度、角速度以及磁場信號通過A/D轉(zhuǎn)換器進行數(shù)字化并保存到手機的存儲卡上,同時自動上傳到遠端服務器上。IDNet數(shù)據(jù)集中有一部分數(shù)據(jù)因為數(shù)據(jù)量過少或其他原因無法使用,實驗一共選取了其中35個人的步態(tài)數(shù)據(jù)用于訓練和測試。為了證明算法的優(yōu)越性,針對每一個人,取200個步態(tài)周期的數(shù)據(jù),然后將所有的數(shù)據(jù)劃分為訓練集、測試集和驗證集,它們兩兩之間互不交叉,并且隨機均勻地從總的數(shù)據(jù)集中選取。具體來說每個人分別有60、100個數(shù)據(jù)作為訓練和測試使用,其余的數(shù)據(jù)都用做驗證集。算法所涉及到的一些重要超參數(shù)在實驗中的取值如表1所示。
表1 超參數(shù)取值
為了測試加速度與角速度數(shù)據(jù)對步態(tài)識別的不同作用,試驗中利用CNN先分別對加速度和角速度數(shù)據(jù)進行步態(tài)識別,然后再將兩種數(shù)據(jù)融合在一起來進行步態(tài)識別,它們的試驗結果如圖5所示。單獨使用加速度數(shù)據(jù)的準確率為95.3%,單獨使用角速度數(shù)據(jù)的準確率為93.5%,但兩種數(shù)據(jù)融合之后的結果為97.5%。
圖5 利用加速度、角速度以及兩者融合數(shù)據(jù)進行 基于CNN的步態(tài)識別的實驗結果對比
在實驗中為了證明注意力機制能夠強化步態(tài)特征,我們將DCCNN與DCCNN+attention的實驗結果進行比較,其結果如圖6所示。圖6中橫坐標為迭代次數(shù),縱坐標為測試數(shù)據(jù)的識別準確率,可以看出隨著迭代次數(shù)的增加,準確率越來越高,直到迭代到一定的次數(shù)以后,結果基本趨于穩(wěn)定。同時可以看出DCCNN與注意力機制的結合對DCCNN性能的提升具有一定的效果,其準確率提升了0.3%。
圖6 注意力機制的實驗結果對比
為了驗證本文算法的有效性和優(yōu)越性,實驗中選取了一些常見模型進行對比研究。圖7顯示了各種算法損失值(所有比較算法均采用最小化分類交叉熵損失)的收斂情況。其中橫坐標代表迭代次數(shù),縱坐標表示損失函數(shù)值。由圖7可知,實驗中DCNN+attention的損失值下降比較快并且穩(wěn)定時損失值最小,loss值為0.096,DCCNN的loss值為0.10,CNN的loss值為0.11,LSTM(Long Short-Term Memory)的loss值為0.20,BiLSTM(Bi-directional LSTM)的loss值為0.16。
圖7 各個算法損失值
表2為實驗中各個模型的準確率結果??梢钥闯鯟NN模型的準確率比LSTM模型高0.7%,這說明層數(shù)較深、特征圖數(shù)量較多時,CNN能夠提取到更加有利于分類的特征,從而表現(xiàn)出比LSTM更為優(yōu)秀的分類性能。在文獻[4]中,作者利用PCA對CNN提取的特征降維,再利用支持向量機SVM(Support Vector Machine)作為分類器,其實驗結果比常規(guī)CNN提高了0.5%,達到了98%,這可能是由于降維有利于有效特征的表達,同時SVM所提供的分類能力通常比常規(guī)CNN中的softmax要強。針對同一數(shù)據(jù)集,利用本文所提的DCCNN,其準確率相對于CNN+SVM提高了0.7%,而利用DCCNN與attention結合的模型,準確率進一步提高了0.3%。
表2 各種模型的實驗準確率對比
本文首先通過基于動態(tài)模板的方式提取基于加速度信號的步態(tài)周期,力求最大程度提取一個周期內(nèi)的完整步態(tài)信息。針對每一個步態(tài)周期所代表的步態(tài)樣本,本文利用卷積神經(jīng)網(wǎng)絡對其進行步態(tài)特征提取,然后再利用注意力機制對步態(tài)特征進行關鍵點加強,最后實現(xiàn)分類。實驗表明,本文模型的準確率較其他深度學習模型具有更高的準確率。由于實驗所使用的數(shù)據(jù)集相對較小,下一步我們將自行采集人數(shù)更多的步態(tài)數(shù)據(jù)集以進一步測試本文所提模型。