1. 程式人生 > >點集配準---CPD(Coherent Point Drift)

點集配準---CPD(Coherent Point Drift)

點集配準—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}