基于嵌入式人脸识别的智能考勤系统的设计
2023-08-19姜智轩侯涵宇
姜智轩,侯涵宇
(南京大学金陵学院,南京 210089)
基于MCU微系统、实时操作系统技术,设计了基于人脸识别的智能考勤系统,其结构简单,逻辑严密,可将获取的信息由低功耗网络传输模块上传到云端,实现个性化数据分析功能,配套的移动端app可用于运营管理,节约时间,提高管理效率。
1 系统结构设计
1.1 硬件结构
硬件设计是一个系统的基础,需从以下几方面进行分析:①市场需求。通过用户的真实需求,分析系统需要实现的功能,进行系统各模块的功能分配与设计。②确定整体方案。通过市场调研确定好元器件并进行测试,完善各模块的配合工作。③绘制原理图。根据方案设计电路图,参照电路图绘制PCB。④电路板工作。依据所电路图进行各模块器件的焊接与测试,将调试程序下载到开发板上进行进一步的测试。
1.2 硬件电路的设计
采用模块化设计方式,先确定总体方案,再逐个模块进行层次设计。采用意法半导体公司ARM®32位Cortex®-M3 CPU——STM32系列微处理器STM32107VCT6作为核心控制模块。主要包括OV2640为核心的人脸图像采集模块、开源RT-thread实时操作系统内核、外部存储器扩展模块、网络通信模块及LCD显示模块+CubeMX+TouchGFX GUI开发,具有高性能、低功耗、高集成度等特点。STM32107VCT6集成了高性能ARM®Cortex®-M3 32位RISC内核,工作频率为72 MHz,具有高速嵌入式存储器(闪存高达256 KB和SRAM 64 KB)及连接到两条APB总线的大量增强型I/O与外围设备,可外接数字摄像头,支持多分辨率显示屏。采用数片容量为64M的IS42S16400J-7TLI芯片作为SDRAM的存储扩展,采用Samsung公司的K9F1G08U0A的NandFlash作为Flash的存储扩展。图像获取采用ATK-OV2640模块,ATK-OV2640CMOS内置图像传感器高清摄像头模块,具有200 W像素,支持图像压缩,可输出JPEG图像数据,内部集成 LDO与有源晶振,仅需3.3 V电源即可工作支持大多数嵌入式系统的应用,自带嵌入式微处理器,支持AEC、AGC、AWB、自动消除灯光条纹、ABLC等自动控制功能,支持色饱和度、色相、伽马、锐度与图像缩放、平移及窗口设置。
图1 硬件电路的设计Fig.1 Design of hardware circuit
1.3 软件结构
通过嵌入式系统对人脸数据进行采集,利用无线网络模块上传到云端数据库,由云端人脸提取与识别算法分析并做出判断,给数据库及嵌入式数据采集端返回相应的分析结果。
一个处理器在某一时刻只能运行一个任务,但由于每次对一个任务的执行时间很短,任务之间通过任务调度器进行快速切换(调度器根据优先级决定此刻该执行的任务),会给人造成多个任务在一个时刻同时运行的错觉。RT_Thread是支持多种微处理器的开源免费RTOS,支持多任务。在RT_Thread系统中,任务通过线程来实现,RT_Thread中的线程调度器即任务调度器。该RT操作系统采用C语言编写,应用面向对象的思维设计范式,代码简明,架构清晰,体积小,成本低,功耗低,启动快速,实时性高,资源量占用小。
1.4 软件设计
1.4.1 嵌入式系统的搭建
从RT_Thread官方下载RT_Thread源码包、Env开发工具,从ST意法半导体官方处下载CubeMX开发工具、TouchGFX GUI开发组件,进行交叉编译开发环境的搭建及开发环境的配置。通过Env工具对源码功能进行配置或裁减,编译BSP文件,生成带有RT_Thread实时内核的MDK工程,配合 MDK编译。由PC机通过MDK平台将配置好的内核系统写入嵌入式系统板中。通过串口与ST_Link下载器联合调用实现实时调试。
1.4.2 人脸识别系统的设计
人脸检测。基于Receptive Fields (RFs) ,提出了RF Block (RFB) ,该模块考虑了RFs的大小和离心率(Eccentricity)之间的关系,提高了特征的可辨识性和鲁棒性。然后基于RFB,对以VGG16为基础架构的ssd进行了改进,形成最终的RFBNet。引入RFB的缘由其实在于模拟人类视觉感受野,以此进而加强网络特征提取能力,在结构上RFB借鉴了Inception的思想,在前者的基础上加入dilated convolution,从而有效增大了receptive field。在整体层面上对SSD网络改进,所以结果的检测速度较快,也有一定的精度保证。进一步将RFB组装到SSD的顶部,构建RFB Net检测器。RFBNet网络能够在保持实时速度的同时达到高性能检测的能力。从两部分看:
用差异化尺度卷积核尺度的卷积核来模拟多尺度 RFs空洞卷积操作的方式模拟人类receptive field中 RFs 的尺度与Eccentricity间的关系。
人脸编码及匹配。ArcFace也称为加角边际损失,是一种用于人脸识别的损失函数。softmax损失函数被用于这些任务中,但softmax没有对特征嵌入进行明确的优化,无法对执行类内样本的高相似性及类间样本的多样性起到预期作用,这导致在类内外观变化较大的情况下,深度人脸识别结果存在差距。ArcFace损失转换了对数,是权重与特征之间的角度。单个权重、嵌入特征通过归一化固定,而后重新缩放,特征与权重的归一化步骤令预测只取决于特征与权重之间的角度。学习得到嵌入特征,在特征与权重中加入一个加法角度余量惩罚。矫正后的人脸由 ArcFaceNet来编码,输出嵌入特征。调用该结果计算余弦距离,根据所设定的阈值来确定不同的人,余弦距离公式如下:
同一个人人脸的不同位置,余弦距离小,但不同人脸之间的余弦距离很大,可由数据库内人脸与待匹配人脸余弦距离差来判断。
采用RFBnet网络检测并提取人脸,用Arcface网络获取待检测人脸的嵌入特征并计算余弦距离,与数据库内人脸余弦距离的差比较判断,准确率高,解决以往常有的漏检问题。采用“云”保存考勤信息,通过智能手机等设备查询实时数据及历史记录,具有有较大的推广价值。系统使用流程如下:上电或复位,自检设备正常运行,初始化基本配置设置,进行考勤,按下考勤键后发出视频采集控制信号,启动图像采集功能。采集后以文件格式存储到SDRAM中,完成存储后,经过算法处理,界面显示该员工的相关信息。保存员工考勤记录,记录到服务器数据库中。系统流程如图2所示。
图2 系统流程Fig.2 System flow
2 数据库设计
采用数据库设计可以在云端服务器与本地分别存储打卡记录及人脸图像信息,实时更新人脸图像信息及个人资料。MySQL数据库是基于关系型数据库搭建而成的管理系统,具有较高的灵活性及运行速度,是访问数据库最常用的标准化语言,体积小,成本低,开放源码,适用于本系统的数据库搭建。采用Java对MySQL数据库进行操作。连接数据库,加载驱动程序以调用Class.forName()函数,再调用DriverManager对象的getConnection()函数,得到Connection对象。创建一个Statement对象、PreparedStatement语句(预编译的语句)或CallableStatement对象(存储过程调用的语句)及一个SQL语句。调用excuteQuery()等函数执行SQL语句,在ResultSet对象中保存结果,调用executeUpdate()等函数执行SQL语句,不返回ResultSet对象的结果。对返回的ResultSet对象进行显示等处理,释放资源。
3 结束语
设计了一套基于嵌入式人脸识别的智能考勤系统,通过系统硬件结构、系统软件结构、数据库及APP的设计,将嵌入式系统与人脸识别技术有效结合,在安卓智能手机环境下用摄像头进行人脸图像信息采集,再将数据传输到云端服务器进行识别,实时反馈结果,实现了考勤签到打卡功能。本系统方便简洁,可用于多种生活场景(如高校、企事业单位等),具有良好的实际应用价值。