幼儿园监控系统的在线视频Android端App设计毕业论文
2020-04-08 12:40:25
摘 要
现如今幼儿园安全已经越来越成为一个备受关注的问题,家长需要有一款软件来实时了解幼儿园中自己孩子的生活状况。构建一个全方位的实时监控系统,能够在幼儿园发生一些事情的时候让家长有据可循,使家长能够放心将孩子交到幼儿园中,同时,也能够通过该监控系统对幼儿园中的教职工人员进行监督,进一步提升幼儿园的教育质量。
论文主要研究了人脸识别技术在Android移动端应用的可能性,并且对该应用于幼儿园监控系统的App进行开发实现。
研究结果表明基于Adaboost分类算法以及LBP特征的人脸识别能够在Android平台完成视频流的实时人脸识别,并表现出了不错的精确性以及实时性。
本文的特色:利用机器学习技术在Android进行人脸识别技术的应用,并且实现了幼儿园监控系统终端App的开发。该App的设计风格采用Material Design设计原则,拥有精简并具有指导性的交互动画以及强大的可用性。
关键词:安卓 人脸识别 Adaboost分类算法 LBP特征
Abstract
Now the safety of kindergartens has become a growing concern, and parents need to have a software to realtime understand the life of their children in the kindergarten. The construction of a full range of real-time monitoring system can allow parents to be evidence-based at the time of some things in the kindergarten, so that parents can trust the children to the kindergarten. At the same time, it can also supervise the staff of the kindergarten through the monitoring system, and improve the education quality of the kindergarten.
This paper mainly studies the possibility of face recognition technology in Android mobile terminal application, and develops and implements the App which is applied in the kindergarten monitoring system.
The results show that face recognition based on Adaboost classification algorithm and LBP features can complete real-time face recognition of video stream on the Android platform, and shows good accuracy and real-time performance.
The feature of this paper is the application of machine learning technology to face recognition technology in Android, and realizes the development of terminal App in kindergarten monitoring system. The design style of the App adopts Material Design design principle. It has streamlined and instructive interactive animation and strong usability.
Keyword:Android, face recognize, Adaboost classification algorithm, LBP features
目 录
第1章 绪论 1
1.1研究目的及意义 1
1.2国内外研究现状 2
1.3幼儿园人脸识别监控系统移动终端App的开发路线 3
第2章 人脸识别算法设计 4
2.1人脸识别算法介绍 4
2.2OpenCV图形库介绍 5
2.3LBP局部二值模式 5
2.3.1原始LBP特征 5
2.3.2圆形LBP特征 6
2.3.3旋转不变LBP特征 7
2.3.4Uniform Pattern LBP特征 7
2.4Adaboost分类算法 8
2.4.1Adaboost算法简介 8
2.4.2Adaboost算法流程 9
2.5级联分类器结构 11
2.6OpenCV中Adaboost人脸识别实现 12
2.6.1训练数据的准备 12
2.6.2使用级联分类器进行分类 13
2.7Android中算法实现 13
2.7.1JNI调用 13
2.7.2使用Cmake构建工程 14
2.7.3算法流程及算法实现 15
第3章 幼儿园人脸识别监控系统移动终端开发 17
3.1需求分析 17
3.2Android介绍 18
3.3App原型设计 19
3.4Android App程序设计 20
3.4.1启动页面 20
3.4.2注册页面 21
3.4.3登录页面 22
3.4.4个人主页 23
3.4.5监控页面 25
3.4.6动态页面 26
3.4.7课程表页面 27
3.4.8通讯录页面 27
3.5App后端开发 28
第4章 总结与展望 30
参考文献 31
致谢 33
第1章 绪论
1.1研究目的及意义
随着现代社会中对教育越来越重视,人们对于幼儿的教育越来越重视。但层出不穷的幼儿园老师伤人事件将幼儿园的安全问题推向了风口浪尖,越来越多的家长倾向于通过监控来观察孩子在幼儿园的一举一动和老师的教育方式。一个无死角的实时监控系统同时也能够保证幼儿园的安全,在发生一些事情时以防以讹传讹,使幼儿园和家长信息对等,使证据透明。同时保证了家长、孩子和幼儿园三方的利益。
对于一家幼儿园而言,一个稳定的实时监控系统必不可少。构建一个全方位的实时监控系统,能够在幼儿园发生一些事情的时候让家长有据可循,使家长能够放心将孩子交到幼儿园中,同时,也能够通过该监控系统对幼儿园中的教职工人员进行监督,进一步提升幼儿园的教育质量。
但是,幼儿园的监控系统该不该实时开放给家长观看确实一个十分值得商讨的问题。我们不难作出假设,如果将幼儿园的监控视频实时开放给家长进行观看,必定会侵犯幼儿园中其他孩子的个人隐私,以及幼儿园中的教职工人员的一些个人信息,这也会为幼儿园的教育带来不好的影响。甚至会因此增加家长与幼儿园之间的纠纷,使幼儿园难以将全部的精力投入教育当中。
该课题的目的在于在技术上实现幼儿园监控视频通过安卓APP进行实时分享[1],并且运用人脸识别技术对幼儿园中的孩子进行监督和打卡,保证孩子的安全性。但是,该APP应该以何种形式真正运用到现实生活当中,幼儿园该以怎样的方式向家长开放幼儿园监控视频的观看权限,这些才是更加值得讨论的问题。
在该课题的幼儿园监控系统APP中,将使用人脸识别的方式对孩子行为进行跟踪[2],并且通过这种追踪在一定程度上保护视频当中其他人的隐私。
目前人脸识别技术的应用在国内外已经变得相对而言比较成熟,从神经网络诞生以来,利用神经网络对人脸图像的特征进行提取,该技术已经被运用在了许多地方,并且已经取得了不错的成效。在世界范围内也有相对较多的人脸识别框架和深度学习框架可供选择,例如开源图像处理库OpenCV当中就有对人脸进行识别和跟踪的示例代码以及谷歌的开源深度学习框架Tensorflow搭建用于人脸识别的深度神经网络框架也十分容易。
关于安卓应用的开发,谷歌如今已经开放了安卓9的预览版本,尽管安卓7与安卓8现在的更新普及率并不是特别高,但是安卓7与安卓8对于如今一些新兴技术已经有相应的支持。除了对系统UI进行了重新绘制之外,也提高了系统的运行速度以及流畅性。因此基于安卓设备的应用开发如今是一个相当不错的选择。
1.2国内外研究现状
人脸识别技术的发展可以追述到20世纪60年代,此时已有研究者们将人脸识别看作一个一般性的模式识别问题来对人脸识别进行研究,所进行的研究也主要基于人脸的几何结构特征。研究者们对面部剪影曲线的结构特征进行提取和分析,并将提取出来的特征用于识别人脸。但此时的人脸识别技术发展极其缓慢,研究者们所发表的论文当中的一些技术也无法真正运用到现实产品当中。
直到20世纪90年代,机器学习理论在国内外迅速发展,研究者们相继提出了基于各种机器学习理论的人脸识别算法,例如SVM[3],Adaboost[4]等机器学习算法的提出使人脸识别技术取得了绝大的进步。此时的人脸识别技术主要是由分类器加特征进行完成,SVM,Adaboost等算法在识别当中充当分类器的作用,对人脸的Haar特征或者LBP特征等特征进行识别分类。此时人脸识别技术真正出现在人们的眼中,并且真正具有可用性。
近年来,由于半导体行业的发展导致芯片应算能力有了大幅度的提高,由感知器发展而来的神经网络借助硬件强大的算力而的以发展。研究人员发现当神经网络的深度加深时,对神经网络的训练结果的准确率会随之大幅度提高,进而导致深度学习理论的诞生。深度学习理论主要目前主要应用于图像处理,声音处理等领域,而人脸识别正是属于图像处理中的一个分支,基于深度学习的人脸识别技术自然也开始发展起来。现目前国内已经出现了几家使用深度学习技术来提供服务的公司,例如face 等。
人脸识别技术的发展总过经过了三个主要阶段,由最初的几何结构特征识别发展到后来分类器加特征识别的机器学习算法,再到现在的深度学习理论,都对人脸识别的应用型提供了更大的可能,人脸识别技术也渐渐的出现在越来越多的电子产品当中。
2017年9月份苹果公司发布了世界上第一款运用立体光结构的人脸识别手机iphone X,此时移动端的人脸识别正式进入到了人们的视野当中。但是Android移动设备中的人脸识别应用依旧发展缓慢,一方面由于Android移动设备当中并没有专门对神经网络进行优化的模块,另一方面也由于开发者无法真正提高人脸识别技术的准确性以及效率。
另一方面,Android系统自2005年被Google收购以来,不断的进行版本的更迭,不同的手机生产厂商将Android系统进行定制之后作为自己研发的手机系统,这导致了Android市场的多样化,同时也导致了Android开发需要对许多不同的设备进行适配以及维护,使Android App的开发成本变得十分高昂。
好在几年之后Google发布了基于Jetbrains公司的Java集成开发环境IDEA开发的Android Studio,由此将Android工程的构建进行简化,并对Android众多的库包进行管理。大大降低了Android App的开发成本和维护成本。
1.3幼儿园人脸识别监控系统移动终端App的开发路线
本课题主要开发一个基于幼儿园监控系统的Andorid App,在该App中可以对监控画面进行实时播放并进行实时的人脸检测。
该项目基于集成开发环境Android Studio3.1.1,Java1.8进行开发。使用gradle对Android工程进行构建,gradle版本为3.1.1。Android SDK版本为Android8.0。并使用OpenCV3.4.1视觉库进行人脸识别算法部分的开发。
在Android Studio中使用JNI和NDK来构建Android 原生开发环境。并使用Cmake来构建CPP代码对其进行编译链接。
人脸识别算法使用Adaboost分类算法对人脸LBP特征进行训练,并对从服务器端获得的视频流进行分帧处理以及人脸识别操作,在人脸识别完成之后对Android中的UI层进行更新来将人脸识别之后的结果进行呈现。
App的服务器端开发采用Spring框架进行Java web项目开发,使用Spring Boot2来完成Spring项目的构建与管理。并使用Maven进行Java的包管理工作。
数据库的开发基于开源数据库Mysql,并使用Hibernate提供持久层的支持。
服务器端web开发基于web四层架构,分别为DAO层,Service层,Controller层以及View层。在Java web项目中View层部分一般使用JSP进行实现,但在该项目中Android代替了JSP进行View层的展现,并使用Android库实现了前端的展示与交互。
第2章 人脸识别算法设计
随着机器学习与深度学习技术的发展,人脸识别技术的识别速度与识别准确度也随之大幅度提高,如今人脸识别技术已经大范围的应用在智能产品当中,例如手机人脸识别解锁等。由此可见,人脸识别已经完完全全成为了一种能够使用在产品中的技术。在该幼儿园监控系统App设计当中,需要使用人脸识别技术来识别出视频当中孩子的脸,通过后期对识别出的孩子的脸进行一定的处理之后来达到对孩子们隐私的保护,因此人脸识别算法的选择成为了App开发设计的一个重要课题。
2.1人脸识别算法介绍
人脸识别算法是模式识别领域当中的一个具体应用,从最初的基于人脸的几何结构特征的提取,发展到基于模版匹配的方法来进行人脸识别,历史上各个研究者们已经提出了各种各样的方案来提高人脸识别的速度与精度,人脸识别也越来越发展为一个庞大复杂的领域,吸引着越来越多的研究者。
人脸识别算法主要包含三个模块,人脸检测,人脸对其以及人脸特征表征,人脸检测用于确定人脸在图像中的大小与位置,把人脸区域从图像中裁剪出来,便于后续的人脸特征分析和识别。人脸对齐则是找到若干个人脸之中的关键点,通过这些关键点的相似变换,将人脸尽可能的变换到标准人脸,以此来统一不同图像序列中一个人脸可能呈现出来的不同的表情和姿态。人脸特征表征则是人脸识别算法中最重要的一个部分,通过接收已经标准化的人脸图像,通过特征建模得到向量化的人脸特征,最后通过分类器判别得到识别结果。通过这三个模块,才能够得到一个真正可用的人脸识别算法。
人脸识别算法经历了早期算法,人工特征加分类器,深度学习这三个阶段,目前深度学习算法是研究者们研究的主流领域,能够极大的提高人脸识别的精度,但是人工特征加分类器的算法却已经发展得相对成熟,因此在该App的人脸识别当中选择使用人工特征加分类器的方法来对视频流当中的人脸进行识别。
另外,由于安卓设备不具备巨大的算力,无法使用深度学习来训练大量的数据,也限制了深度学习算法在移动设备当中的应用,因此使用人工特征加分类器的方法是一个相对不错的选择。
2.2OpenCV图形库介绍
该人脸识别算法的开发选择使用OpenCV开源计算机视觉库来进行开发[5],OpenCV是在BSD许可证下发布的开源计算机视觉库,支持Windows,Linux,Mac OS,Android等多种平台,并且对C/C 对图像的多核处理进行优化,能够极大提升运算效率。在启用了OpenCL之后,它可以利用底层异构计算平台的硬件加速来增加算法效率。
OpenCV从1999年由Intel建立之后发展至今,已经迭代了多个版本,在本次人脸识别算法的开发中选择使用最新版本Opencv4Android 3.4.1来进行开发。
另外,OpenCV也提供了十分详尽的文档来帮助开发者们快速了解OpenCV视觉库中所拥有的API接口函数,来增加开发者们进行视觉应用开发的效率。
2.3LBP局部二值模式
LBP(Local Binary Pattern)指局部二值模式[6],是一种用来描述图像局部特征的算子,LBP特征具有许多优点,例如灰度不变性以及旋转不变性等。LBP由于其简单的特征计算,较好的效果,在计算机视觉的许多领域都得到了十分广泛的运用,LBP特征也同样能够运用在人脸特征识别以及目标检测中,在该人脸识别算法的开发过程中,也使用了LBP特征加上Adaboost分类算法来对人脸特征进行识别。
2.3.1原始LBP特征
原始的LBP算子定义在3*3的邻域内,以中心像素为阈值,将相邻的其他8个像素点的灰度值和衷心的像素值进行比较,若周围的像素点的值大于中心像素点的值,则将该像素点表为1,否则为0,这样每一个3*3的邻域内都可以经过8次比较产生8个二进制数,将这8个二进制数一次排列形成一个二进制数字,这个二进制数字就是这个中心像素点的LBP值。
图2.1 LBP特征示意图
因此LBP值共有256种,中心像素的LBP值反应的是该像素周围的纹理信息。
将LBP值用公式来表示则是:
其中,为中心点像素坐标,p为邻域的第p个像素点,为领域像素点的灰度值,为中心像素点的灰度值。
2.3.2圆形LBP特征
在原始LBP特征被提出之后,吸引了广大研究人员对LBP特征的研究,因此产生了各种其他的LBP特征的改进版本。
由于原始LBP特征使用固定邻域内的灰度值,因此当图像的尺寸发生变化之时,原始LBP特征的编码会发生错误,原始LBP特征将无法正确反应像素点周围的纹理信息和情况。因此研究人员对原始LBP算子进行了改进,将3*3邻域扩展到任意领域,并使用圆形邻域代替原本3*3的正方形邻域,并在改进之后允许LBP算子能够在一定半径内的圆形邻域内有任意多个像素点,从而得到了半径为R的圆形区域内含有P个采样点的圆形LBP算子[7]。由于圆形的邻域内计算出来的值可能不是整数,因此使用双线性插值来处理计算出来的像素点的值。
同样,使用公式给出圆形LBP特征的表达式是:
双线性插值公式如下:
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: