單 巍,方振國(guó),王江濤,崔少華
(淮北師范大學(xué) 物理與電子信息學(xué)院,安徽 淮北,235000)
隨著健康生活理念的普及,各項(xiàng)健身運(yùn)動(dòng)在全國(guó)范圍內(nèi)開展廣泛。其中,拳擊運(yùn)動(dòng)作為常見(jiàn)健身運(yùn)動(dòng)的一種,以其獨(dú)特的專業(yè)性和復(fù)雜性決定了這項(xiàng)健身項(xiàng)目必須在專業(yè)教練的指導(dǎo)下完成,其自由性大大受到限制。傳統(tǒng)的拳擊手套設(shè)計(jì)方案重點(diǎn)偏向于出拳速度和沖擊力的測(cè)量,受眾對(duì)象偏向于專業(yè)拳擊選手。例如,靖守禹[1]采用壓力感測(cè)器并顯示使用者拳擊時(shí)的輸出沖擊力,輔助拳擊選手對(duì)出拳力度的控制精度。趙建敏等[2]通過(guò)Kinect體感傳感器追蹤并獲取訓(xùn)練者的關(guān)節(jié)坐標(biāo),并計(jì)算擊打速度和擊打力。上述拳擊手套主要針對(duì)具備專業(yè)知識(shí)的使用者,對(duì)無(wú)專業(yè)拳擊知識(shí)的人群幫助意義不大。因此,本文致力于設(shè)計(jì)一種既可以實(shí)時(shí)記錄拳擊動(dòng)作次數(shù)又能識(shí)別出拳擊的動(dòng)作是否標(biāo)準(zhǔn)的系統(tǒng),輔助健身人群不斷改進(jìn)動(dòng)作而快速學(xué)習(xí)拳擊。
神經(jīng)網(wǎng)絡(luò)作為人工智能領(lǐng)域的經(jīng)典應(yīng)用,其高效的性能和效果近年來(lái)受到學(xué)術(shù)界青睞。學(xué)者們紛紛將神經(jīng)網(wǎng)絡(luò)應(yīng)用于各領(lǐng)域進(jìn)行嘗試。例如,傅鵬等[3]采用神經(jīng)網(wǎng)絡(luò),通過(guò)目標(biāo)區(qū)域的搜索,實(shí)現(xiàn)車牌的精準(zhǔn)定位。李正明等[4]以神經(jīng)網(wǎng)絡(luò)和變壓器的統(tǒng)計(jì)特征和概率為基礎(chǔ),對(duì)局部放電類型進(jìn)行識(shí)別。Shiva等[5]將神經(jīng)網(wǎng)絡(luò)應(yīng)用于交通預(yù)測(cè),以神經(jīng)網(wǎng)絡(luò)的最佳組合使預(yù)測(cè)誤差最小從而調(diào)整交通預(yù)測(cè)模型。然而,將神經(jīng)網(wǎng)絡(luò)應(yīng)用于拳擊手套的設(shè)計(jì)領(lǐng)域少之又少。針對(duì)上述問(wèn)題,本文提出以Arduino開發(fā)板為硬件基礎(chǔ),以Curie神經(jīng)網(wǎng)絡(luò)芯片為軟件基礎(chǔ)的智能拳擊手套設(shè)計(jì)方法,采用姿態(tài)傳感器采集三軸加速度輸入訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)進(jìn)行判別,將最終判斷結(jié)果顯示在電腦屏幕上,出拳人可根據(jù)判斷結(jié)果調(diào)整動(dòng)作,直至達(dá)到標(biāo)準(zhǔn)動(dòng)作。
本文的設(shè)計(jì)思路為:首先采集標(biāo)準(zhǔn)拳擊動(dòng)作的三軸加速度值,對(duì)這一組加速度值進(jìn)行特征抽取,以此建立標(biāo)準(zhǔn)動(dòng)作的模型。將已建立的標(biāo)準(zhǔn)模型輸入神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)(訓(xùn)練),然后將出拳人的運(yùn)動(dòng)數(shù)據(jù)實(shí)時(shí)采集并再次進(jìn)行特征抽取(與標(biāo)準(zhǔn)模型算法一致),最后將輸出的特征數(shù)據(jù)送入訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),通過(guò)網(wǎng)絡(luò)判別該組數(shù)據(jù)與標(biāo)準(zhǔn)動(dòng)作的相似度,從而對(duì)該次動(dòng)作做出判決,其中神經(jīng)網(wǎng)絡(luò)的識(shí)別與判斷使用Curie芯片完成。具體實(shí)施方案如圖1所示。
圖1 總體實(shí)施方案
本設(shè)計(jì)的系統(tǒng)以Arduino101為主控單片機(jī),其內(nèi)部芯片提供了硬件級(jí)別的神經(jīng)網(wǎng)絡(luò)以供采集數(shù)據(jù)的學(xué)習(xí)和識(shí)別,樣本數(shù)據(jù)存儲(chǔ)在SD卡里,最終處理的結(jié)果通過(guò)藍(lán)牙端口顯示在電腦端的Arduino IDE上。其中,Arduino核心是一個(gè)以AT-mega單片機(jī)最小系統(tǒng)為核心的控制板[6],是多款硬件開源設(shè)計(jì)的單片機(jī)開發(fā)板的統(tǒng)稱。Arduino 101(又稱Genuino101)是一個(gè)低功耗開發(fā)板,它是基于Intel Curie模組,可以利用硬件神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)學(xué)習(xí)和識(shí)別的功能。Arduino 101內(nèi)含的單片機(jī)開發(fā)板載有藍(lán)牙和姿態(tài)傳感器,其中,姿態(tài)傳感器包含有三軸加速度計(jì)和陀螺儀[7]。Arduino IDE是Arduino開發(fā)板的的集成開發(fā)環(huán)境,其特點(diǎn)包含界面友好、語(yǔ)法簡(jiǎn)單以及能方便的下載程序,可以編輯編譯運(yùn)行在Arduino上的程序。Arduino的系統(tǒng)是基于C語(yǔ)言和C++語(yǔ)言[8]。
本文系統(tǒng)設(shè)計(jì)的關(guān)鍵在于神經(jīng)網(wǎng)絡(luò)對(duì)采集的特征數(shù)據(jù)進(jìn)行判決,若采集數(shù)據(jù)與標(biāo)準(zhǔn)模型誤差在標(biāo)準(zhǔn)值范圍(三軸分別在0.1)內(nèi),使用者無(wú)需調(diào)整姿態(tài),繼續(xù)出拳;若誤差超出標(biāo)準(zhǔn)范圍,電腦屏幕上顯示“unknown”,出拳人必須實(shí)時(shí)調(diào)整出拳姿態(tài)直至達(dá)到標(biāo)準(zhǔn)值,此時(shí)屏幕顯示正確判斷結(jié)果。其中,神經(jīng)網(wǎng)絡(luò)對(duì)標(biāo)準(zhǔn)模型的學(xué)習(xí)能力和判決能力要求較高,因此,我們采用市面上反響較好的Curie的芯片,它的內(nèi)部含有General Vision授權(quán)的128個(gè)硬件級(jí)的神經(jīng)元,正是由于這些神經(jīng)元所構(gòu)成的神經(jīng)網(wǎng)絡(luò)[9],讓Curie芯片具備學(xué)習(xí)和識(shí)別的能力,該芯片還擁有六軸混合傳感器,對(duì)出拳速度和姿態(tài)的檢測(cè)精確[10-11]。同時(shí),Curie芯片的高集成度,體積小,長(zhǎng)寬分別只有11mm和8mm,使得本文設(shè)計(jì)的拳擊動(dòng)作識(shí)別的硬件能做成可穿戴的設(shè)備,方便使用者攜帶和測(cè)量。
Curie神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)和識(shí)別的功能基于兩種模式,分別是 RBF(radial basis function)模式和KNN(k-nearest neighbor)模式[12]。當(dāng)處在學(xué)習(xí)狀態(tài)下,RBF和KNN公用一套學(xué)習(xí)機(jī)制,隨著不同類別的向量的學(xué)習(xí),不停修正自己。當(dāng)處在識(shí)別狀態(tài)時(shí)RBF和KNN有兩種識(shí)別方式,如圖2,(a)圖表示空間被部分地映射為未分類的區(qū)域,具有多種顏色的區(qū)域是不確定區(qū)域。(b)圖表示整個(gè)空間被映射,并且每個(gè)位置都有一個(gè)可能的類別(顏色代碼)。RBF的識(shí)別方式為:若待識(shí)別的向量落在未知類別的作用域,會(huì)返回unknown;若落在已知類別的作用域上,則分別計(jì)算與其每一個(gè)類別中心的距離值,并返回列表,列表按照與每一個(gè)類別中心的距離值依次遞增而排列。KNN的識(shí)別方式為:若待識(shí)別的向量落在未知類別的作用域,只會(huì)返回一個(gè)確定的落在已知域的類別,而且一定會(huì)返回一個(gè)已知類別,因?yàn)樗淮嬖趗nknown。本系統(tǒng)設(shè)計(jì)選取RBF模式的學(xué)習(xí)和識(shí)別模式。軟件實(shí)現(xiàn)過(guò)程如圖3。
圖2 Curie不同模式
圖3 動(dòng)作學(xué)習(xí)和識(shí)別流程
以100 Hz的采樣頻率分別采集標(biāo)準(zhǔn)拳擊動(dòng)作的x、y、z軸加速度值,將存儲(chǔ)數(shù)據(jù)的SD卡插入電腦,選中所有的數(shù)據(jù),用折線圖顯示采集結(jié)果,如圖4。圖4分別由直拳、擺拳、勾拳三個(gè)標(biāo)準(zhǔn)動(dòng)作組成,系列 1、2、3 分別代表x、y、z軸三組數(shù)據(jù)。由圖4可知,由于傳感器的延時(shí)[13],數(shù)據(jù)前端和后端均為無(wú)效數(shù)據(jù),實(shí)驗(yàn)刪除無(wú)效數(shù)據(jù)后如圖5所示。然而圖5中每?jī)蓚€(gè)標(biāo)準(zhǔn)動(dòng)作數(shù)據(jù)之間有一段平緩的數(shù)據(jù),為了減小系統(tǒng)計(jì)算量,這些平緩的數(shù)據(jù)應(yīng)該被合理處理。處理的方法是保持每?jī)蓚€(gè)數(shù)據(jù)尖峰之間的長(zhǎng)度為一個(gè)動(dòng)作的周期,將圖5數(shù)據(jù)預(yù)處理后送入計(jì)算機(jī)進(jìn)行特征提取。
圖4 原始采集數(shù)據(jù)
將預(yù)處理的數(shù)據(jù)經(jīng)窗口分割[14]、降采樣[15]、數(shù)據(jù)類型[16]轉(zhuǎn)換等過(guò)程,最終提取出所需的特征值。其中,窗口分割的目的是對(duì)采集數(shù)據(jù)進(jìn)行標(biāo)記,是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的基礎(chǔ)條件
降采樣的目的是進(jìn)一步加快神經(jīng)網(wǎng)絡(luò)的收斂,減小網(wǎng)絡(luò)輸入的數(shù)據(jù)量[17]。具體步驟為:在標(biāo)記的3個(gè)文件中隨機(jī)選擇一個(gè)起點(diǎn)開始特征抽取,并把抽取的結(jié)果與實(shí)際值作對(duì)比,最終得到一個(gè)特征抽取的效果百分比。為保證提取效果,每組數(shù)據(jù)使用9次循環(huán)進(jìn)行降采樣處理,依次選擇特征抽取效果百分比最好的一組作為最終輸出。
數(shù)據(jù)類型轉(zhuǎn)換的目的是將降采樣輸出的小數(shù)轉(zhuǎn)化為0~255之間的整數(shù)[18-19],有利于神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)和判決。
以直拳的一個(gè)標(biāo)準(zhǔn)動(dòng)作的x軸的數(shù)據(jù)分析為例,圖 6(a)、(b)分別為特征提取前和提取后的數(shù)據(jù)。由圖6可知,經(jīng)過(guò)本文特征抽取后,數(shù)據(jù)的特征基本沒(méi)有丟失,圖6(b)只使用了12個(gè)數(shù)據(jù)點(diǎn)就代表了原100個(gè)數(shù)據(jù)點(diǎn)的特征,因此網(wǎng)絡(luò)的輸入數(shù)據(jù)量大大降低[20]。
測(cè)試人員佩戴本文設(shè)計(jì)的智能拳擊手套,分別以擺拳、直拳、勾拳的形式進(jìn)行測(cè)試,測(cè)試結(jié)果如圖7。在電腦端的Arduino IDE上準(zhǔn)確顯示相應(yīng)判斷結(jié)果:swing(擺拳)、straight(直拳)、uppercut(勾拳)。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)系統(tǒng)能有效識(shí)別拳擊基本動(dòng)作,輔助健身人士對(duì)拳擊動(dòng)作的修正與調(diào)節(jié),具有推廣的實(shí)際意義。
圖7 測(cè)試結(jié)果
為了推進(jìn)拳擊健身運(yùn)動(dòng)的普及,針對(duì)非專業(yè)的普通人群,本文設(shè)計(jì)了一種基于Arduino單片機(jī)和神經(jīng)網(wǎng)絡(luò)的智能拳擊手套。該設(shè)計(jì)以Arduino101為主控單片機(jī),其內(nèi)部的Curie芯片提供了硬件級(jí)別的神經(jīng)網(wǎng)絡(luò)以供實(shí)驗(yàn)所有數(shù)據(jù)的學(xué)習(xí)和識(shí)別,樣本數(shù)據(jù)主要存儲(chǔ)在SD卡里,最終處理的結(jié)果通過(guò)藍(lán)牙端口顯示在電腦端的Arduino IDE上。通過(guò)實(shí)際測(cè)試,該系統(tǒng)能夠準(zhǔn)確識(shí)別直拳、勾拳、擺拳三種基本的拳擊動(dòng)作,并能準(zhǔn)確識(shí)別非標(biāo)準(zhǔn)拳擊動(dòng)作,給予實(shí)時(shí)顯示。表明本文設(shè)計(jì)的系統(tǒng)有效可行。然而本文系統(tǒng)仍然存在進(jìn)一步改進(jìn)的空間。在今后的工作中,將重點(diǎn)研究神經(jīng)網(wǎng)絡(luò)算法的改進(jìn)和學(xué)習(xí)過(guò)程。