张海荣,王正玉,齐 梅,刘则芬
(安徽开放大学,合肥 230022)
近几年,随着各地平安城市、智慧城市等项目的推进,大量的监控摄像机投入使用。网络监控作为视频监控系统的重要组成部分,得到了广泛的应用,是社会治安防控的重要手段,对平安城市、智慧城市的建设有着巨大的促进作用[1-4]。动态人脸识别技术结合了人脸识别和动态视频监控技术,能够满足特定领域视频监控需要,成为当前研究热点之一。近年来,研究出现很多新的改进算法[5-9],如文献[7]以Resnet34 为基础网络,结合联合损失和恒等映射提出的动态人脸识别算法有效提高了识别效率。但传统人脸识别系统客户端与服务端的交互基本上采用HTTP轮询或者定时任务触发,需要客户端不断地与服务器建立HTTP连接,然后等待处理。这种不断反复请求解析的模式非常消耗资源,也导致了消息同步的延迟,甚至告警频率过高时,会造成数据丢失。数据延迟和丢失会带来极大的弊端,可能导致安保人员错失先机或发现不了问题,不利于处理突发状况。因此,有效解决人脸识别系统中告警数据推送是十分必要的。
随着HTML5 技术广泛普及,主流浏览器均对其具有较好的兼容性, 客户端和服务器之间的实时数据交换变得更加容易。 WebSocket是HTML5新标准中的通信机制[10-11], 能够实现稳定全双工实时通信。本文基于此设计了基于WebSocket的动态人脸识别系统,能够使服务端有信息及时主动推送给客户端,避免了反复解析协议和数据头信息重复发送,提高了信息交换效率和服务器使用率,有效解决了信息延迟[12-14]。
动态人脸识别技术是由人脸识别技术融合了图像处理技术和生物统计学理论形成的,是当前比较新的一项生物识别技术。该技术主要基于人的脸部特征,对输入的人脸图像或者视频流进行检测判断,进而对其识别的。通常动态人脸识别包括以下四个流程:
(1)人脸检测:指经检测算法从动态的场景中判断是否存在人像并分离出图像的过程。
(2)人脸追踪:对检测到的目标图像进行追踪。
(3)人脸特征提取:指对人脸进行特征建模的过程,是用来衡量图片相似度的,又称人脸表征。
(4)人脸识别:将要查询的人脸特征模板与过程(3)中所提取的待识别的人脸特征进行比较,设定阈值,当比较所得相似度超过阈值,则认为匹配成功。
动态人脸识别系统设计基于WebSocket协议实现。系统包括视频识别终端、人脸识别算法服务、人脸识别系统、消息服务等。图1为系统组成。
图1 系统组成
系统首先在web服务器上发布布控任务,随后通过摄像头捕获视频数据,经算法分析服务器中人脸识别算法进行人脸检测、追踪、特征提取及识别。最后将识别出的人像及预警结果经消息服务器主动推送至Web服务器进行实时显示和告警。图2所示为系统数据处理流程,其中框选部分为图像抓拍结果输出数据流程。
图2 数据处理流程
1.服务部署
在算法分析服务器上部署人脸识别算法服务;在Web服务器上部署人脸动态识别系统Web服务;在消息服务器上部署java消息服务,该消息服务采用支持WebSocket、AMQP和STOMP协议的Apache Apollo软件。
2.准备样本图像
将至少一个人像样本库上传至Web服务器,所述人像样本库中至少包含一个需要进行对比的样本人像。
3.建立服务连接,发布识别任务
Web服务器向算法分析服务器下发布控任务;Web服务器向消息服务器发送订阅消息请求并与消息服务器建立连接;Web服务器向算法分析服务器下发布控任务,指定一个人像样本库、指定摄像头、设定相似度阈值和发送识别任务指令。
如图3所示,(a)和(b)分别为HTTP协议和WebSocket协议的消息传送原理图,可以看到HTTP交互方式,要不断地建立和关闭HTTP协议,且HTTP是无状态性的,每次都要重新传输identity info(鉴别信息);而WebSocket只需要建立一次连接,直到你关闭请求,同时由客户端主动询问,转换为服务端有信息时主动推送。这就避免了反复解析HTTP协议和查看identity info信息,提高了宽带利用率和信息交换效率, 有效地实现了消息的及时性。
图3 消息传送原理
如图4所示,Web服务器向消息服务器发送订阅消息请求并与消息服务器建立连接,具体步骤如下:
图4 Web服务器与消息服务器之间的通信
(1)Web服务器调用WebSocket的初始化接口URL。
(2)Web服务器使用STOMP客户端库stomp.js中over方法,获取 STOMP 子协议的客户端对象,即消息服务器。
(3)Web服务器向消息服务器发起WebSocket连接请求并发送CONNECE帧。
(4)消息服务器接收Web服务器发送来的连接请求并与Web服务器成功连接。消息服务器接收Web服务器发送来的连接请求,并判断数据包数据格式和两端协议版本号是否匹配,匹配则接受本次连接请求,并与Web服务器成功连接;不匹配消息服务器则将错误通知反馈给Web服务器,Web服务器端找出并解决对应的错误,直至消息服务器与Web服务器成功连接为止。
(5)经过三次步骤4的连接请求并成功连接后,触发connectCallback事件,Web服务器与消息服务器之间形成TCP通道连接。
4.执行识别任务
算法分析服务器对目标人像与人像样本库中样本人像进行对比,并将对比结果发送给服务器。具体步骤如下:
(1)算法分析服务器接收摄像头抓拍的目标人像和Web服务器中的人像样本库中的样本人像,对目标人像和样本人像进行预处理操作,利用MTCNN多任务学习算法[15]提取图像人脸特征。人脸面部关键点坐标包括左眼、右眼、鼻子、左嘴角和右嘴角等坐标。
(2)通过卷积神经网络技术将待识别人像与对比样本人像进行特征匹配,匹配后得到的所有对比相似度值与Web服务器设定的相似度阈值进行比较,并将目标人像和对比相似度值大于或等于相似度阈值的人像样本库中的相关样本人像发送给消息服务器。若对比相似度值均小于相似度阈值,则仅将目标人像发送给消息服务器。
5.结果显示
消息服务器接收目标人像和对比结果,并主动发送给Web服务器,Web服务器显示目标人像和对比结果。随着摄像头不停地抓拍,通过上述步骤,Web服务器可以不停地显示抓拍的目标人像和样本库中的相关样本人像对比相似度值大于或等于相似度阈值的人像,从而实现动态人脸识别。
系统Web前端基于vue框架开发,后端采用Java语言。人脸检测及识别算法采用MTCNN多任务学习算法[15],具有更高的精度和实时性能。系统在设计实现之后,即部署在某产业园区进行测试。测试环境如下:服务器硬件配置为16核, 8 GB内存。服务器操作系统为Linux,开发语言是Java,编译环境为 JDK1.8,数据库使用Oracle 11.0.2.3数据库。客户端环境为Windows 10操作系统, 浏览器为Chrome 99.0.4844.84及其自带开发工具。
为保证比对人像库图片的高质量,人像库图片直接采集部门员工证件照,测试时间选择员工中午就餐时间,阈值设定0.8,其中识别准确率=TP/(TP+FP)*100%。TP指算法正确判定的识别数量,FP指算法错误判定的识别数量。具体测试结果见表1。
表1 系统测试结果
从表1可以看出,在不同大小人像库,系统均实现了较好的识别准确率;检测速度快,图片前后端传输零丢失,验证了WebSocket数据传输的稳定性和安全性。针对人像未识别情况进行分析,发现是测试过程中员工经过摄像头抓拍区一直处于低头状态,导致无法采集到人脸。此外,系统对浏览器兼容性进行了测试,结果表明该系统具有较好的兼容性,支持新版Chrome、IE11、火狐等主流浏览器。综上所述,该系统运行稳定,识别率高且识别出的人像信息实现了实时显示和告警;数据传输稳定安全,实现图片传输零丢失;具有较好的兼容性,满足了实际生产需求。
图5为系统最终运行界面,界面下方展示为实时抓拍区,右侧展示为抓拍识别区,中间实时播放视频监控影像。当摄像头抓拍识别到目标人像时,消息服务器将实时推送数据至抓拍区。当人像对比相似度高于设置阈值时,服务器同时推送至抓拍识别区并产生预警信息。
图5 系统运行界面
本文研究设计实现了基于WebSocket的动态人脸识别系统,其工作流程如下:Web服务器向算法分析服务器下发识别任务;Web服务器向消息服务器发送订阅消息请求并与消息服务器建立连接;算法分析服务器对抓拍的人像与人像样本库中的样本人像进行对比,结合设定阈值,将对比结果发送给消息服务器;消息服务器接收对比结果,并主动发送给Web服务器,Web服务器显示结果。Web服务器通过WebSocket协议与消息服务器建立全双工(full-duplex)通信,避免了反复解析协议和数据头信息重复发送的问题,提高了信息交换效率和服务器CPU使用率, 实现了人脸识别消息的及时性,有效避免了因数据滞后等问题,满足了实际应用需求。下一步,将研究根据人像识别位置绘制人像轨迹,更加便捷地识别出人员运动轨迹。