CFAN:Coarse-to-Fine Auto-Encoder Networks (CFAN) for Real-Time Face Alignment
|
版权:本文版权归作者和博客园共有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任 |

原始论文链接:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.702.1120&rep=rep1&type=pdf
框架:
CFAN是将深度网络(自编码网络)作为回归器,利用级联回归coarse-to-fine的框架,实现人脸特征点定位的方法。
它是一种用深度网络做人脸特征点定位的方法,采用的结构是级联栈式自编码(Stacked Auto-encoder Networks,SANs),级联过程由四个栈式自编码网络(SAN)完成。每个SAN根据前一个SAN的形状估计,在不同尺度图像下,学习人脸图像到人脸形状的映射。
第一个SAN(global SAN)的目标是尽力找到关键点的大致位置,所以检测好人脸的低分辨率图像作为输入,定位结果不够准确,但实现快速。输入的是全局图像特征,不是给定初始形状(一般是平均形状)的局部形状索引特征,优点是,避免了不准确的平均形状对后续refine过程的影响。无需给定初始形状,也是用自编码网络做定位的优点是,它会快速地从图像中自学习,得到一个更接近真实形状的初始形状S0。
后续级联三个SANs(local SANs)的目标是逐步精调(refine)前一个网络得到的形状估计,每个SAN的输入是前一个网络得到的形状(称为当前形状)在更高分辨率图像上的局部特征(形状索引特征),学习特征和形状差异delta_S(当前形状和真实形状的差)之间的关系,用来更新形状。将所有点的形状索引特征连接起来,一起更新所有特征点,有种增加形状约束的意思。

Global SAN
输入:人脸图像 x
标签:p个特征点的真实位置(真实形状) Sg
目标:学习图像x到人脸形状的映射F: x->S
网络结构:通常情况下,F是复杂的非线性的,为了达到目标,将k-1个单独的隐藏层自编码堆叠起来,作为深度神经网络,将图像映射到对应的形状上。那么人脸对齐任务就可以公式化为最小化下面的目标:


F={f1,f2,…fk},fi 是深度网络中第i层的映射函数。激活函数(sigma):sigmoid,激活函数的输出范围【0,1】对应于位置的范围。最后加一层线性回归(第k层)
输出:形状估计S0
【F有很多参数,容易陷入局部极小】
1.以堆栈方式,采用无监督的预训练来初始化前k-1层,随机初始化最后一层第k层
2.以有监督的方法finetuning整个网络
Local SANs
输入:当前形状下每个点的局部特征连接起来
标签:当前形状Sj-1和真实形状Sg的差delta_Sj
目标:前面得到的S0很接近真实形状,后面几个SANs的目标就是根据连接的局部形状索引特征(例如SIFT),迭代地预测delta_Sj

网络结构:与Global的相似,也是栈式深度自编码网络,只是输入是前一个网络预测形状在更高分辨率图像下的局部形状索引特征。

实验细节(68点,特征用的是sift特征)
global:50*50--1600--900--400--136(68*2)
local:sift特征--1296--784--400--136
由于68点的sift特征维数太大,为68*136=8704,需要用PCA降维再输入到网络中,所以三个local网络的结构为
local_1:降至1695维后的sift特征--1296--784--400--136
local_2:降至2418维后的sift特征--1296--784--400--136
local_3:降至2440维后的sift特征--1296--784--400--136
CFAN:Coarse-to-Fine Auto-Encoder Networks (CFAN) for Real-Time Face Alignment的更多相关文章
- Auto Encoder用于异常检测
对基于深度神经网络的Auto Encoder用于异常检测的一些思考 from:https://my.oschina.net/u/1778239/blog/1861724 一.前言 现实中,大部分数据都 ...
- div高度自适应(总结:min-height:100px; height:auto;的用法)
对于div高度自适应问题,我总是用一句话:height:auto来解决. 但是很多时候我们需要的是当div内部有内容时,高度会随着内容的增加和增加,当div中没有内容时,div能够保持一个固定的高度. ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第三周:浅层神经网络(Shallow neural networks) -课程笔记
第三周:浅层神经网络(Shallow neural networks) 3.1 神经网络概述(Neural Network Overview) 使用符号$ ^{[
- NHibernate系列文章二十八:NHibernate Mapping之Auto Mapping(附程序下载)
摘要 上一篇文章介绍了Fluent NHibernate基础知识.但是,Fluent NHibernate提供了一种更方便的Mapping方法称为Auto Mapping.只需在代码中定义一些Conv ...
- Deep Learning 8_深度学习UFLDL教程:Stacked Autocoders and Implement deep networks for digit classification_Exercise(斯坦福大学深度学习教程)
前言 1.理论知识:UFLDL教程.Deep learning:十六(deep networks) 2.实验环境:win7, matlab2015b,16G内存,2T硬盘 3.实验内容:Exercis ...
- 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks
Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...
- 论文笔记之:Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking
Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking arXiv Paper ...
- 类型推导:函数模板与auto
1.从函数模板谈起 函数模板的类型推导机制是在c++98时代就有的,auto的类型推导机制与其基本一致,所以先理解函数模板类型推导. 函数模板可以用如下代码框架表示: #template<typ ...
随机推荐
- qemu -net tap配置上网
1 该选项的用途 让qemu所在的宿主机器的tap网络接口和qemu的vlan n连接起来,从而进一步配置宿主机后,可以让qemu里面的操作系统可以通过vlan n里面的网卡上网. 2 真个系统的架构 ...
- 大括号对struct进行初始化
1 partial initialization 即所谓的部分初始化. 这个时候,无论该struct变量是static的还是automic的,未显式初始化的成员都会被初始化为默认值.
- wsgiref — WSGI Utilities and Reference Implementation nginx
from wsgiref.util import setup_testing_defaults, request_urifrom wsgiref.simple_server import make_s ...
- Buildroot 龙芯1C支持指南
本文转载自:https://github.com/pengphei/smartloong-sphinx/blob/master/source/cn/loongson1c_buildroot_guide ...
- Basic Queries (LINQ to XML)
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/basic-queries-linq-to ...
- YTU 2428: C语言习题 计算该日在本年中是第几天
2428: C语言习题 计算该日在本年中是第几天 时间限制: 1 Sec 内存限制: 128 MB 提交: 1505 解决: 857 题目描述 定义一个结构体变量(包括年.月.日).编写一个函数d ...
- ACTION 的跳转与参数传递
openmodifychildsysfunmenu <td width="54%"><a href="#" style="float ...
- 【FFT初识】
FFT在用于解决多项式乘法A*B(A和B为多项式,形如a0+a1*x^1+a2*x^2....)的时候,通俗地解释就是: 原理:先根据各自的系数各自转化为对应的向量(O(nlogn)),然后向量相 ...
- 最好的6个Go语言Web框架
原文:Top 6 web frameworks for Go as of 2017 作者:Edward Marinescu 译者:roy 译者注:本文介绍截至目前(2017年)最好的6个Go语言Web ...
- filter() 函数
描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 Tru ...