




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录第一章 绪 论11.1 应用背景11.2 系统发展背景11.2.1 安卓平台优势11.2.2 常见热身运动姿态简介21.3 SVM分类器3第二章 系统开发技术42.1 安卓技术简介42.1.1 安卓系统架构42.1.2 安卓系统的四大核心组件52.2 安卓传感器技术52.2.1 安卓传感器系统架构52.2.2 安卓传感器接口简介62.2.3 三种传感器的特点72.2.4 传感器数据的获得7第三章 系统分析研究93.1 系统需求分析93.1.1 系统功能需求93.1.2 系统技术需求93.1.3 系统维护需求103.1.4 系统安全需求103.2 可行性分析103.2.1 经济可行性103
2、.2.2 技术可行性103.2.3 操作可行性113.3 系统结构设计113.4 系统开发流程分析12第四章 系统设计与实现134.1 传感器结构134.2 工作流程134.3 用户用例图设计144.4 系统界面设计及操作简介144.5 系统模块设计16第五章 算法描述175.1 简介175.2 具体步骤175.2.1 数据预处理:去燥和分割175.2.2 特征提取185.2.3 分类器算法选择195.2.4 SVM分类器原理简介205.2.5 SVM算法识别运动状态23第六章 系统测试266.1 测试目标266.2 测试步骤266.3 测试结语27第七章 总结(缺陷和展望)287.1 本文总
3、结287.2 后续工作28参考文献30致 谢32摘 要随着当下新兴科技日新月异的发展,智能手机的功能变得越来越先进,而且手机上集成了非常多的微型传感器模块。因为手机具有小巧且方便使用的缘故,所以相较于其他的设备更加合适用来进行行为识别方面的研究。又因为现在人们越来越注重身体健康,喜欢运动的人群也随之增多,但由于许多人缺少运动之前的热身环节,从而导致运动时受伤的现象屡见不鲜,所以本文将通过一个具体的开发实例,提出一种基于Android系统的热身运动识别应用的设计思路。在进行软件开发时,其中的主要的工作就是通过智能手机内置的传感器来采集用户的热身运动信息,经由内部程序处理后,当再次接收到相同的运动
4、信息时,能够识别出用户的运动状态。论文具体阐述了系统的设计思路到具体开发流程,采用Android平台完成开发,实现了运动识别功能,包括慢跑、转体运动和高抬腿,满足用户运动数据的采集和运动识别。其中通过比较各种分类器之后,决定采用SVM分类器算法对获取到的传感器数据进行处理,将经过预处理操作之后的传感器数据放到SVM分类器中进行分类,分类后会导出训练模型,用于之后进行的行为识别。论文最后通过两个实验对系统功能进行了检测。关键词:运动状态识别;Android平台;手机传感器;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 应用背景在当下,智能手机已经成为每个人不可或缺的便携式智能设备,而且其重要性还在与日俱增,在某种意义上来说,它相当于一台我们生活中使用的狭义的电脑,但是它又具备电脑没有的优势,它随着时代的进步,功能变得越来越强大,可以用它做的事情也愈来
11、愈多,手机中内置的传感器种类也越来越多,精度也愈发准确,与此同时,随着科学技术的发展,以及人类意识的进步,越来越多的人意识到运动的重要性,各种各样的运动方式琳琅满目,深受人们的喜爱,所以基于智能手机的行为识别技术的开发也就应运而生。当人们无论在户外还是在室内进行运动时,大多都会随身携带手机,而且大部分的智能手机中都配备了具有相当精度的微型传感器,人们的使用手机的频率和手机自身的素质使得基于便携式移动微型计算机的人类行为识别研究成为可能,而且能在运动识别方面获得十足的发展。胡龙1的研究中指出了行为识别领域的开发技术。在Lane等人2的研究中对基于移动设备传感器研究进行了阐述,在着眼于相关具体行为
12、的自动识别领域,已经有人完成了相当的工作。例如在黄卓勋等3和刘斌等4进行的健身以及复杂行为识别算法领域的研究,以及李瑞峰等人5在人体行为方面的研究综述。本文设计了一个基于智能手机传感器的用于检测3种热身运动的系统,以此给出一种运动检测系统的设计思路,以及有关的算法相关知识。1.2 系统发展背景1.2.1 安卓平台优势Android系统就是一个基于开放式的手机电脑平台操作系统,它是由Google公司于2007年首先推出6。从它面世以来,到现在为止快速占领了大部分的市场份额,而且相对于其他的传统品牌例如诺基亚,摩托罗拉等,Android系统在移动客户端的开发中更具有优势,而且与传统的Java程序开
13、发语言对比,它在运行时具有资源占用率低,性能稳定的特点,深受广大开发者和用户的青睐。韩文智等人7在研究中指出了有关Android的应用开发的相关知识。张娜8在其文章中总结了Android系统的基础架构,康立富等人9指出了基于Android平台的行为识别应用的开发框架。Android系统是一种在Linux系统的基础上,开发出的一种基于开源代码的移动设备系统,现在可常见于除苹果以外的智能手机中,由于其代码是开源的状态,所以各大移动设备厂商争相入驻,使其迅速在全球得到蓬勃发展,并成为苹果系统的强烈竞争对手,而且他的系统完整度与应用丰富度也不容小觑。所以最后在经过各方面的因素考量后,因Android平
14、台相较于其他平台适用性更广,容错率更大,限制较小,使我们专注于研究行为识别的开发,所以最后决定选择使用Android平台来开发这个应用。1.2.2 常见热身运动姿态简介吴哲君等人10指出在进行行为识别应用开发之前要进行步态分析。我们设计系统的第一步就是要确定系统所具备的功能,最终经过思考之后确定了三个动作。(1)慢跑:用户将手机放在裤子的口袋中,然后开始进行相对匀速的跑步动作;(2)高抬腿:用户同样可以将手机放在裤子的口袋中,大幅度的做交替往上抬腿运动;(3)体转运动:用户手持手机,向左向右旋转身体。人体的身体行为分析(以走路为例):慢跑时的速度通常较低,但相较于行走来说更快,动作幅度相比快跑
15、显得更下以及频率更慢,如下页图1.1所示。人在走路时,两只脚是呈相对应且对称的状态,当一只脚抬起来的时候,另一只离地,并且是周期性运动,当一只脚从落地到下一次落地视为一个周期,完成了两步走,经过比对分析发现,慢跑和高抬腿以及体转运动的运动模式与之有异曲同工,都是以周期为计算单位,所以我们可以通过传感器的数据差异值来判断出不同运动状态。图1.1 人类行走步态分析1.3 SVM分类器SVM作为一种高效的统计学分类器,已经被应用于各种各样的研究当中。其中几个比较重要的研究如刘松松等人11在图像分类方面的研究,溪海燕等人12在交通行人识别的研究,倪志伟等人13介绍了SVM在金融方面的研究。SVM分类器
16、运用于运动识别领域已经有好几个年头,并且被大量运用于复杂行为识别的过程中,我们在这里阐述了一种基于智能手机传感器的SVM分类器的热身运动检测系统的开发过程,在选择使用SVM算法分类器进行开发前,先与其他几个常见算法进行了比较分析,随后阐述了SVM算法的数学原理。从运动识别系统开发的过程中看,其中的算法包括训练和检测两个阶段:首先通过把智能手机放到裤兜中,然后对Android系统获取到的传感器数据进行处理,处理后提供给向量机学习,然后再使用训练好的模型对用户的热身运动进行预测。李神送等人14在文章中对获取传感器数据进行了详细的介绍。第二章 系统开发技术2.1 安卓技术简介2.1.1 安卓系统架构
17、我们可以把Android系统的架构粗略的分成四个个部分,分别是:Linux内核层、系统运行层、应用框架层和运用层。如图2.1所示。图2.1 Android系统架构(1)Linux内核层:Linux是Android系统的内核结构。它为Android智能手机中的摄像头、主板、显示器等提供了底层的驱动,总的来说Linux内核层就是硬件驱动层。(2)系统运行层:系统运行层又可称之为代码逻辑层。这一层为Android系统的开发者提供了各种各样的库函数支持,其中有些决定了Android系统的某些特性功能。如SQLite库为Android手机提供了储存数据和提取数据的功能,OpenGLES库就使开发人员在进
18、行软件设计时可以通过这个库实现3D绘画功能。还有比较重要的一点,就是系统运行层为Android系统开发所提供的一些核心库,能够让开发者使用JAVA语言来进行开发。(3)应用框架层:这一层就主要是为Android系统开发提供了各种各样的外部或内部的API供开发者调用,这里就不多加赘述。(4)应用层:应用层最通俗的说法就是APP(Application),它通过Android系统这个载体来实现与用户的交互行为,也就是手机中各式各样的程序。2.1.2 安卓系统的四大核心组件Android系统的四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiv
19、er)和内容提供器(Content Provider)15。(1)Activity:简单的说活动就是Android应用程序UI界面,所有的显示内容都是归属于Activity的,俗称Android应用系统的“门面”。它展示出了开发者想要在应用程序中提供给用户的功能,并起到引导用户与智能手机进行交互的作用。(2)Service:服务就是应用程序在后台实现的功能,用户在使用程序和退出程序时都看不到它,但它一直都在默默地运行,只要进行相应的设置,并获得一些权限,就可以使应用程序在后台完成用户指定的各种操作。(3)Broadcast Receiver:广播接收器的功能就像它的名字一样,是Android应
20、用程序用来接收广播的组件,智能手机与其他手机之间的信息传输和主机中各个硬件之间的信息交互都是通过广播接收器来实现的,其中最简单的例子就比如短信和电话,当有电话呼入或者是接收到信息时,可以通过一系列的操作来通知用户接收到了信息,并让用户做出响应。(4)Content Provider:内容提供器就是实现了同一部智能手机中的不同应用程序之间可以相互通信,就比如微信有了权限之后就可以获取到你手机中保存到的电话号码一样,大大扩展了智能手机的功能。2.2 安卓传感器技术2.2.1 安卓传感器系统架构在进行有关Android传感器的开发中,Android官方为开发者提供了调用传感器数据的函数接口,我们在开
21、发时,在明确了相关的参数之后,就可以直接调用相应的变量和函数以获取到传感器的数值。系统层次结构如下页图2.2所示。图2.2 传感器系统层次结构图如图2.2所示,Android传感器系统的层次结构一共分三层,分别是应用程序层、Android系统层以及硬件和驱动层,在这其中,Sensor的JAVA类是由Android平台提供的传感器数据交互接口,我们在程序中就是在此层中调用函数来对我们需要的数据进行处理。2.2.2 安卓传感器接口简介(1)SensorManager类SensorManager类是Android智能手机中所有传感器的上级管理程序,可以在程序取得各种传感器的实例,接收参数为传感器的类
22、型(Sensor.TYPE_SENSORTYPE):Sensor sensor = senserManager.getDefaultSensor(Sensor.TYPE_SENSORTYPE)(2)Sensor类Sensor类中定义了Android手机中各种各样的传感器的“名字”,我们可以使用参数获取到这些传感器的支持,然后在传感器管理器中注册后,即可设置监听程序,从而就可以获取到传感器的数据。(3)SensorEventListener接口它定义了onSensorChanged()和onAccuracyChanged()这两个方法。在应用运行时,设置了传感器监听
23、之后,当程序监听到有传感器的状态发生改变,数值有与之前不同之后,传感器管理器就会分别唤醒onAccuracyChanged()和onSensorChanged()函数,使程序开始执行其中的代码。(4)SensorEvent类SensorEvent类就是用来提取传感器获取到的数据的。2.2.3 三种传感器的特点(1)陀螺仪陀螺仪是现在智能手机中比较常见的传感器之一,它类似于一个陀螺,是由科学家针对陀螺的研究进而演变来的角速度检测仪器。它内置于大部分的智能手机中,常常被用于检测手机的偏转状态,即手机相对于直立状态下经过了何种变换,引起来角速度的改变,然后就会产生一个数值来表示手机的状态。手机中的陀
24、螺仪传感器就是经过技术发展是其集成到了小小的手机当中。所以陀螺仪在程序开发时会返回三个参数,分别就是手机绕3个轴旋转的角速度,以此可以来推测手机在个方向上的转动速率。(2)加速度传感器加速度传感器也是手机中经常配备的硬件之一。我们将手机置于直立的状态,然后在上面建立一个三轴坐标系,加速度传感器就是用来检测手机在坐标轴中进行某一个方向的位移时产生的加速度,其中的加速度值是以重力为单位。在Android应用开发时,它会产生四个参数,分别对应着三个轴上的加速度,以此来表示手机的运动状态,还有一个参数是智能手机的时间戳。它主要就是用于检测用户的生理运动状态,最简单的就是检测用户从静止到行走的过程特征,
25、而且还可以表示一段时间内的运动变化。(3)重力传感器人们在加速度传感器的基础上,进而开发出了一种只检测重力方向上加速度的仪器,所以重力传感器传回来的参数值也就是手机运动状态相对重力方向的速度。2.2.4 传感器数据的获得(1)登录系统的传感器管理器,定义SensorMananger变量,并通过其获得各个传感器的应用实例,具体代码如图2.3所示。图2.3 创建传感器变量接下来,我们们使用onResume()函数向系统提交注册,让Android系统对传感器服务和传感器进行监听。如图2.4所示。图2.4 设置系统监听要使用传感器的数据,就要使用上文介绍的SensorEventListener接口,通
26、过以下两个函数来实现:public void onAccuracyChanged(Sensor sensor, int accuracy)public void onSensorChanged(SensorEvent event)在程序开始执行后,3个传感器都处于等待监听状态,如有数据就将数据保存到定义的变量当中,这里比较关键的一点是传感器的原始数据在变量中保存的顺序是按照传感器相应程序的唤醒顺序来的,并且每个传感器传回的参数都是3个,所以我们定义每一帧的传感器原始数据为9个单位,每3个参数为一个传感器的值。第三章
27、 系统分析研究3.1 系统需求分析3.1.1 系统功能需求近年来,移动智能手机设备功能越来越强大,智能化越来越强,比如图像识别、语音识别、动作识别等,这些功能的开发给人们带来了极大的便利。我们为了对用户的行为进行识别,就必须采用手机自带的传感器所获取到的数据,并对获取到的数据进行相应的处理,将数据保存到手机中之后,再供之后的运动识别所用。基本功能需求如图3.1所示:图3.1 总体功能需求图3.1.2 系统技术需求首先我们选择在当下最流行,使用人数最多的Android平台下开发,也是顺应时代,顺应技术的发展。而且对于开发者来说,开发有关行为识别技术的应用就需要一个稳定的系统,并且系统提供了方便的
28、调用传感器数据的途径,并且Android平台具有全面开发框架结构,可以使用系统自带的数据库对实验中所使用的数据进行存储和读取,保证了数据的可靠和稳定性。3.1.3 系统维护需求系统的易维护性。在进行系统开发时需要考虑到系统对于开发者后期进行维护的成本,本系统采用Android平台进行开发,由官方提供了独立的系统开发架构,而且应用相对于系统处于一个相对独立的地位,并且系统使用的数据库为自带的数据存储结构,所以我们在进行与文件有关的数据处理更加容易与简捷。这样保证了我们在开发应用时不会导致系统的崩溃,为我们调试程序提供了条件,也满足了我们对于系统完成后,要进行维护和更新的需求。3.1.4 系统安全
29、需求良好的安全性。由于只需要对用户进行的训练集、训练模型、以及识别数据进行保存,保存后所占用的系统空间很小,就可以使用系统自带的硬盘对数据进行存储,将数据保存到文本文件中,并且应用程序无法联网,杜绝了被侵入的风险,所以符合所需的安全性。3.2 可行性分析3.2.1 经济可行性在进行应用开发之间,通过市场的调查发现,大部分Android智能手机的价格相对于苹果手机来说比较低,而且价格较低的Android手机中不乏性价比较高的机型供我选择,且内置的传感器系统也比较完善,在我的承受范围之内,所以Android智能手机的成本是我选择在Android平台上进行开发的一个重要原因。3.2.2 技术可行性应
30、用程序基于Android平台进行开发设计,Android系统从面世到现在的11个年头中,经过了多次版本的更新升级,经受住了市场和用户的检验,并且有着一套完善的开发框架,有越来越多的人涌入Android开发的行列中,又因为它的代码是开源的,减少了我们在开发应用时的成本,无论是针对开发者或者是研究课题来说,Android系统的技术都有很高的可取性。并且经过市场调查,市场上的绝大部分Android手机中都集成有基础的传感器体系,并且Android开发技术也支持了提取手机传感器获取到的数据的功能。所以,在后续的软件开发过程中,将会围绕着Android平台来进行相关应用技术的研究。3.2.3 操作可行性
31、我们的系统是在Android智能手机上进行开发,根据最新的调查显示,全球智能手机用户已经超过28亿,所以全球超过三分之一的人,他们每人至少都拥有一部智能手机,并且市面上的智能手机基本上是苹果系统与Android系统,他们的操作方式即为相似。所以只要一个人有一定的理解能力,就可以掌握应用的使用方法,系统在操作上也是可行的。3.3 系统结构设计本基于手机传感器的热身运动识别系统开发工程中应用了MVC框架,它是由以下三部分构成的,如图3.2所示。(1)视图层(View):应用的UI界面设计。实现了实时动态地对界面进行控制,拥有了更强的表现力。(2)控制层(Controller):Acitvity在控
32、制层中起到非常重要的作用,为了实现响应时间短,我们就不在Acitvity中写代码。(3)模型层(Model):对数据的存储都是在模型层中处理的,也就是说程序的二进制数据也是在这一层进行操作的。图3.2 系统框架模型3.4 系统开发流程分析在开发设计基于手机传感器的热身运动识别系统的时候,首先进行需求分析,进而对系统进行总体的设计规划,设计系统功能模块,测试等,基于手机传感器的热身运动识别系统的设计流程图,如图3.3所示。图3.3系统设计流程图第四章 系统设计与实现4.1 传感器结构本系统所使用的传感器的内部结构如图4.1所示。图4.1传感器内部结构图4.2 工作流程当手机的物理状态发生改变时,
33、手机中的传感器的数值就会改变,接收器接收到变化,然后系统进行数据采集,读取数据,并进行数据处理,最后进行热身运动识别。如图4.2所示。图4.2工作流程图4.3 用户用例图设计用户进入系统后,可选择进行动作训练采集或热身运动识别操作,下面将通过用例图的方式展现用户和用例之间的关系。用户用例图如图4.3所示。图4.3用户用例图4.4 系统界面设计及操作简介手机传感器的热身运动识别系统的界面UI设计如图4.4,4.5和下页图4.6所示。图4.4 训练进入页面图4.5 主界面图4.6 运动训练界面关键代码如下(以慢跑为例关于用于系统启动自执行的代码在在这里就不多加赘述):/*定义不同的变量,将UI中的
34、不同按钮与变量绑定,以便监听用户按下按钮的操作,从而可以执行相应的操作*/mTrainRunSlowBtn = (Button)mTopView.findViewById(R.id.train_run_btn);/代表的是图4.6中“慢跑”所在按钮,点击即设定将要进行训练的运动是慢跑trainStartBtn = (Button) mTopView.findViewById(R.id.train_start_btn);/代表的是图4.6中的“开始采集”所在按钮,点击后用户即可进行相应运动的训练,随后点击停止训练即可将训练数据送入分类器中处理,并生成相应的模型detecStartBtn = (B
35、utton) findViewById(R.id.detect_start_btn);/主界面图4.5的“开始”按钮,通过收集传感器的数据,与之前训练生成的模型进行处理预测出用户的运动状态,并显示在屏幕上如图4.7为将识别结果显示在屏幕上的关键代码。图4.7 动态显示识别运动类型4.5 系统模块设计在进行完系统的介绍和分析之后,我们对系统进行分模块化处理,并且在开发过程中以此模块分布来进行开发和调试。分模块处理有助于我们对于程序的理解,在完善各个模块的同时,也加深了对整体的把握,并且在最后的系统测试时可以很快地发现问题的所在。(1)显示模块:用于显示应用程序需要展示给用户看的内容,简单来说就是
36、UI设计。这一个部分起到的作用就是要激励用户点击屏幕,对应用程序进行操作。(2)人机交互模块:这个部分是用来实现用户与手机之间的“交流”,因为这里的设备已经确定是手机,那么就是对用户的点击事件进行响应,实现用户点击的功能。(3)传感器信息采集模块:这个部分用于调用相应的函数接口来获取用户在运动时的传感器信息。(4)原始数据预处理模块:将上一个模块获取到的传感器原始信息进行预处理,以备训练训练模型和运动识别时使用。(5)行为识别模块:将在下一章内容中进行详细描述。第五章 算法描述5.1 简介行为识别(Activity Recognition)技术狭义来说就是通过传感器读数来预测用户的行为,并且已
37、经发展成为与人们生活息息相关的应用。近几年来因为机器学习技术的火热,行为识别领域越来越受到人们的关注,现在这项技术已经渗入大众生活的方方面面,比如医学健康领域的医疗仪器,运动管理设备中集成了行为识别技术。基于智能手机传感器技术就是将手机自带的传感器的读数作为输入的参数,从而来预测用户的运动状态。但是最贴近人生活的行为比如行走,站立,慢跑等比较典型的活动并以其隐蔽性、低(无)成本性、易用性,致使智能手机逐渐成为主要的人类活动识别的平台。本系统一共使用3个智能手机中的传感器进行数据采集,分别是加速度计(acceleration transducer),重力传感器(GV-sensor),陀螺仪(gy
38、roscope),根据3个传感器的采集到数据进行数据采集以及行为识别。在本实验中选择采用LIBSVM多分类方法库对程序获得的经过数据预处理的传感器原始数据进行训练,训练后根据特征值对不用的运动进行分类,分类后生成不同的模型,最后在运动识别过程中根据训练模型识别出用户的运动。LIBSVM是由台湾的林智仁(Chih-Jen Lin)教授二十世纪出开发的一套SVM库16。我们为什么选择这套库来进行整个系统最核心的部分开发呢?是因为它运算速度比较快,而且易用性很强,在进行Android开发时,只需要调用它提供的函数接口,就可以通过其内置方法实现对传感器数据的分类和识别。并且由于LibSVM程序体积小,
39、使用步骤简单,说明全面,代码开源,所以LibSVM成为了国内使用人数最多的分类算法库。5.2 具体步骤5.2.1 数据预处理:去燥和分割当传感器发现手机的状态改变之后,已注册的传感器就会给程序程序传回收集到的原始数据,在进行下一步操作之前,还要进行数据的预处理。在我们使用传感器发来的原始数据之前,需要对这些数据进行提前处理操作,这样做的其中一个目的是降低用户和传感器本身的噪声,是数据更加精确。我们在开发时对数据进行了分割处理,因为使用了三个传感器的原始数据,每个传感器的返回的关键参数都为3个,所以以每9个样本数据作为一个样本点,用于训练集和识别功能。并且由系统控制空白段,无动作时就不启动传感器
40、那么识别算法接收不到数据也不会执行。5.2.2 特征提取特征提取作为运动识别算法中一个重要的步骤,能够使传感器的原始数据变得更加适合于之后的分类算法。在程序中的们进行了4个特征值的提取,分别是:(1)Energy:在2.3.4中提到,每一帧的传感器数据为9个参数单位,我们首先每一帧的传感器数据进行以下处理,对第一个传感器值和第三个传感器值进行完全平方差累加处理,作为第一个特征值。(式5.1)(2)RoteMin:在对Energy进行计算的同时,随后找出其中的最小值,作为第二个特征值RoteMin。(式5.2)(式5.3)(式5.4)(4)Rorate:将第二个传感器的所有参数取绝对值相加,计算
41、结果作为第三个特征值。如下式所示:(式5.5)(4)pNUM:将每一帧的传感器数据前4个单位按顺序两两相乘,判断结果正负号,结果为正不计分,结果为负加一分,具体算法如下所示:(式5.6)(式5.7)(式5.8)(式5.9)对各段的特征值提取结束之后,将他们捆绑作为为特征值字段,供建立分类器使用。程中通过private String getFeatures(ArrayList<Float> mList)方法来实现对传感器采集到的数据进行特征提取,函数返回一个特征值字段,如果是训练数据,则数据段之前加上代表运动的编号,如果是识别数据,则经特征值处理后,再经由SVM算法来识别。5.2.3
42、 分类器算法选择选用的分类器为随机森林17、决策树18、Bagging19、朴素贝叶斯、kNN20、SVM,其中,Bagging使用的弱分类器为决策树,kNN的k为1,SVM使用多项式核。分类准确率如图5.1所示,运行时间如图5.2所示。图5.1 分类器准确率图5.2 各分类器运行时间从以上的对比数据中可以发现,SVM算法在训练时间以及准确率综合性较好,朴素贝叶斯算法的准确率较低,不予以采用;kNN表现较好,但是常用于复杂的模式识别应用中,考虑到需要实现的功能,不予以采用;其他分类器效果一般。又因为Android平台提供了LibSVM的工具,所以决定采用SVM分类器算法进行模型训练,并使用所获
43、得的模型进行运动识别。5.2.4 SVM分类器原理简介首先先来介绍一下SVM分类器,SVM(支持向量机)(Support Vector Machine)就是一种分类算法,可以将不同特征的数据分割在一个平面的两侧,实现分类的目的。在这里我们先由二维平面引入,分类器的作用就是在两种坐标点之间找到一条可以完美分割两种点的直线,然而如果我们将坐标点放到三维的空间中时,分类器就用于帮我们找到一个能使两种坐标点完美的分布在其两侧的平面,二这个平面在二维平面上看起来就是一条曲线,下面我们就介绍一下SVM分类器的数学原理。观察下图5.3,可以看到图中有两种不同类型的坐标点,对于这样一个模型,我图5.3 SVM
44、算法推导们在根据我们的观察,思考怎么利用一条分割线将两种类型的坐标点分开。在图5.3中可以看到有很多条直线进行了尝试,那么其中有没有一条最好的直线呢?因此,我们就需要找到一个超平面(Hyper Plane),在二维的图中就是一条线,这条线可以将坐标系中的两种坐标点分在不同的边,就相当于一条一条分割线,它不能离两种坐标中的任意一种垂直距离过近,因为当它离坐标过近时,它就会对影响整体判断的无用点产生误差,所以我们的目标就是要找到一条线,要求就是要离所有的坐标点都是尽可能的远。SVM算法就是在这些坐标点当中选择几个坐标组合成为一个平面,随后找到离这个平面最近的一些坐标点,是其离所有的坐标点都是尽可能
45、的远,即为有效分割。如图5.4。图5.4 SVM算法推导图5.5 SVM算法推导只有两种坐标点的分类问题方程表示一般为:。方程定义了一个超平面H,把两种坐标点分割开来,且两边都没有不相同的坐标点。我们这里设有N个样本分为:,则有分类规则:(式5.10)(式5.11)因为我们这里采用的是二维平面下分类训练样本,所以其线性可分,我们只需要改变权向量的模,如下所示:(式5.12)(式5.13)简化式子:(式5.14)随后我们根据向量相加的原则,改写x:(式5.15)其中,r是x到H的垂直距离,那么则有:,(式5.16)最优分界面的满足条件为:与(式5.17)间隔:离分界面最近的样本点(即使样本点)与
46、分界面的距离,它是,这样两类模间隔的距离为。其中,为拉格朗日乘子,达到极值的必要条件如图5.6:图5.6 达到极值的必要条件将上式代入拉格朗日函数,则有下页图5.7所示:图5.7 代入拉格朗日函数结果求上式的最大值,即可求得最优解,则最优权向量为图5.8所示:图5.8 最优权向量最优偏置可选一个支持向量样本求得:最优分界面是:。5.2.5 SVM算法识别运动状态(1)SVM训练模型生成用户可在系统界面中选择想要训练的运动,然后点击开始训练,随后系统就会开始监听手机传感器的状态和数据变化,如图5.9为关键代码。图5.9 运动训练关键代码其中TrainFileEvent对传感器原始数据进行特征值提
47、取处理,然后将处理结果保存到本地的文件中。svm_train.main的作用是对传感器获取到的数据(mTrainPath)进行训练然后生成相应的模型并保存到mModePath文件中。以上代码为在用户选定相应的运动模式之后,点击开始训练,系统就会自动采集用户的运动状态信息,并经过数据预处理之后,通过LIBSVM库中的SVMTrain方法,生成用户行为模型,并保存到系统文件中备用。根据LibVM文档中的使用说明,我们在调用svm_train函数的时候,只需要提供一个保存着训练数据的文件名就可以了,但是我们还需要进行运动的识别工作,所以还需要一个保存结果的文件,传入该文件的地址。其中mTrainPa
48、th是是用户在训练运动时采集到的数据保存在的文件名,mModePath是通过SVM对传感器采集到的原始数据经过训练后生成的模型,svm_train.main(arg)可以对传入的数据进行分类,并由此生成相应动作的训练模型模型。生成的模型如下页图5.10。图5.10 生成的模型数据(2)SVM算法识别运动状态在训练完成后,用户即可在主界面点击开始按钮,随后系统开始就开始监听手机传感器的状态,识别出用户的热身运动类别,将识别结果保存到文件中,如图5.11。其中detectFileEvent对系统实时采集到的传感器数据进行预处理后保存到本地文件中。图5.11 识别关键代码这里我们使用LIBSVM库的
49、svmpredict方法,svmpredict方法是根据用户自身训练得到的结果,然后调用svmtrain.main(arg)生成模型,最后再对收集到的用户数据进行行为预测。其中mDetectPath是经过特征值提取的实时获取到的传感器的数据,mModePath是要进行比对的模型文件,mResultPath为保存识别结果的文件,我们根据训练集所获得的模型,对用户的运动状态进行识别,然后将识别的结果放入mResultPath所指向的文件中,以便显示在界面上。整个算法的流程图5.12如图所示。图5.12 算法流程第六章 系统测试6.1 测试目标系统测试的目标是发现程序中存在的问题,并且得出能验证所采
50、用的运动识别算法结构的正确性和准确性。在进行主要功能的检测之前,第一步先打开软件检查其是否可以正常启动,我们先要一一点击屏幕上的按钮,看是否会有闪退的情况出现,若以上有问题发生,则回到开发环境中检查错误发生的原因,解决后再去检测功能算法的准确性。最后我们进行热身运动识别算法的准确率检测,通过按照要求录入训练集,然后使用手机来识别正在进行的运动类型,记录识别结果,计算准确率,从而来验证系统的可行性和准确性。6.2 测试步骤首先先由我在界面选择不同的运动之后进行训练,分别进行3种运动的运动模式的训练,由训练者进行10组以上的训练,并有意识保证在做各种运动在时动作尽量的标准,使其特征值有比较明显的差
51、距。随后进行验证性的实验。将手机放到与训练时的相同的身体位置,然后开始做热身运动,对我所做运动与手机上识别结果进行对比记录,随后给出准确率。实验结果如下页图6.1,6.2所示。图6.1是训练次数与准确率的关系,训练次数表示的是我使用手机录入三种热身运动训练集的次数,并且录入一定次数后,开始应用的识别功能,无规律的交替做三种热身运动,记录识别的结果,最后计算出识别的准确率,随后删除训练集和模型文件开始下一次的实验。可以看到表中3次实验慢跑识别都有着良好的表现而另外两个运动就识别率不是特别的优秀,随后对记录数据进行分析,首先是因为慢跑数据特征比较明显,有着比较明显的周期性,而其他两个运动因为同样是
52、站在原地,只是佩戴设备的部位不同,训练集采集过少时就会有失真的情况发生,但是如果适当增多训练集,识别效果明显变好。图6.2中表示训练次数一定时,系统识别的准确率,每次单独做一个动作,做5次,记录识别结果,计算识别率。图6.1 训练次数与准确率图6.2 识别准确率6.3 测试结语由于本实验通过我自己对各种热身运动进行训练,没有使用网上下载相关的训练集,主要想要保证算法设计的独立性,不受外力影响,但缺点是只能对我一个人的运动进行检测。经过对上述的测试结果分析,对于运动差别较大的热身运动,比如慢跑以及高抬腿(将手机放在裤兜中的情况),由我一个人进行测试实验,发现准确率都在80%以上,但是体转运动训练
53、时有可能会与之前的热身运动的训练集过于相似,则无法识别,需要在进行训练时加大各种热身运动的区别度。进过实验之后,发现检测系统的综合准确率在80%左右,与其他动作有较大差别的运动检测率比较高,生成的模型比较优秀,如果训练集不够好,训练数据过于相近时,检测的结果就会非常低,所以系统的基本功能完善,能够识别出经过训练的实验者的运动状态,但具体的功能模块和算法设计还有待完善。第七章 总结(缺陷和展望)7.1 本文总结智能手机的高速发展,已经改变了人们日常生活的景观,为人们开发许多有趣的数据挖掘应用打开了大门,人类活动识别也是这些应用领域中的热点问题之一。它将手机传感器接收到的原始读数作为输入并识别出用
54、户的运动状态,我们的论文设计就是这个领域中进行了一点小小的尝试,在理清了应用的设计思路之后,文中着重介绍了如何利用现有的各种的资源来实现运动识别的功能,并尝试用SVM分类器算法来完成整个系统设计的核心部分,最后进行实验验证了系统的可行性。我们可以发现智能手机传感器的所能做的事情非常广泛,以现在的技术发展趋势来看,未来智能手机将有可能取代一些传统设备的传感器系统,以一种更加新颖的方式出现在人们的面前。移动设备传感器系统可以做到的事情越来越多,而且它在其它交叉领域中也异常出彩,例如,在疾病领域的科学家可以根据患者身上携带的移动设备所获取到的信息,与计算机科学相结合进行实验,以推断某些疾病(如阿尔茨海默病或中风)的病因或预征,并做出预防。所以未来的工作将不仅限于研究运动识别,要将人身运动状态识别与其他学科进行交叉分析,拓展新的领域的同时要注重系统开发平台中的用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国厨房电器行业市场全景评估及投资战略研究报告
- 福建省2024中考道德与法治课前背本第28课时世界舞台上的中国
- 福建省2024中考道德与法治课前背本第12课时勇担社会责任
- 2025年中国运动营养品行业市场发展现状及投资策略咨询报告
- 2024年重庆大学档案馆技术人员招聘笔试真题
- 2024年韶关市南雄市应急救援队员招聘考试真题
- 2024年衢州市属国企招聘考试真题
- 2024年九江学院附属医院护理岗位招聘考试真题
- 2024年江苏无锡学院招聘笔试真题
- 2024年广西姆洛甲文化旅游投资有限公司招聘考试真题
- 《高级计量经济学》-上课讲义课件
- 中国文化概论(第三版)全套课件
- 门窗安装技术标投标书
- 新版手机开发项目流程图
- 折彩粽的手工制作ppt公开课
- 发证机关所在地区代码表
- 建筑垃圾回收利用统计台账
- 《不一样的你我他》(完美)课件
- 外研版一起点二年级下册英语全册课件
- XE82000--午山风电场风机定检作业指导书
- 前列腺癌临床路径(最全版)
评论
0/150
提交评论