文章:How far are we from solving the 2D & 3D Face Alignment problem?-(and a dataset of 230,000 3D facial landmarks)

作者:诺丁汉大学的Adrian Bulat& Georgios Tzimiropoulos

Github:https://github.com/1adrianb/face-alignment

2D-FAN:https://www.adrianbulat.com/downloads/FaceAlignment/2D-FAN-300W.t7

3D-FAN:https://www.adrianbulat.com/downloads/FaceAlignment/3D-FAN.t7

2D-to-3D FAN:https://www.adrianbulat.com/downloads/FaceAlignment/2D-to-3D-FAN.tar.gz

3D-FAN-depth:https://www.adrianbulat.com/downloads/FaceAlignment/3D-FAN-depth

摘要

在现存2D和3D人脸对齐数据集上,本文研究的这个非常深的神经网络达到接近饱和性能的程度。本文主要做了5个贡献:(1)结合最先进的人脸特征点定位(landmark localization)架构和最先进的残差模块(residual block),首次构建了一个非常强大的基准,在一个超大2D人脸特征点数据集(facial landmark dataset)上训练,并在所有其他人脸特征点数据集上进行评估。(2)我们构建一个将2D特征点标注转换为3D标注,并所有现存数据集进行统一,构建迄今最大、最具有挑战性的3D人脸特征点数据集LS3D-W(约230000张图像)。(3)然后,训练一个神经网络来进行3D人脸对齐(face alignment),并在新的LS3D-W数据集上进行评估。(4)本文进一步研究影响人脸对齐性能的所有“传统”因素,例如大姿态( large pose),初始化和分辨率,并引入一个“新的”因素,即网络的大小。(5)本文的测试结果显示2D和3D人脸对齐网络都实现了非常高的性能,足以证明非常可能接近所使用的数据集的饱和性能。训练和测试代码以及数据集可以从 https://www.adrianbulat.com/face-alignment/%20下载。

引言

随着深度学习和大规模注释数据集的发展,近年的工作已经显示出即使在最具挑战性的计算机视觉任务上也达到前所未有的准确性。在这项工作中,本文专注于特征点定位(landmark localization),尤其是人脸特征点定位,即:人脸对齐(face alignment),“人脸对齐”也可以说是过去几十年来计算机视觉中的研究热点。

目前,关于使用卷积神经网络(CNN)的特征点定位的研究,大大推动了其他领域的界限,例如人体姿态估计,但目前尚不清楚在人脸对齐方面取得怎样的成果。

历史上,根据任务的不同,有不同的技术已被用于特征点定位。例如,在神经网络出现之前,人体姿态估计的工作主要是基于图结构(Pictorial Structure)和各种复杂的扩展(Extension),因为它们能够模拟大的外观变化, 适应广泛的人类姿势。这些方法虽然没有被证明能够实现用于人脸对齐任务的级联回归方法(Cascaded Regression Method)表现出的高精确度,但另一方面,级联回归方法的性能在初始化不准确的情况下,或有大量的自我封闭的特征点或大的平面内旋转时会变差。

最近,基于热图回归(Heatmap Regression)的完全卷积神经网络架构彻底改变了人体姿态估计,即使对于最具挑战性的数据集也得到非常高的准确度。由于它们对端到端训练和人工工程的需求很少,这种方法可以很容易地应用于人脸对齐问题。

 使用2D-3D方法构建最大数据集(LS3D-W)

作者表示,按照这个路径,“我们的主要贡献是构建和训练这样一个强大的人脸对齐网络,并首次调查在所有现有的2D人脸对齐数据集和新引入的大型3D数据集上距离达到接近饱和性能(saturating performance)有多远”。

Contributions(具体的贡献):

1. 首次构建了一个非常强大的基准(baseline),结合state-of-the-art的特征点定位架构和state-of-the-art的 残差模块(residual block),并在非常大的综合扩展的2D人脸特征点数据集训练。然后,我们对所有其他2D数据集(约230000张图像)进行评估,分析真正解决2D人脸对齐问题还有多远。

2. 为了解决3D人脸对齐数据集少的问题,本文进一步提出了一种将2D注释转换为3D注释的2D特征点CNN方法,并使用它创建LS3D-W数据集,这是目前最大、最具挑战性的3D人脸特征点数据集(约230000张图像),是通过将现存的所有数据集统一起来得到的。

3. 然后,本文训练了一个3D人脸对齐网络,并在新的大型3D人脸特征点数据集进行评估,实际分析距离解决3D人脸对齐问题尚有多远。

4. 本文进一步研究影响人脸对齐性能的所有“传统”因素,例如大姿态(large pose),初始化和分辨率,并引入“新的”因素,即网络的大小。

5. 本文测试结果显示,2D和3D人脸对齐网络都实现了非常高准确度的性能,这可能是接近了所使用的数据集的饱和性能。

2D-FAN结构:

通过堆叠四个HG(HourGlass)构建的人脸对齐网络(Face Alignment Network, FAN),其中所有的 bottleneck blocks(图中矩形块)被替换为新的分层、并行和多尺度block。

方法及数据:2D、3D标注及2D-3D转换都接近饱和性能

文章首先构建人脸对齐网络“FAN”(Face Alignment Network),然后基于FAN,构建2D-to-3D-FAN,也即将给定图像2D面部标注转换为3D的网络。文章表示,据测试所知,在大规模2D/3D人脸对齐实验中训练且评估FAN这样强大的网络,还尚属首次。

他们基于人体姿态估计最先进的架构之一HourGlass(HG)来构建FAN,并且将HG原有的模块bottleneck block替换为一种新的、分层并行多尺度结构(由其他研究人员提出)。

2D-to-3D-FAN网络架构:基于人体姿态估计架构HourGlass,输入是RGB图像和2D面部地标,输出是对应的3D面部地标。

2D-FAN标记结果

3D-FAN标记结果

下面是跟现有方法(红色)的对比,这样看更能明显地看出新方法的精度:

除了构建FAN,作者的目标还包括创建首个超大规模的3D面部地标数据集。目前3D面部地标的数据还十分稀少,因此也让这项工作贡献颇大。鉴于2D-FAN卓越的效果,作者决定使用2D-to-3D-FAN来生成3D面部地标数据集。

但是,这也带来了一个问题,那就是评估2D转3D数据很难。现有的最大同类数据集是AFLW2000-3D。于是,作者先使用2D-FAN,生成2D面部地标标注,再使用2D-to-3D-FAN,将2D数据转换为3D面部地标,最后将生成的3D数据与AFLW2000-3D进行比较。

结果发现,两者确实有差异,下图展示了差异最大的8幅图像标记结果(白色是论文结果):

作者表示,造成差异的最大原因是,以前的方法半自动标记管道对一些复杂姿态没有生成准确的结果。于是,在改进数据后,他们将AFLW2000-3D纳入现有数据集,创建了LS3D-W(Large Scale 3D Faces in-the-Wild dataset),一共包含了大约230,000幅标记图像,也是迄今最大的3D人脸对齐数据集。

作者之后从各个方面评估了LS3D-W数据集的性能。研究结果表明,他们的网络已经达到了数据集的“饱和性能”,在构图、分辨率,初始化以及网络参数数量方面表现出了超高的弹性(resilience)。更多信息参见论文。

作者表示,虽然他们还没有在这些数据集中去探索一些罕见姿态的效果,但只要有足够多的数据,他们确信网络也能够表现得一样好。

作者:南君
出处:http://www.cnblogs.com/molakejin/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

paper 157:文章解读--How far are we from solving the 2D & 3D Face Alignment problem?-(and a dataset of 230,000 3D facial landmarks)的更多相关文章

  1. paper 159:文章解读:From Facial Parts Responses to Face Detection: A Deep Learning Approach--2015ICCV

    文章链接:https://arxiv.org/pdf/1509.06451.pdf 1.关于人脸检测的一些小小总结(Face Detection by Literature) (1)Multi-vie ...

  2. [转帖]2016年的文章: 解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介

    解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介 更新时间:2016年06月23日 11:38:00   作者:汤姆大叔    我要评论 https://www.jb ...

  3. 陈天奇XGBoost文章解读(未完成)

    这个是我下载的原文在看,然后结合一些网上的资料学习,先贴一个网上的资料. 终于有人说清楚了XGBoost算法 XGBoost阅读之Weighted quantile sketch XGBoost论文翻 ...

  4. Face recognition using Histograms of Oriented Gradients

    Face recognition using Histograms of Oriented Gradients 这篇论文的主要内容是将Hog算子应用到人脸识别上. 转载请注明:http://blog. ...

  5. AAAI2019 | 基于区域分解集成的目标检测 论文解读

    Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...

  6. paper 156:专家主页汇总-计算机视觉-computer vision

    持续更新ing~ all *.files come from the author:http://www.cnblogs.com/findumars/p/5009003.html 1 牛人Homepa ...

  7. 人脸识别必读的N篇文章

    一,人脸检测/跟踪 人脸检测/跟踪的目的是在图像/视频中找到各个人脸所在的位置和大小:对于跟踪而言,还需要确定帧间不同人脸间的对应关系. 1, Robust Real-time Object Dete ...

  8. Transformer解析与tensorflow代码解读

    本文是针对谷歌Transformer模型的解读,根据我自己的理解顺序记录的. 另外,针对Kyubyong实现的tensorflow代码进行解读,代码地址https://github.com/Kyuby ...

  9. 解读大内老A的《.NET Core框架本质》

    老A说的一句话让我很受启发,想要深入了解框架,你要把精力聚焦在架构设计的层面来思考问题.而透彻了解底层原理,最好的笨办法就是根据原理对框架核心进行重建或者说再造.看起来没有捷径,也是最快的捷径. 题外 ...

随机推荐

  1. 鸿蒙系统开源学习经验分享HarmonyOS[www.allharmonyos.com]

    分享鸿蒙系统开源知识,分享学习经验,分享鸿蒙系统开发经验 www.allharmonyos.com https://gitee.com/allharmonyos https://github.com/ ...

  2. SqlServer 字段类型详解

    bit    整型 bit数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或False .On 或Off. 注意:很省空间的一种数据类型, ...

  3. cts测试流程

    测试目的: 用于检测你做的Android系统是否满足兼容性要求,通俗点说,Google认为Android系统应该满足的条件,你需要满足. 例如框架层暴露给应用层的某些接口,Google认为你因该有,那 ...

  4. crontab自动执行任务,失败原因记录

    服务器上使用crontab部署这两个每分钟自动执行的命令.首先,这两个命令是之前的人部署的,在我接手之前,就一直在了的.根据命令,实际上应该是做到每分钟都执行一次脚本.但是实际操作中,却发现,其实并没 ...

  5. 应用安全-Web安全-漏洞修复方案整理

    通过HTTP头部字段防御措施整理 X-Frame-Options #反劫持 X-XSS-Protection #开启浏览器防XSS功能 Set X-Frame-Options  CSP X-Conte ...

  6. Windows下Navicat远程连接Linux下MySQL服务器错误1130

    今天用Navicat在Windows下连接Linux服务器上的MySQL,显示出错误1130. 当然这是在修改了MySQL的配置文件my.cnf的前提下允许远程访问的基础上的,如果没有修改my.cnf ...

  7. LeetCode10 Indexed tree

    Binary Indexed Tree(Fenwick tree): 是一个查询和修改复杂度都为log(n)的数据结构.主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值:经过简单修 ...

  8. 7、numpy——广播

    1.广播的引出 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行. 如果两个数组 a 和 b 形状相同,即满足 a. ...

  9. SQL 查询 group by 的使用注意点

    今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,通过在百度里面搜索,并亲自动手实现,终于发现问题所在,现在把它记录下来. 语句如下:     select [OrderI ...

  10. NodeJs的CommonJS模块规范

    前言 本人记忆力一般,为了让自己理解<深入浅出Node.js-朴灵>一书,会在博客里记录一些关键知识,以后忘了也可以在这里找到,快速回想起来 Node通过require.exports.m ...