您好, 访客   登录/注册

基于ARM智能视频监控人脸识别系统设计

来源:用户上传      作者:

  摘要:针对传统视频监控系统存在的不足,提出了一个基于ARM的人脸识别智能视频监控系统。本系统以Raspberry Pi为硬件平台,由视频捕捉设备获取视频流,采用HOG算法检测出人脸区域。通过WiFi模块上传给服务器,服务端程序使用ERT算法修正脸部姿势,采用FaceNet算法从对齐的人脸图像中提取128个Embedding特征测量值。通过与数据库中已存在的人脸特征值信息进行匹配,以实现人脸识别。检测到未知人员时通过微信报警。经测试该系统具有较高的稳定性和实用性。
  关键词:人脸识别:HOG;ERT;FaceNet
  0引言
  自美国“9.11”事件和西班牙马德里列车爆炸案、英国伦敦地铁大爆炸等恐怖袭击发生后,世界范围内对视频监控系统的需求也呈现了爆发式增长。各国部署的摄像头越来越密集,监控系统也日益庞大,全球视频监控市场获得了长足的发展。据Markets And Markets预测。全球视频监控市场将从2013年的139.8亿美元增加至2020年的420.6亿美元。随着市场的快速增长、数据的积累、硬件能力的提升、算法的优化,视频监控技术需要从“高清化”向“智能化”发展。
  视频监控的主要目标是人。所以人脸识别技术显得至关重要,它是后续各种更高级功能的基础。从20世纪50年代兴起了人脸识别的研究。作为一种重要的生物特征识别技术。一直被研究学者所关注。人脸识别技术在安防和金融支持等方面有许多实际的应用,如视频监控、智能支持、访问控制等,是目前机器学习和模式识别中最热门的研究方向。
  在嵌入式系统中应用计算机视觉(ComputerVision,CV)技术至今为止存在着多方面的难题。其中,如何使用嵌入式设备有限的计算资源实现例如人脸识别和姿态估计等较为复杂的功能。本系统针对以上问题,进行了初步的研究和探索。提出了以Raspberry Pi为硬件平台,以Raspbian为操作系统,通过HOG算法从摄像头的视频帧中提取检测到的人脸区域,通过WiFi模块将图像上传至服务器,在服务器上利用ERT算法将图像进行人脸对齐,通过采用FaceNet网络从修正过的人脸图像中提取128个嵌入人脸空间的特征测量值,并且与数据库存在的特征点进行对比,当两个特征向量之间的距离达到设定阈值0.6即可认为是同一人。本系统在Pi-Motion硬件平台上取得了较为理想的功能,是深度学习在实际应用中的一次有益尝试。
  1 系统功能论述
  本文的研究方案是设计一个基于Raspberry Pi平台下,经济实用、性能稳定和操作简单的远程人脸识别系统。该系统可对监控区域内人员进行实时的身份识别,实现智能监控的目的。该系统主要具有以下几个功能。
  (1)人脸检测功能。摄像头在监控范围内发现人脸信息会上传至服务器,并实现初步预警,同时也为后续身份识别做准备。
  (2)视频流无线传输功能。解决传统視频监控通过布线方式的高安装成本。可以在移动端或PC端方便查看。
  (3)人脸识别功能。能识别闯入的未知身份人员,自动提示用户处理。
  (4)微信报警功能。如果监控区域被非法闯入自动记录,并启动微信报警。
  2 系统算法设计
  在实际应用场景中人脸识别需要考虑受到人面部表情、装扮、姿态、角度和遮挡等原因引起的类内变化,及来自外界光照、背景等不同引起的类间变化,这两种变化的分布是高度复杂且非线性的。基于浅层学习的传统人脸识别方法,在面对类内和类间这两种变化的复杂分布和非线性的情况无法达到理想效果。本系统的人脸识别算法基于深度学习框架,可以学习到对于光照、表情、角度等不变的特性。可以用来解决人脸识别中的类内和类间的变化分布这一难题。本系统算法主要包含人脸检测、人脸对齐、人脸识别三个主要流程。其算法如下。
  2.1人脸检测
  人脸识别算法的第一步首先就是要从图像序列中检测出人脸部分,通常人脸检测的算法目前主要有PCA算法、卷积神经网络算法、Adaboost等算法。本系统主要采用性能较好的方向梯度直方图(Histogram 0f Oriented Gradients,HOG)特征检测算法。通过HOG特征训练SVM分类器,以实现从视频中人脸检测。
  2.1.1 HOG特征计算过程
  2.1.1.1 颜色空间归一化
  (1)图像灰度化。将RGB图像转化为灰度图,其式如下:
  H(i,j)=0.299×R(i,j)+0.578×G(i,j)+0.114×B(i,j)。(1)
  (2)Gamma校正。为了减少光照因素的影响,首先需要将整个图像进行正则化。实验证明丫参数为0.5时有较高的性能提升。Gamma正则化公式如下:
  H(x,y)=H(x,y)y。(2)
  2.1.1.2单个cell单元计算梯度
  (1)将人脸的灰度图像以8×8的像素邻域网格(block)作为采样窗口,以没有重叠的方式遍布整个人脸。
  (2)将每个block上以cell(将block分为4个4×4的块)为单位计算梯度方向和幅值。方法用中心对称梯度算法[-1,0,1],梯度方向和幅值的计算公式为:
  公式中的Gy(x,y)表示像素点(x,y)的水平方向梯度,Gy(x,y)表示像素点(x,y)的垂直方向梯度。其计算方法如下,其中H(x,y)为点(x,y)的像素值:
  Gx(x,y)=H(x+1,y)-H(x-1,y),(5)
  Gy=H(x,y+1)-H(x,y-1)。(6)
  2.1.1.3 块内归一化梯度直方图   (1)每一个cell内的相同梯度方向的幅值按照权值为1相加。然后将block内各cell的直方图连成一个向量得到HOG特征。
  (2)将block内的直方图向量进行一次L2-norm标准化,设v是标准化前的特征向量,侧||v||表示k范数,其中,k=1,2,令ε为一个很小的标准化常量以防止除数为0:
  (3)经过L2-norm后将v的阈值设置为0.2,将v≥0.2的分量赋值为0.2再做一次L2-norm标准化:
  (4)将所有标准化后的直方图向量组成一个n×m的矩阵,用于表示人脸HOG特征,其中,n是block内直方图向量维数:m是整个人脸要计算的block个数。
  2.1.2 基于HOG的SVM分类器训练过程
  (1)提取正负样本的HOG特征。
  (2)投入SVM分类器训练,得到model。
  (3)由model生成检测子。
  (4)利用检测子检测负样本,得到hard example。
  (5)提起hard example的HOG特征并合并第一步中的特征一起投入训练,得到最终检测子。
  2.2人脸对齐
  本系统采用基于回归树的ERT算法完成人脸对齐。这种方法通过建立一个级联回归树来逐步修正人脸关键点的位置。在已知这些关键点的前提下就可以通过仿射变换使得人脸在图片中居中,使得下一步人脸识别的结果更加精确。其算法核心是使用两层的回归来建立数学模型。
  按照这样的方式不断进行迭代。当第一层回归级联层数设置为K层时,就会产生r1,r2…,rk这些回归器。这K个回归器就是通过训练所得到的回归模型。
  在第二层回归。也就是r=t内部也是一次回归过程,采用的是梯度提升树(Gradient Boosting Tree)的方法来得到一系列的回归树最终完成第二级的回归。
  每一个回归树的每一个叶子节点上都存储着一个残差回归量,当输入落到了一个节点上时,就将残差加到改输入上,起到回归的目的,最终将所有残差叠加在一起,最终得到人脸的关键点。
  2.3人脸识别
  本文中关于人脸识别的部分采用FaceNet的卷积神经网络的方法,其主要思想是把人脸图像映射到一个多维空间,比较两张图像所对应的特征的欧式距离直接对应两个图像的相似度。同一个人脸图像的空间距离比较小,不同人脸图像的空间距离比较大。这样通过人脸图像的空间映射就可以实现人脸识别。
  FaceNet中采用基于深度神经网络的图像映射方法和基于Triplet Loss的损失函数训练神经网络,网络直接输出为128维度的向量空间,其结构如图1所示。
  其主要思想如下:
  (1)对人脸样本图像经过深度学习框架进行特征提取。主体模型采用一个深度网络Inception-ResNet。
  (2)对特征进行L2归一化,使得特征的二范式满足式(12)条件,使得所有图像特征都映射到一个超球面上,规避样本的成像环境带来的差异:
  (3)经过L2归一化后得到图像的128维嵌入空间特征向量(embedding),采用Triplet Loss作为损失函数进行模型优化,更新embedding。
  3 系统设计与实现
  系统硬件以YAHBOOM公司的Pi-Motion作為开发平台,子模块主要包括电源、USB摄像头、WiFi通信模块、BST-AI拓展版、Raspberry Pi开发板、扬声器、顶部舵机、底部舵机,如图2-图5所示。
  硬件平台以Raspberry Pi为核心。图像采集通过USB摄像头。在实际监控环境下,侧脸人像的识别要远远难于正脸识别。而且可调角度的监控摄像头可以获得更多可视区域。所以硬件平台采用了两个舵机,为摄像头提供了两个自由度。Raspberry Pi可通过Adafruit-PCA9685驱动操作GPIO接口,控制BST-AI拓展板以实现控制舵机。扬声器可提供报警功能,WIFI模块完成视频流、控制指令、识别图像的传输。
  系统包含了人脸检测、人脸识别、人脸追踪、微信报警、语音报警等功能。其主要的人脸识别功能的流程如图6所示。
  Raspberry Pi移植了Paspbian操作系统。以及为控制舵机及采集视频图像所需的PCA9685驱动、V4L2驱动等。
  因为Raspberry Pi有限的算力和存储空间,所以本系统只有将人脸检测部分的程序移植到Raspberry Pi上,以及其所依赖的Dlib等模块和运行环境。
  Raspberry Pi启动时会运行/etc/init。d/目录下的服务脚本文件从而运行监控和控制舵机的服务端等两个进程。当摄像头采集到图像后会采用mjpeg-stream程序实现实时的网络监控。
  本系统中的HOG算法、ERT算法和FaceNet的训练过程放在上位机完成。随后将训练好的HOG+SVM分类器模型移植到Raspberry Pi硬件平台上。
  下位机负责完成视频采集和通过HOG算法检测人脸,如视频帧中含有人脸信息则将人脸部分通过WiFi模块上传给服务器,服务器会根据人脸部分通过ERT算法和FaceNet网络提取人脸的128个特征点信息与MySQL数据库中的已存在的人脸信息进行匹配。当两个特征值距离小于设定阈值就可以认为是同一个人,如果出现未知人脸信息,上位机就通过itchat模块发送微信报警。
  4 系统实验结果
  上位机硬件环境为:CPU i7-4720HQ,内存16GB 1600MHz双通道。GPU NVIDIA GTX 970M。主程序采用Python3编写,图像界面采用PyQT编写。
  系统测试采用LFW人脸库和测试人员自建的人脸库混合,建立了一个100张人脸照片的小型人脸库。传统的嵌入式平台将人脸特征信息存储在本地,存储的记录数量受限,且查询速度较慢,无法实现信息共享,本系统将每个人脸的128个特征点信息存储在数据库服务器中,能够快速的匹配人脸信息,在测试中准确率达到97%。
  5 结束语
  本文主要设计并实现了一种基于Raspberry Pi平台下人脸识别智能监控系统。阐述了系统的总体设计方案。本设计首先在视频监控中检测人脸,并将视频帧中含有的人脸信息通过WiFi模块上传给服务器,服务器会根据人脸部分通过ERT算法和FaceNet网络提取人脸的128个特征点信息与数据库中的已存在的人脸信息进行匹配,解决了嵌入式平台算法不足和存储空间有限而无法实现实时的、大量数据下的人脸识别的问题。实验验证了系统的可行性,为智能视频监控系统的设计提供了一种解决方案。随着监控行业的不断发展。本文设计的人脸识别智能监控系统将有广泛的应用前景。
转载注明来源:https://www.xzbu.com/8/view-15125477.htm