江 頡,李一飛
(浙江工業大學 計算機科學與技術學院,杭州 310023) E-mail:jj@zjut.edu.cn
人體活動識別技術被廣泛應用于生產生活中,如老人防摔跤監護、廠區工人監測、運動數據記錄等[1-4].一般采用加速度、慣導等傳感器采集人體運動過程中的數值,通過提取數據特征值后輸入到分類器(如決策樹[5]、SVM、貝葉斯分類器、神經網絡、CNN[6]、ANN[7]、隱馬爾科夫模型等)中完成人體活動的識別.這些方法的關鍵在于特征值的提取以及分類器的選擇,但是特征提取一方面計算復雜度高,另一方面可能會丟失大量的信息,影響識別率的進一步提高.
目前利用可穿戴設備實現人體活動識別已經取得了一定的進展.傳統的方法能夠有效識別人體活動.文獻[8]采用了一種基于SVM的姿勢檢測算法,用于在線監測.為了實現在現實環境中對不同運動進行分類,文獻[9]采用kalman算法對采集的加速度數據進行濾波并利用貝葉斯分類器實現了對年輕人和老人的上樓、下樓、走路三種活動的識別,分類算法的準確率達到90%.隨著研究的深入,人們采用了加速度在各個方向上的頻域和時域中獲取的特征,采用了馬爾科夫模型[10]或特征增強算法[11]等來提高準確率,平均準確率能夠達到95%以上.文獻[12]基于加速度計、陀螺儀和氣壓計進行多維數據融合并提取時域特征,實現活動識別,但平均識別率也僅為94%.文獻[13]提出了通過提取加速度計的物理特征值,并利用相似相溶原理實現活動分類,但該方法需要提取大量的特征值,計算復雜度較高.由于神經網絡的不斷發展,CNN也被用于人類活動識別的研究,文獻[14]通過提取加速度數據特征并利用CNN模型判斷人體活動.其實驗結果表明CNN模型在特征分類方面具有較高的準確性.
在目前大多數的人體活動識別中一般存在以下難點,一方面特征提取會丟失大量的信息,另一方面需要提取大量的特征值,算法復雜度過高,不利于在移動終端上運行.因此本文提出一種高識別率的輕量化CNN活動識別方法(Lightweight CNN Behavior Recognition Algorithm,LCBRA),該方法無需提取任何特征值,直接采用原始采集數據轉換為圖像作為人類活動識別依據,并基于深度學習模型壓縮方法構建輕量級CNN模型完成活動識別.
由于數據采集過程中采集設備受外界干擾,導致少量數據會出現異常值,為減少異常值對活動識別的影響,而又不丟失關鍵信息(如加速度數據波形峰谷位置的數據),本文采用了一種數據處理方法,將原始數據經過轉換后得到穩定的數據.
首先,利用滑動窗口取原始數據中的若干個連續數據求取平均值,生成一個新的數據,如圖1根據d1、d2、d3計算出t1,然后滑動窗口向后移動一個數據, 并根據滑動窗口內數據再生成一個數據t2,以此類推,直到原始數據處理結束后得到新的數據,其中滑動窗口大小可根據實驗確定.如圖2所示,經該方法處理后異常數據會逐漸傾向于正常數據,而又不丟失關鍵信息.

圖1 數據穩定處理過程圖Fig.1 Data stabilization process diagram

圖2 數據穩定處理部分結果Fig.2 Results of data stabilization processing
目前,大多方法數據處理方式是提取加速度數據序列的特征值,如方差、標準差、熵、峰谷值等,然而特征提取會丟失一些關鍵信息,對后續進行識別的準確率會產生不利影響,因此本文采用一種加速度數據轉換方法,將加速度數據投影到圖像上,轉化為圖像格式.

圖3 加速度數據轉為圖像過程Fig.3 Process of acceleration data to image
對走路、慢跑、上樓梯、下樓梯4種活動的每一個活動單個周期內的采樣點數量進行統計后可以發現,不同活動采集的加速度數據量非常接近.如何從采集的加速度數據波形中選取合適數量的數據用于活動識別非常關鍵,選取的數量太多,會增加計算復雜度,而選取的數據量太少,會丟失一些信息,勢必會影響識別結果.為確保數據的完整性,取略大于4種活動中的最大采集數作為滑動窗口大小,可以保證該滑動窗口取的數據能夠包括任何一種活動對應的加速度數據.由于坐下和站立行為基本處于靜止狀態,選取數據的滑動窗口大小,不會造成太大的影響.
利用上述滑動窗口取得完整的活動數據作為后續算法的訓練數據集.加速度計采集的加速度數據包括x、y、z三軸數據,利用x、y軸數據確定空白圖像中的像素點位置,然后利用x、y、z三軸加速度數據計算灰度值并轉換為灰度圖,將計算的灰度值映射到0~255范圍內,如圖3所示.
目前利用加速度數據進行活動識別的識別率在96%左右,很難進一步提高.同時,已有研究證明卷積神經網絡(CNN)在圖形分類領域準確率高達97%以上,是傳統分類算法(如SVM、決策樹、貝葉斯網絡等)難以達到的[13].因此,本文將加速度數據轉換為圖像再利用CNN模型進行活動分類.
構建的CNN模型網絡結構如圖4所示,包括輸入層、兩層卷積層和兩層池化層.將灰度圖作為輸入數據,卷積層1的輸入通道參數設置為1,輸出通道參數設置為32;卷積層2輸入通道參數設置為32,輸出通道參數設置為256;全連接層輸入通道參數設置為256,輸出類別為6(6種活動的分類).網絡中卷積核的大小為5×5,池化層核的大小為2×2,且卷積核和池化核的步幅為1.

圖4 CNN模型結構Fig.4 CNN model structure
a)卷積層:利用卷積核對輸入到卷積層的灰度圖進行卷積,將卷積結果輸入到一個激活函數中,即可得到卷積處理后的特征圖,過程如公式(2)所示.
(1)
(2)
b)池化層:又稱下采樣層,其主要有2個功能,特征提取和對輸入數據進行降維.能夠保證輸入數據的局部特征不變,并降低輸入數據的維度,有利于提高CNN的效率,且能有效防止過擬合問題.常見的池化方法有最大池化、隨機池化和平均池化等,如公式(3)所示.
(3)

c)全連接層:該層將前面幾層得到的2維特征圖拼接為1維特征,作為輸入,然后結合權重系數和偏置利用激活函數進行分類.
ul=xl-1·wl+vl
(4)
xl=f(ul)
(5)
公式(4)中ul表示全連接層l的凈激活信息,其中xl-1為上一池化層輸出的特征圖,wl為全連接層的權重系數,vl為偏置.公式(5)中xl為全連接層輸出的分類結果,公式f為激活函數,在全連接層采用ReLu函數.
d)Dropout層:通過隨機的斷開部分連接,防止CNN出現過擬合現象,如圖4,在全連接層和輸出層之間.
e)輸出層:全連接層輸出的特征值經過激活函數后獲得分類結果,一般通過Softmax函數計算每種類型的概率,最后輸出分類結果,如公式(6)所示.
Cr=softmax(xl)
(6)
公式(6)中xl為全連接層輸出的特征,Cr為分類結果.
活動識別算法一般運行在可穿戴設備和移動終端上,這些設備資源有限,將構建的CNN模型直接移植到硬件上需占用大量的內存資源.為解決該問題,主要有2種技術手段:
1)構建規模更小的模型,但規模越小,識別率越低;

圖5 SVD分解圖Fig.5 SVD exploded view
2)利用模型壓縮技術對大型模型進行壓縮,降低資源占用量,該方法在損失微小準確率的前提下可大幅縮減模型大小.
當通過良好的設計得到一個合理的CNN模型后,我們實際上可以發現,參數比較多的是全連接層.然而,在這些參數中,有大量的參數值極小,這樣數值的神經元信息量有限,但是卻和其他信息量大的神經元占用了一樣的存儲空間和計算資源,因此,本文采用奇異值(SVD)分解技術,使得構建的模型在保證高識別率的同時,能夠移植到可穿戴設備中運行.CNN模型中參數占用了大量的內存,且參數以二維矩陣的方式存儲,SVD能夠較好的分解m×n矩陣.假設A∈Cm,n矩陣,則存在m階酉矩陣U和n階酉矩陣V,使矩陣A能夠被分解,如公式(7)所示.
A=U∑VH
(7)
公式(7)中∑=diag(σ1,σ2,σ3,…,σr)為A的非零奇異值,VH為V的Hermit矩陣.
由于奇異值前1%~10%的值占了奇異值之和的99%以上,為減少計算量,可將公式(7)分解為公式(8)所示.
(8)
公式(8)中r是一個遠小于m和n的常數,當r越接近于n時,計算結果越接近A.
SVD分解過程如圖5所示,圖中A表示模型參數矩陣,假設圖形面積表示參數矩陣占用的內存大小,經過SVD分解后,圖中右側面積之和明顯小于左側面積,因此SVD方法能夠大幅度縮減CNN模型所占用的內存資源.
本文采用Lab 實驗室公開的 Actitracker 數據集WISDM[15],該數據集包含走路、慢跑、上樓梯、下樓梯、坐下和站立6種活動,采樣頻率為20Hz,總共采集了36位實驗員的1098207條加速度數據(加速度計x、y、z三軸數據),采集裝置放置在口袋中,其中走路占38.6%,慢跑占31.2%,上樓梯占11.2%,下樓梯占9.1%,坐下占5.5%,站立占4.4%.
本節采用GTX1080的GPU、16G內存的PC機作為實驗硬件環境、基于CAFFE平臺進行實驗,實驗對走路、慢跑、上樓梯、下樓梯、站立和坐六種活動進行分類,其中598207條加速度數據用于訓練模型,500000條數據用于測試,訓練數據與測試數據都取自WISDM數據集,且訓練數據與測試數據不重復.
加速度數據波形經過2.1節采用的方法穩定處理后結果如圖6所示,圖中原始數據存在異常點,經過大小為2的滑動窗口處理后異常值減小,通過大小為3的滑動窗口處理后異常點基本恢復正常,且從結果可以看出加速度數據波形未發生大幅度變化.

圖6 數據穩定處理結果Fig.6 Result of data stabilization processing
如表1所示,每走一步,加速度計平均采集13.5次;慢跑一步,加速度計平均采集11.5次;上樓梯一步,加速度計平均采集14.8次;下樓梯一步,加速度計平均采集13.9次.為保證數據的完整性,根據統計結果將取數據的滑動窗口大小設置為15,該值略大于4種活動中的最大采集次數(上樓梯行為),可保證該滑動窗口取的數據能夠包括任何一種活動對應的加速度數據.
表1 活動周期內采集加速度數據量表
Table 1 Acceleration data scale collected during
the activity period

行為動作平均加速度數據量(次)走路13.5慢跑11.5上樓梯14.8下樓梯13.9
將加速度轉換為圖像后,圖像的尺寸對算法具有較大的影響,理論上圖像尺寸越大,則轉換后數據完整性越好,越有利于算法識別.實驗結果如圖7所示,橫坐標為不同圖像尺寸,縱坐標為對應的算法識別準確率.

圖7 不同圖像尺度下識別準確率Fig.7 Recognition accuracy at different image scales
實驗結果表明隨著轉換圖像尺寸的增加,算法識別率會逐步提高,在圖像尺寸為25×25時,算法的整體識別率已經高于93%,當圖像尺寸為40×40時,算法識別率達到了98.5%.由于本文研究的算法一般運行在可穿戴設備中,因此圖像尺寸太大會影響運算速度,基于此考慮,本文后續實驗將圖像尺寸設置為40×40.結果如圖8所示,圖中每一幅圖像代表若干個完整的活動周期.從轉換結果可以看出不同活動對應的圖形和分布存在較大差別,如圖中走路行為(Walking)的像素點分布比較集中,且圖形分布在圖像中的中間偏右;慢跑行為(Jogging)的像素點分布比較分散,圖形主要分布在圖像中的右下角;上樓梯行為(Upstairs)圖形較長,圖形分布在圖像中的左上角;而坐著的行為(Sitting)為一個較暗的點;站立行為(Standing)的圖形也呈點狀,但點比較分散且亮度較高.
總體來說不同活動得到的圖像在形狀、分布位置和不同像素點的灰度值都具有較大的差異,這種明顯的特征差異為后續活動的分類提供依據.
在訓練集中,將采集的樣本圖像進行隨機排序,然后輸入到CNN模型中,每次訓練向CNN中輸入64張活動識別圖像,實驗結果如圖9所示,橫坐標為訓練的迭代次數,縱坐標為識別準確率和損失精度.

圖8 加速度轉圖像結果Fig.8 Results of acceleration image

圖9 模型訓練結果Fig.9 Results of model training
實驗結果表明隨著訓練次數的增加,模型的識別精度快速提高,然后提高幅度變緩,因為在前幾次的訓練中模型參數已經被訓練到一個合理的值,后續訓練會逐漸對參數進行微調,因此識別率逐漸提高,且隨著模型識別率逐漸提高,損失值逐漸下降.模型訓練最終得到了97.6%的總體識別率.
在CNN模型中各層參數數量差別顯著,其中全連接層L的參數數量可能達到其他層的數百倍,因此全連接層是模型壓縮的重點對象.實驗采用第4節的方法壓縮模型的全連接層參數,結果如表2所示.
實驗結果表明模型完全無壓縮時,對六種活動的識別率達到98.5%.當模型被壓縮為原來的80.4%時,模型的識別率為98.3%,稍微有所降低.當模型被壓縮為原來的31.5%時,識別率為97.6%.繼續壓縮模型為原來的21.3%時,模型識別率驟減.綜上所述,為考慮到模型大小和準確率之間的平衡,本文選擇將模型壓縮為原來的31.5%,在該壓縮率下識別率仍然保持為97.6%.
對測試數據集進行識別準確率驗證,每種活動的數量為3000次,實驗結果如圖10所示.
表2 SVD模型壓縮結果圖
Table 2 SVD model compression results

壓縮后參數規模壓縮率識別率1054208475855029332072245411385100%80.4%52.2%31.5%21.3%10.8%98.5%98.3%97.9%97.6%83.7%75.4%

圖10 活動識別結果Fig.10 Results of activity recognition
從識別率情況可以看出即使某幾種活動比較相似,但本文提出的方法仍然能夠較好的區分.如站立和坐著都處于靜止狀態,將這兩種活動的加速度數據轉換為圖像后,其分布位置和大小明顯不同,因此能夠較好的區分.但上下樓梯的活動識別率有待提高,因為不同實驗者在上下樓梯時,活動的差異可能千差萬別,導致識別準確率不是太高.
傳統基于加速度數據的活動識別算法一般采用決策樹(J48)、SVM分類器等方法對提取的加速度波形特征值(均值、方差、峰谷值、熵、相位差、頻率)進行分類[16-18].實驗對比傳統分類器、參考文獻[19]提出的STAR和本文提出LCBRA活動分類方法,實驗結果如圖11所示,橫坐標為不同活動,縱坐標為對應的六種活動的識別準確率.
實驗結果表明本文提出的LCBRA方法在走路(Walking)、慢跑(Jogging)、下樓梯(Downstairs)、坐著(Sitting)和站立(Standing)5種活動的識別率都高于其他3種活動識別方法,且對每種活動的識別率都在90%以上.STAR方法針對走路、坐著和站立3種活動的識別率較高,而對相似活動(如上樓梯和下樓梯)的識別率較低.傳統的分類器SVM和J48對走路、慢跑、上下樓梯四種復雜的活動識別率都較低.LCBRA、STAR、SVM和J48四種活動識別方法對站立和坐著的識別率都比較高,因為這兩種活動的動作比較單一,采集的加速度數據不會因為不同實驗者的個性化動作而有太大區別.四種活動識別方法的總體識別率如表3所示,其中本文提出的LCBRA方法識別六種活動的總體識別準確率達到了97.6%,STAR方法的總體識別率為71.2%,SVM和J48識別準確率較低.實驗結果表明LCBRA方法對六種活動的識別率都比較均衡,且達到了較好的結果,而STAR方法通過提取物理特征進行活動識別,特征描述并不完善,而SVM和J48方法在分類方面的效果并不理想,導致識別準確率不高.

圖11 活動識別對比Fig.11 Comparison results of activity recognition
表3 總體識別率對比表
Table 3 Overall recognition rate comparison table

識別方法LCBRASTARSVMJ48總體識別率(%)97.671.262.350.8
研究了一種輕量化的CNN活動識別方法,首先以CNN模型在圖像識別領域的高識別率為基礎,將加速度數據轉換為圖像格式;然后構建CNN模型并利用SVD方法對模型參數進行壓縮,使模型輕量化;最后驗證了提出的活動識別方法在各方面的性能,實驗結果表明活動識別的總體識別率為97.6%,且能夠較好的區分相似活動(如走路和慢跑).后續工作希望能夠進一步研究更合適的深度學習模型,解決在可穿戴設備上的活動識別問題.