APP下载

基于Android和Bmob云的精品资源共享课程平台系统

2019-12-06罗国涛廖家莉刘甫迎

软件工程 2019年11期
关键词:人脸识别

罗国涛 廖家莉 刘甫迎

摘  要:为解决精品资源共享课程平台系统用户信息安全和用户认证效率低下,以及用户信息通信时消息内容丢包问题,特设计和实现了基于Android和Bmob云的精品资源共享课程平台系统。为提高用户信息安全以及用户认证效率,在Android客户端采用了人脸识别技术,人脸检测采用AdaBoost算法、特征提取采用局部二值模式LBP算法、特征匹配采用余弦相似度算法以提高人脸识别准确率。为解决移动学习用户信息通信时消息内容丢包问题,提出了定时器+Service+多线程的方法定时检测消息内容,从而保证了消息内容的完整性。实践应用表明,该系统可以提高移动学习者学习兴趣和学习效果。

关键词:Android;Bmob云;人脸识别;AdaBoost算法;LBP算法

中图分类号:TP311.52     文献标识码:A

Quality Resource Sharing Course Platform System Based on Android and Bmob Cloud

LUO Guotao1,2,LIAO Jiali2,LIU  Fuying2,3

(1.Department of Information and Software Engineering,Chengdu Neusoft University,Chengdu 611844,China;

2.College of Computer Science,Sichuan TOP IT Vocational Institute,Chengdu 611743,China;

3.Computer  Department,Chengdu Technological University,Chengdu 611730,China)

Abstract:In order to solve the problems of user information security,low efficiency of user authentication and the loss of message contents when users communicate with each other,the platform system of quality resource sharing courses based on Android and Bmob cloud is specially designed and implemented.In order to improve user information security and user authentication efficiency,face recognition technology is adopted for Android terminals.AdaBoost algorithm is adopted for face detection,LBP algorithm for binary mode is adopted for feature extraction,and cosine similarity algorithm is adopted for feature matching to improve face recognition accuracy.In order to solve the packet loss problem of message content during  information communication between mobile learning users,a method of timer + Service+ multithread is proposed to detect message content regularly,thus ensuring the integrity of message content.The practical application shows that the system can improve the learning interest and effect of mobile learners.

Keywords:Android;Bmob cloud;face recognition;AdaBoost algorithm;LBP algorithm

1   引言(Introduction)

課程是教学的基本单元,是培养学生知识能力素质的重要载体,也是对学生进行全面培养的重要手段和平台,在高校的人才培养中具有举足轻重的作用和意义。精品资源共享课建设的目标是“旨在促进教育教学观念转变,引领教学内容和教学方法改革,推动高等学校优质课程教学资源通过现代信息技术手段共建共享,提高人才培养质量,服务学习型社会建设”[1]。那么如何通过现代信息技术实现精品课程资源共享,努力提高人才培养质量成为当前亟需解决的问题。而现代信息技术中,云计算技术与移动互联网技术得到了快速发展,那么如何将精品资源共享课程信息存入云端以及智能手机终端如何快速方便访问云端数据从而提高精品资源共享课程的使用效率成为当前研究的热点问题。

在国外,比较流行的资源共享课程学习平台系统是MOOC的三大主流平台系统Coursera、edX、Udacity[2],但三个平台的课程教学模式跟传统课程的教学模式相似,都根据学科内容的知识体系进行知识讲解,并辅助相关的实践活动和练习,以帮助学习者达到相关的学习目标,有点类似课堂搬家,同时课程活动设计对学习者的协作学习和个性化学习比较薄弱。在国内,比较成熟的MOOC学习平台是中国大学MOOC-爱课程,部分精品资源共享课程在爱课程iCourse网站上面进行了发布并提供了智能手机客户端的下载,手机客户端主要是提供了视频播放、资源下载、评论、分享和答疑功能,但并不能在手机客户端直接查看教学团队、教学成果、课件、日历、大纲、习题作业等内容,为学习者快速掌握课程的内容带来了困难;未引入学习分析技术,未开发配套学习跟踪系统,不能全面跟踪和掌握学习者的特点、学习行为和学习过程,不能对学习内容、作业测验、问题进行分析和评估,这样学生的学习质量和学习效率难以得到保障;未提供试题库系统或者作业系统在线对知识的掌握程度进行测评以及学习者在学习交流互动和系统信息安全和认证效率方面有待提高等。因此有必要设计和开发一个新的精品资源共享课程移动端系统来对现有的资源共享系统进行扩充和优化,从而提高学习者的学习效率和学习效果。由于Bmob是国内第一家专注于移动应用云存储平台,它提供专有的SDK供App调用,并加强了用户以及数据的安全验证,从而提高了服务器端数据资源的开发效率,而 Android移动终端由于价格合理以及其开源特性便于有效进行二次开发,因此该精品资源共享课程平台系统采用基于Bmob云平台与Android相结合的架构方案进行系统的设计与实现。

2   系统设计(System design)

2.1   系统功能设计

系统功能包括基于Bmob和Android的精品资源共享课程学生端系统和基于Bmob和Android平板电脑的教师端系统。其中基于Bmob和Android的精品资源共享课程学生端系统功能主要是学生登录系统后,可以根据课前准备、课中学习和课后测试三个阶段学习课程内容,课前准备阶段可以浏览课程介绍、教师团队、课程大纲、课程日历、考评方式与标准等内容,课中学习可以浏览和下载教学录像、教学课件、教学案例、电子教案、重点难点指导、参考教材,以及在线记课程笔记等内容,课后可以浏览和下载案例库、专题讲座库、素材资源库,可以提交作业、可以进行章节和期末在线测试,可以在线对课程进行评价和课程讨论等操作。

基于Bmob和Android平板电脑的教师端系统功能主要包括课程、教师团队、课程大纲、课程日历、考评方式与标准、课程教学录像、课程重难点、教学课件、教学案例、电子教案、参考教材、专题讲座、素材资源库、发布作业、发布试题、辅导答疑,以及统计学生学习进度等,而管理的这些资源数据是直接存储到Bmob云平台中。

2.2   系统总体设计

系统总体采用基于Android的精品资源共享课程平台客户端系统和Bmob后端云服务组成。Bmob后端云专注于为移动应用提供一整套后端云服务,该云服务通过提供Android、iOS、C#、Cocos2d-x、Js、PHP、Node、云端代码、RestApi等SDK/接口可以快速存储图片、视频、音频和文档等信息,同时可以为应用系统快速添加一个安全灵活的后台管理系统,方便浏览终端保存的各种信息,这样它减少了开发者服务器端编码的工作量,降低了开发成本和开发时间,提高了开发效率,系统总体设计如图1所示。

图1 系统总体设计

Fig.1 Overall system design

3   系统实现(System implementation)

3.1   基于Android的人脸识别系统实现

在基于Android的精品资源共享课程平台客户端系统中,为了能够跟踪分析学习者的课程学习情况,学习者需要首先登录系统,然后建立学习者跟课程之间的关联关系。而学习者在登录系统时,需要保护自身的信息安全,而保护信息安全的一种重要手段是身份鉴定技术[3],而常用的身份鉴定方法有输入用户名、密码、验证码等,这些方法容易被伪造、盗用以及遗忘等,并且有时使用较为不方便。针对这些问题,研究更为有效的、方便的身份鉴定技术显得尤为重要。由于生物特征是人的内在属性,具有稳定性和唯一性,因此,基于生物特征的身份鉴定技术越来越受到关注[4]。目前被用来鉴定身份的生物特征包括指纹、人脸、DNA和虹膜等。相比于其他生物特征,人脸获取最为方便,同时实现人脸识别的工具设备也很简单,如PC、摄像头等。因此本系统的登录身份验证采用人脸识别技术实现。而人脸识别系统主要包括数据采集、图像预处理、人脸检测、特征提取以及特征匹配等内容[5]。

3.1.1   人脸识别总体设计

人脸数据采集有两种方式,第一种是在图像数据库中直接获取,第二种方式是通过摄像头等视频图像采集设备进行采集[6]。本课题采用第二种方式,用户在注册时打开Android手机摄像头,进行人脸检测,人脸检测成功后,获取人脸特征值,并将人脸特征值保存在Bmob云端数据库中。用户登录时,再次打开摄像头进行人脸采集,并进行人脸检测,获取当前人脸特征,当前人脸特征与在Bmob云端数据库中保存的人脸特征值进行特征匹配,得到满足预设阈值范围内的相似度以确定是否为同一人。整个人脸识别流程如图2所示。

图2 人脸识别流程图

Fig.2 Face recognition flow chart

3.1.2   人脸识别关键技术

(1)人脸检测

人脸检测是指对于任意一幅图像,计算机通过一定的策略对其进行分析处理以确定其中是否含有人脸,如果有则返回人脸在图像中的相关信息[7]。常用的人脸检测算法有神经网络算法、Viola-Jones算法,以及AdaBoost人脸检测算法等。由于AdaBoost算法检测时不仅时间短、效率高、准确率高而且计算量小,因此本文采用比较流行的AdaBoost算法[8],算法流程如下:

输入:假设人脸初始样本集T={(x1,y1,),(x2,y2),…,

(xn,yn)},其中xi表示第i个人脸样本,yi的取值范围为(0,1),其中yi=1表示人脸样本,yi=0表示非人脸样本。弱分类器迭代的次数为M,样本点的个数为N。

输出:强分类器为G(x)

第1步:初始化各种人脸样本权重

第2步:对于m=1,2,3,…M:

①对当前样本分布进行权值归一化计算:

②针对每个特征f训练出一个比较弱的分类器,并对弱分类器统计权重误差:

③选取对样本分类正确率最高的的基本分类器为最佳弱分类器;

④根据这个最佳弱分类器,调整样本权值分布:

其中,中,表示未被正确分类,表示被正确分类。

第3步:构建强分类器:

(2)特征提取

特征提取是指计算机采用一定的策略提取圖像中具有特征性的信息的过程。人脸特征提取是指计算机针对人脸某些特征进行特征建模的过程,是一种将现实空间的图像映射到机器空间的过程[9]。人脸特征提取算法主要有局部二值模式LBP和卷积神经网络(Convolutional Neural Networks,CNN)等,其中CNN的人脸识别率虽然比LBP高,但CNN算法模型大、参数数量较多、需要花较长时间进行初始化工作,如果将CNN嵌入到Android系统中,则Android系统的运行时间较长,软件友好性不强,而LBP算法计算量较小、计算过程复杂度较低和光照影响较小。J.Wang和J.Zheng等通过实验证明采用LBP获取人脸特征可以更好地适应面角[10]。因此本课题人脸特征提取采用LBP算法。

(3)特征匹配

特征匹配是指从影像中提取的特征作为共轭实体,以特征的描述参数作为匹配实体,通过计算匹配实体之间的相似性测度以实现共轭实体配准的影像匹配方法。特征匹配包括基于局部灰度信息特征匹配和基于特征向量的特征匹配方法,特征匹配的算法有欧几里得距离(Euclidean Distance)、余弦相似度、切比雪夫距离等算法,皱莹[11]通过实验证明余弦相似度算法略优于欧几里得距离和切比雪夫距离算法,因此本课题特征匹配采用余弦相似度算法。余弦相似度描述如下:

设置两个n维向量为p(x1,x2,…,xn)与q(x1,x2,…,xn),图像相似度的计算公式如下:

余弦相似度的取值范围为[-1,1]。夹角越小,图像的相似度越高,夹角越大,图像的相似度越低。

3.1.3   基于Android的人脸识别实现

由于基于Android的人脸识别是由Java程序编写的,而Java程序需要在虚拟机中运行,而虚拟机会限制Java程序的运行效率,又因人脸识别中的图像处理采用大量的矩阵运算,对系统的运行性能要求较高,因此不能直接将图像处理的相关算法在Android端运行,需要单独使用C++编写图像处理算法,然后采用Google的NDK工具开发C/C++动态链接库,生成.so文件,并将.so文件放入到Andorid工程的src目录下面的jniLibs目录里。在处理人脸检测、人脸特征的提取、人脸特征的检索,以及人脸相似度运算时可以直接调用.so文件进行处理,从而提高整个系统的运行效率。其中在Android中人脸搜索部分代码如下:

//定义人脸对象face1和face2

Face face1=new Face();

Face face2=new Face();

//定义保存人脸相似度对象score

FMatching score=new FMatching();

//设置当前进行人脸识别的人脸特征

face1.setFeatureData(faceData);

//定义人脸识别时的相似度最大值

float max=0.0f;

//搜索遍历每个人脸特征值

for (int i=0; i

float like=0.0f; //人脸特征相似度值

//face2对象临时保存每个人脸的特征值

face2.setFeatureData(faceDataList.get(i));

//将当前进行人脸识别的对象face1、遍历得到的人脸对象face2和保存人脸相似度对象score传递给相似度匹配方法FaceMatching进行人脸匹配

fsdkEngine.FaceMatching(face1,face2,score);

//獲取人脸相似度值,并赋值给like

like=score.getScore();

if (like >max) {

max=like;//将获取的人脸相似度值赋值给max

}

}

搜索遍历结束后,max变量中存放的是当前待识别的人脸相似度最大值。该max值跟人脸识别预定的阈值进行比较以确定人脸识别是否成功。

3.2   基于Bmob和Android的多人在线聊天实现

在精品资源共享课程平台移动客户端系统中,为了及时解决学习者学习时所遇到的问题以提高学习者的学习效率,特设计和实现基于Bmob和Android的多人在线聊天系统。在多人聊天系统中,比较困难的是聊天中各个实体对象的定义以及对象中属性的定义,其中比较重要的实体对象包括聊天用户BmobChatUser、聊天消息BmobMsg、最近会话列表BmobRecentMsg等。其中BmobChatUser属性包括设备Id、设备类型、昵称、头像、好友列表,以及是否是黑名单等属性,聊天消息BmobMsg属性包括chatId(该属性包括单聊和群聊两种聊天模式,其中单聊模式下的id的组成方式为发送者id+"&"+接收者id,群聊模式则为groupChatId)、消息内容(可以是字符串文本、图片地址或者是地理位置)、接收方receiverId、发送方senderId、发送者头像、发送者昵称、发送者的用户名、消息类型、发送时间、消息是否被读(未读、已读状态)、消息发送状态(包含发送成功、失败、已收到三种状态)等。

而在多人在线聊天系统中,经常遇到消息丢包问题,为了解决此问题,系统采用了定时器+Service+多线程的方法定时检测消息内容。检测消息步骤如下:

第1步:定义Android后台服务类BmobMsgService,该类继承Service类。在BmobMsgService类中重写onStart方法,在该方法中调用检测消息内容的子线程对象。

第2步:创建子线程类,在子线程中调用检测消息对象。

第3步:检测消息。主要检测当前登录用户的所有未读消息,部分主要代码如下:

String currentId=BmobUserManager.getInstance(this).getCurrentUserObjectId();

//创建Bmob查询接口对象

BmobQueryquery=new BmobQuery();

//设置Bmob查询条件

query.addWhereEqualTo("currentId",currentId);

Integer[] status={0,1};

query.addWhereContainedIn("isReaded",Arrays.asList(status));

query.order("createdTime");

query.findObjects(this,new FindListener() {

public void onSuccess(Listlist_BmobMsg) {

if(list_BmobMsg!=null &&list_BmobMsg.size()>0)

{

int length=list_BmobMsg.size();

for(int i=0;i

BmobMsg bmobMsg=list_BmobMsg.get(i);

//该方法检测是否有黑名单用户发送消息,如果没有则广播未读的消息

checkBlackUser(bmobMsg);

}

}else{

System.out.println("没有未读消息");

}

}

public void onError(int arg0,String arg1) {

System.out.println("查询未读消息失败!");

}

});

第4步:定义定时器。Android定时器的实现方法有很多种,包括Handler+Thread、Handler类自带的postDelyed、Handler+Timer+TimerTask以及AlarmManager。本课题采用AlarmManager类的setRepeating()方法实现定时功能,在定时器中定时调用PendingIntent对象,而PendingIntent对象中包装了Intent对象,Intent对象中调用BmobMsgService后台服务类,在BmobMsgService后台服务类中调用子线程,在子线程中进行消息检测,从而完成了定时器+多线程+Service的方法定时检测消息内容,从而避免了消息丢包问题。定时器部分代码如下:

//定义闹铃管理对象

AlarmManager  alarmmanager=(AlarmManager)

context.getSystemService(Context.ALARM_SERVICE);

//创建立即执行的意图对象intent,该intent调用消息服务类BmobMsgService

Intent intent=new Intent(context,BmobMsgService.class);

intent.setAction(BmobMsgService.ACTION);

//創建延迟执行的PendingIntent对象,该对象包装了intent对象

PendingIntent pendingIntent=PendingIntent.getService(context,0,intent,0);

//获取系统时间

long triggerAtTime=SystemClock.elapsedRealtime();

//定时调用pendingIntent对象 alarmmanager.setRepeating(AlarmManager.ELAPSED_REALTIME,triggerAtTime,seconds*1000,

pendingIntent);

4   结论(Conclusion)

本文对基于Android和Bmob云的精品资源共享课程平台系统进行了研究。该系统由基于Android的精品资源共享课程客户端系统和基于Bmob的后端云服务组成。为了提高系统的信息安全,便于用户快速登录系统,特采用了当前比较流行的人脸识别技术,并对人脸识别的部分关键技术人脸检测、特征提取、特征匹配等进行了阐述。由于AdaBoost算法检测时间短、效率高、准确率高和计算量小等特点,因此人脸检测采用AdaBoost算法;由于局部二值模式LBP算法计算量较小、计算过程复杂度较和光照影响较小,因此人

脸特征提取采用LBP算法,而特征匹配采用余弦相似度算法;为了及时统一解决学习者学习时所遇到的问题以提高学习者的学习兴趣和效率,特设计和实现基于Bmob和Android的多人在线聊天系统,而聊天系统经常会遇到消息丢包问题,因此系统采用了定时器+Service+多线程的方法定时检测消息内容,从而保证了消息内容的完整性。对移动学习平台系统用户进行课程学习个性化推荐将是后续工作研究的重点。

参考文献(References)

[1] Li Bin.Research on the Optimization of Learning Model Based on Modern Information Technology[C].2018 6th International Education,Economics,SocialScience,Arts,Sports and Management Engineering Conference(IEESASM 2018),2018:441-445.

[2] Pérez-Sanagustín,Mar,HilligerI,et al.H-MOOC framework:reusing MOOCs for hybrid education[J].Journal of Computing in Higher Education,2017,29(1):47-64.

[3] Zhi Liu.Face recognition system based on block Gabor feature collaborative representation[J].Automatic Control and Computer Sciences,2016,50(5):318-323.

[4] 陳梓嘉.基于Android的人脸识别算法的研究[D].宁波大学,2017:3-12.

[5] 李舟.基于Android平台复杂光照条件下人脸识别系统研究[D].湖北工业大学,2017:1-9.

[6] 谭敏,邓永志,兰红.基于人脸识别的考勤签到APP设计[J].通信技术,2018,51(8):1995-1998.

[7] 周师专.基于Android平台的人脸识别系统的设计与实现[D].南昌大学,2016:18-28.

[8] 张鸿杰.基于Android平台人脸识别系统的研究[D].江南大学,2015:8-18.

[9] 彭烁.基于人脸识别的部队点名系统的研究[D].湖南师范大学,2017:1-8.

[10] Jiakailin Wang,Jinjin Zheng,Shiwu Zhang.A Face Recognition System Based on Local Binary Patterns and Support Vector Machine for Home Security Service Robot[J].2016 9th International Symposium on Computational Intelligence and Design,2016:303-307.

[11] 皱莹.智能移动终端上基于深度学习的人脸识别的设计与实现[D].北京邮电大学,2017:20-36.

作者简介:

罗国涛(1982-),男,硕士,副教授.研究领域:软件工程,移动应用开发.

廖家莉(1992-),女,本科,助教.研究领域:软件工程.

刘甫迎(1948-),男,本科,教授.研究领域:数据库,云计算,大数据.

猜你喜欢

人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
基于(2D)2PCA-LBP 的人脸识别方法的研究
人脸识别在高校安全防范中的应用
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别