Face alignment at 3000 FPS via Regressing Local Binary Features
最近在网上找了三个程序,一个程序是buding 找到给我的,是face alignment 的程序,网址是:
http://www.csc.kth.se/~vahidk/face_ert.html
这个程序只是下下来还没有研究
看的比较多的是:Face alignment at 3000 FPS via Regressing Local Binary Features
原因是:这个文章因为有人翻译成中文还有相应的code 所以看起来速度比较快。
本文主要参考这个博客的内容
http://demo.netfoucs.com/boosting1/article/details/26085223
Face alignment at 3000 FPS via Regressing Local Binary Features
这篇文章与face alignment by explicit shape regression都属于判别性形状回归的方法
判别性形状回归方法是一个什么样的方法我还不知道。
这片文章的主要贡献是使用限制使用了局部特征和回归树,将特征空间映射到线性空间,再使用线性回归学习
那么我们就主要介绍一下这个code 的逻辑跟流程:
本文对于如何提取一个landmark周围的像素点没有说明。应该是先求得当前形状和平均形状之间的旋转和尺寸变换后,在用变换后的offset去像素点(在One Millisecond Face Alignment with an Ensemble of Regression Trees中有详细说明)本周的任务是每天看一篇paper。发现东西看的少,肚子里面就没货。
对于我们来说:我们假如有一个检测关键点的程序(比如 INTEL 的那个或者是CMU 的那个)我们可以已知每个检测到的样本的两个眼角的坐标跟鼻子的坐标,同样我们可以知道平均脸中两个眼角的坐标跟鼻子的坐标,这样我们可以计算出一个映射关系。根据这个得到的映射关系我们可以计算出来原样本的新的图片。既然这个方法在opencv 的程序中有实现,只能说明这个方法不是最好的方法,本文所讲的方法应该是用一组训练样本求一个映射关系,然后测试样本都经过这个映射。
先说下整体的思路,再说这篇文章的特点:
1 整体思路是这样的
Step 1 对图片初始化 1 个shape(这个shape 就是一组点,目标是将它们移动到相应的眼睛鼻子嘴巴上)
Step 2 基于这个Shape 计算其每个点的周围像素,或者两shape两个点中间像素的值(为了对光照鲁棒,一般是两个点像素的差值),这个特征记做Features。
Step 3 计算当前Shape 和 人工标记好Shape 的差异Delta_Shape , 然后训练一个函数y = f(x) , 使 Delta_Shape = f(Features)。
Step 4 将这个Delta_Shape 加上初始的Shape 就是最终要求的人脸形状。
这个过程就是该方法的Face Alignmeng 核心过程。所谓配准就是计算这个增量。训练就是学习特征与这个增量的关系。本文的方法是对这个过程进行了级联,从而降低了每次配准的难度。将上文Step 4 中的结果代入Step1 循环10次。就是整体的过程。
本文特点
首先是特征的学习。和之前的方法不同,这篇文章使用 Random Forest 学习的结果作为特征。而不是直接向之前一样用像素差值作为特征,上个图吧
这个图比较宏观,可以看出的是第二列的特征是通过学习得到的,第四列的回归关系是线性的,也是通过学习得到的(这个过程本人还不是很懂,懂了之后对这一部分要丰富一下,但我知道可以用liblinear来做,过几天做出来再讲讲里面的细节和问题 ,对于内存不够的问题可以用稀疏矩阵, 可以看出第三列里特征矩阵式稀疏的)。
我现在还在研究上一幅图第三列之前的过程是如何计算的, 主要先说这一部分吧。当然如果计算出了这个局部二值特征,本文的工作也完成一大半。因为后面的工作是交给liblinear库去做的。
对于局部二值特征的学习现在是伤透了脑筋,对于连续的变量,不知道如何使用回归树,更确切的讲,离散的值可以算一个信息增益来选择特征,那么连续的变量如何选择特征呢,使用哪些指标?
对于这个问题,现在找到了两种办法,第一个办法是使用特征与属性的相关性来选择特征,然后在随机给出阈值。另一个方法是选择一个特征和阈值,这个特征和阈值可以让将样本分为两部分,每一部分求一个平均,然后两部分的样本各自减去平均值再求平方和。
平均形状的求法是:对应像素相加 除以总数就可以吧(buding)这么说的。
特征脸与平均脸的计算方法很不一样:
平均脸的计算我认为就是平均形状的计算方法:比如我每次检测出来的人脸里面各个坐标,所有的行相加除以所有的得到的就是平均脸。
特征脸的计算是不是要求主成分,像模式识别书里面讲的那样。
CMU 的那个貌似只能跑视频的程序,封装的太好了,我想利用CMU 的跑一些批量的图片,不知道该怎么做,但是我还是要把自己的想法告诉W老师。不然W 老师也不知道是吧.
Face alignment at 3000 FPS via Regressing Local Binary Features相关推荐
- 人脸对齐--Face Alignment at 3000 FPS via Regressing Local Binary Features
Face Alignment at 3000 FPS via Regressing Local Binary Features CVPR2014 https://github.com/yulequan ...
- Face Alignment at 3000 FPS via Regressing Local Binary Features(CVPR2014)读后感(first pass)
Face Alignment at 3000 FPS via Regressing Local Binary Features(CVPR2014)读后感(first pass) 这篇文章还是通过训练形 ...
- 论文《Face Alignment at 3000 FPS via Regressing Local Binary Features》笔记
论文:Face Alignment at 3000 FPS via Regressing Local Binary Features.pdf 实现:https://github.com/luoyetx ...
- 《Face alignment at 3000 FPS via Regressing Local Binary Features》阅读笔记
文章目录 一.前言 二.基于形状回归的人脸对齐算法 三.previous work 四.算法的具体实现 4.1 $\phi^{t}$ 的训练 4.2 全局线性回归矩阵 $W^{t}$ 的训练 五.局部 ...
- 人脸对齐之LBF(Local Binary Features)
基于LBF方法的人脸对齐,出自Face Alignment at3000 FPS via Regressing Local Binary Features,由于该方法提取的是局部二值特征(LBF),所 ...
- face alignment by 3000 fps系列学习总结(三)
训练 我们主要以3000fps matlab实现为叙述主体. 总体目标 我们需要为68个特征点的每一个特征点训练5棵随机树,每棵树4层深,即为所谓的随机森林. 开始训练 分配样本 事实上,对于每个特征 ...
- face alignment by 3000 fps系列学习总结
我们主要讲一讲Github上给出的matlab开源代码<jwyang/face-alignment>的配置. 首先声明:本人第一次配置的时候也是参考了csdn一个作者和github给出的说 ...
- Face Alignment by 3000 FPS系列学习总结(一)
广播: 如今的opencv已经提供了LBF的训练和测试代码,推荐阅读 <使用OpenCV实现人脸关键点检测> face alignment 流程图 train阶段 测试阶段 预处理 裁剪图 ...
- face alignment by 3000 fps系列学习总结(二)
准备初始数据 mean_shape mean_shape就是训练图片所有ground_truth points的平均值.那么具体怎么做呢?是不是直接将特征点相加求平均值呢? 显然这样做是仓促和不准确的 ...
最新文章
- 【SpringMVC】概述
- Pentaho 7.0更新:数据准备和分析两不误
- list可以存放python中任意类型的数据_Python中常见的数据类型小结
- DropDownList 選項改變確認腳本
- android 侧滑删除功能,200行代码让你在Android中完美实现iOS版侧滑删除效果
- Properties类 解析xml文件问题
- scrapy 去重策略修改
- python书写跨越多行的字符串的两种方式
- 让不同的库元件继承自共同的类
- 模块和包——Python
- 使用HTTP下载单词音标,特此记录
- 生物光子学 19节 加州大学戴维斯分校
- 渐变按钮 css,CSS3 Gradient Buttons
- 魔兽世界怀旧服务器无限刷怪点,魔兽世界怀旧服:4处无限刷新的打怪点!升级比血色站桩还快!...
- 深度学习之美 第五章 学习笔记
- gmail+mtalk配合打免费网络电话。
- python能超越java吗_為什么Python能超越JAVA,有什么優勢?
- 分享的山 换个地图打开成了海
- 2019传统微商为什么要转型快手电商?
- 影视作品烂到至高无上的境界不是槽点满满