热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于网络视频监控的人员考勤系统设计

程序IT圈学习编程技术,关注这个公众号足够了本文是由公众号大数据AI之家投稿,转载需联系作者。一.选题背景考勤系统是现代机关单位和公司必备的系统。现在使

程序IT圈

学习编程技术,关注这个公众号足够了

 

              

本文是由公众号大数据AI之家投稿,转载需联系作者 。                    

一. 选题背景

考勤系统是现代机关单位和公司必备的系统。现在使用最多的考勤系统是打卡系统、指纹考勤系统、人脸考勤系统等。打卡系统是最落后的机械式考勤,容易发生丢卡、忘带等现象,也容易出现非本人打卡情况。指纹系统和人脸系统需要识别特定员工指纹或面部进行考勤,虽然杜绝了非本人代替考勤情况,但需要员工来到指定位置做指定动作才能完成,不够自然,而且在人多情况下效率低下,接受度偏低。

除此之外,我们同时考虑到公司企业和居民区的安防问题。诸如入室盗窃等安全问题一直没有得到有效解决,现在很多靠增加警卫人员和门禁系统相结合的方式提高安全度,随着电子信息技术的不断进步,人工警戒将逐渐被视频监控取代。

网络视频监控技术,是利用网络摄像头(IPC)拍摄需要监控的区域,通过互联网传输数据,实时地传送到视频监控平台,实现异地的视频监控。有了网络视频监控技术,人们坐在监控室就可以实时看到监控区域的动态变化,并且能够将监控录像存储在数字硬盘录像机(DVR)或网络硬盘录像机(NVR)中,实现回放、管理等功能。

然而,网络摄像头只是一个被动的监控和取证工具,需要人来查看监控画面,才能辨识出事件的发生。而如此庞大的监控摄像头,根本无法配备足够的人力进行人工监控,所以视频监控只起到了录像的功能。只有发生了安全事故之后,才会调查监控录像查证,做事后分析,并没有起到监控预警作用。

由此应运而生的是针对特定应用场景的智能视频监控系统。我们把计算机视觉、视频图像处理、深度学习等技术运用到视频监控技术当中,自动判定监控画面中是否出现特定事件或人物,做到主动进行预警等功能。

我们提出设计一个基于网络视频监控的人员考勤安防系统,把近年来兴起的基于深度学习的人脸识别技术融入到智能视频监控系统中,利用计算机视觉和视频图像处理技术,检测、识别特定的员工,根据其进出公司情况进行考勤,与此同时,系统识别非注册人员(外来人员),根据身份判别结果进行主动预警等。

二. 工作进展

1.建立图像数据集:网络摄像头通过应用层RTSP协议传输数据,在PC端可以调用opencv库的videocapture函数,取DVR里的数据流,就获得监控视频的实时数据。在此基础上,本文利用FIT楼里的IPC采集行人数据,选取了7位实验室同学分别经过摄像头,并在摄像头下停留几分钟时间。为建立数据集,每位同学需要做一些特定动作,我们采集每位同学的仰视、平视、俯视图像,以及每位同学的左右扭头状态图像以扩充数据集,并利用人脸检测器检测裁剪脸部图像。本文根据检测器的矩形框面积大小筛选较为清晰的人脸图像,也同时控制了行人和摄像头之间的距离范围,如图1。每位同学600-700张图像,一共4000多张,图像分辨率为1280*720,人脸分辨率为100*100左右,只采集了白天数据。

 

图 1 人脸数据集图像

2.人脸部位的检测:人脸检测有基于传统特征算子的检测器,比如opencv自带的Harr算子+adaboost级联分类器做的人脸检测器,还有基于深度学习的目标检测器,比如Faster R-CNN、SSD,以及最新的表现比较好的YOLO V3。

本文首先测试了opencv自带的人脸检测器,由于检测准确度较低,改用MTCNN算法进行人脸的检测,这是2016年的一篇paper,应用比较广泛,和YOLO一样将检测问题当作回归问题处理,在卷积网络里进行训练优化类别以及物体位置。他首先建立了图像金字塔,然后建立了P-Net、R-Net、O-Net三个CNN模型进行级联预测以提高精度,图像的标签是16维的向量,设计Loss,回归训练得到人脸的位置和5个关键点的位置,如图2。我们在python平台下,利用Tensorflow框架复现MTCNN算法,并应用在本实验中。

 

图2 MTCNN网络结构

3.识别网络搭建和训练:识别模块是系统的核心部分,深度卷积网络在图像识别方面取得了非常好的成就,其结构由卷积层、pooling层、全连接层堆叠而来。卷积网络模型采取梯度下降法最小化Loss,使用反向传播方式调节网络参数。典型的CNN模型有AlexNet、ZFNet、VGGNet、GoogleNet等,这些模型都分别在ILSVRC比赛中取得了骄人成绩。在人脸识别方面,优秀的卷积网络模型有Face++、Deepface、DeepID、FaceNet等,其准确率在一些公开数据集上都达到了94%以上。其中,FaceNet将输出层特征进行二范数归一化,然后提出Triplet Loss函数,以减小类内距离、增大类间距离,从而达到识别效果,在LFW数据集上达到了99%的准确率。

本文将检测后的人脸图像裁剪并归一化大小处理,然后输入到搭建的卷积网络模型,如图3。做实验时发现softmax层输出的概率都比较高,于是将末层的神经元输出归一化到0-6之间,然后经过softmax函数分类,得到了分布较为明显的类别概率。

 

图 3 身份识别网络结构

4.系统的评价测试:为测评系统的性能指标,本文截取了13个视频序列进行测试,其中3个是注册人员的视频,而其余10个是非注册人员(外来人员)的序列。通过调节输出概率的阈值进行判决身份,经实验测试,在80%左右时效果较好。这时,我们计算误检率(将非注册人员错误判定为注册人员的概率)和正确识别率(注册人员正确识别的概率)。统计序列共414帧,注册人员189帧,有效133帧,非注册人员225帧,将非注册人判为注册人员数量为7,错误识别数量为2,所以误检率为3%-4%,正确识别率98%左右。在实时性方面,人脸的检测和识别时间总和为0.2s-0.3s之间,基本满足系统的实时性要求。

5.基于视频分析的多帧判别:在每一位人员进入IPC区域内,我们只利用了每一帧的图像进行识别判别。这种方法会增加误检率,造成识别结果的失败。我们需要分析错误识别的数据,以优化系统性能。如图4,纵坐标是识别结果的置信度,横坐标是两个人分别经过一次IPC时的帧数,实线代表的是我们的一个注册人员(whl),点线代表我们的系统识别错误的一个外来人员(other7)。 

图 4 置信度曲线

通过图4,我们系统识别错误的原因在于第4帧other7的置信度大于80%,超过了我们设置的阈值,将外来人员判定为我们的注册人员。但是分析发现二者的概率分布有很大差异,为此,我们提出一种基于视频分析的多帧判别方式,通过分析高置信度出现的频率和高置信度的连续性等信息进行综合判别,以减少误检现象的发生。

最后,推荐一下昨天的读者送书福利:Python神经网络编程 | 专场送书活动 (小程序自动开奖),时间截止到今晚8点,不要错过了哈 ~

喜欢本篇文章,希望您能动手转发 ~~


推荐阅读
author-avatar
徐韵茜YUNXI
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有