APP下载

基于Android与Kotlin的人脸检测在智能图书馆系统中的应用

2021-10-15王龙军夏嘉杰许靖唯

内蒙古科技与经济 2021年16期
关键词:矩形分类器人脸

王龙军,夏嘉杰,许靖唯

(成都工业学院,四川 成都 611730)

随着大数据和云计算的快速发展和日渐成熟,人脸识别技术也开始应用到现实生活中,支付宝的刷脸支付、火车站刷脸进站、小区刷脸门禁系统等应用越来越多,人脸识别技术成为目前当仁不让的热门技术,高校图书馆向智能图书馆发展的趋势也越来越明显,人脸识别技术应用到智能图书馆也是当前的一个趋势,人脸识别技术和图书馆门禁系统结合可以实现刷脸进馆,人脸识别技术和自助借还系统结合可以实现刷脸借书,人脸识别技术和座位预约系统结合可以实现刷脸预约座位等,总之人脸识别技术必将推动智能图书馆向更高的方向发展。

1 OpenCV Android和Kotlin技术

1.1 OpenCV概述

OpenCV[1-2]是开发计算机视觉应用最广泛的基于BSD开源许可的开发框架,OpenCV使用C/C++语言进行编写,OpenCV具有多种编程语言的接口,比如C++、Java、Python以及MATLAB接口,OpenCV支持在Linux、Windows、Android、iOS和Mac OS操作系统上进行视觉应用开发,并且OpenCV允许在学术研究和商业应用开发中免费使用。OpenCV的主要目标是实现图像处理和计算机视觉方面的很多通用算法,帮助开发人员更方便快捷地设计更复杂的计算机视觉相关应用程序,它已经成为计算机视觉领域最有力的研究工具。

1.2 Android概述

Android是一种基于Linux内核的开源移动操作系统,主要用于移动设备,比如手机、平板电脑、电视等,Android原本由Andy Ruby创立,后来被Google收购。Google希望与各方共同建立一个标准化、开放式的移动电话软件平台,从而在移动产业内形成一个开放式的操作平台[3]。该平台由操作系统、中间件、用户界面和应用软件组成,是一个为移动终端打造的真正开放和完整的智能手机系统。

1.3 Kotlin概述

Kotlin是JetBrains在2011年推出的一门全新的编程语言,这门语言最早被设计成运行在JVM(Java虚拟机)上——使用Kotlin编写的程序会被编译成字节码文件,该字节码文件可直接在JVM上运行(用Java命令运行)[4]。Kotlin与Java语言保持100%兼容,Kotlin的优势在于拥有Java的完整生态,也就是说能完全自由地使用各类Java API框架库和Java各种非常成熟的技术,比如JDBC、Servlet、Spring、Hibernate、SpringMVC等,而Kotlin更进一步的是它具有现代流行语言的高级特性,比如语法糖、函数式编程、多范式等,并且Kotlin代码在代码书写上更加简单,代码效率更高。

1.4 人脸检测简介

人脸识别,也叫做人像识别、面部识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术,它使用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术。人脸识别的目的是将检测出来的人脸与现有人脸数据库中人脸样本进行识别和确认,人脸识别主要分为人脸检测[5]、特征提取和人脸识别三个过程。

人脸检测是人脸识别的基础和条件,在人脸识别中扮演十分重要的角色,是人脸识别系统中一个关键内容。人脸识别应用在进行人机交互、表情识别、视频监控等领域的前提是人脸检测,由于受到人脸的位置、大小、背景、清晰度、光照、姿态等因素的影响,人脸检测的好坏直接决定了人脸识别系统的质量,人脸检测在实际中主要用于人脸识别的预处理,即在图像中准确标定出人脸的位置和大小。人脸图像中包含的模式特征十分丰富,如直方图特征、颜色特征、模板特征、结构特征及Haar特征等。人脸检测就是把这其中有用的信息挑出来,并利用这些特征实现人脸检测。

2 基于Android与Kotlin的人脸检测在智能图书馆系统中的应用

2.1 Adaboost算法分析

2.1.1 Harr-like算法分析。Haar-like特征是计算机视觉领域一种常用的特征描述算子,它最早是由Papageorigiou等人用于人脸描述,Haar-like是一种简单且高效的图像特征,其基于矩形区域相似的强度差异性Haar小波。目前常用的Haar特征分为三类:边缘特征、线性特征和对角特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况,即由矩形特征来描述脸部的一些特征,比如嘴巴比其附近的颜色深一些、鼻梁两侧比鼻梁颜色深一些、眼睛要比脸颊颜色深一些等,然而矩形特征只对如边缘、线段等一些简单的图形结构较敏感,并且只能描述水平、垂直、对角等特定走向的结构。

2.1.2 Adaboost算法分析。 AdaBoost算法是一种迭代算法,该方法根据弱学习的结果反馈适应地调整假设的错误率,其算法原理是通过调整样本权重和弱分类器权值,从训练出的弱分类器中筛选出权值系数最小的弱分类器组合成一个最终强分类器,具体来说就是在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。

Adaboost算法在样本训练集使用过程中,对其中的关键分类特征集进行多次挑选,逐步训练分量弱分类器,用适当的阈值选择最佳弱分类器,最后将每次迭代训练选出的最佳弱分类器构建为强分类器。其中,级联分类器的设计模式为在尽量保证感兴趣图像输出率的同时,减少非感兴趣图像的输出率,随着迭代次数不断增加,所有的非感兴趣图像样本都不能通过,而感兴趣样本始终保持尽可能通过为止。

AdaBoost算法的人脸检测算法包含的主要工作:①通过积分图快速求得Haar特征;②利用AdaBoost算法从大量的特征中选择出判别能力较强的少数特征用于人脸检测分类;③提出一个级联结构模型,将若干个弱分类器集成一个强分类器,其能够快速排除非人脸区域,提高算法的检测速度。

2.2 基于Android与Kotlin的人脸检测在智能图书馆系统的应用

图1 基于Adaboost算法与Harr-like的人脸检测流程

2.2.1 基于Adaboost算法与Harr-like的人脸检测原理。 在智能图书馆中引入Android平台的人脸检测系统,该系统主要实现了扫描人脸图像,然后进行识别,这样就可以对图书馆读者身份进行鉴别。具体过程是首先判断输入图像中是否存在人脸,并将背景和非人脸区域同需要的人脸区域区分出来,笔者研究的人脸检测是通过Adaboost算法结合Harr-like矩形特性进行面部区域检测,Harr-like特征提取是基于优化PCA的人脸识别算法,在保持人脸识别率不变的前提下,提高了人脸识别速度。基于Adaboost算法与Harr-like的人脸检测流程如图1所示。

2.2.2 基于Android与Kotlin的人脸检测在智能图书馆系统的应用。本系统在CentOS 7.2平台上开发,软件开发包为OpenCV Android SDK、Android SDK和Android NDK,使用SQLite作为数据库用来保存人脸数据和信息,IDE工具为Android Studio 3.6.1,测试工具为红米10x手机。具体过程:首先通过Android拍摄若干张人脸正面图像,将人脸图像存储在SQLite数据库中作为比对记录样本,这是前期准备工作,在智能图书馆系统需要对读者身份确认时,此时需要再次拍摄某个读者的人脸正面图像,然后提取该图像的Harr-like特征,计算人脸图像的特征值,调用分类器对人脸的特征进行分类,分类器会判断该区域是否存在人脸,这个分类器是通过Adaboost算法实现,Adaboost算法是通过C++语言实现的,对该算法进行编译得到动态链接库,接着Kotlin利用JNI调用C++实现的人脸图片检测服务,最后利用Kotlin对SQLite人脸数据库中图像进行比较找出识别者的信息,若识别成功,则显示识别者的个人信息,若识别不到,则会提示添加人脸信息到数据库,以便下次进行识别,这样就可以在Android平台上实现一个高效快速的人脸检测系统。

3 结束语

在智能图书馆中引入Android平台的人脸检测系统,该系统通过Adaboost算法结合Harr-like矩形特性进行面部区域检测,实现了人脸识别,利用Kotlin对SQLite人脸数据库中图像进行比较找出识别者的信息这样就可以对图书馆读者身份进行鉴别,该系统能够大大提高图书馆的智能化程度,也使得图书馆的管理更加快捷、安全、简单。

猜你喜欢

矩形分类器人脸
学贯中西(6):阐述ML分类器的工作流程
有特点的人脸
一起学画人脸
基于朴素Bayes组合的简易集成分类器①
矩形面积的特殊求法
三国漫——人脸解锁
基于差异性测度的遥感自适应分类器选择
从矩形内一点说起
巧用矩形一性质,妙解一类题
浅谈多分类器动态集成技术