• 查询稿件
  • 获取最新论文
  • 知晓行业信息
官方微信 欢迎关注

基于RetinaFace的人脸多属性检测算法研究

随玉腾, 阎志远, 戴琳琳, 景辉

随玉腾, 阎志远, 戴琳琳, 景辉. 基于RetinaFace的人脸多属性检测算法研究[J]. 铁路计算机应用, 2021, 30(3): 1-4.
引用本文: 随玉腾, 阎志远, 戴琳琳, 景辉. 基于RetinaFace的人脸多属性检测算法研究[J]. 铁路计算机应用, 2021, 30(3): 1-4.
SUI Yuteng, YAN Zhiyuan, DAI Linlin, JING Hui. Face multi-attribute detection algorithm based on RetinaFace[J]. Railway Computer Application, 2021, 30(3): 1-4.
Citation: SUI Yuteng, YAN Zhiyuan, DAI Linlin, JING Hui. Face multi-attribute detection algorithm based on RetinaFace[J]. Railway Computer Application, 2021, 30(3): 1-4.

基于RetinaFace的人脸多属性检测算法研究

基金项目: 中国国家铁路集团有限公司科技研究开发计划课题(N2019X016)
详细信息
    作者简介:

    随玉腾,工程师

    阎志远,研究员

  • 中图分类号: U29 : TP391

Face multi-attribute detection algorithm based on RetinaFace

  • 摘要: 为提高铁路刷脸检票业务中人脸检测的平均精度,通过研究分析人脸检测算法RetinaFace,针对闸机应用场景制定损失函数,提出了一种基于RetinaFace的人脸多属性检测算法,实现了人脸框位置、人脸是否佩戴墨镜以及人脸遮挡程度等信息的准确输出。算法使用轻量化骨干网络MobileNet-0.25网络结构,移除非必要的分支,减少计算开销,在铁路标准人脸遮挡数据集上检出率达到95.4%,不同遮挡程度的识别准确率达到了99.2%。
    Abstract: In order to improve the average accuracy of face detection in railway face brushing and ticket checking, this paper proposed a face multi-attribute detection algorithm based on RetinaFace by studying and analyzing the face detection algorithm retinaface and formulating the loss function according to the application scene of the gate. It was implemented the accurate output of the information such as the face frame position, whether the face was wearing sunglasses, and the degree of occlusion. The algorithm used the lightweight backbone network MobileNet-0.25 network structure, and removed unnecessary branches to reduce the computational cost. The detection rate of the algorithm on the railway standard face occlusion data set reached 95.4%, and the recognition accuracy of different occlusion degrees reached 99.2%.
  • 动车检修车间包括动车检修、维护、检测等工作,是保证动车安全运行的基础,而检修车间的设计、设备分布对列车检修效率及检修人员技术培训起到十分重要的作用。因此,为使动车检修人员培训时更快、更好地熟悉检修车间设备、工作环境和动车检修流程,十分有必要开发一款基于Unity3D的动车虚拟检修车间漫游系统。

    虚拟现实(VR)是利用计算机模拟三维空间,用户通过计算机、头盔及相关设备能够身临其境一般,观察三维空间内的事物,使某一特定的现实世界真实环境能够利用VR技术呈现在人们眼前[1-2]

    3DS Max检修车间的模型建立是整个动车虚拟检修车间漫游系统创建的关键。本文选用3DS Max软件建立三维模型,充分利用其具有的强大的建模、材质表现及渲染功能 [3]

    Unity 3D是一款三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台综合型游戏开发工具。可视化模式让游戏开发者能够轻松构建互动体验,参数可以在游戏运行时更改。

    采集数据是虚拟检修车间建立的重要环节之一。需到现场采集检修车间内部的照片或图片,车辆基地地形尺寸、建筑高度、大型设备尺寸等,建立三维建模所需要用到的材质和图片库。通过查阅参考文献、书籍、网络检索及车间的设计图纸获取检修车间尺寸,绘制车间建模工程图。需要对车辆基地内建筑和检修车间内大部分设备进行简化绘制和建模,对于基地的二维平面图,只要标明各部分建筑的位置,注明其功能,以简易平面图形表示。对于检修车间的三维建模尽量采用规则立体图形,简化建模方式,有助于降低建模难度。导入3DS Max中建模,模型建成后,将其导入到Unity3D中,进行脚本开发、数据库设计、界面设计,实现交互漫游的目的,完成动车虚拟检修车间漫游系统的开发。

    虚拟检修车间漫游系统的开发主要包括二维车辆基地的平面绘制、检修车间三维场景创建和系统功能的开发。其中,检修车间三维场景信息不仅指虚拟场景,还包括检修信息、设备功能、背景音乐等。系统的开发流程,如图1所示。

    图  1  虚拟检修车间漫游系统开发流程

    虚拟检修车间的真实感与三维模型的本身质量有直接关系。如果提高场景的制作质量,可以有效地降低三维模型的粗糙度,提高清晰度,增强系统的真实感。由于车辆基地面积太大,所以开发时以检索到的车辆基地资料,总结相关资料给出的尺寸,使用二维CAD软件绘制出整个车辆基地的平面图,在设计过程中线型的选择,如表1所示。

    表  1  线型选择
    序号名称基本线型和名称应用
    1实线细实线尺寸线、道路线、花坛
    粗实线基地建筑平面轮廓线、轨道
    2虚线细虚线不可见轮廓线
    粗虚线检修车间建筑绘制表面处理线
    3点划线细点划线车辆基地建筑图形中心线
    下载: 导出CSV 
    | 显示表格

    (1)通过CAD软件界面菜单,从样式菜单中选择“粗线”,根据机械制图标准选择标准线宽,绘制出图纸线框,如图2所示。

    图  2  局部绘制线型图

    (2)线型选择,实线(细、粗比例为1∶2)、虚线和点划线。

    (3)检修车间为车辆段中最为重要的部分,也是整个漫游系统的主体,采用并列式布局,线组并联布置、维护线组并联布置,两线之组间设有一定的距离,用于设置工业管道和道路,创建图层,设置线型统一采用粗实线,并标注好尺寸。最后对整个车辆基地进行总平面图的设计和绘制。设计完成的总平面图,如图3所示。

    图  3  二维车辆基地平面图

    建模前,将车辆基地二维CAD平面图导入3DS Max中,设置文件单位为cm。需要冻结导入的场景图形组,以避免在复杂场景中出现图形选择不全,导致在3DS Max中出现缺面现象。在视图窗口中创建一个平面,在“修改”命令中修改其各项系数。将其转换为可编辑多边形,选择顶面使用“挤出”命令,使其平面有一定高度,将二维图形转换为三维图形[4]

    为了保证钢轨建模的逼真性,根据钢轨国标尺寸在二维CAD图纸中画出钢轨的截面图形。将CAD图纸导入3DS Max,转换成可编辑多边形,创建钢轨长度,然后复制创建多个钢轨模型。因为实际检修车间的路基较复杂,为了有效地创建模型,建模时对其结构和外观进行分类,并进行简化,多采用标准基础体。所设计的模型,如图4所示。

    图  4  轨道和路基的三维模型

    实际情况中,平台结构、楼梯尺寸和栏杆大小都十分类似,为了减轻工作量,根据现有掌握的各项尺寸,使用基础形状建模方法分别创建出三维平台模型,设置7 cm厚度,楼梯模型和栏杆模型则在几何体中,点击创建楼梯栏杆模型,并设置参数,设计模型,如图5所示。

    图  5  检修平台和楼梯栏杆的创建

    检修车间墙体和房间的三维模型是整个模型创建中最重要的部分。主要使用多边形建模方法,创建一个长方体,转换为可编辑多边形,使用“连接”“桥”和“切片平面”等命令,创建出合适的检修车间三维建筑模型。对其细节部分进行处理,调整各组成部分的空间结构,完成整体模型的创建。

    三维设计软件3DS Max最大的优势之一在于拥有各种各样的贴图类型。在检修车间内外进行贴图,能够使车间环境更加逼真,具有高沉浸感。贴图主要来源于实地的照片拍摄,利用相关的图像处理软件,如Photoshop调整图片的大小、色彩、光暗度和透明度。完成的模型,如图6所示。

    图  6  检修车间三维模型

    角色漫游是整个漫游系统的重要组成部分,当用户在虚拟场景中观察和漫游时,有必要创建角色模拟器。在Unity3D的角色模拟器中,本文选择了第一人称角色模拟器。

    所有动作的实现必须要有脚本的添加,在脚本中编写对应的代码,对设备输入信息进行处理和及时的反馈,并以动作的形式呈现出来。

    (1)角色移动的实现

    在Unity3D的操作面板中选择3D Object中的Caspsule创建一个3D物件胶囊体,并将其命名为Player,通过更改其Inspectors的Transform属性,将胶囊体移动到地面上合适的位置(也可以在scene面板内左键点击拖动胶囊体的xyz轴箭头来调整它的位置)[5]。将相机(Camera)的父级拖拽到胶囊体(Player)的子层级中,充当玩家的眼睛,并调整到适当位置。在SImpleNaturePack中创建一个C#Scripe的脚本。设置好一个单元移动速度,GetKey函数用于监视输入指令,并在玩家移动时触发语句。根据触发时间乘以单位移动速度所花费的单位时间,可将相应的单位按规定方向移动。

    (2)视角控制的实现

    在角色模拟器的摄像机组件中添加脚本,通过GetAxis函数监视鼠标在垂直和水平方向上的输入,设置好参数值,记录上次移动的位置,当Player移动触发语句时,移动速度 v 乘以相应时间 t,摄像机就可以实现旋转相应的角度,达到控制视角的效果。

    碰撞是Unity3D中很重要的一个概念,在三维虚拟场景中,移动角色和物体模型,都是相互独立的。漫游各种物体时,角色移动时需要自动绕开这些物体障碍物。

    碰撞检测的工作原理是检测两个或多个物体之间是否有渗透或接触,并根据碰撞物体的特点和应用要求做出相应的碰撞响应。主要采用球体碰撞,定义两个球体球心和半径分别为 a1a2 r1r2,球心距离为 d,比较这两个球体的半径。如果距离 dr1+r2,则发生碰撞,否则不发生碰撞,有关碰撞检测的相关原理与方法在相关文献有详细说明。

    球体的包裹为碰撞器和触发器,利用OnCollision族函数和OnTrigger族函数作用于碰撞器及触发器,判断物体是否发生碰撞,在对象中分别设置有碰撞组件,检测重要函数,完成碰撞检测。

    在虚拟检修车间漫游系统中,场景数据库中存储了检修车间建筑信息、尺寸、车间内各工作用房的功能及信息、设备功能和操作方法等。本文采用SQL Server 2012作为数据管理和开发的基础。用C#脚本在Unity3D中实现数据查询。例如:在Unity3D引擎中,检修车间各建筑信息、设备型号功能和设备用房作用信息在数据库中都有对于的ID,在数据库中按房间和设备两个大类分类以数组形式储存和读取,以C#脚本为基础设置信息查询功能,在漫游中实现实时交互。

    虚拟动车检修车间漫游系统包括主菜单界面、场景漫游模块和交互功能模块,在各模块中可以添加背景音乐、环境效果场景特效等功能。

    创建一个不可见的Player,浏览到的场景即是Player所看到的视角,为了控制浏览的状态,通过导航功能进行控制,对浏览的方式、Player化身的大小进行设置,其设置代码如下:

    Navigation Node

    {

    avatarSize=[0.2,1.4,0.5]

    headlight=Ture

    speed=0.8

    type=[“步行”,“飞行”,“其他”]

    visibility Limit=0.0

    }

    Speed字段用于设置玩家在场景中的漫游速度,单位为m/s。Type字段用于更改交互式漫游的实现方式,Visibility Limit定义了Player视野的最远距离,默认值0.0为无穷远[6]

    当Player与场景中物体距离小于avatarSize[0]时,触发碰撞器,使用“步行”方式,当遇到系统设置的高度障碍物时,高度大于avatarSize[1.4]时,即改为其他浏览方式,此方式可以限制浏览者(Player)的活动范围[7]

    用户在整个虚拟场景中沿着预设好的路线进行漫游。角色在已设置好的路径上移动,Unity3D中采用全局导航,创建导航网格,在场景中设置可通过区域和障碍区,勾选Navigation Static烘焙处理选中对象,调整烘焙设置满足代理半径、代理高度、最大坡度和台阶高度,完成网格创建。之后创建导航移动角色,一般为球体(高度为2 cm 和半径为0.5 cm)适用于人体,添加导航组件,创建C#脚本,让角色移动到由另一个球体指定的目的地,实现自动漫游。

    当用户在漫游整个虚拟场景时,经过某一房间建筑或某的状态一处设备时,能通过菜单项查询到房间或某一设备的具体信息和功能。每个设备检修流程和房间信息都存储在自己的组件中,可通过编写的自定义脚本进行搜索和读取。用户可以经过数据库管理器查询数据,显示出查询对象的基本信息,如果查询对象输入错误,窗口就会自动显示错误或者查询对象不存在,提示重新输入。

    在漫游系统中预先设置好主要设备的传送功能,在漫游菜单中选择传送按钮点击会出现下拉菜单,提供各个主要设备的选项,使用者点击则会传送到相应设备旁边。具体实现则是在各个选项按钮中添加脚本OnClick方法,当使用者点击拥有设备名称的按钮时,就会执行脚本,赋予角色模拟器新的三维坐标,传送至其对应地点。

    虚拟检修车间漫游系统界面主要包括开始菜单、检修维护车间介绍及功能、结束菜单和漫游界面。

    (1)初始界面。初始界面由底部按钮、上部文本框和背景图片组成。菜单按钮包括车辆基地介绍、检修维护车间介绍、退出4个选项。在场景中创建一个画布,设置4个按钮组件,添加脚本,以开始按钮为例,创建一个C#脚本文件,通过ClickObject函数判断是否被点击过,通过点击执行脚本文件进入到漫游场景中[8]

    基地介绍与功能按钮是当被点击时会自动弹出文本窗口显示介绍信息和基地功能信息。为了保证界面阅读效果,当点击基地介绍与功能按钮时会自动弹出隐藏的窗口,窗口内首先出现基地介绍信息然后是功能介绍信息,阅读完后会自动关闭。需要首先添加窗口组件,创建文本组件,将文本信息录入文本组件中,创建C#脚本,编写代码,设置参数属性[9]

    (2)漫游场景界面。包括一个漫游窗口和一个菜单。

    (1)用户在登录界面上登录,可以实现验证身份信息,包括建筑信息,场景中的设备信息,模型数据加载等。

    (2)点击进入漫游界面后,根据系统已设置和渲染好的初始用户视角,通过鼠标点击和键盘操作,在虚拟检修车间移动,观看场景和了解设备、建筑信息。

    (3)在漫游时可以通过系统内的查询功能,查询想要了解的子房间功能,设备型号及其功能,系统将自动弹出相关信息。

    (4)用户点击右下角退出按钮,退出系统。系统工作流程,如图7所示。

    图  7  虚拟检修车间漫游系统工作流程

    开发获得的虚拟检修车间漫游系统,用户可以通过鼠标点击,可查阅车间检修设备信息、型号、各工作用房的功能,在车间内进行实时的漫游,全方位展示出检修车间的内外部结构和其功能。利用3DS Max解决三维检修车间建模问题,利用数据库技术对检修车间房间和设备信息进行交互管理学习,通过脚本语言、碰撞检测技术、界面设计,使用户真实了解功能和结构。开发出的虚拟检修车间漫游系统最大优势在于打破传统车间的空间地形、设备、费用等环境和经济因素的限制,通过基本信息、设备信息、作业流程等,增强培训人员对检修车间设备操作和检修流程全面掌握的能力,达到理论学习与实践操作的结合。

  • 图  1   RetinaFace算法网络结构

    图  2   改进算法网络结构

    图  3   各类型样本示意

    表  1   各个层级目标框的数目

    特征金字塔步长锚点框
    P2(160$ \times $160$ \times $256)416,20.16,25.40
    P3(80$ \times $80$ \times $256)832,40.32,50.80
    P4(40$ \times $40$ \times $256)1664,80.63,101.59
    P5(20$ \times $20$ \times $256)32128,161.26,203.19
    P6(10$ \times $10$ \times $256)64256,322.54,406.37
    下载: 导出CSV

    表  2   实验结果

    模型CPU时间简单数据集
    检出率
    困难数据集
    检出率
    墨镜检出率遮挡程度
    准确率
    本文改进
    模型
    35 ms95.4%89.7%99.4%99.2%
    RetinaFace32 ms95.3%85.4%--
    下载: 导出CSV
  • [1] 贾成强,戴琳琳,徐海涛,等. 基于人脸识别技术的铁路实名制进站核验系统研究及设计 [J]. 铁路计算机应用,2018,27(7):49-53, 63. DOI: 10.3969/j.issn.1005-8451.2018.07.012
    [2]

    Kaiming H, Georgia G, Piotr D, et al. Mask R-CNN [J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2020, 42(2): 386-397.

    [3]

    Redmon J, Divvala S, Girshick R, et al. You only look once: unified, real-time object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Los Alamitos: IEEE Computer Society Press, 2016: 779-788.

    [4]

    W. Liu, D. Anguelov, D. Erhan, et al. SSD: single shot multibox detector[C]//Proceedings of the 14th European Conference onComputer Vision. Amsterdam, the Neterlands, 2016: 21-37.

    [5]

    Deng J, Guo J, Ververas E, et al. RetinaFace: Single-Shot Multi-Level Face Localisation in the Wild[C]//2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2020.

    [6]

    Lin T Y, Dollar P, Girshick R, et al. Feature Pyramid Networks for Object Detection[C]//IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE Computer Society, 2017.

    [7]

    K. He, X. Zhang, S. Ren, et al. Deep residual learning forimage recognition[C]//IEEE Conference on Computer Visionand Pattern Recognition (CVPR). Las Vegas, 2016: 770-778.

    [8]

    GlorotX, Bengio Y. Understanding the difficulty of training deep feedforward neural networks [J]. Journal of Machine Learning Research, 2010(9): 249-256.

    [9]

    Howard A G, Zhu M, Chen B, et al. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications [J]. IEEE Access, 2017(6): 1-14.

    [10]

    Yang S, Luo P, Loy C C, et al. WIDER FACE: A Face Detection Benchmark[C]//IEEE Conference on Computer Vision & Pattern Recognition. IEEE, 2016.

  • 期刊类型引用(4)

    1. 张晓冬. 基于VR技术的铁路调车作业安全仿真系统研究. 铁道货运. 2024(04): 32-37+45 . 百度学术
    2. 任炜,李季涛,周天阳. 铁路客运站占线程序图自动化推演系统的开发与应用. 铁路计算机应用. 2024(05): 46-51 . 本站查看
    3. 孟小钧. 基于“人-机-技”系统的高速铁路行车安全风险点识别与控制. 铁路采购与物流. 2023(01): 62-64 . 百度学术
    4. 王宇,马飞,李季涛,杨俊锋. 铁路客运站调车作业计划编制虚拟仿真实验教学资源共享建设与实践. 高教学刊. 2023(31): 79-82 . 百度学术

    其他类型引用(1)

图(3)  /  表(2)
计量
  • 文章访问数:  164
  • HTML全文浏览量:  905
  • PDF下载量:  51
  • 被引次数: 5
出版历程
  • 收稿日期:  2020-11-16
  • 刊出日期:  2021-03-25

目录

/

返回文章
返回