版权:本文版权归作者和博客园共有 
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任

原始论文链接: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的更多相关文章

  1. Auto Encoder用于异常检测

    对基于深度神经网络的Auto Encoder用于异常检测的一些思考 from:https://my.oschina.net/u/1778239/blog/1861724 一.前言 现实中,大部分数据都 ...

  2. div高度自适应(总结:min-height:100px; height:auto;的用法)

    对于div高度自适应问题,我总是用一句话:height:auto来解决. 但是很多时候我们需要的是当div内部有内容时,高度会随着内容的增加和增加,当div中没有内容时,div能够保持一个固定的高度. ...

  3. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  4. 吴恩达《深度学习》-第一门课 (Neural Networks and Deep Learning)-第三周:浅层神经网络(Shallow neural networks) -课程笔记

    第三周:浅层神经网络(Shallow neural networks) 3.1 神经网络概述(Neural Network Overview) 使用符号$ ^{[

  5. NHibernate系列文章二十八:NHibernate Mapping之Auto Mapping(附程序下载)

    摘要 上一篇文章介绍了Fluent NHibernate基础知识.但是,Fluent NHibernate提供了一种更方便的Mapping方法称为Auto Mapping.只需在代码中定义一些Conv ...

  6. 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 ...

  7. 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks

    Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...

  8. 论文笔记之:Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking

    Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking  arXiv Paper ...

  9. 类型推导:函数模板与auto

    1.从函数模板谈起 函数模板的类型推导机制是在c++98时代就有的,auto的类型推导机制与其基本一致,所以先理解函数模板类型推导. 函数模板可以用如下代码框架表示: #template<typ ...

随机推荐

  1. ubuntu12.04安装tftp,配置,修改目录,错误类型

    [前言]学习嵌入式,需要配置tftp服务,在网上搜了搜,很多,但是配置了,我的老是出现Error code 1: File not found错误,经过探索和一个大哥的博客http://blog.cs ...

  2. Javascript 解析字符串生成 XML DOM 对象。

    Javascript 接收字符串生成 XML DOM 对象.实测对 Firefox .IE6 有效.可用于解析 ajax 的服务器响应结果,也可用于解析自定义字符串.​1. [代码]函数   ppt模 ...

  3. 并不对劲的bzoj2638

    为了反驳很对劲的太刀流,并不对劲的片手流决定与之针锋相对. 很对劲的太刀流-> 2638: 黑白染色 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit ...

  4. 手把手VirtualBox虚拟机下安装rhel6.4 linux位系统详细文档

    使用Virtual Box,感觉跟Vmware差不多,我的本子的系统是win7 64位. 下面演示安装的是在VirtualBox里安装rhel 6.4 linux 32位系统.32位系统安装和 64位 ...

  5. 【转】python文件打开方式详解——a、a+、r+、w+区别

    原文地址:http://blog.csdn.net/ztf312/article/details/47259805 第一步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写, ...

  6. 堆与栈(JAVA)——以String str="abc"的深度含义解释

    栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.   栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的 ...

  7. 洛谷 P3355 骑士共存问题【最小割】

    同方格取数问题:https://www.cnblogs.com/lokiii/p/8430720.html 记得把障碍点去掉,不连边也不计入sum #include<iostream> # ...

  8. 洛谷P1505 [国家集训队]旅游(树剖+线段树)

    传送门 这该死的码农题…… 把每一条边变为它连接的两个点中深度较浅的那一个,然后就是一堆单点修改/路径查询,不讲了 这里就讲一下怎么搞路径取反,只要打一个标记就好了,然后把区间和取反,最大最小值交换然 ...

  9. 码云 fatal: Authentication failed for

    最近push代码到码云时,push失败,提示fatal: Authentication failed for,解决方法就是: 在git命令行中输入 git config --system --unse ...

  10. Xposed 集成 Android 6.0.1环境中,总结

    由于工作需要,需要将xposed集成到android源码中,生成新的ROM就自带xposed的功能. 下面大体上说一下步骤和遇到的问题. 1.下载,并编译android源码,成功. 2.下载 http ...