牛亚运 仲梁维
摘 要:人工智能带动计算机视觉算法迅速发展。人脸识别具有特征明显、不易伪造、安全性高等特点,成为计算机视觉的一个重要分支。基于Hog算法对人脸图像进行特征提取,基于改进的kNN算法进行分类识别。对收集的数据进行科学分析和数据挖掘,将数据信息进行图表可视化。不仅识别迅速、准确度高,还增强了数据分析的趣味性和交互性。应用在会议签到场合,只需采集8张左右的图片,经过预处理和算法优化,就能实现高达99%的准确率,有效解决了传统会议人工签到速度慢、数据可利用率低、组织效率差等弊端。
关键词:人工智能;计算机视觉;Python;人脸识别;数据挖掘
0 引言
机器学习大致经历了两次浪潮:浅层学习、深度学习。最初的学习算法是感知机。后来,享有“人工智能之父”美誉的Marvin Minsky[1],与其好友Seymour Papert共同出版了一本名为《Perceptrons》的书,指出简单神经网络只能运用于线性问题求解,如果求解非线性问题应该具有隐藏层。因为不包含隐层单元的两层结构感知机模型,只能学习固定特征的线性函数而无法处理非线性分类问题,也即感知机不能处理异或回路。这为当时的神经网络发展泼了冷水,导致神经网络研究停滞了一段时间。
1967年,COVER & HART[2]提出了kNN算法。K最近邻(k-Nearest Neighbor,簡称kNN)算法中参数k就是指k个最近的邻居,该算法创新性地提出每个样本都可用它最接近的k个邻居代表。到了1986年,Hinton等[3]正式提出反向BP传播训练。尽管之前有人实际上已经作过类似研究,但该论文的影响更具有划时代意义。正是BP算法的提出,让曾经消失一段时间的神经网络研究得以复苏,但它有一个致命缺点,即随着隐藏层数量的增加,BP算法常常会陷入局部最小值,在计算每层结点梯度时,网络低层方向会出现梯度衰竭现象。
2005年,法国国家计算机科学及自动控制研究所的Dalal等[4]在CVPR会议上提出梯度方向直方图(Histogram of Oriented Gradients,简称HOG)。这是一种解决人体目标检测的图像描述子,利用HOG算法的特征表达人体,提取人体的外形信息和运动信息,形成丰富的特征集。
2012年,Hinton的学生设计的Alex Krizhevsky在ImageNet比赛上凭借著名的Alexnet卷积神经网络[5]模型,以领先第二名10%的好成绩夺得ILSVRC2012图像分类比赛冠军,从此人工智能迅速发展。
从2012年至今,人工智能新技术不断涌现,尤其是在计算机视觉方向。如何利用AI技术准确有效地识别用户身份,进而提升个人信息安全水平成为热点课题。计算机视觉的重要分支之一人脸识别研究突飞猛进,已经广泛应用于监控防盗、嫌犯追踪、门禁安防等领域。人脸识别相比传统的卡片识别、指纹识别有着诸多不可替代的优点。近些年人脸识别领域出现了多种算法,虽然算法的网络结构差异较大,但每个模型都有各自特点。本文的人脸识别算法经过网络结构优化、参数改进,鲁棒性非常好,准确率达到99%。获取的训练人脸图像仅需要8张左右,相比较其它人脸识别算法,其具有非常轻量化和快速化的特点。
数据可视化在科学统计分析中扮演的角色越来越重要,本文对数据进行挖掘进而实现可视化,目的是借助图形化手段清晰有效地传达与沟通信息,使美学形式与功能齐头并进,用于会议签到场合,直观地传达参会人员的关键信息与特征,短时间内得出更有价值的结论,效率比传统的主观分析更加科学、高效。
本文设计的会议签到系统软件分为3个部分:①预先采集人脸图像数据,将采集的人脸图像及其对应的个人信息输入到数据库管理软件中;②现场实时采集人脸图像并进行实时预测,将个人信息交互式地显示在识别窗口上;③根据现场采集的数据进行统计分析并绘制柱状图、比例图、地区分布图、词云图等,对数据进行可视化解释,以便管理人员提取重要信息,进行提前预判,从而作出正确决策。相比传统的人工签到方法,本系统采用的方法更加灵活且效率更高,智能化更强,能充分利用收集的数据,带来更为科学有效的分析。
1 人脸识别与数据挖掘
1.1 人脸识别技术研究背景
德国的Cognitec主要从事政府项目的人脸识别系统,NEC公司主要做机器人视觉识别系统。Google、Facebook、Microsoft公司进入人脸识别领域时间不算长,但因其雄厚的技术实力以及海量数据支持,创建的人脸识别创新模型很多,比如Google的VGG系列[6]和Facebook的DeepFace[7],准确率基本和人眼持平甚至超越人眼。
商汤科技是目前国内人脸识别技术领域的龙头企业,曾在一次公开评测中超过了Facebook和Google。科大讯飞最早是从事智能语音及语言技术研究的, 2014年联合香港中文大学汤晓鸥教授团队共同推出了世界领先的人脸识别技术DeepID系列[8]。
1.2 人脸识别过程
人脸识别[9]分为人脸检测、人脸对齐、人脸特征提取、人脸分类4个步骤。首先,需要提取人脸特征值,比如每只耳朵的尺寸或鼻子长度等。然后,以同样的方式测量新的人脸照片并找出与其测量值最接近的已知人脸,通过对比设定阈值,当大于该阈值时就匹配该人脸,进而查询到该人脸图像的数据信息,完成人脸分类。
根据得到的人脸特征值通过分类器对人脸图像进行分类。常用的分类器有kNN[10]、SVM[11]、CNN[12]等,本文采用kNN算法作为人脸特征分类器。
1.3 数据挖掘
数据挖掘[13]指从大量的数据中通过算法搜索隐藏于其中信息的过程。通过统计分析,将这些数据转换成有用的信息和知识。本文通过数据图表可视化,将采集到的数据进行高效利用和深度挖掘,使会议主办方能够在短时间内提取和掌握现场人员关键信息,极大提高了数据处理效率,节约了成本。
2 智能会议签到系统核心算法
本系统基于Hog对图像特征进行提取,通过计算和统计图像局部区域的梯度方向直方图构成特征,采用改进的kNN算法完成预测识别。
提取特征方法选择非常重要,主要是因为提取特征的质量直接影响到分类的准确性。本文提取特征方法采用Hog法,如图1所示。Hog特征提取过程分为3步:①把样本图像分割为若干个像素单元(cell),把梯度方向平均划分为9个区间(bin);②在每个单元里对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维特征向量,用块对样本图像进行扫描,扫描步长为一个单元;③将所有块的特征串联起来得到人体特征。
本文采用改进的kNN算法对提取的特征进行识别分类。如果一个样本在特征空间中的k个最相邻样本中多数属于某一个类别,则该样本也属于这个类别并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或几个样本的类别决定待分样本所属的类别。 kNN在类别决策时只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近样本,而不是靠判别类域的方法确定所属类别,因此对于类域的交叉或重叠较多的待分样本集,kNN方法较其它方法更为合适。
3 智能会议签到系统模块
3.1 人脸图像采集设计
人脸图像数据采集功能如图2所示,主要进行人脸图像和数据信息采集工作。通过调用系统内置摄像头進行拍照,获取人脸图像数据集。实时采集签到人员的数据信息,将采集到的数据实时传入数据库,方便后边进行数据统计分析。
图中的消息提示框用来显示按钮操作的各种信息,方便用户实时查看系统运行情况,采用交互式操作更加人性化。
3.2 人脸图像识别设计
人脸识别实现智能会议签到功能如图3所示,可采集现场人员人脸图像,进行实时识别并导出相关信息。
3.2.1 入场人脸数据采集
打开摄像头系统进行实时拍照及自动存储,目的是获取现场签到人员的人脸图像以方便之后进行人脸识别。
3.2.2 人脸识别模型训练
实现对已有人脸图像数据集的训练,提取不同的人脸特征值,训练分类器,用于之后的人脸识别。
训练模型。对训练集文件夹下所有人脸数据进行训练,对不同照片进行人脸定位、特征提取,训练分类器。将训练好的分类器存为clf文件。基于Python的代码设计思路如图4所示。
本文对图像的特征提取采用Hog算法,训练的分类器采用kNN算法。利用训练好的分类器模型做实验测试,得到的准确率为99%。
3.2.3 人脸识别预测
人脸识别预测实现对获取新的人脸图像进行识别。若该人脸图像在原来数据库中已经存在,系统会根据识别的姓名匹配数据库信息,从而实时显示在系统屏幕上;如果读取到的人脸图像不在原来的数据库中,则识别为陌生人。
人脸识别代码设计框架如图5所示,人脸识别后的结果如图6所示。
3.2.4 根据姓名实时显示个人信息
经过机器学习算法识别出当前姓名,然后匹配已有数据库,将可公开信息显示在屏幕上。还可自动生成二维码[14],扫描二维码可查看个人的全部数据信息。标注识别姓名的代码设计如图7所示,生成的二维码结果如图8所示。
3.3 基于Python连接SQL Server软件的数据处理设计
数据信息管理功能如图9所示,将现场采集人员的人脸图像通过SQL Server将数据传输到数据库中。本系统软件是通过Python编程连接SQL Server 2008软件,基于Python[15]编写的代码连接SQL Server[16],对采集的数据信息实现增删改查功能。
3.4 基于python编程的数据统计分析可视化设计
数据信息图表/词云图高级可视化功能如图10所示,将采集的数据信息进行可视化,对数据进行可视化解释,以便管理人员提取重要信息,进行提前预判,从而作出正确决策。
3.4.1 数据信息图表可视化
在需要对输入的数据信息进行统计分析时,图表可视化更能直观、立体地表达出重要信息和结论。
(1)柱状图和折线图。当点击签到人数统计时,会弹出一个柱状图和折线图。柱状图显示不同时间段签到人员的数量,据此可对会议现场作更有效的安排。本系统设计按小时、天两个单位进行数据统计,折线图数据可动态显示,如图11所示。
(2)三维图。三维图可以旋转查看,使得数据信息更加立体,查看更加方便,如图12所示。
(3)比例图。当点击年龄比按钮时会弹出一个圆饼比例图,可看到所有已签到人员的年龄阶段,有利于根据会议主题分析观众年龄层次,对以后寻找观众群体更加有针对性和目标性。本系统柱状图有现场签到人员的年龄比例、性别比例、学历比例、地区比例、星座比例、热议话题比例等,如图13、图14所示。
(4)地区分布图。当点击地区分布按钮时,会弹出一个签到人员地区分布的标记地图。该地图根据签到人员所在地标记在地图上,通过这个地图可以很清楚地看到签到人员的地区分布。
3.4.2 数据信息词云图可视化
词云图用来统计签到人员感兴趣的话题,词云图中文字与该话题被提及的数量呈正比。比如较多的人谈及“人工智能”话题,则“人工智能”3个字会比其它话题大而明显,这样就非常清楚地得出大多数参会人员的兴趣所在。
4 智能会议签到系统实验与结果分析
4.1 智能会议签到系统实现
基于人脸识别和数据分析的智能会议签到系统实现步骤如下:①在人脸图像采集模块下预先采集与会人员的人脸图像数据,一般每个人8张左右图片,然后输入相应的个人信息;②切换到人脸图像识别栏下,打开照相机,拍照。进行人脸实时识别,个人部分数据信息呈现。通过扫描自动生成的二维码[17],可以查看更多的个人信息;③切换到数据库管理模块,连接后台的SQL Server数据库,查询采集到的数据信息,必要时进行增加或删除操作;④切换到信息数据图表可视化栏,对要显示的图表设置题目。先点击柱状图查看人员的缺席、到场数量;接着点击比例图查看性别、年龄、学历、星座等比例,然后点击地图可查看签到人员的地理位置分布;⑤生成词云图分析话题热度。