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 所以看起来速度比较快。

本文主要参考这个博客的内容

https://i-blog.csdnimg.cn/blog_migrate/5653d64152827d658544c5575445e58a.png


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 老师也不知道是吧.




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值