未来智库 > 科技创新与应用 > 基于Face++人脸识别系统的设计与实现

基于Face++人脸识别系统的设计与实现

发布时间:2018-12-16 16:07:00 文章来源:去哪儿海航机票机票预订    

董圣华 马丽洁

摘 要:文章通过研究和学习,寻找出一种合适的人脸识别算法平台,能快速简单并且准确的实现人脸识别,Face++平台成为我们的首选,最终我们借助Face++的Python SDK的API接口设计并在搭载Raspbian的树莓派上实现了人脸识别功能。

关键词:Face++;人脸识别;设计与实现

中图分类号:TP393 文献标志码:A 文章编号:2095-2945(2018)21-0044-02

Abstract: In this paper, through research and study, we find a suitable face recognition algorithm platform, which can quickly, simply and accurately implement face recognition platform become our first choice. Finally, we design and implement face recognition on raspberry pie with Raspbian with the API interface of Python SDK of Face++.

Keywords: Face++; face recognition; design and implementation

随着互联网技术的疾速成长及大数据时代的到来,信息安全问题也随之提上议程,怎么快速高效率的进行身份验证和识别,仍旧是成为人们日渐重视的问题.原有的基于密码,验证码和磁卡的身份识别认证方法都存在着明显的缺陷,易遗失、易损坏、易破译等等,已经完全不能跟上时代的发展和达到人们的需求。在这种时代背景下,生物识别技术也逐渐进入人们的视线就是通过固有的生理特征或行为特征进行识别人体, 它比传统的身份认证更有效、更可靠和更安全,近年来得到广泛的研究和应用。如今社会,生物特征识别技术应用最广泛的是对指纹、虹膜和人脸进行识别。其中最热门的被关注最多的就是人脸识别了,人脸识别听起来你会认为他已经没有什么大的突破,是比较传统的并且没有发展空间的,然而,伴着计算机的普遍推广应用,云计算能力和算法的大转折,真正的爆点已经开始,国内就有著名的北京旷世公司旗下的产品Face++云端识别平台,过不了几年,我相信对人脸的登陆功能及人脸的搜寻功能都将会实现于具体应用。

本文通过研究和学习,寻找出一种合适的人脸识别算法平台,能快速简单并且准确的实现人脸识别,Face++平台成为我们的首选,最终我们借助Face++的Python SDK的API接口设计并在搭载Raspbian的树莓派上实现了人脸识别功能。

1 实现项目需要具备的条件

硬件:树莓派一台。本项目使用Raspberry Pi 2 Model B,8GB或8GB以上内存卡一张,树莓派专用摄像头或USB摄像头一个。

软件:树莓派系统镜像,Face++SDK,OpenCV,科大讯飞语音合成SDK.Python运行环境的搭建。

2 环境搭建步骤

步骤如下:

2.1 下载树莓派系统镜像

拿到树莓派以后我们要搭建树莓派的系统环境,才能进行后续的开发工作,到树莓派的官方网站:https://www.raspberrypi.org/下载与树莓派相吻合的系统镜像,(本项目搭载Raspbian来进行开发)拿到镜像包以后解压出来以.img为后缀名的系统镜像。

2.2 给树莓派烧写系统镜像

把内存卡插入电脑,(本项目以Ubuntu Linux平台烧写镜像)使用lsusb命令找到内存卡设备在Linux系统中的设备号,本项目进行时设备号为/dev/sda5,之后用Linux系统中的dd命令来烧写:sudo dd if=raspberry.img of=/dev/sda5 bs=1M, 在此解释一下dd命令的三个参数,if:intputfile(输入文件)指要写入设备的文件,of:outputfile(输出文件),指的是要把输入文件写入的设备,bs:blocksize( 字区大小)设置同时读写的字节数。上诉步骤完成之后你就可以把内存卡插入树莓派启动系统了。

2.3 搭建OpenCV环境

由于Raspbian系统自带Python开发环境,所以,接下来要进行OpenCV的环境搭建。对于搭建OpenCV环境,不管是Windows、Linux、MacOS,OpenCV都有详细的教程,本项目使用的系统Rasbian是Linux,具体教程参考OpenCV官方教程,在此不再赘述。

2.4 下载Face++官方的SDK套件

首先需要在Face++官网注册账号,然后拿到Face++开发权限的Key和Secret之后就可以下载SDK进行开发了,Face++提供了Python、Java、PHP、C,等编程语言的SDK供开发者选择,http://old.faceplusplus.com.cn/dev-tools-sdks/,本项目使用PythonSDK来进行开发。

2.5 下载配置科大讯飞的TTS开发套件

与Face++相同,你首先要去科大讯飞的官网注册一个账号拿到Key和Sercet以便于后续开发工作。科大讯飞依然提供了诸多的编程语言支持和平台支持,值得一说的是,科大讯飞在旧的版本有是支持树莓派的单独的开发套件的,但是在新版本中移除了他们。所以本项目依然在用老的版本。如果你想要使用新的版本在树莓派开发的话可以选择科大讯飞的RESET的方式来进行开发。拿到开发套件以后,在配置文件中配置好自己的賬号和密码。但是科大讯飞提供的语音转换是C语言写的,上述内容中我们提到过本项目是基于Python语言开发的,所以我们需要发挥“胶水语言”的特性,使用Python脚本来调用C语言。通常我们要运行C语言的程序需要把C语言编译成二进制的可执行文件,但是如果我们使用Python调用C语言的话是不需要编译为可执行二进制的,而是需要编译以.so为后缀名的动态库,所以我们用命令gcc -o libtts.so -shared -fPIC tts_sample.c生成了动态库以后就可以调用了。

调用方法的py_to_c.py如下:

(1)/usr/bin/evn python2

(2)#coding:utf-8

(3)import ctypes

(4)openC=ctypes.LoadLibrary()

(5)openC.begin_tts()

第一行是指定了解释器说明我们要用Python2来解释我们的脚本,第二行指定了编码方式是使用UTF-8编码方式,这样做的目的是为了我们编写脚本时不会因为有中文而报错,由于上述代码中没有用到中文,所以不加第二行也可以。第三行是导入了Python调用C语言的支持库。第四行把C语言要用到的C语言本身用到的库。第五行表示了调用C程序里的begin_tts()函數,这个函数就是你的C程序中的函数,我的函数名叫begin_tts()。

上述5步完成之后我们就开始正式的进入项目的具体实现了,在工作目录下建立Person这个目录,Person的中文意思就是“人”的意思,所以这个目录下将存放要建立人脸数据的每个人,所以我建立了以人名为名字的目录, 在每个人名的目录下存放每个人的照片,以便于建立人脸模型;做完照片收集和本地数据的建立以后,我们就需要编写代码了,首先要编写在云端识别平台创建组群、创建人物、加入人脸、训练族群的步骤,所以我编写了detect_and_train.py来具体实现。

接下来的步骤就是编写代码来进行后续的任务,打开摄像头、从视频流中检测人脸、把人脸写到新的人脸目录New_Person下,把照片上传到Face++检测人脸,与云端的数据库匹配人脸、处理返回的信息、合成语音播放出来。并且把摄像头拍到的所有人脸都记录在All_Person目录下,以便于不断完善人物的人脸和达到记录访客的作用。

总体来说,本文通过研究和学习,寻找出一种合适的人脸识别算法,能快速简单并且准确的实现人脸识别,Face++平台都可以达到这些条件,最终我借助Face++的PythonSDK的API接口设计并在搭载Raspbian的树莓派上实现了人脸识别功能。

展望在数据爆炸科技愈来愈发达的今天,生物特征识别技术已然变得愈发重要。生物识别中除了人脸识别技术是大家都耳濡目染的,还有语音识别、指纹识别、虹膜识别、静脉识别。膜识别、静脉识别。

参考文献:

[1]face++文档http://www.faceplusplus.com.cn/api-overview/.

[2]科大讯飞语音模块文档http://www.xfyun.cn/doccenter/linux/.

[3]Opencv文档http://docs.opencv.org/2.4.13/.

[4]张宏林.Visual C++数字图像模式识别技术及工程实践[M].北

京:人民邮电出版社,2003.

科技创新与应用 2018年21期

科技创新与应用的其它文章 基于RADIOSS的蜂窝夹层结构镶嵌件拉伸承载能力分析 Bi—Er—Tm共掺硅基玻璃的超宽带发射特性 遥感图像去云算法研究 烟支重量反馈控制系统相关参数的海量数据分析 电感耦合等离子体质谱法检测农药产品中的铅 多跳HF无线电波汹涌海面反射模型研究
转载请注明来源。原文地址:https://www.7428.cn/tech/2018/1216/11558/
 与本篇相关的热门内容: