基于手機(jī)傳感器的多種熱身動(dòng)作檢測(cè)算法研究_第1頁(yè)
基于手機(jī)傳感器的多種熱身動(dòng)作檢測(cè)算法研究_第2頁(yè)
基于手機(jī)傳感器的多種熱身動(dòng)作檢測(cè)算法研究_第3頁(yè)
基于手機(jī)傳感器的多種熱身動(dòng)作檢測(cè)算法研究_第4頁(yè)
基于手機(jī)傳感器的多種熱身動(dòng)作檢測(cè)算法研究_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余31頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目 錄第一章 緒 論11.1 應(yīng)用背景11.2 系統(tǒng)發(fā)展背景11.2.1 安卓平臺(tái)優(yōu)勢(shì)11.2.2 常見(jiàn)熱身運(yùn)動(dòng)姿態(tài)簡(jiǎn)介21.3 SVM分類(lèi)器3第二章 系統(tǒng)開(kāi)發(fā)技術(shù)42.1 安卓技術(shù)簡(jiǎn)介42.1.1 安卓系統(tǒng)架構(gòu)42.1.2 安卓系統(tǒng)的四大核心組件52.2 安卓傳感器技術(shù)52.2.1 安卓傳感器系統(tǒng)架構(gòu)52.2.2 安卓傳感器接口簡(jiǎn)介62.2.3 三種傳感器的特點(diǎn)72.2.4 傳感器數(shù)據(jù)的獲得7第三章 系統(tǒng)分析研究93.1 系統(tǒng)需求分析93.1.1 系統(tǒng)功能需求93.1.2 系統(tǒng)技術(shù)需求93.1.3 系統(tǒng)維護(hù)需求103.1.4 系統(tǒng)安全需求103.2 可行性分析103.2.1 經(jīng)濟(jì)可行性103

2、.2.2 技術(shù)可行性103.2.3 操作可行性113.3 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)113.4 系統(tǒng)開(kāi)發(fā)流程分析12第四章 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)134.1 傳感器結(jié)構(gòu)134.2 工作流程134.3 用戶用例圖設(shè)計(jì)144.4 系統(tǒng)界面設(shè)計(jì)及操作簡(jiǎn)介144.5 系統(tǒng)模塊設(shè)計(jì)16第五章 算法描述175.1 簡(jiǎn)介175.2 具體步驟175.2.1 數(shù)據(jù)預(yù)處理:去燥和分割175.2.2 特征提取185.2.3 分類(lèi)器算法選擇195.2.4 SVM分類(lèi)器原理簡(jiǎn)介205.2.5 SVM算法識(shí)別運(yùn)動(dòng)狀態(tài)23第六章 系統(tǒng)測(cè)試266.1 測(cè)試目標(biāo)266.2 測(cè)試步驟266.3 測(cè)試結(jié)語(yǔ)27第七章 總結(jié)(缺陷和展望)287.1 本文總

3、結(jié)287.2 后續(xù)工作28參考文獻(xiàn)30致 謝32摘 要隨著當(dāng)下新興科技日新月異的發(fā)展,智能手機(jī)的功能變得越來(lái)越先進(jìn),而且手機(jī)上集成了非常多的微型傳感器模塊。因?yàn)槭謾C(jī)具有小巧且方便使用的緣故,所以相較于其他的設(shè)備更加合適用來(lái)進(jìn)行行為識(shí)別方面的研究。又因?yàn)楝F(xiàn)在人們?cè)絹?lái)越注重身體健康,喜歡運(yùn)動(dòng)的人群也隨之增多,但由于許多人缺少運(yùn)動(dòng)之前的熱身環(huán)節(jié),從而導(dǎo)致運(yùn)動(dòng)時(shí)受傷的現(xiàn)象屢見(jiàn)不鮮,所以本文將通過(guò)一個(gè)具體的開(kāi)發(fā)實(shí)例,提出一種基于Android系統(tǒng)的熱身運(yùn)動(dòng)識(shí)別應(yīng)用的設(shè)計(jì)思路。在進(jìn)行軟件開(kāi)發(fā)時(shí),其中的主要的工作就是通過(guò)智能手機(jī)內(nèi)置的傳感器來(lái)采集用戶的熱身運(yùn)動(dòng)信息,經(jīng)由內(nèi)部程序處理后,當(dāng)再次接收到相同的運(yùn)動(dòng)

4、信息時(shí),能夠識(shí)別出用戶的運(yùn)動(dòng)狀態(tài)。論文具體闡述了系統(tǒng)的設(shè)計(jì)思路到具體開(kāi)發(fā)流程,采用Android平臺(tái)完成開(kāi)發(fā),實(shí)現(xiàn)了運(yùn)動(dòng)識(shí)別功能,包括慢跑、轉(zhuǎn)體運(yùn)動(dòng)和高抬腿,滿足用戶運(yùn)動(dòng)數(shù)據(jù)的采集和運(yùn)動(dòng)識(shí)別。其中通過(guò)比較各種分類(lèi)器之后,決定采用SVM分類(lèi)器算法對(duì)獲取到的傳感器數(shù)據(jù)進(jìn)行處理,將經(jīng)過(guò)預(yù)處理操作之后的傳感器數(shù)據(jù)放到SVM分類(lèi)器中進(jìn)行分類(lèi),分類(lèi)后會(huì)導(dǎo)出訓(xùn)練模型,用于之后進(jìn)行的行為識(shí)別。論文最后通過(guò)兩個(gè)實(shí)驗(yàn)對(duì)系統(tǒng)功能進(jìn)行了檢測(cè)。關(guān)鍵詞:運(yùn)動(dòng)狀態(tài)識(shí)別;Android平臺(tái);手機(jī)傳感器;SVMAbstractWith the rapid development of emerging technologies

5、 in recent years, the functions of the smartphones have become more and more advanced, and many embedded micro-sensor modules have been integrated in the smartphones. Since the size of the smartphones is small and convenient to use, it is more suitable for studying the behavior identification than o

6、ther devices. Recent years, people are paying more attention to physical health, the number of people who like sports is increasing. However, many people lack the warm-up session before exercise, which leads to injuries during exercise, this article will adopt a specific development example to propo

7、se the idea for warm-up sports recognition applications based on the Android system. During software development, one of the main tasks is to collect warm-up sports information of the user through the built-in sensors of the smartphone. After processing through the internal program, when receiving t

8、he same motion information, the user's motion status can be recognized.The thesis elaborated on the system's design ideas to the specific development process, using Android platform to complete the development, to achieve the function of motion recognition, including jogging, swiveling movem

9、ents and high leg lift, to meet the user's motion data acquisition and motion recognition. Among them, after comparing various classifiers, it is decided to use the SVM classifier algorithm to process the acquired sensor data to generate a corresponding model, and finally perform motion recognit

10、ion. Finally, a series of experiments are used to verify the accuracy of the application.Keywords: Warm-up status recognition; Android platform; Mobile phone sensor; SVMIV第一章 緒 論1.1 應(yīng)用背景在當(dāng)下,智能手機(jī)已經(jīng)成為每個(gè)人不可或缺的便攜式智能設(shè)備,而且其重要性還在與日俱增,在某種意義上來(lái)說(shuō),它相當(dāng)于一臺(tái)我們生活中使用的狹義的電腦,但是它又具備電腦沒(méi)有的優(yōu)勢(shì),它隨著時(shí)代的進(jìn)步,功能變得越來(lái)越強(qiáng)大,可以用它做的事情也愈來(lái)

11、愈多,手機(jī)中內(nèi)置的傳感器種類(lèi)也越來(lái)越多,精度也愈發(fā)準(zhǔn)確,與此同時(shí),隨著科學(xué)技術(shù)的發(fā)展,以及人類(lèi)意識(shí)的進(jìn)步,越來(lái)越多的人意識(shí)到運(yùn)動(dòng)的重要性,各種各樣的運(yùn)動(dòng)方式琳瑯滿目,深受人們的喜愛(ài),所以基于智能手機(jī)的行為識(shí)別技術(shù)的開(kāi)發(fā)也就應(yīng)運(yùn)而生。當(dāng)人們無(wú)論在戶外還是在室內(nèi)進(jìn)行運(yùn)動(dòng)時(shí),大多都會(huì)隨身攜帶手機(jī),而且大部分的智能手機(jī)中都配備了具有相當(dāng)精度的微型傳感器,人們的使用手機(jī)的頻率和手機(jī)自身的素質(zhì)使得基于便攜式移動(dòng)微型計(jì)算機(jī)的人類(lèi)行為識(shí)別研究成為可能,而且能在運(yùn)動(dòng)識(shí)別方面獲得十足的發(fā)展。胡龍1的研究中指出了行為識(shí)別領(lǐng)域的開(kāi)發(fā)技術(shù)。在Lane等人2的研究中對(duì)基于移動(dòng)設(shè)備傳感器研究進(jìn)行了闡述,在著眼于相關(guān)具體行為

12、的自動(dòng)識(shí)別領(lǐng)域,已經(jīng)有人完成了相當(dāng)?shù)墓ぷ?。例如在黃卓勛等3和劉斌等4進(jìn)行的健身以及復(fù)雜行為識(shí)別算法領(lǐng)域的研究,以及李瑞峰等人5在人體行為方面的研究綜述。本文設(shè)計(jì)了一個(gè)基于智能手機(jī)傳感器的用于檢測(cè)3種熱身運(yùn)動(dòng)的系統(tǒng),以此給出一種運(yùn)動(dòng)檢測(cè)系統(tǒng)的設(shè)計(jì)思路,以及有關(guān)的算法相關(guān)知識(shí)。1.2 系統(tǒng)發(fā)展背景1.2.1 安卓平臺(tái)優(yōu)勢(shì)Android系統(tǒng)就是一個(gè)基于開(kāi)放式的手機(jī)電腦平臺(tái)操作系統(tǒng),它是由Google公司于2007年首先推出6。從它面世以來(lái),到現(xiàn)在為止快速占領(lǐng)了大部分的市場(chǎng)份額,而且相對(duì)于其他的傳統(tǒng)品牌例如諾基亞,摩托羅拉等,Android系統(tǒng)在移動(dòng)客戶端的開(kāi)發(fā)中更具有優(yōu)勢(shì),而且與傳統(tǒng)的Java程序開(kāi)

13、發(fā)語(yǔ)言對(duì)比,它在運(yùn)行時(shí)具有資源占用率低,性能穩(wěn)定的特點(diǎn),深受廣大開(kāi)發(fā)者和用戶的青睞。韓文智等人7在研究中指出了有關(guān)Android的應(yīng)用開(kāi)發(fā)的相關(guān)知識(shí)。張娜8在其文章中總結(jié)了Android系統(tǒng)的基礎(chǔ)架構(gòu),康立富等人9指出了基于Android平臺(tái)的行為識(shí)別應(yīng)用的開(kāi)發(fā)框架。Android系統(tǒng)是一種在Linux系統(tǒng)的基礎(chǔ)上,開(kāi)發(fā)出的一種基于開(kāi)源代碼的移動(dòng)設(shè)備系統(tǒng),現(xiàn)在可常見(jiàn)于除蘋(píng)果以外的智能手機(jī)中,由于其代碼是開(kāi)源的狀態(tài),所以各大移動(dòng)設(shè)備廠商爭(zhēng)相入駐,使其迅速在全球得到蓬勃發(fā)展,并成為蘋(píng)果系統(tǒng)的強(qiáng)烈競(jìng)爭(zhēng)對(duì)手,而且他的系統(tǒng)完整度與應(yīng)用豐富度也不容小覷。所以最后在經(jīng)過(guò)各方面的因素考量后,因Android平

14、臺(tái)相較于其他平臺(tái)適用性更廣,容錯(cuò)率更大,限制較小,使我們專(zhuān)注于研究行為識(shí)別的開(kāi)發(fā),所以最后決定選擇使用Android平臺(tái)來(lái)開(kāi)發(fā)這個(gè)應(yīng)用。1.2.2 常見(jiàn)熱身運(yùn)動(dòng)姿態(tài)簡(jiǎn)介吳哲君等人10指出在進(jìn)行行為識(shí)別應(yīng)用開(kāi)發(fā)之前要進(jìn)行步態(tài)分析。我們?cè)O(shè)計(jì)系統(tǒng)的第一步就是要確定系統(tǒng)所具備的功能,最終經(jīng)過(guò)思考之后確定了三個(gè)動(dòng)作。(1)慢跑:用戶將手機(jī)放在褲子的口袋中,然后開(kāi)始進(jìn)行相對(duì)勻速的跑步動(dòng)作;(2)高抬腿:用戶同樣可以將手機(jī)放在褲子的口袋中,大幅度的做交替往上抬腿運(yùn)動(dòng);(3)體轉(zhuǎn)運(yùn)動(dòng):用戶手持手機(jī),向左向右旋轉(zhuǎn)身體。人體的身體行為分析(以走路為例):慢跑時(shí)的速度通常較低,但相較于行走來(lái)說(shuō)更快,動(dòng)作幅度相比快跑

15、顯得更下以及頻率更慢,如下頁(yè)圖1.1所示。人在走路時(shí),兩只腳是呈相對(duì)應(yīng)且對(duì)稱(chēng)的狀態(tài),當(dāng)一只腳抬起來(lái)的時(shí)候,另一只離地,并且是周期性運(yùn)動(dòng),當(dāng)一只腳從落地到下一次落地視為一個(gè)周期,完成了兩步走,經(jīng)過(guò)比對(duì)分析發(fā)現(xiàn),慢跑和高抬腿以及體轉(zhuǎn)運(yùn)動(dòng)的運(yùn)動(dòng)模式與之有異曲同工,都是以周期為計(jì)算單位,所以我們可以通過(guò)傳感器的數(shù)據(jù)差異值來(lái)判斷出不同運(yùn)動(dòng)狀態(tài)。圖1.1 人類(lèi)行走步態(tài)分析1.3 SVM分類(lèi)器SVM作為一種高效的統(tǒng)計(jì)學(xué)分類(lèi)器,已經(jīng)被應(yīng)用于各種各樣的研究當(dāng)中。其中幾個(gè)比較重要的研究如劉松松等人11在圖像分類(lèi)方面的研究,溪海燕等人12在交通行人識(shí)別的研究,倪志偉等人13介紹了SVM在金融方面的研究。SVM分類(lèi)器

16、運(yùn)用于運(yùn)動(dòng)識(shí)別領(lǐng)域已經(jīng)有好幾個(gè)年頭,并且被大量運(yùn)用于復(fù)雜行為識(shí)別的過(guò)程中,我們?cè)谶@里闡述了一種基于智能手機(jī)傳感器的SVM分類(lèi)器的熱身運(yùn)動(dòng)檢測(cè)系統(tǒng)的開(kāi)發(fā)過(guò)程,在選擇使用SVM算法分類(lèi)器進(jìn)行開(kāi)發(fā)前,先與其他幾個(gè)常見(jiàn)算法進(jìn)行了比較分析,隨后闡述了SVM算法的數(shù)學(xué)原理。從運(yùn)動(dòng)識(shí)別系統(tǒng)開(kāi)發(fā)的過(guò)程中看,其中的算法包括訓(xùn)練和檢測(cè)兩個(gè)階段:首先通過(guò)把智能手機(jī)放到褲兜中,然后對(duì)Android系統(tǒng)獲取到的傳感器數(shù)據(jù)進(jìn)行處理,處理后提供給向量機(jī)學(xué)習(xí),然后再使用訓(xùn)練好的模型對(duì)用戶的熱身運(yùn)動(dòng)進(jìn)行預(yù)測(cè)。李神送等人14在文章中對(duì)獲取傳感器數(shù)據(jù)進(jìn)行了詳細(xì)的介紹。第二章 系統(tǒng)開(kāi)發(fā)技術(shù)2.1 安卓技術(shù)簡(jiǎn)介2.1.1 安卓系統(tǒng)架構(gòu)

17、我們可以把Android系統(tǒng)的架構(gòu)粗略的分成四個(gè)個(gè)部分,分別是:Linux內(nèi)核層、系統(tǒng)運(yùn)行層、應(yīng)用框架層和運(yùn)用層。如圖2.1所示。圖2.1 Android系統(tǒng)架構(gòu)(1)Linux內(nèi)核層:Linux是Android系統(tǒng)的內(nèi)核結(jié)構(gòu)。它為Android智能手機(jī)中的攝像頭、主板、顯示器等提供了底層的驅(qū)動(dòng),總的來(lái)說(shuō)Linux內(nèi)核層就是硬件驅(qū)動(dòng)層。(2)系統(tǒng)運(yùn)行層:系統(tǒng)運(yùn)行層又可稱(chēng)之為代碼邏輯層。這一層為Android系統(tǒng)的開(kāi)發(fā)者提供了各種各樣的庫(kù)函數(shù)支持,其中有些決定了Android系統(tǒng)的某些特性功能。如SQLite庫(kù)為Android手機(jī)提供了儲(chǔ)存數(shù)據(jù)和提取數(shù)據(jù)的功能,OpenGLES庫(kù)就使開(kāi)發(fā)人員在進(jìn)

18、行軟件設(shè)計(jì)時(shí)可以通過(guò)這個(gè)庫(kù)實(shí)現(xiàn)3D繪畫(huà)功能。還有比較重要的一點(diǎn),就是系統(tǒng)運(yùn)行層為Android系統(tǒng)開(kāi)發(fā)所提供的一些核心庫(kù),能夠讓開(kāi)發(fā)者使用JAVA語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā)。(3)應(yīng)用框架層:這一層就主要是為Android系統(tǒng)開(kāi)發(fā)提供了各種各樣的外部或內(nèi)部的API供開(kāi)發(fā)者調(diào)用,這里就不多加贅述。(4)應(yīng)用層:應(yīng)用層最通俗的說(shuō)法就是APP(Application),它通過(guò)Android系統(tǒng)這個(gè)載體來(lái)實(shí)現(xiàn)與用戶的交互行為,也就是手機(jī)中各式各樣的程序。2.1.2 安卓系統(tǒng)的四大核心組件Android系統(tǒng)的四大組件分別是活動(dòng)(Activity)、服務(wù)(Service)、廣播接收器(Broadcast Receiv

19、er)和內(nèi)容提供器(Content Provider)15。(1)Activity:簡(jiǎn)單的說(shuō)活動(dòng)就是Android應(yīng)用程序UI界面,所有的顯示內(nèi)容都是歸屬于Activity的,俗稱(chēng)Android應(yīng)用系統(tǒng)的“門(mén)面”。它展示出了開(kāi)發(fā)者想要在應(yīng)用程序中提供給用戶的功能,并起到引導(dǎo)用戶與智能手機(jī)進(jìn)行交互的作用。(2)Service:服務(wù)就是應(yīng)用程序在后臺(tái)實(shí)現(xiàn)的功能,用戶在使用程序和退出程序時(shí)都看不到它,但它一直都在默默地運(yùn)行,只要進(jìn)行相應(yīng)的設(shè)置,并獲得一些權(quán)限,就可以使應(yīng)用程序在后臺(tái)完成用戶指定的各種操作。(3)Broadcast Receiver:廣播接收器的功能就像它的名字一樣,是Android應(yīng)

20、用程序用來(lái)接收廣播的組件,智能手機(jī)與其他手機(jī)之間的信息傳輸和主機(jī)中各個(gè)硬件之間的信息交互都是通過(guò)廣播接收器來(lái)實(shí)現(xiàn)的,其中最簡(jiǎn)單的例子就比如短信和電話,當(dāng)有電話呼入或者是接收到信息時(shí),可以通過(guò)一系列的操作來(lái)通知用戶接收到了信息,并讓用戶做出響應(yīng)。(4)Content Provider:內(nèi)容提供器就是實(shí)現(xiàn)了同一部智能手機(jī)中的不同應(yīng)用程序之間可以相互通信,就比如微信有了權(quán)限之后就可以獲取到你手機(jī)中保存到的電話號(hào)碼一樣,大大擴(kuò)展了智能手機(jī)的功能。2.2 安卓傳感器技術(shù)2.2.1 安卓傳感器系統(tǒng)架構(gòu)在進(jìn)行有關(guān)Android傳感器的開(kāi)發(fā)中,Android官方為開(kāi)發(fā)者提供了調(diào)用傳感器數(shù)據(jù)的函數(shù)接口,我們?cè)陂_(kāi)

21、發(fā)時(shí),在明確了相關(guān)的參數(shù)之后,就可以直接調(diào)用相應(yīng)的變量和函數(shù)以獲取到傳感器的數(shù)值。系統(tǒng)層次結(jié)構(gòu)如下頁(yè)圖2.2所示。圖2.2 傳感器系統(tǒng)層次結(jié)構(gòu)圖如圖2.2所示,Android傳感器系統(tǒng)的層次結(jié)構(gòu)一共分三層,分別是應(yīng)用程序?qū)?、Android系統(tǒng)層以及硬件和驅(qū)動(dòng)層,在這其中,Sensor的JAVA類(lèi)是由Android平臺(tái)提供的傳感器數(shù)據(jù)交互接口,我們?cè)诔绦蛑芯褪窃诖藢又姓{(diào)用函數(shù)來(lái)對(duì)我們需要的數(shù)據(jù)進(jìn)行處理。2.2.2 安卓傳感器接口簡(jiǎn)介(1)SensorManager類(lèi)SensorManager類(lèi)是Android智能手機(jī)中所有傳感器的上級(jí)管理程序,可以在程序取得各種傳感器的實(shí)例,接收參數(shù)為傳感器的類(lèi)

22、型(Sensor.TYPE_SENSORTYPE):Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_SENSORTYPE)(2)Sensor類(lèi)Sensor類(lèi)中定義了Android手機(jī)中各種各樣的傳感器的“名字”,我們可以使用參數(shù)獲取到這些傳感器的支持,然后在傳感器管理器中注冊(cè)后,即可設(shè)置監(jiān)聽(tīng)程序,從而就可以獲取到傳感器的數(shù)據(jù)。(3)SensorEventListener接口它定義了onSensorChanged()和onAccuracyChanged()這兩個(gè)方法。在應(yīng)用運(yùn)行時(shí),設(shè)置了傳感器監(jiān)聽(tīng)

23、之后,當(dāng)程序監(jiān)聽(tīng)到有傳感器的狀態(tài)發(fā)生改變,數(shù)值有與之前不同之后,傳感器管理器就會(huì)分別喚醒onAccuracyChanged()和onSensorChanged()函數(shù),使程序開(kāi)始執(zhí)行其中的代碼。(4)SensorEvent類(lèi)SensorEvent類(lèi)就是用來(lái)提取傳感器獲取到的數(shù)據(jù)的。2.2.3 三種傳感器的特點(diǎn)(1)陀螺儀陀螺儀是現(xiàn)在智能手機(jī)中比較常見(jiàn)的傳感器之一,它類(lèi)似于一個(gè)陀螺,是由科學(xué)家針對(duì)陀螺的研究進(jìn)而演變來(lái)的角速度檢測(cè)儀器。它內(nèi)置于大部分的智能手機(jī)中,常常被用于檢測(cè)手機(jī)的偏轉(zhuǎn)狀態(tài),即手機(jī)相對(duì)于直立狀態(tài)下經(jīng)過(guò)了何種變換,引起來(lái)角速度的改變,然后就會(huì)產(chǎn)生一個(gè)數(shù)值來(lái)表示手機(jī)的狀態(tài)。手機(jī)中的陀

24、螺儀傳感器就是經(jīng)過(guò)技術(shù)發(fā)展是其集成到了小小的手機(jī)當(dāng)中。所以陀螺儀在程序開(kāi)發(fā)時(shí)會(huì)返回三個(gè)參數(shù),分別就是手機(jī)繞3個(gè)軸旋轉(zhuǎn)的角速度,以此可以來(lái)推測(cè)手機(jī)在個(gè)方向上的轉(zhuǎn)動(dòng)速率。(2)加速度傳感器加速度傳感器也是手機(jī)中經(jīng)常配備的硬件之一。我們將手機(jī)置于直立的狀態(tài),然后在上面建立一個(gè)三軸坐標(biāo)系,加速度傳感器就是用來(lái)檢測(cè)手機(jī)在坐標(biāo)軸中進(jìn)行某一個(gè)方向的位移時(shí)產(chǎn)生的加速度,其中的加速度值是以重力為單位。在Android應(yīng)用開(kāi)發(fā)時(shí),它會(huì)產(chǎn)生四個(gè)參數(shù),分別對(duì)應(yīng)著三個(gè)軸上的加速度,以此來(lái)表示手機(jī)的運(yùn)動(dòng)狀態(tài),還有一個(gè)參數(shù)是智能手機(jī)的時(shí)間戳。它主要就是用于檢測(cè)用戶的生理運(yùn)動(dòng)狀態(tài),最簡(jiǎn)單的就是檢測(cè)用戶從靜止到行走的過(guò)程特征,

25、而且還可以表示一段時(shí)間內(nèi)的運(yùn)動(dòng)變化。(3)重力傳感器人們?cè)诩铀俣葌鞲衅鞯幕A(chǔ)上,進(jìn)而開(kāi)發(fā)出了一種只檢測(cè)重力方向上加速度的儀器,所以重力傳感器傳回來(lái)的參數(shù)值也就是手機(jī)運(yùn)動(dòng)狀態(tài)相對(duì)重力方向的速度。2.2.4 傳感器數(shù)據(jù)的獲得(1)登錄系統(tǒng)的傳感器管理器,定義SensorMananger變量,并通過(guò)其獲得各個(gè)傳感器的應(yīng)用實(shí)例,具體代碼如圖2.3所示。圖2.3 創(chuàng)建傳感器變量接下來(lái),我們們使用onResume()函數(shù)向系統(tǒng)提交注冊(cè),讓Android系統(tǒng)對(duì)傳感器服務(wù)和傳感器進(jìn)行監(jiān)聽(tīng)。如圖2.4所示。圖2.4 設(shè)置系統(tǒng)監(jiān)聽(tīng)要使用傳感器的數(shù)據(jù),就要使用上文介紹的SensorEventListener接口,通

26、過(guò)以下兩個(gè)函數(shù)來(lái)實(shí)現(xiàn):public void onAccuracyChanged(Sensor sensor, int accuracy)public void onSensorChanged(SensorEvent event)在程序開(kāi)始執(zhí)行后,3個(gè)傳感器都處于等待監(jiān)聽(tīng)狀態(tài),如有數(shù)據(jù)就將數(shù)據(jù)保存到定義的變量當(dāng)中,這里比較關(guān)鍵的一點(diǎn)是傳感器的原始數(shù)據(jù)在變量中保存的順序是按照傳感器相應(yīng)程序的喚醒順序來(lái)的,并且每個(gè)傳感器傳回的參數(shù)都是3個(gè),所以我們定義每一幀的傳感器原始數(shù)據(jù)為9個(gè)單位,每3個(gè)參數(shù)為一個(gè)傳感器的值。第三章

27、 系統(tǒng)分析研究3.1 系統(tǒng)需求分析3.1.1 系統(tǒng)功能需求近年來(lái),移動(dòng)智能手機(jī)設(shè)備功能越來(lái)越強(qiáng)大,智能化越來(lái)越強(qiáng),比如圖像識(shí)別、語(yǔ)音識(shí)別、動(dòng)作識(shí)別等,這些功能的開(kāi)發(fā)給人們帶來(lái)了極大的便利。我們?yōu)榱藢?duì)用戶的行為進(jìn)行識(shí)別,就必須采用手機(jī)自帶的傳感器所獲取到的數(shù)據(jù),并對(duì)獲取到的數(shù)據(jù)進(jìn)行相應(yīng)的處理,將數(shù)據(jù)保存到手機(jī)中之后,再供之后的運(yùn)動(dòng)識(shí)別所用?;竟δ苄枨笕鐖D3.1所示:圖3.1 總體功能需求圖3.1.2 系統(tǒng)技術(shù)需求首先我們選擇在當(dāng)下最流行,使用人數(shù)最多的Android平臺(tái)下開(kāi)發(fā),也是順應(yīng)時(shí)代,順應(yīng)技術(shù)的發(fā)展。而且對(duì)于開(kāi)發(fā)者來(lái)說(shuō),開(kāi)發(fā)有關(guān)行為識(shí)別技術(shù)的應(yīng)用就需要一個(gè)穩(wěn)定的系統(tǒng),并且系統(tǒng)提供了方便的

28、調(diào)用傳感器數(shù)據(jù)的途徑,并且Android平臺(tái)具有全面開(kāi)發(fā)框架結(jié)構(gòu),可以使用系統(tǒng)自帶的數(shù)據(jù)庫(kù)對(duì)實(shí)驗(yàn)中所使用的數(shù)據(jù)進(jìn)行存儲(chǔ)和讀取,保證了數(shù)據(jù)的可靠和穩(wěn)定性。3.1.3 系統(tǒng)維護(hù)需求系統(tǒng)的易維護(hù)性。在進(jìn)行系統(tǒng)開(kāi)發(fā)時(shí)需要考慮到系統(tǒng)對(duì)于開(kāi)發(fā)者后期進(jìn)行維護(hù)的成本,本系統(tǒng)采用Android平臺(tái)進(jìn)行開(kāi)發(fā),由官方提供了獨(dú)立的系統(tǒng)開(kāi)發(fā)架構(gòu),而且應(yīng)用相對(duì)于系統(tǒng)處于一個(gè)相對(duì)獨(dú)立的地位,并且系統(tǒng)使用的數(shù)據(jù)庫(kù)為自帶的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),所以我們?cè)谶M(jìn)行與文件有關(guān)的數(shù)據(jù)處理更加容易與簡(jiǎn)捷。這樣保證了我們?cè)陂_(kāi)發(fā)應(yīng)用時(shí)不會(huì)導(dǎo)致系統(tǒng)的崩潰,為我們調(diào)試程序提供了條件,也滿足了我們對(duì)于系統(tǒng)完成后,要進(jìn)行維護(hù)和更新的需求。3.1.4 系統(tǒng)安全

29、需求良好的安全性。由于只需要對(duì)用戶進(jìn)行的訓(xùn)練集、訓(xùn)練模型、以及識(shí)別數(shù)據(jù)進(jìn)行保存,保存后所占用的系統(tǒng)空間很小,就可以使用系統(tǒng)自帶的硬盤(pán)對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),將數(shù)據(jù)保存到文本文件中,并且應(yīng)用程序無(wú)法聯(lián)網(wǎng),杜絕了被侵入的風(fēng)險(xiǎn),所以符合所需的安全性。3.2 可行性分析3.2.1 經(jīng)濟(jì)可行性在進(jìn)行應(yīng)用開(kāi)發(fā)之間,通過(guò)市場(chǎng)的調(diào)查發(fā)現(xiàn),大部分Android智能手機(jī)的價(jià)格相對(duì)于蘋(píng)果手機(jī)來(lái)說(shuō)比較低,而且價(jià)格較低的Android手機(jī)中不乏性價(jià)比較高的機(jī)型供我選擇,且內(nèi)置的傳感器系統(tǒng)也比較完善,在我的承受范圍之內(nèi),所以Android智能手機(jī)的成本是我選擇在Android平臺(tái)上進(jìn)行開(kāi)發(fā)的一個(gè)重要原因。3.2.2 技術(shù)可行性應(yīng)

30、用程序基于Android平臺(tái)進(jìn)行開(kāi)發(fā)設(shè)計(jì),Android系統(tǒng)從面世到現(xiàn)在的11個(gè)年頭中,經(jīng)過(guò)了多次版本的更新升級(jí),經(jīng)受住了市場(chǎng)和用戶的檢驗(yàn),并且有著一套完善的開(kāi)發(fā)框架,有越來(lái)越多的人涌入Android開(kāi)發(fā)的行列中,又因?yàn)樗拇a是開(kāi)源的,減少了我們?cè)陂_(kāi)發(fā)應(yīng)用時(shí)的成本,無(wú)論是針對(duì)開(kāi)發(fā)者或者是研究課題來(lái)說(shuō),Android系統(tǒng)的技術(shù)都有很高的可取性。并且經(jīng)過(guò)市場(chǎng)調(diào)查,市場(chǎng)上的絕大部分Android手機(jī)中都集成有基礎(chǔ)的傳感器體系,并且Android開(kāi)發(fā)技術(shù)也支持了提取手機(jī)傳感器獲取到的數(shù)據(jù)的功能。所以,在后續(xù)的軟件開(kāi)發(fā)過(guò)程中,將會(huì)圍繞著Android平臺(tái)來(lái)進(jìn)行相關(guān)應(yīng)用技術(shù)的研究。3.2.3 操作可行性

31、我們的系統(tǒng)是在Android智能手機(jī)上進(jìn)行開(kāi)發(fā),根據(jù)最新的調(diào)查顯示,全球智能手機(jī)用戶已經(jīng)超過(guò)28億,所以全球超過(guò)三分之一的人,他們每人至少都擁有一部智能手機(jī),并且市面上的智能手機(jī)基本上是蘋(píng)果系統(tǒng)與Android系統(tǒng),他們的操作方式即為相似。所以只要一個(gè)人有一定的理解能力,就可以掌握應(yīng)用的使用方法,系統(tǒng)在操作上也是可行的。3.3 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)本基于手機(jī)傳感器的熱身運(yùn)動(dòng)識(shí)別系統(tǒng)開(kāi)發(fā)工程中應(yīng)用了MVC框架,它是由以下三部分構(gòu)成的,如圖3.2所示。(1)視圖層(View):應(yīng)用的UI界面設(shè)計(jì)。實(shí)現(xiàn)了實(shí)時(shí)動(dòng)態(tài)地對(duì)界面進(jìn)行控制,擁有了更強(qiáng)的表現(xiàn)力。(2)控制層(Controller):Acitvity在控

32、制層中起到非常重要的作用,為了實(shí)現(xiàn)響應(yīng)時(shí)間短,我們就不在Acitvity中寫(xiě)代碼。(3)模型層(Model):對(duì)數(shù)據(jù)的存儲(chǔ)都是在模型層中處理的,也就是說(shuō)程序的二進(jìn)制數(shù)據(jù)也是在這一層進(jìn)行操作的。圖3.2 系統(tǒng)框架模型3.4 系統(tǒng)開(kāi)發(fā)流程分析在開(kāi)發(fā)設(shè)計(jì)基于手機(jī)傳感器的熱身運(yùn)動(dòng)識(shí)別系統(tǒng)的時(shí)候,首先進(jìn)行需求分析,進(jìn)而對(duì)系統(tǒng)進(jìn)行總體的設(shè)計(jì)規(guī)劃,設(shè)計(jì)系統(tǒng)功能模塊,測(cè)試等,基于手機(jī)傳感器的熱身運(yùn)動(dòng)識(shí)別系統(tǒng)的設(shè)計(jì)流程圖,如圖3.3所示。圖3.3系統(tǒng)設(shè)計(jì)流程圖第四章 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)4.1 傳感器結(jié)構(gòu)本系統(tǒng)所使用的傳感器的內(nèi)部結(jié)構(gòu)如圖4.1所示。圖4.1傳感器內(nèi)部結(jié)構(gòu)圖4.2 工作流程當(dāng)手機(jī)的物理狀態(tài)發(fā)生改變時(shí),

33、手機(jī)中的傳感器的數(shù)值就會(huì)改變,接收器接收到變化,然后系統(tǒng)進(jìn)行數(shù)據(jù)采集,讀取數(shù)據(jù),并進(jìn)行數(shù)據(jù)處理,最后進(jìn)行熱身運(yùn)動(dòng)識(shí)別。如圖4.2所示。圖4.2工作流程圖4.3 用戶用例圖設(shè)計(jì)用戶進(jìn)入系統(tǒng)后,可選擇進(jìn)行動(dòng)作訓(xùn)練采集或熱身運(yùn)動(dòng)識(shí)別操作,下面將通過(guò)用例圖的方式展現(xiàn)用戶和用例之間的關(guān)系。用戶用例圖如圖4.3所示。圖4.3用戶用例圖4.4 系統(tǒng)界面設(shè)計(jì)及操作簡(jiǎn)介手機(jī)傳感器的熱身運(yùn)動(dòng)識(shí)別系統(tǒng)的界面UI設(shè)計(jì)如圖4.4,4.5和下頁(yè)圖4.6所示。圖4.4 訓(xùn)練進(jìn)入頁(yè)面圖4.5 主界面圖4.6 運(yùn)動(dòng)訓(xùn)練界面關(guān)鍵代碼如下(以慢跑為例關(guān)于用于系統(tǒng)啟動(dòng)自執(zhí)行的代碼在在這里就不多加贅述):/*定義不同的變量,將UI中的

34、不同按鈕與變量綁定,以便監(jiān)聽(tīng)用戶按下按鈕的操作,從而可以執(zhí)行相應(yīng)的操作*/mTrainRunSlowBtn = (Button)mTopView.findViewById(R.id.train_run_btn);/代表的是圖4.6中“慢跑”所在按鈕,點(diǎn)擊即設(shè)定將要進(jìn)行訓(xùn)練的運(yùn)動(dòng)是慢跑trainStartBtn = (Button) mTopView.findViewById(R.id.train_start_btn);/代表的是圖4.6中的“開(kāi)始采集”所在按鈕,點(diǎn)擊后用戶即可進(jìn)行相應(yīng)運(yùn)動(dòng)的訓(xùn)練,隨后點(diǎn)擊停止訓(xùn)練即可將訓(xùn)練數(shù)據(jù)送入分類(lèi)器中處理,并生成相應(yīng)的模型detecStartBtn = (B

35、utton) findViewById(R.id.detect_start_btn);/主界面圖4.5的“開(kāi)始”按鈕,通過(guò)收集傳感器的數(shù)據(jù),與之前訓(xùn)練生成的模型進(jìn)行處理預(yù)測(cè)出用戶的運(yùn)動(dòng)狀態(tài),并顯示在屏幕上如圖4.7為將識(shí)別結(jié)果顯示在屏幕上的關(guān)鍵代碼。圖4.7 動(dòng)態(tài)顯示識(shí)別運(yùn)動(dòng)類(lèi)型4.5 系統(tǒng)模塊設(shè)計(jì)在進(jìn)行完系統(tǒng)的介紹和分析之后,我們對(duì)系統(tǒng)進(jìn)行分模塊化處理,并且在開(kāi)發(fā)過(guò)程中以此模塊分布來(lái)進(jìn)行開(kāi)發(fā)和調(diào)試。分模塊處理有助于我們對(duì)于程序的理解,在完善各個(gè)模塊的同時(shí),也加深了對(duì)整體的把握,并且在最后的系統(tǒng)測(cè)試時(shí)可以很快地發(fā)現(xiàn)問(wèn)題的所在。(1)顯示模塊:用于顯示應(yīng)用程序需要展示給用戶看的內(nèi)容,簡(jiǎn)單來(lái)說(shuō)就是

36、UI設(shè)計(jì)。這一個(gè)部分起到的作用就是要激勵(lì)用戶點(diǎn)擊屏幕,對(duì)應(yīng)用程序進(jìn)行操作。(2)人機(jī)交互模塊:這個(gè)部分是用來(lái)實(shí)現(xiàn)用戶與手機(jī)之間的“交流”,因?yàn)檫@里的設(shè)備已經(jīng)確定是手機(jī),那么就是對(duì)用戶的點(diǎn)擊事件進(jìn)行響應(yīng),實(shí)現(xiàn)用戶點(diǎn)擊的功能。(3)傳感器信息采集模塊:這個(gè)部分用于調(diào)用相應(yīng)的函數(shù)接口來(lái)獲取用戶在運(yùn)動(dòng)時(shí)的傳感器信息。(4)原始數(shù)據(jù)預(yù)處理模塊:將上一個(gè)模塊獲取到的傳感器原始信息進(jìn)行預(yù)處理,以備訓(xùn)練訓(xùn)練模型和運(yùn)動(dòng)識(shí)別時(shí)使用。(5)行為識(shí)別模塊:將在下一章內(nèi)容中進(jìn)行詳細(xì)描述。第五章 算法描述5.1 簡(jiǎn)介行為識(shí)別(Activity Recognition)技術(shù)狹義來(lái)說(shuō)就是通過(guò)傳感器讀數(shù)來(lái)預(yù)測(cè)用戶的行為,并且已

37、經(jīng)發(fā)展成為與人們生活息息相關(guān)的應(yīng)用。近幾年來(lái)因?yàn)闄C(jī)器學(xué)習(xí)技術(shù)的火熱,行為識(shí)別領(lǐng)域越來(lái)越受到人們的關(guān)注,現(xiàn)在這項(xiàng)技術(shù)已經(jīng)滲入大眾生活的方方面面,比如醫(yī)學(xué)健康領(lǐng)域的醫(yī)療儀器,運(yùn)動(dòng)管理設(shè)備中集成了行為識(shí)別技術(shù)?;谥悄苁謾C(jī)傳感器技術(shù)就是將手機(jī)自帶的傳感器的讀數(shù)作為輸入的參數(shù),從而來(lái)預(yù)測(cè)用戶的運(yùn)動(dòng)狀態(tài)。但是最貼近人生活的行為比如行走,站立,慢跑等比較典型的活動(dòng)并以其隱蔽性、低(無(wú))成本性、易用性,致使智能手機(jī)逐漸成為主要的人類(lèi)活動(dòng)識(shí)別的平臺(tái)。本系統(tǒng)一共使用3個(gè)智能手機(jī)中的傳感器進(jìn)行數(shù)據(jù)采集,分別是加速度計(jì)(acceleration transducer),重力傳感器(GV-sensor),陀螺儀(gy

38、roscope),根據(jù)3個(gè)傳感器的采集到數(shù)據(jù)進(jìn)行數(shù)據(jù)采集以及行為識(shí)別。在本實(shí)驗(yàn)中選擇采用LIBSVM多分類(lèi)方法庫(kù)對(duì)程序獲得的經(jīng)過(guò)數(shù)據(jù)預(yù)處理的傳感器原始數(shù)據(jù)進(jìn)行訓(xùn)練,訓(xùn)練后根據(jù)特征值對(duì)不用的運(yùn)動(dòng)進(jìn)行分類(lèi),分類(lèi)后生成不同的模型,最后在運(yùn)動(dòng)識(shí)別過(guò)程中根據(jù)訓(xùn)練模型識(shí)別出用戶的運(yùn)動(dòng)。LIBSVM是由臺(tái)灣的林智仁(Chih-Jen Lin)教授二十世紀(jì)出開(kāi)發(fā)的一套SVM庫(kù)16。我們?yōu)槭裁催x擇這套庫(kù)來(lái)進(jìn)行整個(gè)系統(tǒng)最核心的部分開(kāi)發(fā)呢?是因?yàn)樗\(yùn)算速度比較快,而且易用性很強(qiáng),在進(jìn)行Android開(kāi)發(fā)時(shí),只需要調(diào)用它提供的函數(shù)接口,就可以通過(guò)其內(nèi)置方法實(shí)現(xiàn)對(duì)傳感器數(shù)據(jù)的分類(lèi)和識(shí)別。并且由于LibSVM程序體積小,

39、使用步驟簡(jiǎn)單,說(shuō)明全面,代碼開(kāi)源,所以LibSVM成為了國(guó)內(nèi)使用人數(shù)最多的分類(lèi)算法庫(kù)。5.2 具體步驟5.2.1 數(shù)據(jù)預(yù)處理:去燥和分割當(dāng)傳感器發(fā)現(xiàn)手機(jī)的狀態(tài)改變之后,已注冊(cè)的傳感器就會(huì)給程序程序傳回收集到的原始數(shù)據(jù),在進(jìn)行下一步操作之前,還要進(jìn)行數(shù)據(jù)的預(yù)處理。在我們使用傳感器發(fā)來(lái)的原始數(shù)據(jù)之前,需要對(duì)這些數(shù)據(jù)進(jìn)行提前處理操作,這樣做的其中一個(gè)目的是降低用戶和傳感器本身的噪聲,是數(shù)據(jù)更加精確。我們?cè)陂_(kāi)發(fā)時(shí)對(duì)數(shù)據(jù)進(jìn)行了分割處理,因?yàn)槭褂昧巳齻€(gè)傳感器的原始數(shù)據(jù),每個(gè)傳感器的返回的關(guān)鍵參數(shù)都為3個(gè),所以以每9個(gè)樣本數(shù)據(jù)作為一個(gè)樣本點(diǎn),用于訓(xùn)練集和識(shí)別功能。并且由系統(tǒng)控制空白段,無(wú)動(dòng)作時(shí)就不啟動(dòng)傳感器

40、那么識(shí)別算法接收不到數(shù)據(jù)也不會(huì)執(zhí)行。5.2.2 特征提取特征提取作為運(yùn)動(dòng)識(shí)別算法中一個(gè)重要的步驟,能夠使傳感器的原始數(shù)據(jù)變得更加適合于之后的分類(lèi)算法。在程序中的們進(jìn)行了4個(gè)特征值的提取,分別是:(1)Energy:在2.3.4中提到,每一幀的傳感器數(shù)據(jù)為9個(gè)參數(shù)單位,我們首先每一幀的傳感器數(shù)據(jù)進(jìn)行以下處理,對(duì)第一個(gè)傳感器值和第三個(gè)傳感器值進(jìn)行完全平方差累加處理,作為第一個(gè)特征值。(式5.1)(2)RoteMin:在對(duì)Energy進(jìn)行計(jì)算的同時(shí),隨后找出其中的最小值,作為第二個(gè)特征值RoteMin。(式5.2)(式5.3)(式5.4)(4)Rorate:將第二個(gè)傳感器的所有參數(shù)取絕對(duì)值相加,計(jì)算

41、結(jié)果作為第三個(gè)特征值。如下式所示:(式5.5)(4)pNUM:將每一幀的傳感器數(shù)據(jù)前4個(gè)單位按順序兩兩相乘,判斷結(jié)果正負(fù)號(hào),結(jié)果為正不計(jì)分,結(jié)果為負(fù)加一分,具體算法如下所示:(式5.6)(式5.7)(式5.8)(式5.9)對(duì)各段的特征值提取結(jié)束之后,將他們捆綁作為為特征值字段,供建立分類(lèi)器使用。程中通過(guò)private String getFeatures(ArrayList<Float> mList)方法來(lái)實(shí)現(xiàn)對(duì)傳感器采集到的數(shù)據(jù)進(jìn)行特征提取,函數(shù)返回一個(gè)特征值字段,如果是訓(xùn)練數(shù)據(jù),則數(shù)據(jù)段之前加上代表運(yùn)動(dòng)的編號(hào),如果是識(shí)別數(shù)據(jù),則經(jīng)特征值處理后,再經(jīng)由SVM算法來(lái)識(shí)別。5.2.3

42、 分類(lèi)器算法選擇選用的分類(lèi)器為隨機(jī)森林17、決策樹(shù)18、Bagging19、樸素貝葉斯、kNN20、SVM,其中,Bagging使用的弱分類(lèi)器為決策樹(shù),kNN的k為1,SVM使用多項(xiàng)式核。分類(lèi)準(zhǔn)確率如圖5.1所示,運(yùn)行時(shí)間如圖5.2所示。圖5.1 分類(lèi)器準(zhǔn)確率圖5.2 各分類(lèi)器運(yùn)行時(shí)間從以上的對(duì)比數(shù)據(jù)中可以發(fā)現(xiàn),SVM算法在訓(xùn)練時(shí)間以及準(zhǔn)確率綜合性較好,樸素貝葉斯算法的準(zhǔn)確率較低,不予以采用;kNN表現(xiàn)較好,但是常用于復(fù)雜的模式識(shí)別應(yīng)用中,考慮到需要實(shí)現(xiàn)的功能,不予以采用;其他分類(lèi)器效果一般。又因?yàn)锳ndroid平臺(tái)提供了LibSVM的工具,所以決定采用SVM分類(lèi)器算法進(jìn)行模型訓(xùn)練,并使用所獲

43、得的模型進(jìn)行運(yùn)動(dòng)識(shí)別。5.2.4 SVM分類(lèi)器原理簡(jiǎn)介首先先來(lái)介紹一下SVM分類(lèi)器,SVM(支持向量機(jī))(Support Vector Machine)就是一種分類(lèi)算法,可以將不同特征的數(shù)據(jù)分割在一個(gè)平面的兩側(cè),實(shí)現(xiàn)分類(lèi)的目的。在這里我們先由二維平面引入,分類(lèi)器的作用就是在兩種坐標(biāo)點(diǎn)之間找到一條可以完美分割兩種點(diǎn)的直線,然而如果我們將坐標(biāo)點(diǎn)放到三維的空間中時(shí),分類(lèi)器就用于幫我們找到一個(gè)能使兩種坐標(biāo)點(diǎn)完美的分布在其兩側(cè)的平面,二這個(gè)平面在二維平面上看起來(lái)就是一條曲線,下面我們就介紹一下SVM分類(lèi)器的數(shù)學(xué)原理。觀察下圖5.3,可以看到圖中有兩種不同類(lèi)型的坐標(biāo)點(diǎn),對(duì)于這樣一個(gè)模型,我圖5.3 SVM

44、算法推導(dǎo)們?cè)诟鶕?jù)我們的觀察,思考怎么利用一條分割線將兩種類(lèi)型的坐標(biāo)點(diǎn)分開(kāi)。在圖5.3中可以看到有很多條直線進(jìn)行了嘗試,那么其中有沒(méi)有一條最好的直線呢?因此,我們就需要找到一個(gè)超平面(Hyper Plane),在二維的圖中就是一條線,這條線可以將坐標(biāo)系中的兩種坐標(biāo)點(diǎn)分在不同的邊,就相當(dāng)于一條一條分割線,它不能離兩種坐標(biāo)中的任意一種垂直距離過(guò)近,因?yàn)楫?dāng)它離坐標(biāo)過(guò)近時(shí),它就會(huì)對(duì)影響整體判斷的無(wú)用點(diǎn)產(chǎn)生誤差,所以我們的目標(biāo)就是要找到一條線,要求就是要離所有的坐標(biāo)點(diǎn)都是盡可能的遠(yuǎn)。SVM算法就是在這些坐標(biāo)點(diǎn)當(dāng)中選擇幾個(gè)坐標(biāo)組合成為一個(gè)平面,隨后找到離這個(gè)平面最近的一些坐標(biāo)點(diǎn),是其離所有的坐標(biāo)點(diǎn)都是盡可能

45、的遠(yuǎn),即為有效分割。如圖5.4。圖5.4 SVM算法推導(dǎo)圖5.5 SVM算法推導(dǎo)只有兩種坐標(biāo)點(diǎn)的分類(lèi)問(wèn)題方程表示一般為:。方程定義了一個(gè)超平面H,把兩種坐標(biāo)點(diǎn)分割開(kāi)來(lái),且兩邊都沒(méi)有不相同的坐標(biāo)點(diǎn)。我們這里設(shè)有N個(gè)樣本分為:,則有分類(lèi)規(guī)則:(式5.10)(式5.11)因?yàn)槲覀冞@里采用的是二維平面下分類(lèi)訓(xùn)練樣本,所以其線性可分,我們只需要改變權(quán)向量的模,如下所示:(式5.12)(式5.13)簡(jiǎn)化式子:(式5.14)隨后我們根據(jù)向量相加的原則,改寫(xiě)x:(式5.15)其中,r是x到H的垂直距離,那么則有:,(式5.16)最優(yōu)分界面的滿足條件為:與(式5.17)間隔:離分界面最近的樣本點(diǎn)(即使樣本點(diǎn))與

46、分界面的距離,它是,這樣兩類(lèi)模間隔的距離為。其中,為拉格朗日乘子,達(dá)到極值的必要條件如圖5.6:圖5.6 達(dá)到極值的必要條件將上式代入拉格朗日函數(shù),則有下頁(yè)圖5.7所示:圖5.7 代入拉格朗日函數(shù)結(jié)果求上式的最大值,即可求得最優(yōu)解,則最優(yōu)權(quán)向量為圖5.8所示:圖5.8 最優(yōu)權(quán)向量最優(yōu)偏置可選一個(gè)支持向量樣本求得:最優(yōu)分界面是:。5.2.5 SVM算法識(shí)別運(yùn)動(dòng)狀態(tài)(1)SVM訓(xùn)練模型生成用戶可在系統(tǒng)界面中選擇想要訓(xùn)練的運(yùn)動(dòng),然后點(diǎn)擊開(kāi)始訓(xùn)練,隨后系統(tǒng)就會(huì)開(kāi)始監(jiān)聽(tīng)手機(jī)傳感器的狀態(tài)和數(shù)據(jù)變化,如圖5.9為關(guān)鍵代碼。圖5.9 運(yùn)動(dòng)訓(xùn)練關(guān)鍵代碼其中TrainFileEvent對(duì)傳感器原始數(shù)據(jù)進(jìn)行特征值提

47、取處理,然后將處理結(jié)果保存到本地的文件中。svm_train.main的作用是對(duì)傳感器獲取到的數(shù)據(jù)(mTrainPath)進(jìn)行訓(xùn)練然后生成相應(yīng)的模型并保存到mModePath文件中。以上代碼為在用戶選定相應(yīng)的運(yùn)動(dòng)模式之后,點(diǎn)擊開(kāi)始訓(xùn)練,系統(tǒng)就會(huì)自動(dòng)采集用戶的運(yùn)動(dòng)狀態(tài)信息,并經(jīng)過(guò)數(shù)據(jù)預(yù)處理之后,通過(guò)LIBSVM庫(kù)中的SVMTrain方法,生成用戶行為模型,并保存到系統(tǒng)文件中備用。根據(jù)LibVM文檔中的使用說(shuō)明,我們?cè)谡{(diào)用svm_train函數(shù)的時(shí)候,只需要提供一個(gè)保存著訓(xùn)練數(shù)據(jù)的文件名就可以了,但是我們還需要進(jìn)行運(yùn)動(dòng)的識(shí)別工作,所以還需要一個(gè)保存結(jié)果的文件,傳入該文件的地址。其中mTrainPa

48、th是是用戶在訓(xùn)練運(yùn)動(dòng)時(shí)采集到的數(shù)據(jù)保存在的文件名,mModePath是通過(guò)SVM對(duì)傳感器采集到的原始數(shù)據(jù)經(jīng)過(guò)訓(xùn)練后生成的模型,svm_train.main(arg)可以對(duì)傳入的數(shù)據(jù)進(jìn)行分類(lèi),并由此生成相應(yīng)動(dòng)作的訓(xùn)練模型模型。生成的模型如下頁(yè)圖5.10。圖5.10 生成的模型數(shù)據(jù)(2)SVM算法識(shí)別運(yùn)動(dòng)狀態(tài)在訓(xùn)練完成后,用戶即可在主界面點(diǎn)擊開(kāi)始按鈕,隨后系統(tǒng)開(kāi)始就開(kāi)始監(jiān)聽(tīng)手機(jī)傳感器的狀態(tài),識(shí)別出用戶的熱身運(yùn)動(dòng)類(lèi)別,將識(shí)別結(jié)果保存到文件中,如圖5.11。其中detectFileEvent對(duì)系統(tǒng)實(shí)時(shí)采集到的傳感器數(shù)據(jù)進(jìn)行預(yù)處理后保存到本地文件中。圖5.11 識(shí)別關(guān)鍵代碼這里我們使用LIBSVM庫(kù)的

49、svmpredict方法,svmpredict方法是根據(jù)用戶自身訓(xùn)練得到的結(jié)果,然后調(diào)用svmtrain.main(arg)生成模型,最后再對(duì)收集到的用戶數(shù)據(jù)進(jìn)行行為預(yù)測(cè)。其中mDetectPath是經(jīng)過(guò)特征值提取的實(shí)時(shí)獲取到的傳感器的數(shù)據(jù),mModePath是要進(jìn)行比對(duì)的模型文件,mResultPath為保存識(shí)別結(jié)果的文件,我們根據(jù)訓(xùn)練集所獲得的模型,對(duì)用戶的運(yùn)動(dòng)狀態(tài)進(jìn)行識(shí)別,然后將識(shí)別的結(jié)果放入mResultPath所指向的文件中,以便顯示在界面上。整個(gè)算法的流程圖5.12如圖所示。圖5.12 算法流程第六章 系統(tǒng)測(cè)試6.1 測(cè)試目標(biāo)系統(tǒng)測(cè)試的目標(biāo)是發(fā)現(xiàn)程序中存在的問(wèn)題,并且得出能驗(yàn)證所采

50、用的運(yùn)動(dòng)識(shí)別算法結(jié)構(gòu)的正確性和準(zhǔn)確性。在進(jìn)行主要功能的檢測(cè)之前,第一步先打開(kāi)軟件檢查其是否可以正常啟動(dòng),我們先要一一點(diǎn)擊屏幕上的按鈕,看是否會(huì)有閃退的情況出現(xiàn),若以上有問(wèn)題發(fā)生,則回到開(kāi)發(fā)環(huán)境中檢查錯(cuò)誤發(fā)生的原因,解決后再去檢測(cè)功能算法的準(zhǔn)確性。最后我們進(jìn)行熱身運(yùn)動(dòng)識(shí)別算法的準(zhǔn)確率檢測(cè),通過(guò)按照要求錄入訓(xùn)練集,然后使用手機(jī)來(lái)識(shí)別正在進(jìn)行的運(yùn)動(dòng)類(lèi)型,記錄識(shí)別結(jié)果,計(jì)算準(zhǔn)確率,從而來(lái)驗(yàn)證系統(tǒng)的可行性和準(zhǔn)確性。6.2 測(cè)試步驟首先先由我在界面選擇不同的運(yùn)動(dòng)之后進(jìn)行訓(xùn)練,分別進(jìn)行3種運(yùn)動(dòng)的運(yùn)動(dòng)模式的訓(xùn)練,由訓(xùn)練者進(jìn)行10組以上的訓(xùn)練,并有意識(shí)保證在做各種運(yùn)動(dòng)在時(shí)動(dòng)作盡量的標(biāo)準(zhǔn),使其特征值有比較明顯的差

51、距。隨后進(jìn)行驗(yàn)證性的實(shí)驗(yàn)。將手機(jī)放到與訓(xùn)練時(shí)的相同的身體位置,然后開(kāi)始做熱身運(yùn)動(dòng),對(duì)我所做運(yùn)動(dòng)與手機(jī)上識(shí)別結(jié)果進(jìn)行對(duì)比記錄,隨后給出準(zhǔn)確率。實(shí)驗(yàn)結(jié)果如下頁(yè)圖6.1,6.2所示。圖6.1是訓(xùn)練次數(shù)與準(zhǔn)確率的關(guān)系,訓(xùn)練次數(shù)表示的是我使用手機(jī)錄入三種熱身運(yùn)動(dòng)訓(xùn)練集的次數(shù),并且錄入一定次數(shù)后,開(kāi)始應(yīng)用的識(shí)別功能,無(wú)規(guī)律的交替做三種熱身運(yùn)動(dòng),記錄識(shí)別的結(jié)果,最后計(jì)算出識(shí)別的準(zhǔn)確率,隨后刪除訓(xùn)練集和模型文件開(kāi)始下一次的實(shí)驗(yàn)。可以看到表中3次實(shí)驗(yàn)慢跑識(shí)別都有著良好的表現(xiàn)而另外兩個(gè)運(yùn)動(dòng)就識(shí)別率不是特別的優(yōu)秀,隨后對(duì)記錄數(shù)據(jù)進(jìn)行分析,首先是因?yàn)槁軘?shù)據(jù)特征比較明顯,有著比較明顯的周期性,而其他兩個(gè)運(yùn)動(dòng)因?yàn)橥瑯邮?/p>

52、站在原地,只是佩戴設(shè)備的部位不同,訓(xùn)練集采集過(guò)少時(shí)就會(huì)有失真的情況發(fā)生,但是如果適當(dāng)增多訓(xùn)練集,識(shí)別效果明顯變好。圖6.2中表示訓(xùn)練次數(shù)一定時(shí),系統(tǒng)識(shí)別的準(zhǔn)確率,每次單獨(dú)做一個(gè)動(dòng)作,做5次,記錄識(shí)別結(jié)果,計(jì)算識(shí)別率。圖6.1 訓(xùn)練次數(shù)與準(zhǔn)確率圖6.2 識(shí)別準(zhǔn)確率6.3 測(cè)試結(jié)語(yǔ)由于本實(shí)驗(yàn)通過(guò)我自己對(duì)各種熱身運(yùn)動(dòng)進(jìn)行訓(xùn)練,沒(méi)有使用網(wǎng)上下載相關(guān)的訓(xùn)練集,主要想要保證算法設(shè)計(jì)的獨(dú)立性,不受外力影響,但缺點(diǎn)是只能對(duì)我一個(gè)人的運(yùn)動(dòng)進(jìn)行檢測(cè)。經(jīng)過(guò)對(duì)上述的測(cè)試結(jié)果分析,對(duì)于運(yùn)動(dòng)差別較大的熱身運(yùn)動(dòng),比如慢跑以及高抬腿(將手機(jī)放在褲兜中的情況),由我一個(gè)人進(jìn)行測(cè)試實(shí)驗(yàn),發(fā)現(xiàn)準(zhǔn)確率都在80%以上,但是體轉(zhuǎn)運(yùn)動(dòng)訓(xùn)練

53、時(shí)有可能會(huì)與之前的熱身運(yùn)動(dòng)的訓(xùn)練集過(guò)于相似,則無(wú)法識(shí)別,需要在進(jìn)行訓(xùn)練時(shí)加大各種熱身運(yùn)動(dòng)的區(qū)別度。進(jìn)過(guò)實(shí)驗(yàn)之后,發(fā)現(xiàn)檢測(cè)系統(tǒng)的綜合準(zhǔn)確率在80%左右,與其他動(dòng)作有較大差別的運(yùn)動(dòng)檢測(cè)率比較高,生成的模型比較優(yōu)秀,如果訓(xùn)練集不夠好,訓(xùn)練數(shù)據(jù)過(guò)于相近時(shí),檢測(cè)的結(jié)果就會(huì)非常低,所以系統(tǒng)的基本功能完善,能夠識(shí)別出經(jīng)過(guò)訓(xùn)練的實(shí)驗(yàn)者的運(yùn)動(dòng)狀態(tài),但具體的功能模塊和算法設(shè)計(jì)還有待完善。第七章 總結(jié)(缺陷和展望)7.1 本文總結(jié)智能手機(jī)的高速發(fā)展,已經(jīng)改變了人們?nèi)粘I畹木坝^,為人們開(kāi)發(fā)許多有趣的數(shù)據(jù)挖掘應(yīng)用打開(kāi)了大門(mén),人類(lèi)活動(dòng)識(shí)別也是這些應(yīng)用領(lǐng)域中的熱點(diǎn)問(wèn)題之一。它將手機(jī)傳感器接收到的原始讀數(shù)作為輸入并識(shí)別出用

54、戶的運(yùn)動(dòng)狀態(tài),我們的論文設(shè)計(jì)就是這個(gè)領(lǐng)域中進(jìn)行了一點(diǎn)小小的嘗試,在理清了應(yīng)用的設(shè)計(jì)思路之后,文中著重介紹了如何利用現(xiàn)有的各種的資源來(lái)實(shí)現(xiàn)運(yùn)動(dòng)識(shí)別的功能,并嘗試用SVM分類(lèi)器算法來(lái)完成整個(gè)系統(tǒng)設(shè)計(jì)的核心部分,最后進(jìn)行實(shí)驗(yàn)驗(yàn)證了系統(tǒng)的可行性。我們可以發(fā)現(xiàn)智能手機(jī)傳感器的所能做的事情非常廣泛,以現(xiàn)在的技術(shù)發(fā)展趨勢(shì)來(lái)看,未來(lái)智能手機(jī)將有可能取代一些傳統(tǒng)設(shè)備的傳感器系統(tǒng),以一種更加新穎的方式出現(xiàn)在人們的面前。移動(dòng)設(shè)備傳感器系統(tǒng)可以做到的事情越來(lái)越多,而且它在其它交叉領(lǐng)域中也異常出彩,例如,在疾病領(lǐng)域的科學(xué)家可以根據(jù)患者身上攜帶的移動(dòng)設(shè)備所獲取到的信息,與計(jì)算機(jī)科學(xué)相結(jié)合進(jìn)行實(shí)驗(yàn),以推斷某些疾病(如阿爾茨海默病或中風(fēng))的病因或預(yù)征,并做出預(yù)防。所以未來(lái)的工作將不僅限于研究運(yùn)動(dòng)識(shí)別,要將人身運(yùn)動(dòng)狀態(tài)識(shí)別與其他學(xué)科進(jìn)行交叉分析,拓展新的領(lǐng)域的同時(shí)要注重系統(tǒng)開(kāi)發(fā)平臺(tái)中的用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論