写点什么

人脸关键点定位算法在实际应用中的经验总结

  • 2020-06-04
  • 本文字数:3852 字

    阅读完需:约 13 分钟

人脸关键点定位算法在实际应用中的经验总结

人脸关键点定位算法(Facial landmark detection)是指在 2D 人脸图片上定位出一些具有特殊语意信息的点,例如鼻尖、眉毛、嘴角等,如图 1 所示。人脸关键点定位算法并不是一项单一的任务,而是作为众多高级人脸分析任务的基础,这些高级人脸任务主要有人脸识别、3D 人脸重建、人脸表情迁移、人脸美化等。因此,人脸关键点定位的精度将于严重影响后续任务的精度。



图 1 人脸关键点定位图片


目前,人脸关键点定位模型主要可以分为基于手工特征的传统方法和基于深度学习的回归方法。传统方法主要有 AAMs (active appearance models)、CLMs (constrained local models)、ESR (explicit shape regression)、SDM (supervised descent method)等,这些方法主要是通过手动设计的特征去拟合出人脸关键点的位置。近年来,随着以卷积神经网络 (Convolutional Neural Networks, CNNs)和循环神经网络 (Recurrent Neural Networks, RNNs) 为代表的深度学习的方法快速发展,人脸关键点定位算法也迅速转向基于深度学习的方法。由于深度神经网络强大的特征提取能力,基于深度学习的人脸关键点定位算法在测评指标如 NME (Normal Mean Error) 和 FR (Failure Rate)上迅速超越传统方法。


一般来说,基于深度学习的人脸关键点定位又可以分为基于坐标回归的方法和基于热图回归的方法。总的来说,基于坐标回归的方法速度快、计算量小,但是精度不如基于热图回归的方法高;然而,基于热图回归的方法更侧重于结果的精度,但是模型体积较大、速度较慢。对于实际应用场景来说,按照任务要求的不同(如速度、精度以及运算效率等),选择不同类型的方法。接下来,文章将先对人脸关键点定位算法在实际使用中所面临的问题进行简要分析,然后按照不同类型的方法,对该领域的实践经验进行介绍。

一、 人脸关键点定位算法所面临的一些挑战

1.1 输入图片具有很强的特异性

在实际使用场景中,如人脸美妆、人脸识别等,模型输入的图片本身具有极强的特异性,例如极端的光照环境、夸张的表情、大角度的姿态、图片抖动所产生的模糊等。如图 2 所示,对这些图片进行精确地人脸关键点定位非常困难。



图 2 一些极端姿态的人脸图片

1.2 训练数据的不平衡

目前,公开的人脸关键点定位数据库都存在数据不平衡这一问题,既:正脸的图片的总数要远多于侧脸的图片总数,而大角度侧脸的训练图片更少。使用这种数据集训练出的人脸关键点定位算法,在评测数据集上可以获得非常高得精度,但是在实际使用中,有可能因为头部的轻微偏转,导致模型的精度严重下降。

1.3 模型运行效率

目前,人脸关键点定位任务在学术界和工业界所最求的目标并不完全相同。在学术界中,科研人员更加关注模型最终输出的结果在各种评测集上是否达到了最优,其次才是模型的参数量和执行效率等问题;然而,在工业界中,工程师们在一定的误差范围内,追求模型更小的体积以及更快的运行效率。这一问题致使高精度的人脸关键点定位模型很难直接应用到实际的任务之中。

二、 人脸关键点定位算法经验总结:

我们这一篇文章,主要将集中在算法在实际使用场景中的调优问题,将主要围绕在压缩模型体积的情况下,尽量减少定位精度的损失。下面将分别对基于坐标回归的方法和基于热图回归的方法在实际项目中的一些经验和总结分别进行描述和讨论。

2.1 基于坐标回归的人脸关键点定位算法调优

基于坐标回归的人脸关键点算法速度快,但是定位精度略差于基于热图回归的方法。这种方法比较适宜用于对实时性要求较高、但对定位精度要求相对不高的任务中(如人脸识别、情绪判断、头部姿态估计等)。基于坐标回归的算法在我们的实际项目中,可以做到模型体积小于 200KB,速度到达 1500fps ,同时在精度上仍然可以达到要求。下面介绍常用的调优方法:

2.1.1 设计轻量化的模型

在我们实际经验中,使用精心设计和调参的小模型在一定的情况下,精度完全可以超过使用了特征提取能力更强的大模型;常用的轻量化特征提取网络如 ShuffleNet、MobileNet 等,但是这些模型的体积对于边缘计算设备(智能手机、机器人等)仍然较大,模型的参数量和计算量如表 1 所示。此外,这种为图像分类设计的网络,直接应用到人脸关键点定位任务中并不是一种好的策略。为此,我们设计了一种专门用来进行人脸关键点定位的一种轻量化模型,表 2 是模型的基本结构。其中 ConvDW 代表深度可分离卷积,ConvDW*表示在该层对输入的 Feature Map 进行降采样。




我们使用 MSE Loss 作为优化函数,在 300W 数据集上进行训练和测试,获得结果如表 3 所示。从表中我们可以看出,使用我们专门设计的人脸关键点定位模型可以在极小的模型参数量和计算量中,获得更好地结果。


2.1.2 使用恰当的损失函数

对于基于坐标回归的人脸关键点定位算法,Loss 函数也是一项至关重要的优化项。在 Wing-CNN 文章之前,大部分基于坐标回归的算法都是使用 MSE Loss 作为损失函数,但是 MSE Loss 非常容易受到异常值的影响,通俗的来讲,MSE Loss 有可能因为几个极端的异常数据而陷入局部极值中,导致模型收敛较差。因为人脸关键点定位的标注数据本身就存在一定的误差,因此标注数据中存在异常值(或错误值)的可能性比目标检测、图像分类等视觉任务更大。问了解决这一问题,Wing-CNN 中提出使用 Wing Loss 来缓解模型对异常值的敏感程度。在表 4 中,我们对比了使用我们设计的小模型作为 BackBone 分别使用 MSE Loss 和 Wing Loss 作为损失函数在 300W-Fullset 上的测试结果。从表中,我们可以看出使用 Wing Loss 可以明显的提升模型的结果精度。


2.1.2 使用多阶段模型去提升人脸关键点定位性能

在实际应用中,如果需要获得高精度的人脸关键点定位结果,通常使用基于热图回归的算法;但是,有一些特殊的任务如手机端的视频人脸美妆软件(该算法完全在手机端运行,不需要借网络),就会对速度有较高的要求,同时也需要获得非常精确地人脸关键点定位结果。此时,我们可以借助多阶段人脸关键点定位模型来完成。


训练多阶段人脸关键点定位模型,首先使用一个非常浅层的关键点定位模型(Model-I)去进行 5 点定位,之后通过 5 点对人脸图片进行校正,然后再使用一个相对较大的模型(Model-II)进行正常的人脸关键点定位(如 68 点、106 点等)。图 3 表示多阶段的人脸定位模型训练的基本过程。



图 3 多阶段人脸关键点训练过程


在模型训练阶段,为了节约计算量,Molde-I 可以使用较小尺寸的输入图片(如 64x64),使用更加激烈的数据增广方法例如更大的旋转角、更强的边框扰动;在训练 Model-II 过程中,输入经过 Model-I 处理后转正的图片,此时的图片的输入尺寸、增广方式都按照正常训练方式进行。依据我们多次相关类型项目经验,多阶段定位模型可以获得与基于热图回归方法相互匹敌的结果,并且模型的运算速度快、系统开销少。因为 Model-I 的模型非常小,而且输入图片的尺寸也非常小,所以基本不会对模型速度和运行开销产生影响。

2.2 基于热图回归的人脸管家点定位算法模型调优

通常情况下,基于热图回归的人脸关键点模型算法受限于自身体积、运算量等制约,不会部署到对速度具有较高要求的移动端产品中。但是随着短视频、直播等新兴行业的发展和边缘计算设备运算能力的逐步提升,将高精度的人脸关键点定位算法在实际项目部署的需求逐渐增加。目前,我们是使用知识蒸馏的方法,可以完成精度高、实时性强的关键点定位模型在手机端的部署。我们对 Hourglass 进行精简,精简的方式主要是模型的深度和宽度两个方面,然后使用热图回归的常用方法对完成 Teacher Model 和 Student Model 的训练,在知识蒸馏过程中,不但需要对 Student Model 中每一个 Block 输出的 Feature Map 进行监督学习,也需要让 Student Model 对训练数据进行学习。知识蒸馏过程中,使用 MSE Loss 作为损失函数。

2.3 训练数据方面的调优

2.3.1 使用对抗生成网络(GAN)进行数据增广

根据实际的项目经验可知,同一张人脸图片在不同的光照背景、图片质量的情况下,定位结果会产生一定的偏差,如图 4 所示。这些细微的偏差会导致模型在最终的结果产生震荡,不但会对最终的精度产生影响,当算法应用到视频中时,会是定位结果在相邻帧之间产生严重的抖动。




图 4 图片背景对关键点定位结果导致的影响


对于这一问题,我们主要是通过 GAN 来替换图片的背景,完成训练图片的大规模增广。图 5 是我们在 300W 数据集上进行的数据增广实验结果。实际项目经验显示,使用 GAN 进行数据增广训练的人脸关键点定位模型无论是在定位精度还是在稳定性上都远好于未使用数据增广训练的模型。



图 5 使用 GAN 进行数据增广的结果

2.3.2 通过头部姿态来进行数据增广

对于常用的人脸关键点定位数据库包括 300W、AFLW、COFW 以及 WFLW 等,这些数据库中的正面人脸都远多于侧面的人脸图片。为了让训练数据中正脸和侧脸图片数量大致相等,我们可以通过给定的人脸关键点坐标等来计算出人脸的朝向(patch、yaw、roll),通过对人脸朝向的角度区间进行分类,然后手动复制那些姿态较少的数据,使各个区间中人脸图片的数量基本保持一致。与 GAN 背景转换方法相比,这种方法不需要训练对抗生成网络,因此也更加常用。


在本篇文章中,我们首先介绍了人脸关键点定位模型在实际使用时所面临的一些问题,然后分别从基于坐标回归的方法、基于热图回归的方法以及数据增广这三个角度,介绍了一些我们在项目中所总结的算法调优的经验和方法。希望这些方法和总结可以促进人脸关键点定位技术的发展和进步。


作者介绍:


沙宇洋,中科院计算所工程师,北京邮电大学硕士,目前主要从事人脸识别以及无人驾驶等相关方向的研究和实际产品开发。


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-06-04 07:006712
用户头像
刘燕 InfoQ高级技术编辑

发布了 1112 篇内容, 共 492.5 次阅读, 收获喜欢 1966 次。

关注

评论 1 条评论

发布
用户头像
您好 请问项目的代码可以分享一下吗,想学习一下具体的网络和数据增广的方法
2022-04-07 17:33
回复
没有更多了
发现更多内容

外包学生管理系统架构设计文档

Geek_36cc7c

Kaggle冠军解读:风电场短期风况预测任务方案

百度大脑

博文干货|Apache InLong 使用 Apache Pulsar 创建数据入库

Apache Pulsar

开源 架构 云原生 Apache Pulsar apache 社区

网络标准之:永远是1.0版本的MIME

程序那些事

Java 网络协议 程序那些事 2月月更

唯一一家!腾讯云数据库入选“科创中国”先导技术榜

科技热闻

盖世无双之国产数据库风云榜-2022年02月

墨天轮

数据库 GaussDB TiDB 国产数据库

面试官:linux零拷贝的原理是什么?

CRMEB

如何应对数千微服务组件带来的挑战?

云智慧AIOps社区

php 架构 微服务 微服务架构 运维

产品更新 | 云原生综合运维平台SchedulX V 0.2.0 已发布,支持部署服务至云服务器

星汉未来

用了区块链技术,破产清算办案更透明了!

CECBC

MySQL是怎么保证redo log和binlog是完整的?

华为云开发者联盟

MySQL Binlog Redo Log WAL机制 日志逻辑序列号

全球首个开源车路协同数据集发布,促进学界业界跨界融合

百度开发者中心

保证业务高效运营 专有云虚拟网络是关键

百度开发者中心

阿里卖家 Flutter for Web 工程实践

阿里巴巴终端技术

flutter Web 客户端开发 ffw

云防火墙:防御企业上云“亿”点网络攻击

青云技术社区

容器化 | 在 KubeSphere 中部署 MySQL 集群

RadonDB

MySQL 数据库 高可用 RadonDB KubeSphere

频繁项集挖掘算法在告警关联中的应用

云智慧AIOps社区

算法 告警

解码北京冬奥沉浸式报道黑科技: 阿里云视频云「互动虚拟演播技术」

阿里云视频云

阿里云 计算机视觉 音视频 视频云 冬奥会

大力发展区块链技术,做好数字经济“新基建”

CECBC

如何基于 Agora Android SDK 在应用中实现视频通话?

声网

人工智能 android 音视频

我提交了一个 pr,竟然是为了吃

AlwaysBeta

GitHub 开源 程序员 生活 程序员人生

网站开发进阶(六十二)最强大的 CSS 布局——Grid 布局

No Silver Bullet

页面布局 2月月更 Grid

如何高效交付专有云?百度智能云有妙招

百度开发者中心

Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS

阿里云云效

Java 阿里云 cicd 云原生 ECS

快上车!第十七届全国大学生智能汽车竞赛百度创意组来啦

百度大脑

燃气表场景物联解决方案

😌

IoT 燃气

【网络安全】Agent内存马的自动分析与查杀

H

网络安全 WEB安全

StarRocks Contributor 人数破百!极速统一,你我协力!

StarRocks

数据库 数据分析 StarRocks

数字人民币 为经济添活力

CECBC

腾讯WeTest开通微信视频号啦

WeTest

做中台,我从一名产品经理做成了合伙人

木木杨老师

中台 产品经理 产品设计 数字化 企业数智化

人脸关键点定位算法在实际应用中的经验总结_AI&大模型_沙宇洋_InfoQ精选文章