版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录第一章绪论 1应用背景 1系统进展背景 2安卓平台优势 2常见热身运动姿态简介 2SVM分类器 4第二章系统开发技术 5安卓技术简介 5安卓系统架构 5安卓系统的四大核心组件 6安卓传感器技术 7安卓传感器系统架构 7安卓传感器接口简介 8三种传感器的特点 9传感器数据的获得 10第三章系统分析研究 12系统需求分析 12系统功能需求 12系统技术需求 12系统维护需求 13系统安全需求 13可行性分析 13经济可行性 13技术可行性 14操作可行性 14系统结构设计 14系统开发流程分析 15第四章系统设计与实现 17传感器结构 17工作流程 17用户用例图设计 18系统界面设计及操作简介 18系统模块设计 20第五章算法描述 225.1简介 22具体步骤 23数据预处理:去燥和分割 23特征提取 23分类器算法选择 25分类器原理简介 26算法识别运动状态 29第六章系统测试 33测试目标 33测试步骤 33测试结语 34第七章总结(缺陷和展望) 36本文总结 36后续工作 36参考文献 38致谢 40摘要随着当下新兴科技日新月异的进展,智能手机的功能变得越来越先进,而且手机上集成了非常多的微型传感器模块。因为手机具有小巧且便利使用的缘故,所以相较于其他的设备更加合适用来进行行为识别方面的研究。又因为现在人们越来越注重身体健康,喜爱运动的人群也随之增多,但由于许多人缺少运动之前的热身环节,从而导致运动时受伤的现象屡见不鲜,所以本文将通过一个具体的开发实例,提出一种基于Android系统的热身运动识别应用的设计思路。在进行软件开发时,其中的主要的工作就是通过智能手机内置的传感器来采集用户的热身运动信息,经由内部程序处理后,当再次接收到相同的运动信息时,能够识别出用户的运动状态。论文具体阐述了系统的设计思路到具体开发流程,采纳Android平台完成开发,实现了运动识别功能,包括慢跑、转体运动和高抬腿,满足用户运动数据的采集和运动识别。其中通过比较各种分类器之后,决定采纳SVM分类器算法对猎取到的传感器数据进行处理,将经过预处理操作之后的传感器数据放到SVM分类器中进行分类,分类后会导出训练模型,用于之后进行的行为识别。论文最终通过两个试验对系统功能进行了检测。关键词:运动状态识别;Android平台;手机传感器;SVMAbstractAbstractWiththerapiddevelopmentofemergingtechnologiesinrecentyears,thefunctionsofthesmartphoneshavebecomemoreandmoreadvanced,andmanyembeddedmicro-sensormoduleshavebeenintegratedinthesmartphones.Sincethesizeofthesmartphonesissmallandconvenienttouse,itismoresuitableforstudyingthebehavioridentificationthanotherdevices.Recentyears,peoplearepayingmoreattentiontophysicalhealth,thenumberofpeoplewholikesportsisincreasing.However,manypeoplelackthewarm-upsessionbeforeexercise,whichleadstoinjuriesduringexercise,thisarticlewilladoptaspecificdevelopmentexampleto proposetheideaforwarm-upsportsrecognitionapplicationsbasedontheAndroidsystem.Duringsoftwaredevelopment,oneofthemaintasksistocollectwarm-upsportsinformationoftheuserthroughthebuilt-insensorsofthesmartphone.Afterprocessingthroughtheinternalprogram,whenreceivingthesamemotioninformation,theuser'smotionstatuscanberecognized.Thethesiselaboratedonthesystem'sdesignideastothespecificdevelopmentprocess,usingAndroidplatformtocompletethedevelopment,toachievethefunctionofmotionrecognition,includingjogging,swivelingmovementsandhighleglift,to meettheuser'smotiondataacquisitionandmotionrecognition.Amongthem,aftercomparingvariousclassifiers,itisdecidedtousetheSVMclassifieralgorithmtoprocesstheacquiredsensordatatogenerateacorrespondingmodel,andfinallyperformmotionrecognition.Finally,aseriesofexperimentsareusedtoverifytheaccuracyoftheapplication.Keywords: Warm-up status recognition; Android platform; Mobile phone sensor; SVM第一章绪论应用背景在当下,智能手机已经成为每个人不可或缺的便携式智能设备,而且其重要性还在与日俱增,越来越多的人意识到运动的重要性,各种各样的运动方式琳琅满目,深受人们的喜爱,所以基于智能手机的行为识别技术的开发也就应运而生。当人们无论在户外还是在室内进行运动时,大多都会随身携带手机,而且大部分的智能手机中都配备了具有相当精度的微型传感器,人们的使用手机的频率和手机自身的素养使得基于便携式移动微型计算机的人类行为识别研究成为可能,而且能在运动识别方面获得十足的进展。胡龙[1]的研究中指出了行为识别领域的开发技术。在Lane等人[2]动识别领域,已经有人完成了相当的工作。例如在黄卓勋等[3][4]进行的健身以及复杂行为识别算法领域的研究,以及李瑞峰等人[5]在人体行为方面的研究综述。本文设计了一个基于智能手机传感器的用于检测3系统的设计思路,以及有关的算法相关知识。系统进展背景安卓平台优势Android系统就是一个基于开放式的手机电脑平台操作系统,它是由Google公司于2007年首先推出[6]。从它面世以来,到现在为止快速占据了大部分的市场份额,而且相对于其他的传统品牌例如诺基亚,摩托罗拉等,Android系统在移动客户端的开发中更具有优势,而且与传统的Java程序开发语言对比,它在运行时具有资源占用率低,性能稳定的特点,深受广大开发者和用户的青睐。韩文智等人[7]Android的应用开发的相关知识。张娜[8]在其文章中总结了Android系统的基础架构,康立富等人[9]Android平台的行为识别应用的开发框架。Android系统是一种在Linux在可常见于除苹果以外的智能手机中,由于其代码是开源的状态,所以各大移动设备厂商争相入驻,使其迅速在全球得到蓬勃进展,并成为苹果系统的猛烈竞争对手,而且他的系统完整度与应用丰富度也不容小觑。所以最终在经过各方面的因素考量后,因Android平台相较于其他平台适用性更广,容错率更大,限制较小,使我们专注于研究行为识别的开发,所以最终决定选择使用Android平台来开发这个应用。常见热身运动姿态简介吴哲君等人[10]指出在进行行为识别应用开发之前要进行步态分析。我们设计系统的第一步就是要确定系统所具备的功能,最终经过思考之后确定了三个动作。慢跑:用户将手机放在裤子的口袋中,然后开始进行相对匀速的跑步动作;高抬腿:用户同样可以将手机放在裤子的口袋中,大幅度的做交替往上抬腿运动;人体的身体行为分析(以走路为例):慢跑时的速度通常较低,但相较于行走来说更快,动作幅度相比快跑显得更下以及频率更慢,如下页图1.1所示。人在走路时,两只脚是呈相对应且对称的状态,当一只脚抬起来的时候,另一只离地,并且是周期性运动,当一只脚从落地到下一次落地视为一个周期,完成了两步走,经过比对分析发觉,慢跑和高抬腿以及体转运动的运动模式与之有异曲同工,都是以周期为计算单位,所以我们可以通过传感器的数据差异值来推断出不同运动状态。图1.1人类行走步态分析SVM分类器SVM作为一种高效的统计学分类器,已经被应用于各种各样的研究当中。其中几个比较重要的研究如刘松松等人在图像分类方面的研究,溪海燕等人[12]人[13]介绍了SVM在金融方面的研究。SVM分类器运用于运动识别领域已经有好几个年头,并且被大量运用于复杂行为识别的过程中,我们在这里阐述了一种基于智能手机传感器的SVM分类器的热身运动检测系统的开发过程,在选择使用SVM算法分类器进行开发前,先与其他几个常见算法进行了比较分析,随后阐述了M算法的数学原理。从运动识别系统开发的过程中看,其中的算法包括训练和检测两个阶段:首先通过把智能手机放到裤兜中,然后对Android系统猎取到的传感器数据进行处理,处理后提供给向量机学习,然后再使用训练好的模型对用户的热身运动进行预测。李神送等人[14]在文章中对猎取传感器数据进行了详细的介绍。第二章系统开发技术安卓技术简介安卓系统架构我们可以把Android系统的架构粗略的分成四个个部分,分别是:Linux内核层、系统运行层、应用框架层和运用层。如图2.1所示。图2.1Android系统架构Linux内核层:Linux是AndroidAndroid板、显示器等提供了底层的驱动,总的来说Linux内核层就是硬件驱动层。系统运行层:系统运行层又可称之为代码规律层。这一层为Android了各种各样的库函数支持,其中有些决定了Android系统的某些特性功能。如SQLite库为Android手机提供了储存数据和提取数据的功能,OpenGL\ES库就使开发人员在进行软件设计时可以通过这个库实现3D绘画功能。还有比较重要的一点,就是系统运行层为Android系统开发所提供的一些核心库,能够让开发者使用JAVA语言来进行开发。应用框架层:这一层就主要是为Android系统开发提供了各种各样的外部或内部的API开发者调用,这里就不多加赘述。应用层:应用层最通俗的说法就是APP(Application),它通过Android实现与用户的交互行为,也就是手机中各式各样的程序。安卓系统的四大核心组件Android系统的四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(ContentProvider)[15]。Activity:简洁的说活动就是Android应用程序UI界面,所有的显示内容都是归属于ity的,俗称Android应用系统的“门面”。它展示出了开发者想要在应用程序中提供给用户的功能,并起到引导用户与智能手机进行交互的作用。Service它,但它一直都在默默地运行,只要进行相应的设置,并获得一些权限,就可以使应用程序在后台完成用户指定的各种操作。BroadcastReceiver:广播接收器的功能就像它的名字一样,是Android应用程序用来接收广播的组件,智能手机与其他手机之间的信息传输和主机中各个硬件之间的信息交互都是通过广播接收器来实现的,其中最简洁的例子就比如短信和电话,当有电话呼入或者是接收到信息时,可以通过一系列的操作来通知用户接收到了信息,并让用户做出响应。ContentProvider信有了权限之后就可以猎取到你手机中保存到的电话号码一样,大大扩展了智能手机的功能。安卓传感器技术安卓传感器系统架构在进行有关Android传感器的开发中,Android官方为开发者提供了调用传感器数据的函数接器的数值。系统层次结构如下页图2.2所示。图2.2传感器系统层次结构图如图2.2所示,Android传感器系统的层次结构一共分三层,分别是应用程序层、Android系统层以及硬件和驱动层,在这其中,Sensor的类是由Android我们在程序中就是在此层中调用函数来对我们需要的数据进行处理。安卓传感器接口简介SensorManager类SensorManager类是Android智能手机中所有传感器的上级治理程序,可以在程序取得各种传感器的实例,接收参数为传感器的类型(Sensor.TYPE_SENSORTYPE):Sensorsensor=senserManager.getDefaultSensor(Sensor.TYPE_SENSORTYPE)Sensor类Sensor类中定义了Android手机中各种各样的传感器的“名字”,我们可以使用参数猎取到这些传感器的支持,然后在传感器治理器中注册后,即可设置监听程序,从而就可以猎取到传感器的数据。SensorEventListener接口它定义了onSensorChanged()和onAccuracyChanged()这两个方法。在应用运行时,设置了传感器监听之后,当程序监听到有传感器的状态发生改变,数值有与之前不同之后,传感器治理器就会分别唤醒onAccuracyChanged()和onSensorChanged()函数,使程序开始执行其中的代码。SensorEvent类SensorEvent类就是用来提取传感器猎取到的数据的。三种传感器的特点陀螺仪陀螺仪是现在智能手机中比较常见的传感器之一,它类似于一个陀螺,是由科学家针对陀螺的研究进而演化来的角速度检测仪器。它内置于大部分的智能手机中,常常被用于检测手机的偏转状态,即手机相对于直立状态下经过了何种变换,引起来角速度的改变,然后就会产生一个数值来表示手机的状态。手机中的陀螺仪传感器就是经过技术进展是其集成到了小小的手机当中。所以陀螺仪在程序开发时会返回三个参数,分别就是手机绕3个轴旋转的角速度,以此可以来推测手机在个方向上的转动速率。加速度传感器加速度传感器也是手机中经常配备的硬件之一。我们将手机置于直立的状态,然后在上面建立一个三轴坐标系,加速度传感器就是用来检测手机在坐标轴中进行某一个方向的位移时产生的加速度,其中的加速度值是以重力为单位。在Android着三个轴上的加速度,以此来表示手机的运动状态,还有一个参数是智能手机的时间戳。它主要就是用于检测用户的生理运动状态,最简洁的就是检测用户从静止到行走的过程特征,而且还可以表示一段时间内的运动改变。重力传感器人们在加速度传感器的基础上,进而开发出了一种只检测重力方向上加速度的仪器,所以重力传感器传回来的参数值也就是手机运动状态相对重力方向的速度。传感器数据的获得(1)登录系统的传感器治理器,定义SensorMananger变量,并通过其获得各个传感器的应用实例,具体代码如图2.3所示。图2.3创建传感器变量接下来,我们们使用onResume()函数向系统提交注册,让Android系统对传感器服务和传感器进行监听。如图2.4所示。图2.4设置系统监听要使用传感器的数据,就要使用上文介绍的SensorEventListener接口,通过以下两个函数来实现:publicvoidonAccuracyChanged(Sensorsensor,intaccuracy)publicvoidonSensorChanged(SensorEventevent)在程序开始执行后,3个传感器都处于等待监听状态,如有数据就将数据保存到定义的变量当中,这里比较关键的一点是传感器的原始数据在变量中保存的顺序是按照传感器相应程序的唤醒顺序来的,并且每个传感器传回的参数都是3个,所以我们定义每一帧的传感器原始数据为9个单位,每3个参数为一个传感器的值。第三章系统分析研究系统需求分析系统功能需求近年来,移动智能手机设备功能越来越强大,智能化越来越强,比如图像识别、语音识别、动作识别等,这些功能的开发给人们带来了极大的便利。我们为了对用户的行为进行识别,就一定采纳手机自带的传感器所猎取到的数据,并对猎取到的数据进行相应的处理,将数据保存到手机中之后,再供之后的运动识别所用。基本功能需求如图3.1所示:图3.1总体功能需求图系统技术需求首先我们选择在当下最流行,使用人数最多的Android平台下开发,也是顺应时代,顺应技术的进展。而且对于开发者来说,开发有关行为识别技术的应用就需要一个稳定的系统,并且系统提供了便利的调用传感器数据的途径,并且Android平台具有全面开发框架结构,可以使用系统自带的数据库对试验中所使用的数据进行存储和读取,保证了数据的可靠和稳定性。系统维护需求系统的易维护性。在进行系统开发时需要考虑到系统对于开发者后期进行维护的成本,本系统采纳Android平台进行开发,由官方提供了独立的系统开发架构,而且应用相对于系统处于一个相对独立的地位,并且系统使用的数据库为自带的数据存储结构,所以我们在进行与文件有关的数据处理更加简单与简捷。这样保证了我们在开发应用时不会导致系统的崩溃,为我们调试程序提供了条件,也满足了我们对于系统完成后,要进行维护和更新的需求。系统安全需求良好的安全性。由于只需要对用户进行的训练集、训练模型、以及识别数据进行保存,保存后所占用的系统空间很小,就可以使用系统自带的硬盘对数据进行存储,将数据保存到文本文件中,并且应用程序无法联网,杜绝了被侵入的危险,所以符合所需的安全性。可行性分析经济可行性在进行应用开发之间,通过市场的调查发觉,大部分Android智能手机的价格相对于苹果手机来说比较低,而且价格较低的Android手机中不乏性价比较高的机型供我选择,且内置的传感器系统也比较完善,在我的承受范围之内,所以Android智能手机的成本是我选择在Android行开发的一个重要原因。技术可行性应用程序基于Android平台进行开发设计,Android系统从面世到现在的个年头中,经过了多次版本的更新升级,经受住了市场和用户的检验,并且有着一套完善的开发框架,有越来越多的人涌入Android论是针对开发者或者是研究课题来说,Android,市场上的绝大部分Android手机中都集成有基础的传感器体系,并且Android开发技术也支持了提取手机传感器猎取到的数据的功能。所以,在后续的软件开发过程中,将会围围着Android来进行相关应用技术的研究。操作可行性我们的系统是在Android超过28亿,所以全球超过三分之一的人,他们每人至少都拥有一部智能手机,并且市面上的智能手机基本上是苹果系统与Android能力,就可以掌握应用的使用方法,系统在操作上也是可行的。系统结构设计本基于手机传感器的热身运动识别系统开发工程中应用了MVC框架,它是由以下三部分构成的,如图3.2所示。视图层应用的UI强的表现力。控制层(Controller):Acitvity在控制层中起到非常重要的作用,为了实现响应时间短,我们就不在Acitvity中写代码。模型层(Model):也是在这一层进行操作的。图3.2系统框架模型系统开发流程分析在开发设计基于手机传感器的热身运动识别系统的时候,首先进行需求分析,进而对系统进行总体的设计规划,设计系统功能模块,测试等,基于手机传感器的热身运动识别系统的设计流程图,如图3.3所示。图3.3系统设计流程图第四章系统设计与实现传感器结构本系统所使用的传感器的内部结构如图4.1所示。图4.1传感器内部结构图工作流程当手机的物理状态发生改变时,手机中的传感器的数值就会改变,接收器接收到改变,然后系统进行数据采集,读取数据,并进行数据处理,最终进行热身运动识别。如图4.2所示。图4.2工作流程图用户用例图设计展现用户和用例之间的关系。4.3所示。图4.3用户用例图系统界面设计及操作简介手机传感器的热身运动识别系统的界面UI设计如图4.4,4.5和下页图4.6所示。图4.4训练进入页面 图4.5主界面图4.6运动训练界面关键代码如下(以慢跑为例关于用于系统启动自执行的代码在在这里就不多加赘述):/*定义不同的变量,将UI中的不同按钮与变量绑定,以便监听用户按下按钮的操作,从而可以执行相应的操作*/mTrainRunSlowBtn =定将要进行训练的运动是慢跑trainStartBtn = mTopView.findViewById(R.id.train_start_btn);//代表的是图4.6中的“开始采集”所在按钮,点击后用户即可进行相应运动的训练,随后点击停止训练即可将训练数据送入分类器中处理,并生成相应的模型detecStartBtn = findViewById(R.id.detect_start_btn);//主界面图4.5的“开始”按钮,通过收集传感器的数据,与之前训练生成的模型进行处理预测出用户的运动状态,并显示在屏幕上如图4.7为将识别结果显示在屏幕上的关键代码。图4.7动态显示识别运动类型系统模块设计在进行完系统的介绍和分析之后,我们对系统进行分模块化处理,并且在开发过程中以此模块分布来进行开发和调试。分模块处理有助于我们对于程序的理解,在完善各个模块的同时,也加深了对整体的把握,并且在最终的系统测试时可以很快地发觉问题的所在。显示模块:用于显示应用程序需要展示给用户看的内容,简洁来说就是UI个部分起到的作用就是要激励用户点击屏幕,对应用程序进行操作。人机交互模块:这个部分是用来实现用户与手机之间的“交流”定是手机,那么就是对用户的点击事件进行响应,实现用户点击的功能。信息。练模型和运动识别时使用。行为识别模块:将在下一章内容中进行详细描述。第五章算法描述简介行为识别(ActivityRecognition)技术狭义来说就是通过传感器读数来预测用户的行为,并且已经进展成为与人们生成了行为识别技术。基于智能手机传感器技术就是将手机自带的传感器的读数作为输入的参数,从而来预测用户的运动状态。但是最贴近人生活的行为比如行走,站立,慢跑等比较典型的活动并以其隐蔽性、低(无)成本性、易用性,致使智能手机逐渐成为主要的人类活动识别的平台。本系统一共使用3个智能手机中的传感器进行数据采集,分别是加速度计(accelerationtransducer),重力传感器(GV-sensor),陀螺仪(gyroscope),根据3个传感器的采集到数据进行数据采集以及行为识别。在本试验中选择采纳LIBSVM多分类方法库对程序获得的经过数据预处理的传感器原始数据过程中根据训练模型识别出用户的运动。LIBSVM是由台湾的林智仁(Chih-JenLin)教授二十世纪出开发的一套SVM库[16]。我们为什么选择这套库来进行整个系统最核心的部分开发呢?是因为它运算速度比较快,而且易用性很强,在进行Android开发时,只需要调用它提供的函数接口,就可以通过其内置方法实现对传感器数据的分类和识别。并且由于LibSVM程序体积小,使用步骤简洁,说明全面,代码开源,所以LibSVM成为了国内使用人数最多的分类算法库。具体步骤数据预处理:去燥和分割当传感器发觉手机的状态改变之后,已注册的传感器就会给程序程序传回收集到的原始数据,在进行下一步操作之前,还要进行数据的预处理。在我们使用传感器发来的原始数据之前,需要对这些数据进行提前处理操作,这样做的其中一个目的是降低用户和传感器本身的噪声,是数据更加精确。我们在开发时对数据进行了分割处理,因为使用了三个传感器的原始数据,每个传感器的返回的关键参数都为3个,所以以每9个样本数据作为一个样本点,用于训练集和识别功能。并且由系统控制空白段,无动作时就不启动传感器那么识别算法接收不到数据也不会执行。特征提取特征提取作为运动识别算法中一个重要的步骤,能够使传感器的原始数据变得更加适合于之后的分类算法。在程序中的们进行了4个特征值的提取,分别是:Energy:在2.3.4中提到,每一帧的传感器数据为9个参数单位,我们首先每一帧的传感个特征值。Energy=(x1
-x2x7
-x2x8
-x2+ (式5.)9RoteMin:在对Energy进行计算的同时,随后找出其中的最小值,作为第二个特征值eMin。
-x2x -x2+1 7 10 16-x2x -x2+2 8 11 17
EnergyZ=(x
-x2x -x2+3 9 12 18
(式5.4)(4)Rorate:将第二个传感器的所有参数取肯定值相加,计算结果作为第三个特征值。如下式所示:
Rotatex +x +x +x +x +x (式5.5)4 5 6 13 14 15(4)pNUM:将每一帧的传感器数据前4个单位按顺序两两相乘,推断结果正负号,结果为正不计分,结果为负加一分,具体算法如下所示:pNUM=num1
+num2
+num3
(式5.6)num1
=num1
+1(xx1
(式5.7)num=num+1(xx 2 2 2 3num=num+1(xx 0)3 3 3 4
对各段的特征值提取结束之后,将他们捆绑作为为特征值字段,供建立分类器使用。程中通过private String mList)方法来实现对传感器采集到的数据进行特征提取,函数返回一个特征值字段,如果是训练数据,则数据段之前加上代表运动的编号,如果是识别数据,则经特征值处理后,再经由SVM算法来识别。分类器算法选择选用的分类器为随机森林[17]、决策树[18]、Bagging[19]、简朴贝叶斯、kNN[20]、SVM,其中,Bagging使用的弱分类器为决策树,kNN的k为1,SVM使用多项式核。分类准确率如图5.1所示,运行时间如图5.2所示。图5.1分类器准确率图5.2各分类器运行时间从以上的对比数据中可以发觉,SVM算法在训练时间以及准确率综合性较好,简朴贝叶斯算法的准确率较低,不予以采纳;kNN表现较好,但是常用于复杂的模式识别应用中,考虑到需要实现的功能,不予以采纳;其他分类器效果一般。又因为Android平台提供了LibSVM的工具,所以决定采纳SVM分类器算法进行模型训练,并使用所获得的模型进行运动识别。SVM分类器原理简介首先先来介绍一下SVM分类器,SVM(支持向量机)(Support Machine)就是一种分类算法,可以将不同特征的数据分割在一个平面的两侧,实现分类的目的。在这里我们先由二维平面引入,分类器的作用就是在两种坐标点之间找到一条可以完善分割两种点的直线,然而如果我们将坐标点放到三维的空间中时,分类器就用于帮我们找到一个能使两种坐标点完善的分布在其两侧的平面,二这个平面在二维平面上看起来就是一条曲线,下面我们就介绍一下SVM分类器的数学原理。观察下图5.3,可以看到图中有两种不同类型的坐标点,对于这样一个模型,我图5.3SVM算法推导们在根据我们的观察,思考怎么利用一条分割线将两种类型的坐标点分开。在图5.3中可以看到有很多条直线进行了尝试,那么其中有没有一条最好的直线呢?因此,我们就需要找到一个超平面(HyperPlane),于一条一条分割线,它不能离两种坐标中的任意一种垂直距离过近,因为当它离坐标过近时,它就会对影响整体推断的无用点产生误差,所以我们的目标就是要找到一条线,要求就是要离所有的坐标点都是尽可能的远。SVM算法就是在这些坐标点当中选择几个坐标组合成为一个平面,随后找到离这个平面最近的一些坐标点,是其离所有的坐标点都是尽可能的远,即为有效分割。如图5.4。图5.4SVM算法推导图5.5SVM算法推导gxwTxbg(x)0定义了一个超平面H,把两种坐标点分割开来,且两边都没有不相同的坐标点。我们这里设有N(x
),(x,
),......,(x,y
),x
Rn,
1,1,则有分类规章:1 1 2 2
N N i xb0,yixb0,yi
(式因为我们这里采纳的是二维平面下分类训练样本,所以其线性可分,我们只需要改变权向量的模,如下所示:xb0归一化xbyixb0归一化xbyi
1
简化式子:y(Txb)g(x)
(式5.14)i i随后我们根据向量相加的原则,改写x:xx rw/wp
(式5.15)其中,r是x到H的垂直距离,那么则有:g(x)(x rw/wbrwrg(x/w (式5.16)p最优分界面的满足条件为:1min wTww 2 与
y(wTxb)i
(式5.17)间隔:离分界面最近的样本点(即使g(x)1样本点)与分界面的距离,它是g(x) ww,这样两类模间隔的距离为2w。其中,ai0为拉格朗日乘子,达到极值的必要条件如图5.6:L(,b,a)0,Nay0w i ii1L(,b,a)0,w
ayx0wi1
ii图5.6达到极值的必要条件将上式代入拉格朗日函数,则有下页图5.7所示:Q(a)L(,,a)
a1Ni 2
aayi j
yxTxi ji1 i1j1图5.7代入拉格朗日函数结果求上式的最大值Q(a),即可求得最优解a*,则最优权向量为图5.8所示:i*Nsa*yxi iii图5.8最优权向量b*yixi
最优分界面是:w*Txb*0。SVM算法识别运动状态SVM训练模型生成用户可在系统界面中选择想要训练的运动,然后点击开始训练,随后系统就会开始监听手机传感器的状态和数据改变,如图5.9为关键代码。图5.9运动训练关键代码其中TrainFileEvent对传感器原始数据进行特征值提取处理,然后将处理结果保存到本地的文件中。svm_train.main的作用是对传感器猎取到的数据(mTrainPath)进行训练然后生成相应的模型并保存到mModePath文件中。以上代码为在用户选定相应的运动模式之后,点击开始训练,系统就会自动采集用户的运动LIBSVM库中的SVMTrain保存到系统文件中备用。根据LibVM文档中的使用说明,我们在调用svm_train件,传入该文件的地址。其中mTrainPath是是用户在训练运动时采集到的数据保存在的文件名,mModePath是通过SVM对传感器采集到的原始数据经过训练后生成的模型,svm_train.main(arg)分类,并由此生成相应动作的训练模型模型。生成的模型如下页图5.10。图5.10生成的模型数据SVM算法识别运动状态在训练完成后,用户即可在主界面点击开始按钮,随后系统开始就开始监听手机传感器的状态,识别出用户的热身运动类别,将识别结果保存到文件中,如图5.11。其中detectFileEvent对系统实时采集到的传感器数据进行预处理后保存到本地文件中。图5.11识别关键代码这里我们使用LIBSVM库的svmpredict方法,svmpredict方法是根据用户自身训练得到的结果,然后调用svmtrain.main(arg)生成模型,最终再对收集到的用户数据进行行为预测。其中mDetectPath是经过特征值提取的实时猎取到的传感器的数据,mModePath是要进行比对的模型文件,mResultPath为保存识别结果的文件,我们根据训练集所获得的模型,对用户的运动状态进行识别,然后将识别的结果放入mResultPath所指向的文件中,以便显示在界面上。整个算法的流程图5.12如图所示。图5.12算法流程第六章系统测试测试目标系统测试的目标是发觉程序中存在的问题,并且得出能验证所采纳的运动识别算法结构的正确性和准确性。在进行主要功能的检测之前,第一步先打开软件检查其是否可以正常启动,我们先要一一点击屏幕上的按钮,看是否会有闪退的情况出现,若以上有问题发生,则回到开发环境中检查错误发生的原因,解决后再去检测功能算法的准确性。最终我们进行热身运动识别算法的准确率检测,通过按照要求录入训练集,然后使用手机来识别正在进行的运动类型,记录识别结果,计算准确率,从而来验证系统的可行性和准确性。测试步骤首先先由我在界面选择不同的运动之后进行训练,分别进行3种运动的运动模式的训练,由训练者进行10组以上的训练,并有意识保证在做各种运动在时动作尽量的标准,使其特征值有比较明显的差距。随后进行验证性的试验。将手机放到与训练时的相同的身体位置,然后开始做热身运动,对6.1,6.2图6.1是训练次数与准确率的关系,训练次数表示的是我使用手机录入三种热身运动训练集的次数,并且录入一定次数后,开始应用的识别功能,无规律的交替做三种热身运动,记录识别的结果,最终计算出识别的准确率,随后删除训练集和模型文件开始下一次的试验。可以看到表中3次试验慢跑识别都有着良好的表现而另外两个运动就识别率不是格外的优秀,随后对记录数据进行分析,首先是因为慢跑数据特征比较明显,有着比较明显的周期性,而其他两个运动因为同样是站在原地,只是佩戴设备的部位不同,训练集采集过少时就会有失真的情况发生,但是如果适当增多训练集,识别效果明显变好。图6.2中表示训练次数一定时,系统识别的准确率,每次单独做一个动作,做5结果,计算识别率。图6.1训练次数与准确率图6.2识别准确率测试结语述的测试结果分析,对于运动差别较大的热身运动,比如慢跑以及高抬腿(情况),由我一个人进行测试试验,发觉准确率都在80%以上,但是体转运动训练时有可能会与。进过试验之后,发觉检测系统的综合准确率在80%左右,与其他动作有较大差别的运动检测率比较高,生成的模型比较优秀,如果训练集不够好,训练数据过于相近时,检测的结果就会非常低,所以系统的基本功能完善,能够识别出经过训练的试验者的运动状态,但具体的功能模块和算法设计还有待完善。第七章总结(缺陷和展望)本文总结智能手机的高速进展,已经改变了人们日常生活的景观,为人们开发许多好玩的数据挖掘应用打开了大门,人类活动识别也是这些应用领域中的热点问题之一。它将手机传感器接收到的原始读数作为输入并识别出用户的运动状态,我们的论文设计就是这个领域中进行了一点小小的尝试,在理清了应用的设计思路之后,文中着重介绍了如何利用现有的各种的资源来实现运动识别的功能,并尝试用SVM分类器算法来完成整个系统设计的核心部分,最终进行试验验证了系统的可行性。我们可以发觉智能手机传感器的所能做的事情非常广泛,以现在的技术进展趋势来看,未来智能手机将有可能取代一些传统设备的传感器系统,以一种更加新颖的方式出现在人们的面前。移动设备传感器系统可以做到的事情越来越多,而且它在其它交叉领域中也异常出彩,例如,在疾病领域的科学家可以根据患者身上携带的移动设备所猎取到的信息,与计算机科学相结合进行试验,以推断某些疾病(如阿尔茨海默病或中风)的病因或预征,并做出预防。所以未来的工作将不仅限于研究运动识别,要将人身运动状态识别与其他学科进行交叉分析,拓展新的领域的同时要注重系统开发平台中的用户体验部分,使应用更便于人的使用。后续工作但是在系统设计以及实现的过程中,有以下的缺陷:只能够识别我一个人的运动状态,识别所需时间以及准确率上做了不同的取舍,之后将尽可能找到一种对于研究课题更为合适的方法。过训练的用户的运动类型。目前只能做到3个热身运动的检测,而且检测率无法做到95%以上。只使用了一种分类器算法,据了解其它分类算法在行为识别应用中也有非常大的发挥空间。别结果。练模型来进行识别识别。所以应用的适用范围不只可以实现3简洁运动状态都可以识别出来。之后可以添加自定义模块,用来识别一些简洁的运动类型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年信息技术咨询服务合同
- 2024年湖南客运从业资格证救护考试题
- 建筑工地清洁方案
- 2024年修订版公司对公借款合同
- 2024年湖南客运驾驶从业资格考试题库
- 2024年超滤装置项目提案报告模范
- 2024年高性能橡塑密封件项目申请报告模范
- 小学创客教育活动方案
- 城市更新项目拆除合同
- 产品研发创新机制
- 新教材人教版高中英语选择性必修第一册全册教学设计
- 《小学生的自我保护》课件
- 古代辞章领略古代辞章的风华与韵味
- 六年级道德与法治下册-3-学会反思教案
- 岗位风险排查管理制度
- 新媒体视听节目制作 第一章 新媒体时代导演的基本素养
- 2023-2024学年辽宁省沈阳126中八年级(上)期中数学试卷(含解析)
- 25题退役军人事务员岗位常见面试问题含HR问题考察点及参考回答
- 锅炉炉膛有限空间应急预案
- 深基坑工程质量验收标准
- 生产检验记录表
评论
0/150
提交评论