章永来 李华玲
(中北大学软件学院 山西省太原市 030051)
人工智能与云计算等先进技术的蓬勃发展,为我国软件工程专业的建设提供了天然的技术支撑。软件工程专业必须走在新工科建设的前沿,探索面向人工智能复杂工程问题的“互联网+育人”工科实践教学的新模式。然而,我国高校培养的软件工程专业人才,并不能完全适应新兴产业所需的人才要求。因此,课程实践教学内容需要聚焦具有高阶性与挑战度等特点的复杂工程问题,创新有一定技术含量又是学生乐于接受的人工智能教学资源。整个课程全部围绕人脸识别的复杂工程问题,聚焦具有Python 的深度学习神经网络的关键技术,贯穿了软件工程的设计思想。本文的人工智能实践案例,即人脸识别签到系统,既是《大数据与人工智能创意设计与实践》课程的教学案例,又可以在系统设计与实现过程中在班级课堂上现场实践。这样,一方面提高了软件工程课程的创新性,高阶性与挑战度,又极大提高了同学们的积极性与主动性。
2014 年提出的GoogleNet(谷歌深度学习网络)的人脸图像识别错误率仍然高于人眼水平。该神经网络的深度仍然只有22 层。可见,对于智能识别图像很明显存在不足之处。
2015 年, 深度残差网络(deep residual network,ResNet)问世。一方面,在ResNet 提出之前,研究者采取了不同的方法,以解决规模变化的核心架构问题。一般称之为 Inception 模块。这些模块使用不同尺度的卷积核以及在相同输入上计算并连接在一起的最大池化的结合。许多这些模块堆叠在一起就创建 Inception 模块。从网络结构上看,其实是增加了网络的宽度。尽管没有单独的架构特征对Inception 的性能进行评估,然而有价值的策略包括使用 1*1卷积;为了减少空间复杂度将 n*n 卷积层分解为堆叠的 n*1和 1*n 层;以及减少协方差偏移的批量归一化技术。
另一方面,如果单纯增加深度,即增加神经网络的层数,会导致网络退化问题。问题的主要表现就是随着网络层数的增加,网络精度会逐渐增加,但是当突破某个层数的阈值时,层数的增加反而会导致网络精度明显下降。为了解决这个问题,ResNet 神经网络引入了残差模块,如图1 所示。所谓残差就是预测值与真实值的偏差。残差网络的实质作用就是拟合偏差,当理论预测值与偏差相加之后,其结果则更接近真实值,巧妙地解决了深度网络的梯度爆炸或梯度消失问题,同时也解决了由于网络深度过大,而导致的过拟合现象。在深度学习网络的发展过程中具有里程碑的作用。
图1:ResNet 的残差模块示意图
ResNet 神经网络普通深度网络的基础上,插入短路连接(如图1 的右边箭头),将网络转换为对应的残差版本。当输入和输出具有相同的维度时,可以直接使用恒等短路方式,如公式(1)所示:
其中,W 表示卷积层的权值。
当维度增加时,ResNet 考虑两种方式:
(1)短路连接方式仍然执行恒等映射,为增加维度填补额外的零;
(2)通过 1*1 卷积的投影方式用于匹配维度,如公式(2)所示:
其中,为了使维度相等,Ws 是一个方阵。
ResNet 已经成功将网络深度提高到152 层,也可以根据需要提高到1000 层以上,并且使图像识别错误率可以达到低于人眼的水平,一举荣获五项世界级奖项。
图1 所示的残差网络结构中,通过短路连接的方式,直接把输入X 传到输出,使输出结果为H(x) = F(x) + x。可见,即使F(x)=0 时,则H(x)=x。ResNet 相当于将学习目标改变了,不再是学习一个完整的输出,而是目标值H(X)和x 的差值,也就是所谓的残差,即F(x) = H(x) - x。因此,这种残差跳跃式的结构,打破了传统的神经网络n-1 层的输出只能给n 层作为输入的惯例,使某一层的输出可以直接跨过几层作为后面某一层的输入,即通过不同的跳跃层数,来建立不同的残差模块。其意义在于使得整个深度学习模型的性能,随着层数的增加出现不升反降的窘境,得到了根本性的解决。ResNet 深度学习网络在人脸识别大赛中取得了骄人的成绩,使得人脸识别技术逐步趋向了成熟。本文的人脸识别签到系统案例就使用了该ResNet 深度学习模型作为系统的关键技术。
人脸识别签到系统中数据库设计的E-R(Entity-Relationship,实体-联系)模型,如图2 所示。E-R 图可以用来描述现实世界的概念模型,使用实体,联系与属性等三种图例来描述出人脸识别签到系统。
图2:系统的E-R 图
系统的E-R 图是描述了人脸签到的现实操作的关系概念模型。E-R 图的基本图例是:用“矩形框”表示实体型,矩形框内是实体名称;用“椭圆”表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;在“实心线段”的两端写明联系的类型,即1:1,1:n 或m:n。
系统的顶层流程图如图3 所示。数据流程图是通过要素和符号来描绘数据的来源、流动和存储情况。顶层数据流程图可以清晰、直观地反映出系统信息全貌的一种工具。图3的人脸识别签到系统顶层流程图客观直接地反应了系统与外部的联系。
图3:系统顶层数据流程图
可见,外部实体有签到员、学生与教师等3 类。基本场景就是签到员设置完成签到系统后,学生依次刷脸进行签到。最后,签到员将签到结果发送到教师的邮箱。
系统的人脸签到总体流程,如图4 所示。首次使用系统时,需要先初始化数据,包括导入学生名单、设置配置文件等;然后,需要采集学生的人脸数据,并将其转化为128 维特征,保存到SqlLite 数据库。以班级为单位进行自动签到的流程如下。
图4:系统总体流程图
(1)从摄像头读入图片中的最大人脸,其他人脸忽略不计;
(2)最大人脸转化为128 维特征;
(3)设置一个该班级所在人脸的内存库的循环,寻找欧式距离小于0.35 的相似脸,若寻找到相似脸则退出循环,提示匹配成功,否则提示匹配失败;
(4)将签到成功的数据写入内存的数据结构;
(5)依次循环1-4 部,直到所有学生都签到完成;
(6)将内存中的签到数据写入文件;
(7)将文件发送到教师指定邮箱(邮箱在配置文件中设置,如图8 所示)。
人脸签到系统的界面简要介绍如下。系统主界面分为菜单区、提示区与刷脸区等三个部分,如图5 所示,包含初始化、刷脸签到,手动签到与系统设置等4 个菜单。采集签到与自动签到操作如图6 所示。当所有学生签到结束后,先导出数据,再将数据发送到指定邮箱,如图7 所示。图8 是配置文件的示例数据。
图5:系统主界面
图6:人脸签到菜单
系统登录时,默认为班级的自动签到模式,自动签到文本框内的班级。此时,“开始采集”命令按钮为不可用,当采集签到时方才可以启用。提示框区域主要是显示当前操作的提示或警告消息。刷脸区显示的是人脸的图片,当图片中出现较多张脸时,系统将默认只选择最大的人脸进行识别签到操作。
刷脸签到菜单,包括采集签到,自动签到与结束签到,如图6 所示。点击“采集签到”菜单(只要点击一次即可),输入学号,系统将自动找到人脸后,显示在刷脸区域。点击“开始采集”按钮,等待数秒后提示采集是否成功。最后,签到结束点击“结束签到”菜单。
手动签到菜单,包括手动签到,导出数据与发送邮件,如图7 所示。首先,将数据导出到安装目录文件夹中,然后将该文件发送到指定邮箱。
图7:签到数据处理菜单
系统初始化时,需要先配置“config.ini”文件。配置文件的示例如图8所示,其中,dist表示相似脸欧式距离的阈值;picNum 表示人脸采集时的最大图片数;classes 代表自动签到的班级编号;receiver 代表发送的邮件地址;grade 表示签到年级。
图8:系统配置文件示例
(1)采集环境:光线较好,避免有反光等明显的较差的环境(采集时一定要注意质量)。
(2)采集方式:坐姿采集,采集时人脸大小至少为3*3cm。调整好后,再点击“开始采集”按钮。
(3)系统初始化:建立“学生名单.txt”;修改配置文件“config.ini”。
(4)采集签到与自动签到,若出现无法识别时,需要调整姿态(如远近、小幅度转动脸蛋子等)。
(5)签到结束,必须点击“导出签到”,得到签到结果。
(6)采集签到完成,需要重新启动才能自动签到。
(7)自动签到时,若5 秒钟内无法识别人脸,说明采集时质量不行,需要重新采集。
人工智能与云计算等先进技术的飞速发展,引领着第四次科技革命。软件工程专业与这些领域之间存在着天然的联系,正在为这些产业输送着大量的中高端人才。新的实践课程培养体系,需要以“三全育人”的基本原则与“新工科”的五大理念等国家级教育思想为指导。学生完成复杂工程问题的实践任务后,教师可以选择优秀案例,让一位学生代表讲解他们团队的优秀作品,实施以“学生为中心”的教学模式。该案例聚焦ResNet 深度学习神经网络模型,解决了人脸识别的复杂工程问题,并作为社会实践课程教学的大型案例,创新了高阶课程的培养体系,可以为社会输送合格的高技术人才,打下坚实基础,同时也极大地调动了学生的主动性与积极性。
目前的人脸签到系统一次只能签到一位同学,不能进行多人同时签到。这是系统以后需要继续完善的功能,可以为下一届学生提供实际需要改进的内容。