点集配准---CPD(Coherent Point Drift)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xholes/article/details/84560795

点集配准—CPD(Coherent Point Drift)

问题引入

给定两个点集,如何将两个点集进行配准,也就是对齐两个点集,找到相互对应的点。在低维、‘干净’的数据集中下可以尝试许多其他的方法。当数据的维度持续增长,并包含噪音或者冗余点时,问题就变得复杂了。

我们的目的是给定一个点集,在另一个点集中找到其对应点。如果将这种对应看成是一种概率,真正的对应点概率为1,错误的对应点概率值为0,当然,这是最理想的情况。也就是说, 我们可以使用一个概率值了描述这种对应关系,概率值越大,这种对应关系的确定性也就越大。既然涉及到了概率,那么就就会考虑到概率模型:均匀分布、二项分布、正态分布等。因此,需要选择一个正确的模型来描述这种对应关系。如果针对一个点与一个点的对应关系, 可以使用正态分布(高斯分布)来描述,那个当存在多个点时,恰好可以使用混合高斯模型(GMM: Gaussian Mixture Model)来进行描述。

此时,将两个点集的配准问题转化成一个概率密度估计的问题。也即是求解混合高斯模型的参数问题。


问题定义

给定两个点集 X D × N = { x 1 , x 2 ,   , x N } \bold{X_{D\times N} }= \{x_1, x_2, \cdots, x_N\} , Y D × M = { x 1 , x 2 ,   , x M } \bold{Y_{D\times M} }= \{x_1, x_2, \cdots, x_M\} ,点集的维度是 D D , 两个点集之间的变换关系 X = T ( Y , θ ) \bold X = \Tau(Y, \theta) 。假定以点集 Y Y 为GMM的各个分模型(高斯模型的中心), X X 中的数据点就可以看成是由该模型生成的数据点。此时,GMM的概率密度函数可以写成:
p ( x ) = m = 1 M P ( m ) p ( x m ) p ( x m ) = 1 ( 2 π σ 2 ) D / 2 e x p x y m 2 2 2 σ 2 \begin{aligned} p(\bold x) &= \sum_{m=1}^{M}P(m)p(\bold x|m) \\ p(\bold x|m) &= \frac{1}{(2\pi \sigma ^2)^{D/2}}exp^{-\frac{||x-y_m||_2^2}{2\sigma^2}} \end{aligned}

考虑到数据中存在噪音或者冗余点或异常值,即 N M N \neq M , 此时,可以引入一个额外的均匀分布:
p ( x M + 1 ) = 1 N p(\bold x | M+1) = \frac{1}{N}
结合两种概率分布,使用一个参数 ω \omega 对两种分布进行加权后的完整概率密度函数为:
p ( x ) = m = 1 M + 1 P ( m ) p ( x m ) = ω 1 N + ( 1 ω ) 1 M p ( x m ) p(\bold x) = \sum_{m=1}^{M+1}P(m)p(\bold x|m) = \omega \frac{1}{N} + (1 - \omega) \frac{1}{M}p(\bold x | m)

假定每个数据点都独立同分布,此时似然函数可以写作:
L ( θ , σ 2 ) = i = 1 N p ( x i ) = i = 1 N m = 1 M + 1 P ( m ) p ( x i m ) ( θ , σ 2 ) = log i = 1 N p ( x i ) = log i = 1 N m = 1 M + 1 P ( m ) p ( x i m ) = i = 1 N log m = 1 M + 1 P ( m ) p ( x i m ) \begin{aligned} L(\theta, \sigma^2) &= \prod_{i=1}^{N}p(x_i) = \prod_{i=1}^{N} \sum_{m=1}^{M+1}P(m)p(x_i|m)\\ \ell (\theta, \sigma^2) &= \log \prod_{i=1}^{N}p(x_i) \\ &=\log \prod_{i=1}^{N} \sum_{m=1}^{M+1}P(m)p(x_i|m) \\ &=\sum_{i=1}^{N}\log \sum_{m=1}^{M+1}P(m)p(x_i|m) \end{aligned}
通过最大化这个似然函数就可以得到我们所需要的参数 ( θ , σ 2 ) (\theta, \sigma^2) 。我们通常意义上求解最大似然函数的方法是通过对似然函数取对数后求导,令导数为0构建方程组来得到我们所需要的参数。然而,在这里由于式子比较复杂,利用上述方法来做求解参数会比较麻烦,因此可以使用EM算法来求解。

EM算法解GMM
如果使用后验概率来表示点集 X \bold X 和点集 Y \bold Y 中点的对应关系,则有:
P ( m x n ) = P ( m ) p ( x n m ) P ( x n ) P(m\mid x_n) = \frac{P(m)p(x_n\mid m)}{P(x_n)}
根据EM算法中的E步,写出Q函数:
Q = n = 1 N m = 1 M + 1 P o l d ( m x n ) log ( P n e w ( m ) p n e w ( x n m ) ) P o l d ( m x n ) = e x p 1 2 x n τ ( y m , θ o l d ) σ o l d 2 k = 1 M e x p 1 2 x n τ ( y m , θ o l d ) σ o l d 2 + c c = ( 2 π σ 2 ) D / 2 ω 1 ω M N \begin{aligned} Q&= \sum_{n=1}^{N}\sum_{m=1}^{M+1}P^{old}(m\mid x_n)\log(P^{new}(m)p^{new}(x_n\mid m)) \\ P^{old}(m\mid x_n) &= \frac{exp^{-\frac{1}{2}||\frac{x_n - \tau(y_m, \theta^{old})}{\sigma^{old}}||^2}}{\sum_{k=1}^{M}exp^{-\frac{1}{2}||\frac{x_n - \tau(y_m, \theta^{old})}{\sigma^{old}}||^2}+c}\\ c&=(2\pi\sigma^2)^{D/2}\frac{\omega}{1-\omega}\frac{M}{N} \end{aligned}
上述Q函数的推出过程:Q函数的定义可以参看 [3] 期望极大算法中函数的定义:
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z θ ) Y , θ ( i ) ] = Z log P ( Y , Z θ ) P ( Z Y , θ ( i ) ) Q(\theta,\theta^{(i)}) = E_Z[\log P(Y,Z\mid \theta) \mid Y,\theta^{(i)}] = \underset {Z}{\sum} \log P(Y,Z\mid \theta)P(Z\mid Y,\theta^{(i)})
该定义式是在已知参数 θ ( i ) \theta^{(i)} 的情况下,对隐藏随机变量 Z Z 求期望值, 其中的 P ( Y , Z θ ) P(Y,Z|\theta) 对应此处的 p ( x ) p(\bold x) , P ( Z Y , θ ( i ) ) P(Z\mid Y,\theta^{(i)}) 对应着后验概率 P ( m x ) P(m|x) 。其实,根据Jesson不等式可知,Q函数是对数似然函数 \ell 的下界。因此,通过最大化这个下界,最终等同于最大化似然函数。

对Q函数进行化简,去除和参数 ( θ , σ 2 ) (\theta, \sigma^2) 无关的常数,可得:
Q ( θ , σ 2 ) = n = 1 N m = 1 M + 1 P o l d ( m x n ) log ( P n e w ( m ) p n e w ( x n m ) ) = n = 1 N ( m = 1 M P o l d ( m x n ) log ( ( 1 ω ) 1 M 1 ( 2 π σ 2 ) ( D / 2 ) exp ( x n τ ( y m , θ ) 2 2 σ 2 ) + p o l d ( M + 1 x n ) ω 1 N ) n = 1 N m = 1 M P o l d ( m x n ) log ( ( 1 ω ) 1 M 1 ( 2 π σ 2 ) ( D / 2 ) exp ( x n τ ( y m , θ ) 2 2 σ 2 ) n = 1 N m = 1 M P o l d ( m x n ) log ( 1 ( σ 2 ) ( D / 2 ) exp ( x n τ ( y m , θ ) 2 2 σ 2 ) = n = 1 N m = 1 M P o l d ( m x n ) log [ ( σ 2 ) ( D / 2 ) exp ( x n τ ( y m , θ ) 2 2 σ 2 ) ] = n = 1 N m = 1 M P o l d ( m x n ) [ log ( σ 2 ) ( D / 2 ) + log exp ( x n τ ( y m , θ ) 2 2 σ 2 ) ] = n = 1 N m = 1 M P o l d ( m x n ) [ log σ 2 + log ( exp ( x n τ ( y m , θ ) 2 2 σ 2 ) ] = ( n = 1 N m = 1 M P o l d ( m x n ) log σ 2 + 1 2 σ 2 n = 1 N m = 1 M x n τ ( y m , θ ) 2 ) \begin{aligned} Q(\theta, \sigma^2) &= \sum_{n=1}^{N}\sum_{m=1}^{M+1}P^{old}(m\mid x_n)\log(P^{new}(m)p^{new}(x_n\mid m)) \\ &= \sum_{n=1}^{N}(\sum_{m=1}^{M}P^{old}(m\mid x_n)\cdot\log({(1-\omega)}\frac{1}{M}\frac{1}{(2\pi\sigma^2)^{(D/2)}}\exp(-\frac{||x_n - \tau(y_m, \theta)||^2}{2\sigma^2})+ p^{old}(M+1|x_n)\cdot \omega\frac{1}{N})\\ &\approx\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}(m\mid x_n)\cdot\log({(1-\omega)}\frac{1}{M}\frac{1}{(2\pi\sigma^2)^{(D/2)}}\exp(-\frac{||x_n - \tau(y_m, \theta)||^2}{2\sigma^2})\\ &\approx\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}(m\mid x_n)\cdot\log(\frac{1}{(\sigma^2)^{(D/2)}}\exp(-\frac{||x_n - \tau(y_m, \theta)||^2}{2\sigma^2})\\ &= -\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}(m\mid x_n)\cdot\log[{(\sigma^2)^{(D/2)}}\exp(\frac{||x_n - \tau(y_m, \theta)||^2}{2\sigma^2})]\\ &= -\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}(m\mid x_n)\cdot[\log{(\sigma^2)^{(D/2)}}+ \log\exp(\frac{||x_n - \tau(y_m, \theta)||^2}{2\sigma^2})]\\ &= -\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}(m\mid x_n)\cdot[\log{\sigma^2}+ \log(\exp(\frac{||x_n - \tau(y_m, \theta)||^2}{2\sigma^2})]\\ &= -\Big(\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}(m\mid x_n)\cdot\log{\sigma^2}+\frac{1}{2\sigma^2}\sum_{n=1}^{N}\sum_{m=1}^{M} {||x_n - \tau(y_m, \theta)||^2}\Big)\\ \end{aligned}

其中,对于GMM中的各个高斯分模型:
P o l d ( m x n ) = ( 1 ω ) 1 M 1 ( 2 π σ 2 ) ( D / 2 ) exp ( 1 2 x n τ ( y m , θ o l d ) σ o l d 2 ) k = 1 M ( 1 ω ) 1 M 1 ( 2 π σ 2 ) ( D / 2 ) exp ( 1 2 x n τ ( y k , θ o l d ) σ o l d 2 ) + ω 1 N = exp ( 1 2 x n τ ( y m , θ o l d ) σ o l d 2 ) k = 1 M exp ( 1 2 x n τ ( y k , θ o l d ) σ o l d 2 ) + ( 2 π ( σ o l d ) 2 ) D / 2 ω 1 ω M N \begin{aligned} P^{old}(m\mid x_n) &= \frac{{(1-\omega)}\frac{1}{M}\frac{1}{(2\pi\sigma^2)^{(D/2)}}\exp(-\frac{1}{2}\big |\big|\frac{x_n - \tau(y_m, \theta^{old})}{\sigma^{old}}\big|\big|^2)}{\sum_{k=1}^{M}{(1-\omega)}\frac{1}{M}\frac{1}{(2\pi\sigma^2)^{(D/2)}}\exp(-\frac{1}{2}\big |\big|\frac{x_n - \tau(y_k, \theta^{old})}{\sigma^{old}}\big|\big|^2)+ \omega\frac{1}{N}}\\ &= \frac{\exp(-\frac{1}{2}\big |\big|\frac{x_n - \tau(y_m, \theta^{old})}{\sigma^{old}}\big|\big|^2)}{\sum_{k=1}^{M}\exp(-\frac{1}{2}\big |\big|\frac{x_n - \tau(y_k, \theta^{old})}{\sigma^{old}}\big|\big|^2)+ (2\pi(\sigma^{old})^2)^{D/2}\frac{\omega}{1-\omega}\frac{M}{N}}\\ \end{aligned}


不同的变换 τ ( y , θ ) \tau(y, \theta) θ \theta 参数是不一样的,因此需要分别考虑。

刚性变换
仿射变换
弹性形变

Reference
[1] Point Set Registration: Coherent Point Drift
[2] 混合高斯模型:Gaussian Mixture Model
[3] 期望极大算法:Expectation Maximization Algorithm

猜你喜欢

转载自blog.csdn.net/xholes/article/details/84560795