APP下载

远程视频实时人脸识别系统设计

2018-04-02姜涛朱志宇刘润邦

电子设计工程 2018年3期
关键词:人脸识别人脸分类器

姜涛,朱志宇,刘润邦

(江苏科技大学电信学院,江苏镇江212003)

随着信息技术的发展,人脸识别技术逐渐进入人们的生活[1]。如何精确判断人脸身份信息是具有挑战性的课题,吸引了一大批研究者参与。随着过去几十年间研究热情的高涨,越来越多的识别算法[1-2]和相关学术论文如雨春笋般出现。

但是以往对人脸识别的研究主要是集中于算法上,但在实际应用中有诸多因素需要考虑,例如视频采集端的效率、人脸识别的时效性、系统的扩展性等等。如何统筹兼顾这些问题是系统得到良好性能的关键。随着科学技术的发展以及物联网观念的提出,新时代的视频监控系统越来越趋于小型化、智能化以及网络化[3-4]。而嵌入式正好符合这一趋势,一般ARM处理器为32位且性能十分强大,用于视频的采集和传输工作比较可靠。经试验,在嵌入式ARM端进行视频采集并进行远程传输具有较高的效率,但是一旦进行复杂的图像处理将会使得实时性得不到保证,计算能力相比于PC机较弱,所以在PC端采集到视频流并进行复杂的算法计算以满足实际的需求。

1 基本结构及工作原理

远程视频实时人脸识别系统的设计,集视频前端和显示终端为一体。视频前端采用搭载了linux操作系统的三星公司ARM芯片作为开发环境,外部接有UVC摄像头和无线网卡等。为了减轻CPU的工作压力,UVC摄像头自带DSP芯片自动压缩采集到的图像为MJPEG格式,然后再将无线网卡设置为AP热点模式而无需路由器的介入,并通过它来建立起一个视频前端服务器,用以接收控制信号和发送视频。显示终端基于Qt+OpenCV的开发环境,首先接收视频前端传来的视频流并进行图像的预处理,并结合相应算法实现最终的视频监控以及人脸识别等功能,总体硬件框架如图1所示。

图1 总体硬件框架

2 视频前端部分设计

2.1 硬件部分选型

视频前端采用三星公司的ARM9系列S3C2440作为处理器,工作频率可达400 MHz,完全能够满足高效的视频采集和视频传输要求,同时该处理器也内置各类控制器,对于引脚的控制十分方便,易于开发。

摄像头模块采用百问网公司的UVC摄像头,它既可以支持USB接口,也可以支持CMOS接口。USB模块上集成了DSP芯片,可以自动将图像压缩成MJPEG格式从而避免了软压缩的缺陷,减少CPU的压力从而大幅提高性能。CMOS模组为OV7740,最大分辨率640*480。

无线网卡选用美国ATHEROS AR9271高阶芯片,材料全部采用知名供应商(ATMEL,村田,海华等),且获得了FCC,ROHS,支持IEEE802.11B/G/N协议,传输速率相对较高。

2.2 软件部分设计

视频前端软件部分设计需先进行uboot移植,linux内核移植和根文件系统的制作,同时根据相应要求编写或调试相关驱动程序以满足外设要求,最后编写上层应用程序。操作系统采用Linux 3.4内核。如图2是对内核的配置工作,内核支持的菜单项更加容易操作Makefile中的模块,删除不必要的驱动模块从而缩小体积和加快速度。

图2 Linux内核裁剪

新版本的内核中支持了USB总线的框架,将通用层包装起来,差异层提取出来以供修改,大大减少开发周期,设计使用的摄像头驱动程序是基于V412框架[5]的视频设备标准的,其为应用层提供了函数调用的基础。当接入设备时,会触发硬件中断,内核会去识别它并且根据其设备描述符找到与之匹配的设备驱动程序,从而可以在应用层使用底层函数接口来操作摄像头硬件。视频的采集流程如图3所示。

图3 视频采集流程图

在采集到视频数据后需要发送到上位机去显示,在网络传输部分采用TCP协议,通过socket编程使得视频前端作为服务器端,上位机作为客户端来交互地传递数据。视频传输流程如图4所示。

3 显示终端部分设计

3.1 Qt+OpenCV的开发环境

Qt Creator是Qt开发的轻量级跨平台集成开发环境,其包含了一系列高效的创建和测试工具,可以很方便地利用各种控件做出友好的界面。

OpenCV用于视觉领域,是一款跨平台开源库,内部代码可免费查看和修改。其中有许多模块可以帮我们更好地进行图像处理,也可以跟踪进相应函数了解算法流程。本设计在Qt Creator中调用OpenCV的相应库实现视频的显示和人脸识别等功能。

在界面中用到一个Qlabel类作为静态图像的显示容器,然后结合Qtimer类的定时器来实现图像的不断刷新,并且给出QPushButton类利用信号与槽机制来实现视频的打开、关闭、人脸识别和手工/智能录像等功能。

图4 视频传输流程

3.2 人脸识别方法

3.2.1 人脸检测

本系统选取基于目标检测方法来进行人脸检测。首要工作就是根据需要训练样本得到低级分类器,再将多种低级组合成高级分类器。得到高级分类器后就可以用来进行检测,并将结果返回。但是由于物体距离的远近会导致目标区域的大小不确定,所以分类器设计时也该可以随尺寸变化。其可以用不同比例的扫描窗口来达到这个目的。

具体检测步骤如下:

1)使用Haar特征检测;

2)使用积分图对haar特征求值进行加速;

3)使用Adaboost算法实现分类器的由弱转强;

4)将得到的强分类器连接起来以达到更高的精确度。

文中使用OpenCV自带的级联分类器harrcascade_frontalface_alt2.xml,它能很好地检测人脸,使用CascadeClassifier类的Load函数对其进行加载,然后再进行人脸检测。

3.2.2 人脸识别

经过之前的人脸检测后将会得到人脸区域的图像,在经过图像预处理之后就可以使用特征脸(PCA)的方法进行人脸识别。

在识别之前还需要创建人脸库并进行训练,本文选取了10个人的10幅图片来进行训练,即每人选取不同姿态、表情和光照的尺寸为100*100的正面人脸图像。OpenCV的一系列函数可以大大简化了人脸库的创建和加载工作,其代码如下:

具体识别步骤如下:

1)创建人脸库;

2)读取库文件并训练;

3)把所有的训练数据投影到PCA子空间;

4)把待识别图像投影到PCA子空间;

5)找到训练数据投影后的向量和待识别

图像投影后的向量最近的那个。

3.3 人脸识别系统实现

人脸识别流程如图5所示,本系统中首先提取视频前端发来的数据,并加载训练好的人脸检测分类器以及训练好的人脸识别库。

图5 人脸识别流程

为了更好地检测,需要先对图像进行灰度化处理,其采用OpenCV中的cvtColor函数,该函数可以对色彩进行转化。接着进行直方图均衡化处理,直方图均衡化采用OpenCV中提供的equalizeHist函数,它可以增强图像对比度。总结以上两个处理,我们先利用cvtColor将图片转化为灰度图,再将灰度图对比度提高,可以更好的区分图像的明暗部分,使图片更加易于级联分类器分析。

经过图像预处理后,可以开始进行人脸检测了。本文用新版本的detectMultiScale函数,并根据需要传入相应的参数来调整检测效果,它其实是用到训练好的高级分类器来检测所需目标并返回给一个矩阵。函数将会用不同大小的扫描窗口在图像上进行搜索,每次都会对图像中的重叠区域进行检测与组合。在获得人脸区域后将其进行尺寸上的调整并与训练好的人脸库进行对比,判断阀值大小从而确定个人身份信息,若不存在于事先设定好的人脸库中则报警和开启自动录像功能。

4 实验效果分析

本次实验主要是为了验证该远程视频人脸识别系统的相关性能,我将分别从以下几个角度来进行验证:正脸(单人与多人)、距离远近、光照干扰、局部遮挡和实时性。

单人/多人检测与近距离/远距离的人脸识别实验效果很理想,基本可以无误地识别所有出现的人脸。对于局部遮盖情况下的人脸识别,在不遮盖超过三分之一人脸的情况下也可以准确的识别出来。光照等环境因素对人脸识别的影响比前几种稍大,总体的人脸检测精度接近95%,人脸识别达到86%。在实验过程中打印出人脸识别所用平均时间约等于140 ms,实时性得到保证。

同时在上位机上也添加了智能化的功能,例如在监控区域有人出现时可以识别并显示其身份信息,在遇到陌生人时系统会开启自动报警和智能录像等功能。图6为视频前端部分展示,图7为远程显示客户端展示。

图6 视频前端部分展示

图7 远程显示客户端展示

5 结 论

本系统基于嵌入式ARM设计实现了视频采集和传输前端,PC作为接收、处理和显示终端,实现了一种高效的远程视频实时人脸识别系统。系统抗干扰能力强,实时性也完全可以保证,该系统可以推广到视频监控、人脸识别和机器人视觉等领域。但是人脸识别的准确度较复杂的环境下会有所降低,所以还需要对人脸识别算法进行深入的研究以使得系统更加完善。

参考文献:

[1]卜秋月.基于OpenCV的人脸识别系统的设计与实现[D].长春:吉林大学,2015.

[2]严利民,李跃.基于OpenCV的形态处理人脸检测[J].工业控制计算机,2014,27(9):79-81.

[3]杨冰.基于ARM的视频监控取证系统的研究[D].西安:西安工业大学,2013.

[4]苟志坚.基于ARM的远程视频监控系统的研究与设计[D].长沙:湖南大学,2014.

[5]王飞,孔聪.基于V4L2的Linux摄像头驱动的实现[J].电子科技,2012,25(2):86-92.

[6]陈志恒,姜明新.基于OpenCV的人脸检测系统的设计[J].电子设计工程,2012,20(10):182-185.

[7]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2012.

[8]白薇薇.基于ARM和Linux的嵌入式视频监控系统[J].电脑知识与技术,2016,12(1):233-234.

[9]阮琳琳.基于人脸识别的会所智能监控系统的研究[D].南京:南京理工大学,2012.

[10]卢灵,周贤军.基于WiFi的嵌入式视频监控系统设计[J].电视技术,2013,37(1):157-168.

[11]王越,庞振营,王帅,等.嵌入式无线视频监控系统的设计与实现[J].重庆理工大学学报:自然科学,2015,29(4):67-72.

[12]黄佳.基于OpenCV的计算机视觉技术研究[D].上海:华东理工大学,2015.

[13]王爱侠.基于OpenCV的人脸检测系统实现[J].软件导刊,2014,13(11):139-141.

[14]张维笑.基于ARM9 S3C2416的嵌入式人脸检测系统[J].工业控制计算机,2014,27(12):25-26.

[15]孙志.基于OpenCV的人脸识别算法实验平台研究与实现[D].长春:吉林大学,2014.

[16]何荣.基于OpenCV的人脸识别系统设计[D].广州:华南理工大学,2013.

猜你喜欢

人脸识别人脸分类器
人脸识别 等
有特点的人脸
揭开人脸识别的神秘面纱
三国漫——人脸解锁
BP-GA光照分类器在车道线识别中的应用
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
基于类独立核稀疏表示的鲁棒人脸识别
马面部与人脸相似度惊人
长得象人脸的十种动物