APP下载

基于Face++的手势识别系统设计与实现

2018-02-21郭顺超元艳香

科技视界 2018年33期
关键词:手势识别

郭顺超 元艳香

【摘 要】鉴于Face++在人脸检测与识别领域的巨大成功,针对目前手势识别应用研究偏少的情况,本文将Face++人体识别中的手势识别方法加以应用,设计并实现了基于Face++的手势识别系统。该系统首先利用手势样本库图片或者摄像机实时采集的手势图片作为待识别样本,接着将样本作为一个参数,通过Post调用方法调用Face++指定的URL接口,最后解析通过接口调用返回的Json串并使用OpenCV库函数将识别结果显示给用户。实验结果表明,使用Face++手势识别方法识别静态手势,系统具有识别率高、实时性好、鲁棒性佳的优点。

【关键词】手势识别;Face++;Json;OpenCV

中图分类号: TP391.41 文献标识码: A 文章编号: 2095-2457(2018)33-0019-002

DOI:10.19694/j.cnki.issn2095-2457.2018.33.008

【Abstract】Considering the great success of Face++ in the field of face detection and recognition, in view of the current lack of research on gesture recognition applications, this paper applies the gesture recognition method in Face++ human body recognition, and then designs and implements the gesture recognition system based on Face++. Firstly, the system uses the gesture pictures which from sample library or been captured by the camera in real time as the samples to be identified; Secondly, the system takes one of the sample as a parameter, calls the URL interface which is specified by Face++ through the Post calling method; Finally, the system parses the Json string which is returned by the interface called and then uses OpenCV functions to display the recognition result to the users. The experimental results show that using Face++ gesture recognition method to identify static gestures, the system has the advantages of high recognition rate, good real-time performance and good robustness.

【Key words】Gesture recognition; Face++; Json; OpenCV

0 引言

手势识别是计算机视觉的一个热门研究领域[1],其核心是计算机根据采集的手势样本识别出其表达的特定含义,它是手势交互的基础。手势识别的识别率和实时性均会对后续手势交互相关应用产生直接影响,故而手势识别算法的设计和优化非常重要。目前,利用手势识别进行系统设计的应用还不算多,一些研究人员借助Kinect[2]、Leap Motion[3]、超声波[4]、MEMS传感器[5]等设备进行手势识别方面的应用设计与研究并取得了成功,但是这些设备配置相对复杂,使用相对不便。鉴于此,本文对借助普通摄像头进行手势识别方面开展研究与应用。

1 Face++简介

Face++是北京旷视科技有限公司推出的、面向开发者的人工智能开放平台[6]。该平台以API或SDK的形式,将领先的、基于深度学习的计算机视觉技术开放给开发人员或者人工智能爱好者。产品包括人脸识别,人体识别、证件识别以及其他车牌、文字等其它类别的图像识别。平台的人脸识别技术在国内得到了广泛运用,例如,支付宝的刷脸验证登录技术、蚂蚁金服的刷脸验证技术等。

目前,Face++手势识别API已经对开发人员免费开放,调用者通过提供图片文件或者图片URL,即可检测图片中出现的所有手部区域,并返回其在图片中的矩形框位置以及相应的手势含义,目前已支持识别 比心、OK、点赞、握拳等19种预定义手势。对于单手的手势,不区分左右手,即无论是左手还是右手摆出此手势都会被准确识别。考虑到Face++手势识别接口的开放性、精准性、易用性等优势,本文借助该平台实现手势识别系统中的手势识别相关功能。

2 系统设计

按照流程,一个完整的手势识别系统一般应包含手势样本的采集、手势分割、特征提取、训练和识别5个步骤。手势样本的获取可以是通过手势识别库中下载获取,也可以是通过摄像头实时采集,样本分为训练样本和测试样本。手势分割是指利用肤色模型或者其他模型找到样本中手势的感兴趣区域以方便后续处理。特征提取一般提取手势的指尖信息、轮廓信息、纹理信息等用以代表此样本。手势训练是指利用模板匹配类、神经网络类、支持向量机类等方法对手势训练样本的特征进行训练得到手势分类器模型。手势識别则是将经过手势分割、特征提取后得到的测试样本特征输入手势分类器模型中进行识别,最终得到手势样本的类别的过程。

本文設计的手势识别系统,采用Face++提供的接口,手势分类器模型已经提前获得,手势分割、特征提取、这些过程也交由Face++服务器完成,故而本系统的手势识别核心功能包括手势定义、手势采集、手势识别三大模块。手势定义模块是用户根据自身需要,对Face++平台提供的手势类别进行重新命名,得到一个新手势名称与原类别名称的映射关系表,命名完成后,系统将该表存储在XML文件中。手势采集模块,系统支持图片库文件上传的方式,也支持摄像机实时采集后上传的方式形成待识别手势样本。手势识别模块是指通过调用API接口URL地址,并给接口传入指定的参数,并对服务器返回值进行解析的一个过程。

3 核心算法实现

(1)登录官网,注册账号,进入开发者中心,注册免费体验版,https://console.faceplusplus.com.cn/register,然后创建应用程序,获取秘钥以及密码。

(2)进入官网,查看API文档,参考https://console.faceplusplus.com.cn/documents/10065649,了解手势识别相关URL接口,接口的入口地址是:https://api-cn.faceplusplus.com/humanbodypp/beta/gesture,调用方法是Post方法,传入的请求参数包括api_key、api_secret、image_file和return_gesture,各参数的具体描述参见表1。

(3)调用URL接口,接口返回值为一串Json字符串,通过引入Python中自带的Json模块,调用相关函数对Json串进行解析得到gesture和hand_rectangle两个参数的返回值。其中,gesture中包含了API提供的19种预定义手势和未知手势共计20个参数,根据参数返回值大小,最大的即为系统识别出来的手势;hand_rectangle代表的是识别出来的手势在样本中的坐标。

(4)使用OpenCV库函数创建一个手势识别窗口,将样本图片和hand_rectangle叠加显示在窗口中。根据手势预定义模块中对API预定义的手势进行重定义的对应关系,将手势识别的最终结果显示给用户。

4 总结与展望

从结果上看,在网络条件较好的情况下,服务器可以实时地将手势测试样本的识别结果返回,并且手势在样本中的区域位置一并反馈,这样我们可以利用这两个标识来完成我们想要的功能。经过不同光照、不同拍摄角度条件下的反复测试实验,证明本系统的手势识别具有识别率高、实时性好、鲁棒性佳的优点。此外,本文手势识别系统具有很强的可移植性,可以扩展应用到许多领域,如智能家居、交互游戏、视频直播、在线教育等。

【参考文献】

[1]易靖国,程江华,库锡树.视觉手势识别综述[J].计算机科学,2016,43(6A):103-108.

[2]杨琼楠,张苗苗,杨聪锟等.基于Kinect手势识别的智能小车控制系统设计[J].国外电子测量技术,2018,37(9):85-89.

[3]王红全,淮永建.基于Leap Motion手势识别方法在树木交互的应用[J].计算机应用与软件,2018,35(10):153-158.

[4]杨建涛,李翔宇,王硕.用于手势识别的超声波收发器嵌入式系统设计[J].微电子学与计算机,2018,35(5):51-54,60.

[5]刘国慧.基于MEMS传感器动态手势识别系统设计与实现[D].南京:东南大学,2017.

[6]Face++官网,https://www.faceplusplus.com.cn/.

猜你喜欢

手势识别
基于手势识别的工业机器人操作控制方法