苏鹏飞 赵建文
摘 要:机器人操作系统是可以提供一系列程序库和工具、帮助软件开发者实现创建机器人的软件。功能包括设备驱动、函数库、硬件抽象、消息传递、可视化功能、软件包等几项内容,可以为机器人技术整合和云计算提供有效的软件框架。人脸识别是人机交互过程中必须具备的基本功能,在人脸识别过程中图像的预处理、特征提取与匹配等都需要计算和数据的密切配合。文章在ROS机器人平台上,设计并实现了人脸识别系统,经过真实环境的一系列测试得出,大部分情况下达到在移动机器人平台下对人脸识别系统的要求。
关键词:机器人操作系统;人脸识别;设计研究
1 人脸识别系统
人脸识别系统主要包含5大部分:人脸图像采集、人脸检测、图像预处理、特征提取、图像特征的匹配,实现过程流程如下。
人脸图像→数据库→人脸检测→图像预处理→特征提取→人脸特征→人脸特征匹配。
1.1 人脸数据库
人脸数据库是指包含多张人脸图像并且包含同一个人在不同时期的多张图像集合形成的数据库。所以在通常状况下,年龄数据库可以为年龄不变性的人脸识别提供训练和测试的基础数据。人脸检测是对得到的任意人脸图像进行的分析,借用某种算法去判断图像中的人脸是否可见、是否可用,确定人脸的范围、角度、姿势等信息,然后根据这些信息进行人脸区域剪裁。图像预处理是对人脸进行统一归整,配合矫正除燥的操作,把特征进行提取和保证,是人脸识别的最主要步骤。
1.2 特征提取
特征提取主要是利用特征向量对预处理后的图像进行表征,对于人脸识别的质量高低有关键性影响,尤其是人脸的视觉信息多样,必须经过机器提取本质特征,才可以进行之后的识别分类和判断。人脸图像特征匹配,是指对提取出的人脸图像特征通过操作系统进行相似度的对比评判,之后的对比相似度结果可以进行人脸的最后识别[1]。还有一种方法就是通过分类器,对人脸图像特征进行分类,最终实现人脸识别。
2 关于机器人操作系统的人脸识别系统总体设计
为保证机器人操作系统(Robot Operating System,ROS)中各功能之间的独立性,本文在总框架下设计了3个节点,依次是:摄像头驱动程序节点、人脸检测节点、人脸识别节点。根据之前节点与主题的论述理论基础,我们在摄像头驱动程序camera_node节点进行主题image_topic的发布,同时,人脸检测节点detection_node也进行image_topic主题发布,并订阅image_topic主题。人脸识别节点recognition_node进行result_topic主题发布,同时,需要对face_topic主题进行订阅,ROS节点通信示意如图1所示。
图1 ROS节点通信示意
摄像头驱动程序节点camera-node,这个节点利用opencv从USB摄像头中会读取到彩色图像,之后发布到image_topic主题中。其中,opencv是一种云机器人系统,主要利用分布式计算技术和大数据进行计算密集和数据密集型的计算任务,在系统中,也可以与所有客户端之间共享信息,让ROS在实际应用中可以達到更佳的稳定性和实时性。
3 关于摄像头驱动程序节点设计
ROS图像数据发布是依靠其自定义项下的sensor_msgs/Image等消息格式进行的,其格式和传统的opecv图像处理格式相比存在不同。如果要查看ROS文本上的sensor_msgs/Image消息格式,可以用这个命令:rosmsgshowsensor_msgs/Image。ROS可以为文本提供C语言和Python两种语言模式进行公选,可以方便tensorflow与opencv的集成,在本文中是以Python作为基础来完成的整体人脸识别系统的开发。在ROS系统可以做成Python模块封装来支持Python的开发。比如在rospy模块,ROS提供了相关节点的创建,主题订阅也有对应的函数接口。类似的在std_msgs.msg模块,ROS封装的String信息类型可以匹配;sensor_msgs.msg模块也相应地含有ROS封装的sensor_msgs/Image消息类型。
在操作过程中,为了方便起见,会使用opencv来进行数据图像的操作,本文需要采用的是由ROS提供的cv_brige软件包。在整个云机器人服务的系统中,云端主要通过3台支持opencv接口的主机相连接构成,ROS是核心枢纽环节。在服务系统之间有标准通用服务对接口,每一个组件可以看作其中一种服务,通俗讲可以看作一个传感器、执行器等[2]。在客户端可以连接云端设备,把手机、电脑机器人或者虚拟的机器人进行连接。云机器人的服务系统可以同时对接多个机器人的应用与服务,人脸识别、目标跟踪、SLAM等,ROS中的vison_opencv程序栈可以为opencv提供通道,进而实现将opencv中的多种人脸识别计算最终转化为可供服务的客户端调用模式。cv_bridge在opencv和ROS之间扮演的数据格式转化的桥梁角色。
4 关于人脸识别的节点设计
一项完整的人脸自动识别系统在大体上可以分为部分人脸的捕捉检测、面部特征提取,另一种说法是还包含前两部分合并,对人脸进行分类后形成的狭义人脸识别。计算机技术核科学发展日新月异,人脸识别的内容也在不断更新完善。人脸识别系统包括对于几个特征器官的定位,也就是一张人脸上有显著特征的五官,嘴巴、鼻子、眼睛区域相对应的角点姿态、中心位置、偏转头时的倾斜角度、表情的综合分析,把输入的人脸进行表情的分析和分类后提取人脸图像的显著现相关特征,进而判断年龄、性别等信息。
4.1 人臉识别的节点流程安排
本文的人脸识别主体为result_topic主题和recognition_node节点,ROS中sensor_msgs/Image消息格式用来发送MTCNN卷积神经网络识别人脸和得到人脸图像的detection_node节点到主题face_topic。关于人脸识别的节点必须订阅相应face_topic主题,进而在该face_topic主题可以接受sensor_msgs/Image消息,再通过cv_brige转换就可以打得到opencv的图像格式,之后就可以根据本文设计的模型去完成人脸识别[3]。
4.2 开发环境
ROS本身提供的catkin工具可以帮助文本创建于编译相关工程,有catkin_init_workspace、catkin_init_make等一系列构建ROS的工程命令。在编译ROS项目时,同时,还可以进行启动脚本的形式启动多个节点,对开发人员使用来说非常方便实用。本文主要是在ROS Kinetic Kame版本上开发设计实现的人脸识别系统。
5 结语
本文是关于一种ROS的人脸识别系统设计研究,介绍了人脸识别系统的实现流程与步骤,关于ROS的人脸识别系统总体设计,在总框架下由3个重要节点分类:摄像头驱动程序节点、人脸检测节点、人脸识别节点、ROS的处理转换过程和理论依据以及相应的操作,进而介绍在人脸检测环节的理论节点安排和实践计算方法,基本实现了阀值的合理调配和有效结果,从而使得与系统库的人脸图像准确匹配。其中,卷积神经网络应用训练、提取特征等步骤,关系到人脸识别准确率高低,重要意义不言而喻。其次,人脸检测和图像预处理从光照、噪声的角度去优化,可以为人脸图像特征的提取提供必要保障。
[参考文献]
[1]曹洁,李雪真,王进花.基于自适应特征融合的人脸识别[J].计算机工程与应用,2018(1):153-158.
[2]安峰.基于开源操作系统ROS的机器人软件开发[J].单片机与嵌入式系统应用,2017(5):27-29.
[3]周松锋,戴曙光.改进的PCA人脸识别算法研究[J].软件导刊,2018(2):15-18.
A face recognition system design based on ROS
Su Pengfei, Zhao Jianwen
(Xian University of Science and Technology, Xian 710032, China)
Abstract:Robot operating system is a software that can provide a series of libraries and tools to help software developers realize Robot creation. Features include device drivers, function libraries, hardware abstractions, messaging, visualization, software packages, etc, providing an effective software framework for robotics integration and cloud computing. Face recognition is a necessary basic function in human-computer interaction process. In face recognition process, image preprocessing, feature extraction and matching all need close coordination of computation and data. This paper designs and implements a face recognition system on the ROS robot platform. After a series of tests in the real environment, it meets the requirements of face recognition system on the mobile robot platform in most cases.
Key words:Robot Operating System; face recognition; design research