动态规划

星型结构的动态规划

1.

这里写图片描述

其中, S0,S1,S2,S3,S4 分别是 cen,lel,rer,ml,mr ,(即中心,左眼眼角,右眼眼角和嘴左角,嘴右脚)是搜索空间。
红色的点和蓝色的点之间的连线称之为: spring ,其外围的虚线边框是该特征点对应的 patch .

动态规划问题:

这里写图片描述
注:下面 S0S4 即表示搜索空间,又表示阶段。采用混合术语。
1阶段
这里从 S0,S1,S2,S3,S4 可以看作1-5阶段。
2状态
第一个阶段S0的状态变量,即 cener ,或用 s0 表示,其状态变量的集合即为搜索空间,图中S0所标注的矩形区域。
3决策
状态变量 lel 取值为红色的位置时,其下一个阶段,可以选择蓝色的位置,或者蓝色的前一个位置。这表示决策。描述决策的变量称为决策变量。如从第二个S1阶段到第一个阶段S0决策的例子:
u1(lel=) ,可以看作是一个决策变量,其取值是整个S0区域。
编程时,通常定义一个决策数组,用来跟踪状态的变化,用来寻找达到最优时的最优策略。
4策略
各决策阶段组成的序列就是策略。我们的目的是根据一个”评价函数+准则”,找到最优的策略。
5状态转移方程
其描述了上一个阶段的状态 sk 和下一个阶段的状态 sk+1 ,以及决策 uk 的关系,如上为:

sk+1=uk(sk)

6指标函数
即评价函数。即我们希望找到的5个landmarks满足,所有特征点的纹理匹配代价和形变代价最大。

纹理代价
我们可以提取hog,sift,sparse_LBP,LBF等特征。在评价函数一般确认的情况下,纹理特征的描述和提取对于landmarks的定位很重要。学过模板匹配的都知道,当检测的区域的纹理特征和模板表示的特征相同时,可以达到最大的响应。
形变代价
常用的代价是两个特征点之间的位移矢量的二次函数,则两个特征点之间的形变代价为:。

f((xi,yi),(xj,yj))=a(dx)2+b(dx)+c(dy)2+d(dy)(2)

其中 a,b,c,d 是在训练时,需要学习的模型参数。
在模型的学习过程中,我们只要约束二次函数的二次项的系数全负,我们就可以利用广义距离变换加速动态规划的求解。

辅助理解

文献1中,公式(3)

Shapem(L)=ijEmamijdx2+b2ij+cmijdy2+cmijdy2+dmijdy(3)

其中 m 表示component 或者viewPoint或者mixture,即视角
ijEm表示 i,j 相连。
上述公式转换为公式(4):
Shapem(L)=(Lμm)TΛm(Lμm)+constant(4)

其中 (μ,Λ) 是形状参数 (a,b,c,d) 重新参数化的表示。其类似于一个高斯分布。其中 Λm 是一个sparse precision matrix,即其中的非0项对应于 Em 中相连的两个部分 i,j 。[34]给出,当二次函数的 a,c 两个系数是负的时,矩阵 Λm 是正定的。 μm 可以看作是理想的形状。 Λm 小的特征值对应的特征向量表示带有小惩罚的“形变模式 deformation mode”。
个人理解:当 Λm 正定时,则:
(Lμm)TΛm(Lμm)<0

同时公式(2)对于二次是一个抛物面,开口向下的抛物面。其正迎合了广义距离变换的求解。
评价函数:
f(L)=App(L)+Shape(L)

我们希望评价函数值越大越好,对于纹理,越匹配,则 App(L) 值越大。对于 Shape(L) 也是约匹配的时候越大。(下图,抛物线画的不标准,广义距离变换在求解时,需要两个抛物线的交点只有一个。我们将形变和广义距离变换画在同一个图上了,其中 L 表示当前形状,μm表示理想的形状, p,q 表示一维网格,其对应图中的两个抛物线, S 是两个抛物线的交点。)
这里写图片描述

1.欧式距离的广义距离变换

给定G={0,...,n1}×{0,...,m1}是一个二维的网格,并且 f:GR 是网格上的任意函数。函数 f 的二维距离变换(在平方欧式距离下)给出:

Df(x,y)=minx,y((xx)2+(yy)2+f(x,y))(5)

这里, (x,y)(x,y)
和多元函数求解积分类似,由于公式(5)中的第一项不含有 y ,那么我们可以对公式(5),先对 y 最小化,或者先对 x 最小化:
先对 y
Df(x,y)=miny((yy)2+minx((xx)2+f(x,y))

=miny((yy)2+Df|y(x))(6)

先对 x
Df(x,y)=minx((xx)2+miny((yy)2+f(x,y))

=minx((xx)2+Df|x(y))(7)

说明:例如上式,先对将 x 看成常数,对 y 进行最小化、

2.任意二次形变函数的广义距离变换:

公式(3)中,我们针对某两个相邻的landmarks,如果从 ViVj ,我们称 Vi 为孩子, Vj 为父亲,进行动态规划求解,即形如公式(2)那样:

f(xj,yj)=maxxi,yi(f(xi,yi)+f((xi,yi),(xj,yj)))=maxxi,yi(a(dx)2+b(dx)+c(dy)2+d(dy)+f(xi,yi))(8)

其中 f(xi,yi) 表示孩子基准点匹配的纹理代价, f((xi,yi),(xj,yj)) 表示两个基准点之间的形变代价。
同理,我们也可以转换为一维广义距离变换:
f(xj,yj)=maxxi(a(dx)2+b(dx)+maxyi(c(dy)2+d(dy)+f(xi,yi)))(9)

即:
f(xj,yj)=maxxi(a(dx)2+b(dx)+maxyi(c(dy)2+d(dy)+f(xi,yi)))(10)

其实现过程中,只需要修改交叉点 s 的计算,以及Df(xj,yj)的计算。

在图1中的 S1S0 的动态规划的计算,可以将搜索区域 S1S0 都映射到从1(for matlab)或者从0(for C)开始的位置,即通过减去各搜索区域的左上角位置。然后直接利用文献2中的一维广义距离变换求解。

算法复杂度的分析

常规遍历算法的时间复杂度:

针对图1中 S1S0 ,我们假设S1区域大小为 h1×w1 ,S0的搜索区域为 h0×w0 ,则外循环次数为 h0×w0 ,内循环次数为 h1×w1 ,则
时间复杂度为:

O(h1×w1×h0×w0)

广义距离变换的时间复杂度:

1.计算下包络(lower envelope或上包络)时间复杂度为: h1×w1
2.填充值(查找表)时间复杂度为: h0×w0
故总的时间复杂度为:

O(h1×w1+h0×w0)

参考文献:

1、Face Detection, Pose Estimation, and Landmark Localization in the Wild
2、Distance Transforms of Sampled Functions(广义距离变换)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值