吳雨浩王從慶
(南京航空航天大學 自動化學院,南京 210016)
近年來,利用sEMG(Surface Electromyography)信號對手勢進行識別是康復手機器人研究的一個重要方向,目前針對基于sEMG信號的手勢識別的研究,國內(nèi)外提出了多種方法。Doerschuk等[1]提出了一種多元自回歸模型方法,首次證實了sEMG信號在手勢識別中的作用。蔡立羽等[2]提出了一種基于小波變換的方法對4種手勢進行分類研究,準確率在90%。Wang等[3]提出了一種基于線性判別分析的方法對手勢進行分類,準確率達到92%。席旭剛等[4]提出了一種改進的快速獨立成分分析方法,準確率為90%。宋佳強等[5]通過基于組合能量特征的手勢識別算法對8種手勢進行識別分類,準確率達97.5%。周旭峰等[6]通過基于組合RNN(Recurrent Neural Networks)網(wǎng)絡的手勢識別方法對10種手勢進行手勢分類,準確率達90.78%。劉威等[7]通過對5種手勢的sEMG信號提取32個不同的時頻特征,進行特征組合,構建特征圖,利用卷積神經(jīng)網(wǎng)絡進行手勢識別,準確率達98.1%。李自由等[8]針對MYO手環(huán)旋轉(zhuǎn)位置不同導致識別精度降低等問題,提出了一種基于MYO旋轉(zhuǎn)偏移估計與自適應校正方法,對8種手勢進行識別,準確率達78.37%。吳常鋮等[9]針對手勢識別準確率受肌電傳感器位置的影響,提出了一種基于ANOVA(Analysis of Variance)和BP(Back Propagation)神經(jīng)網(wǎng)絡的方法,對6種手勢進行識別,準確率達94.6%。
深度學習作為一種端到端的學習方法,已有較長的歷史。1998年,Lécun等[10]提出了LeNet-5網(wǎng)絡結構,在Mnist手寫數(shù)字數(shù)據(jù)集上識別精度達到99.7%。2012年,AlexNet網(wǎng)絡在ImageNet競賽中取得冠軍[11]。隨后,人們提出更多的深度學習神經(jīng)網(wǎng)絡結構。
常規(guī)方法中對表面肌電信號的采集使用的主要傳感器有針電極、濕電極等。由針電極信號采集的信號純凈、干擾小,但對受試者傷害較大。濕電極與皮膚接觸面積小,但是佩戴前需要去除汗毛,處理過程復雜。因此,筆者最終選擇MYO手環(huán)對sEMG信號進行采集。該手環(huán)有8個肌電信號傳感器,通過藍牙與電腦進行數(shù)據(jù)傳輸,采樣頻率為200 Hz。并設計了一種多路卷積神經(jīng)網(wǎng)絡,對14種手勢的sEMG信號數(shù)據(jù)進行識別,準確率可達97.89%。
常規(guī)的手勢識別方法通常包括信號采集、活動段提取、特征提取和分類等流程,特征提取中特征的選擇會影響最終手勢識別的準確率。為了簡化處理流程,筆者提出了一種基于多路卷積神經(jīng)網(wǎng)絡的方法,利用預處理后的sEMG信號進行手勢分類,手勢識別的流程如圖1所示。
圖1 基于sEMG信號的手勢識別流程Fig.1 Process of gesture recognition based on sEMG signals
實驗的受試者為8名20~30歲的健康人員,男生6名,女生2名。受試者經(jīng)過訓練后,統(tǒng)一佩戴位置,并且遵守如下規(guī)定:MYO手環(huán)佩戴在左手,靠近手肘的位置。實驗采集了8種手勢,分別為手掌向左彎曲(left)、手掌向右彎曲(right)、握拳(fist)、ok手勢(ok)、比V(yeah)、比6(six)、只伸食指(one)、伸出3根手指(three),手勢動作示意圖如圖2所示。
圖2 8種手勢動作示意圖Fig.2 Eight gestures
受試者每次采集手勢的持續(xù)時間為20 s,前5 s保持手掌張開,并按照指令開始做相應的動作,整個活動段維持10 s左右,并恢復初始狀態(tài)后結束。每個手勢動作重復10次,一組sEMG信號采集完成后,為防止肌肉疲勞影響,休息1 min再進行下一次手勢動作的信號采集。實驗總計640組原始采樣數(shù)據(jù)。
以一次left手勢為例,圖3給出了sEMG信號的單通道波形圖。從圖3中可觀察出:在采樣點為1 000點時,信號波形發(fā)生明顯變化;但原始信號中難以直接找到活動段的起始點和結束點。筆者選擇了短時能量的滑動窗口法[12]實現(xiàn)活動段檢測過程。滑動窗口法的原理是:采用固定長度的窗計算窗內(nèi)的平均能量,作為該點的能量值,滑動窗大小取值64。算法實現(xiàn)過程如下。
1)對8通道的信號幅值的絕對值進行平均,平均絕對值計算公式如下
其中采集的原始信號標記,上標j為第j個通道,下標i為第i個點。
2)計算每個信號點的能量值,公式如下
其中N為信號采樣點總數(shù),W為窗口大小,SEMGabs(i)為第i個點的8通道信號的平均絕對值。
3)設置閾值tTh,公式如下
其中m1為信號靜息段能量的平均值,m2為信號能量的峰值,b為調(diào)整閾值系數(shù),通常在0.01~0.04之間,筆者取0.02。若提取的活動段長度低于400,認為是噪音干擾,直接作丟棄處理。圖4給出了sEMG信號活動段檢測的示意圖,經(jīng)過活動段檢測后,可以明顯地提取出手勢識別所需要的活動段信號。
圖4 sEMG信號活動段檢測圖Fig.4 Detection of active segment
Hudgins等[13]認為兩次樣本之間時間窗口大小應該不超過300 ms,然而分割sEMG信號的時間窗口過小會導致識別精度下降。筆者最終選擇64個點作為樣本的長度,MYO手環(huán)采樣頻率為200 Hz,具有8個sEMG信號傳感器。因此數(shù)據(jù)樣本的大小為64×8。為了數(shù)據(jù)擴充處理,樣本間重疊大小為32個點。
為增加對比實驗,根據(jù)文獻[14],從時域和頻域等不同角度對sEMG信號進行特征提取,使用機器學習方法進行手勢分類。時域特征有平均絕對值(MAV:Mean Absolute Value)、均方根(RMS:Root Mean Square)、過零點數(shù)(ZC:Zero Crossing)、波形長度(WL:Waveform Length)。頻域特征有平均頻率(MNF:Mean Frequency)、平均功率(MNP:Mean Power)、中值頻率(MDF:Median Frequency)。
sEMG信號經(jīng)過活動段檢測后,生成數(shù)據(jù)樣本大小為64×8,可以視為高度為64、寬度為8的單通道灰度圖片,因此輸入層(Input)大小為64×8×1。多路卷積神經(jīng)網(wǎng)絡(MB-CNN:Multi-Branch Convolutional Neural Networks)的結構示意圖如圖5所示。該網(wǎng)絡層由3個不同的支路構成,分別為支路1(branch1)、支路2(branch2)、支路3(branch3)。3種支路在卷積層對應的卷積核大小不同,不同的卷積核大小對應著不同的感受野;在卷積和池化過程中,3個支路分別提取不同尺度的特征,最終經(jīng)過扁平層(Flatten)后,在連接層(Concat)處完成特征融合并且形成一個大小為32 768×1的向量。經(jīng)過兩個全連接層(FC:Fully Connect Layer)后,輸出一個大小為8×1的向量,向量中數(shù)值最大的值所在的索引即為最終手勢的預測類別。
支路1、支路2、支路3的結構類似,均由3個卷積層和3個池化層以及一個扁平層組成,不同支路中不同層級的卷積層中卷積核的個數(shù)分別為64、128、256。支路1中卷積核的大小分別為4×1、3×1、2×1;池化層均采取最大值池化,池化大小均為2×1。支路2中卷積核的大小分別為3×3、3×1、2×1;池化層均為最大值池化,池化大小分別為2×2、2×1、2×1。 支路3中卷積核的大小分別為5×1、5×1、3×1;池化層均為最大值池化,池化大小均為2×1。在不同支路中其他參數(shù)均選取默認值,即填充padding=0,步長stride=1。由于不同支路具有不同大小的卷積核,這樣能具有不同大小的感受野,分別能提取不同尺度大小的特征。3個支路分別完成卷積和池化后,經(jīng)過扁平層(Flatten)后,在連接層(Concat)完成特征融合,最終的實驗結果也證明了該模型的有效性。
MB-CNN網(wǎng)絡中使用交叉熵損失函數(shù)和Adam[15]優(yōu)化算法更新訓練過程中的超參數(shù)。考慮收斂速度和最終識別精度,在前幾層網(wǎng)絡中選擇ReLU[16]激活函數(shù),在輸出層則采用softmax激活函數(shù)。為了避免訓練中的過擬合,全連接層使用dropout[17]方法隨機失活神經(jīng)元,失活率設置為0.5。訓練過程中單次訓練的樣本批次大小(batch_size)設置為128,訓練迭代周期epoch設置為100,其他超參數(shù)則設置為默認值。
在動作采樣時,先將訓練樣本與測試樣本按照4∶1隨機劃分,即每個人10組采樣動作中隨機挑選8組作為訓練集的動作,2組作為測試集的動作。對sEMG信號活動段提取后,經(jīng)過數(shù)據(jù)擴充,最終生成25 600個訓練集樣本、6 400個測試集樣本。
1.4節(jié)中提取的不同時域特征和頻域特征,作歸一化處理后將按照以下幾種方式形成組合特征:1)MAV、MNF;2)MAV、MNF、MNP;3)MAV、MNF、MNP、RMS;4)MAV、MNF、MNP、RMS、MDF;5)MAV、MNF、MNP、RMS、MDF、ZC;6)MAV、MNF、MNP、RMS、MDF、ZC、WL,特征數(shù)目依次為2、3、4、5、6、7。
分別采用機器學習算法中的線性判別分析(LDA:Linear Discriminant Analysis)、K最近鄰(KNN:K-Nearest Neighbor)、支持向量機(SVM:Support Vector Machines)進行準確率分析?;诓煌绞浇M合特征的手勢識別準確率如表1所示。
從表1中可看出,隨著特征數(shù)目的增多,手勢識別的準確率整體都有提高。但對KNN和SVM這兩種算法,在特征數(shù)目為3和5時,準確率出現(xiàn)了下降的情況,這可能是提取的某些特征不適合于該算法。
表1 基于不同方式組合特征的手勢識別準確率Tab.1 Accuracy of different combination of features
深度學習作為一種端到端的學習方法,能利用數(shù)據(jù)自動完成特征提取和分類工作。通過構建合理的模型,也能完成手勢識別分類。實驗中采用的深度學習框架為Keras,使用Pycharm編程環(huán)境完成。MB-CNN模型在訓練集上的準確率變化曲線如圖6所示,損失函數(shù)變化曲線如圖7所示。
圖6 訓練集準確率變化曲線Fig.6 Curve of accuracy on training set
圖7 訓練集損失函數(shù)變化曲線Fig.7 Curve of accuracy on training set
從圖6和圖7中可看出,在MB-CNN模型上,隨著訓練迭代周期的增加,訓練集的準確率呈上升趨勢,損失函數(shù)則呈下降趨勢;當?shù)芷谶_到100后,模型收斂;這證實了MB-CNN模型在訓練集上訓練的有效性。
筆者分別在由不同支路與全連接層單獨構成的網(wǎng)絡中進行手勢識別分類,最終在測試集上不同模型的手勢識別準確率如表2所示。
表2 不同模型上測試集識別準確率Tab.2 Accuracy of test set on different models
從表2中可以看出,3個支路模型在測試集上的識別準確率分別為94.79%、96.01%、95.06%,而在模型MB-CNN中,測試集上取得了最佳的識別精度97.89%。實驗結果證明了該多路神經(jīng)網(wǎng)絡模型的合理性,MB-CNN模型在測試集上手勢識別的混淆矩陣如表3所示。
表3 MB-CNN模型在測試集上混淆矩陣Tab.3 The confusion matrix of test set on MB-CNN model
從表3中可以觀察出,在fist手勢和six手勢上,識別精度較高,總計800個手勢中預測正確分別有795個和797個。在one手勢和yeah手勢上,識別精度相對較低,分別預測正確的有674個和712個。在個別手勢上識別準確率較低,可能是因不同的受試者不同時間段采集的信號存在差異或是受試者在數(shù)據(jù)采集時沒有嚴格按照規(guī)定的動作完成。在今后的研究中,對受試者的動作細節(jié)采取進一步的規(guī)范。
筆者通過對MYO手環(huán)采集的8種不同手勢的sEMG信號進行分析,提出了一種多路卷積神經(jīng)網(wǎng)絡模型(MB-CNN)對常見的8種手勢進行識別分類。該方法的主要優(yōu)點在于能避免常規(guī)的特征提取過程,并且識別精度較高,測試集上的準確率達97.89%。sEMG信號在康復手機器人中應用廣泛,因此該方法具有重要意義。在今后研究中,將對更多不同的手勢進行分類識別研究,并且如何區(qū)分相似的手勢也是另一個研究方向。