试图理解这篇文章,写个笔记。

仅关注方法部分。

相关基础背景

忘光了,记一下

  1. 通俗的解释最大似然估计
    也就是说,贝叶斯统计推断和最大似然估计是根据观测值去反推参数的两个不同的路子。贝叶斯统计:未知参数是服从已知的分布的随机变量;最大似然估计:参数虽未知,但它是常数,看看它最大的可能是哪个数。
    前提假设:(1) 样本之间相互独立;(2) 分布确定,即质量密度函数确定

  2. EM算法
    最大似然估计和EM算法都是根据实现结果求解概率分布的最佳参数 θ \theta θ ,但最大似然估计中知道每个结果对应哪个概率分布(我知道哪个概率分布实现了这个结果),而EM算法面临的问题是:我不知道哪个概率分布实现了该结果。

  3. 高斯径向基函数
    函数的形式( x c x_c xc 是中心点):
    k ( x − x c ) = exp ⁡ ( − ∥ x − x c ∥ 2 2 σ 2 ) k\left(x-x_c\right)=\exp{\left(- \frac{\left\|x-x_c\right\|^2}{2\sigma^2}\right)} k(xxc)=exp(2σ2xxc2)
    双竖运算符 ∥ ⋅ ∥ \left\|\cdot\right\| 表示Norm运算,即取向量的“度量”。例如,二维下常为距离函数。 二维函数图像:
    在这里插入图片描述

  4. 高斯混合模型(Gaussian Mixture Models,GMM)
    GMM可用于无监督学习中的聚类的数据,其方式与 k k k-means几乎相同。但是,与 k k k-means相比,使用GMM有两个优点:1) k k k-means不考虑方差,GMM考虑方差,并返回数据点属于K个群集中每个群集的概率;2) k k k-means执行硬分类,GMM执行软分类


方法框架

该算法的目标是将遥感图像 I y I_y Iy 进行变换,使其与参考图像 I x I_x Ix 配准。我们从参考图像中检测一个特征点集 X X X ,从感知图像中检测一个特征点集 Y Y Y 。接下来我们使用基于期望最大化(EM)的过程来获得变换后的 Y Y Y 的位置,即 Z Z Z 。然后使用 Y Y Y Z Z Z 来求解用于图像变换的薄板样条函数(thin plate spline,TPS)插值1。方法的主要过程显示在论文的图一中。

在这里插入图片描述

也就是说这个事情的前提是啥呢,是已经有一个训练好的CNN,图像输进去,得到特征图。
I x → ( C N N ) → X ; I y → ( C N N ) → Y I_x \rightarrow \left( CNN \right) \rightarrow X;I_y \rightarrow \left( CNN \right) \rightarrow Y Ix(CNN)XIy(CNN)Y问题来了:这个CNN针对什么训练?分类?目标检测?这里先不管。
貌似在这篇文章里面有写方法:《Discriminative Unsupervised Feature Learning with Exemplar Convolutional Neural Networks》
相关解析:图像配准的前世今生:从人工设计特征到深度学习

相关符号:

  • X N × 2 X_{N \times 2} XN×2, Y M × 2 Y_{M \times 2} YM×2 ——分别从参考图像和感知图像中提取特征点集。
  • Z Z Z —— Y Y Y 的变换位置
  • N N N , M M M —— 分别代表 X X X Y Y Y 中的点数
  • x n x_n xn , y m y_m ym ——点集 X X X 中第 n n n 个元素和点集 Y Y Y 中第 m m m 个元素。

按照后面的描述, Z = Y + G W Z=Y+GW Z=Y+GW G G G 是高斯径向基函数。

特征描述和预匹配

学习特征

使用的网络:VGG-16
输入图片的尺寸:224 × \times × 224

生成特征描述符

用来生成特征描述符的特征图:pool3,pool4和pool5_1。这些层搜索一组通用的模式,并产生能很好地覆盖不同大小的感受域的特征响应值。

背景知识:Kronecker积

把输入图片分成28 × \times × 28的格子,每个格子对应一个尺寸为 8 × \times × 8的切片单元。

pool3出来的特征图是256个通道,也就是说,用一个256维数据来表征一个 8 × \times × 8的切片的特征。
pool3出来的特征图 O p o o l 3 O_{pool3} Opool3 直接使用,是个28 × \times × 28 × \times × 256 的张量,记为 F 1 F_1 F1,即 F 1 = O p o o l 3 F_1=O_{pool3} F1=Opool3

pool4出来的特征图 O p o o l 4 O_{pool4} Opool4 是个14 × \times × 14 × \times × 512 的张量,为了保持和 F 1 F_1 F1 的尺寸一致,做个变形,就是把长和宽都扩大一倍,原来一个点,扩大为4个点,变为 F 2 F_2 F2 F 2 = O p o o l 4 ⊗ I 2 × 2 × 1 F_2=O_{pool4} \otimes I_{2 \times 2 \times 1} F2=Opool4I2×2×1

I I I 表示下标形状的张量,元素全部是1。 也就是说,对于 F 2 F_2 F2 每个通道,实际上是对 O p o o l 4 O_{pool4} Opool4 进行了直接的放大,放大2倍,(还没有带消除锯齿的操作)。

pool5_1出来的特征图 O p o o l 5 _ 1 O_{pool5\_1} Opool5_1 是个7 × \times × 7 × \times × 512 的张量,同上面操作,变为 F 3 F_3 F3 F 3 = O p o o l 5 _ 1 ⊗ I 4 × 4 × 1 F_3=O_{pool5\_1} \otimes I_{4 \times 4 \times 1} F3=Opool5_1I4×4×1

F 1 F_1 F1 F 2 F_2 F2 F 3 F_3 F3 进行归一化

F i ← F i σ ( F i ) , i = 1 , 2 , 3 F_i \leftarrow \frac{F_i}{\sigma{\left(F_i\right)}},\qquad i=1,2,3 Fiσ(Fi)Fi,i=1,2,3
分别将点 x x x 的pool3、pool4和pool5_1的描述符记为 D 1 ( x ) D_1\left(x\right) D1(x), D 2 ( x ) D_2\left(x\right) D2(x) D 3 ( x ) D_3\left(x\right) D3(x)

特征的预匹配

x x x, y y y 两点之间的特征距离
d ( x , y ) = 2 d 1 ( x , y ) + d 2 ( x , y ) + d 3 ( x , y ) d(x,y)=\sqrt{2}d_1\left(x,y\right)+d_2\left(x,y\right)+d_3\left(x,y\right) d(x,y)=2 d1(x,y)+d2(x,y)+d3(x,y)
为什么要加这个 2 \sqrt{2} 2 呢,是因为 D 1 D_1 D1是256通道的, D 2 D_2 D2 D 3 D_3 D3都是512通道的。

d i ( x , y ) 是 d_i\left(x,y\right)是 di(x,y) x x x y y y 两点的欧拉距离。

x x x y y y 二者匹配的条件:

  1. d ( ⋅ , y ) d\left(\cdot, y\right) d(,y)之中, d ( x , y ) d\left(x,y\right) d(x,y)最小。
  2. 不存在使 d ( z , y ) < θ ⋅ d ( x , y ) d\left(z,y\right) < \theta \cdot d\left(x,y\right) d(z,y)<θd(x,y) d ( z , y ) d\left(z,y\right) d(z,y) 值。

θ \theta θ 取大于1的值,被称为匹配阈值。

这种匹配方法不能保证双射(bijection)

个人理解:遥感的图片有的点参考图片里没有,参考图片里有的点遥感图片里没有。

动态的内层(inlier )选择

inlier = 内层?没相关解释。

我们的特征点生成在正方形图像块的中心。 Y Y Y 变形为 Z Z Z 的情况下, Z ( i ) Z(i) Z(i) 可能和 X ( i ) X(i) X(i) 对应特征点的图像斑块可能部分或完全重叠。因此,为了实现更准确的配准,重叠比例较大的特征点应具有更好的对准程度,而部分重叠的图块的中心距离应较小。对齐程度是使用我们的动态内层选择来确定的。

在使用EM算法迭代求解 Z Z Z ( Y Y Y 在每一次迭代中变换的位置)的同时,我们在每 k k k 次迭代中更新内层的选择。选取的点作为内线引导点位置的运动,而离群点的运动则是一致的。在特征预匹配阶段,利用低阈值 θ 0 \theta_0 θ0 选择大量的特征点来过滤掉不相关的点。然后我们指定一个大的起始阈值 θ ^ \hat{\theta} θ^ ,只有可信的内层点(有重叠斑块的特征点)满足。在其余的配准过程中,阈值 θ \theta θ 在每 k k k 次迭代中被步长 δ \delta δ 减去,允许更多的特征点影响变换。这种做法可以使强匹配的特征点决定整体的变换,而其他特征点优化配准精度。

内层选择过程产生一个维度为 M × N M \times N M×N 的先验概率矩阵 P R P_R PR,然后由我们的基于高斯混合模型(Gaussian Mixed Model,GMM)的变换求解器得到。矩阵元素 P R [ m , n ] P_R\left[m, n\right] PR[m,n] x n x_n xn y m y_m ym对应的假定概率(putative probability)。假设 x n x_n xn对应于 y m y_m ym,则得到 P R [ m , n ] P_R\left[m, n\right] PR[m,n]较大的假定概率。而且大的概率会进一步导致 y m y_m ym上的一个明显的转换,通过这个转换对应的对可以对齐。

假定概率使用卷积特征和几何结构信息来确定。先验概率矩阵 P R P_R PR通过以下步骤得到:

1)准备 M × N M \times N M×N的卷积特征代价矩阵 C θ c o n v C_{\theta}^{conv} Cθconv

C θ c o n v [ m , n ] = { d ( y m , x n ) d θ m a x , c o n d    1 1 , o t h e r w i s e C_{\theta}^{conv}\left[m,n\right] = \left\{ \begin{aligned} \frac{d\left(y_m, x_n\right)}{d_{\theta}^{max}},\qquad &cond\;1 \\ 1\qquad\qquad,\qquad& otherwise \end{aligned} \right. Cθconv[m,n]=dθmaxd(ym,xn),1,cond1otherwise

Cond 1的定义: x n x_n xn y m y_m ym 在阈值 θ \theta θ 的条件下是匹配的。 d ( ⋅ , ⋅ ) d\left(\cdot, \cdot\right) d(,)是之前定义的特征距离。 d θ m a x d_{\theta}^{max} dθmax 是在阈值 θ \theta θ 下所有匹配的特征点对之中最大的距离。

2)用论文《Shape matching and object recognition using shape contexts》提出的方法来计算几何结构的代价矩阵 C g e o C^{geo} Cgeo,它是一种基于直方图的描述符,描述点的邻域结构。描述符将轮廓点置于极坐标系统的中心,并记录落在弧形箱中的点的数量。 C g e o C^{geo} Cgeo 通过执行卡方检验 X 2 \mathcal{X}^2 X2 来计算

C g e o [ m , n ] = 1 2 ∑ b = 1 B [ h m y ( b ) − h n x ( b ) ] 2 h m y ( b ) + h n x ( b ) C^{geo}\left[m,n\right] = \frac{1}{2}\sum_{b=1}^{B}\frac{\left[h_m^y\left(b\right) - h_n^x \left( b\right)\right]^2}{h_m^y\left(b\right) + h_n^x \left( b\right)} Cgeo[m,n]=21b=1Bhmy(b)+hnx(b)[hmy(b)hnx(b)]2
h m y ( b ) h_m^y\left(b\right) hmy(b) h n x ( b ) h_n^x\left(b\right) hnx(b) 分别表示落在 y m y_m ym x n x_n xn 附近的第 b b b 个单元柱中的数量。

3) C g e o C^{geo} Cgeo C θ c o n v C_{\theta}^{conv} Cθconv 的取值范围都是 [ 0 , 1 ] \left[0,1\right] [0,1],我们使用Hadamard积来计算整合的代价矩阵 C C C

C = C θ c o n v ⊙ C g e o C = C_{\theta}^{conv} \odot C^{{geo}} C=CθconvCgeo

4) 应用Jonker-Volgenant算法(《A shortest augmenting path algorithm for
dense and sparse linear assignment problems》)求解了代价矩阵 C C C 的线性分配问题。指定的点对被认为是假定对应的。最后,我们用下面的公式计算先验概率矩阵

P R [ m , n ] = { 1 ,  if  y m  and  x n  are corresponding 1 − ϵ N , o t h e r w i s e P_R\left[m,n\right] = \left\{ \begin{aligned} 1 ,\qquad & \qquad \textnormal{ if } y_m \textnormal{ and } x_n \textnormal{ are corresponding} \\ \frac{1-\epsilon }{N}, & \qquad otherwise \end{aligned} \right. PR[m,n]=1,N1ϵ, if ym and xn are correspondingotherwise

ϵ \epsilon ϵ 是在 [ 0 , 1 ] \left[0,1\right] [0,1]之间取值的超参数,它应该根据我们对内层选择的置信值来指定,以确保准确。先验概率需要进行归一化:

P R [ m , n ] : = P R [ m , n ] ∑ k = 1 N P R [ m , k ] P_R\left[m,n\right] := \frac{P_R\left[m,n\right]}{\sum_{k=1}^{N} P_R \left[m,k\right] } PR[m,n]:=k=1NPR[m,k]PR[m,n]

我们考虑点集 Y Y Y 作为高斯混合模型(GMM)质心。GMM概率密度函数定义为:

p ( x ) = ω 1 N + ( 1 − ω ) ∑ m = 1 M g m ( x ) p\left(x\right) = \omega\frac{1}{N} + \left(1 - \omega\right) \sum_{m=1}^{M} g_m\left(x\right) p(x)=ωN1+(1ω)m=1Mgm(x)

g m ( x ) g_m\left(x\right) gm(x) 是个正态分布密度函数

g m ( x ) = 1 2 π σ 2 exp ⁡ ( − 1 2 σ 2 ∥ x − y m ∥ 2 ) g_m\left(x\right)=\frac{1}{2\pi\sigma^2}\exp{\left(-\frac{1}{2\sigma^2}\left\|x-y_m\right\|^2 \right)} gm(x)=2πσ21exp(2σ21xym2)

该模型对混合变量中的每个高斯质心使用各向同性方差 σ 2 \sigma^2 σ2。一个额外的均匀分布项 1 N \frac{1}{N} N1被加入到一个权重参数 ω \omega ω 中来考虑异常值(outliers), 0 < ω < 1 0 <\omega < 1 0<ω<1

然后,我们使用期望最大化(EM)算法寻找最优的转换参数 ( W , σ 2 , ω ) \left(W, \sigma^2, \omega\right) (W,σ2,ω)。这种方法的目标是最大化似然函数,或等效地最小化负对数似然函数。

L ( W , σ 2 , ω ) = − ∑ n = 1 N log ⁡ ∑ m = 1 M + 1 P R [ m , n ] g m ( x n ) L\left(W,\sigma^2,\omega\right)=-\sum_{n=1}^{N}\log\sum_{m=1}^{M+1}P_R\left[m,n\right]g_m\left(x_n\right) L(W,σ2,ω)=n=1Nlogm=1M+1PR[m,n]gm(xn)

从这个公式中,由于存在不能被直接观测的变量 m m m,不能直接计算梯度。取而代之,EM算法使负对数似然函数的期望最小:

Q = − ∑ n = 1 N ∑ m = 1 M + 1 P o l d ( m ∣ x n ) log ⁡ ( P R [ m , n ] g m ( x n ) ) Q=-\sum_{n=1}^{N}\sum_{m=1}^{M+1}P^{old}\left(m|x_n\right)\log\left(P_R\left[m,n\right]g_m\left(x_n\right)\right) Q=n=1Nm=1M+1Pold(mxn)log(PR[m,n]gm(xn))

P o l d ( m ∣ x n ) P^{old}\left(m|x_n\right) Pold(mxn) 表示用上次迭代的参数计算的后验概率项。将方程展开,省略导数冗余项后,方程可改写为:

Q ( W , σ 2 , ω ) = 1 2 σ 2 ∑ n = 1 N ∑ m = 1 M P o l d ( m ∣ x n ) ∥ x n − τ ( y m , W ) ∥ 2 − 1 2 N P log ⁡ ( σ 2 ω 1 − ω ) − N log ⁡ ( ω ) \begin{aligned} Q\left(W,\sigma^2,\omega\right)= &\frac{1}{2\sigma^2}\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}\left(m|x_n\right)\left\|x_n-\tau\left(y_m,W\right)\right\|^2 \\ -&\frac{1}{2}N_P\log\left(\frac{\sigma^2\omega}{1-\omega}\right)-N\log\left(\omega\right)\end{aligned} Q(W,σ2,ω)=2σ21n=1Nm=1MPold(mxn)xnτ(ym,W)221NPlog(1ωσ2ω)Nlog(ω)

N P = ∑ n = 1 N ∑ m = 1 M P o l d ( m ∣ x n ) N_P=\sum_{n=1}^{N}\sum_{m=1}^{M}P^{old}\left(m|x_n\right) NP=n=1Nm=1MPold(mxn) τ ( y m , W ) \tau\left(y_m, W\right) τ(ym,W) 表示变换后 y m y_m ym 的位置。

非刚性变换定义为:
Z = Y + G W Z=Y+GW Z=Y+GW

式子中 G G G 是高斯径向基函数(Gaussian radial basis function ,GRBF), W W W 包括要学习的变换参数。

G [ i , j ] = exp ⁡ ( − ∥ x j − y i ∥ 2 2 β 2 ) G\left[i, j\right]=\exp\left(-\frac{\left\|x_j-y_i\right\|^2}{2\beta^2}\right) G[i,j]=exp(2β2xjyi2)

加入一项基于运动一致性理论的正规项(见《A mathematical analysis of the motion coherence theory》)(Motion Coherence Theory,MCT),得到

Q r = Q + λ 2 t r ( W T G W ) Q_r = Q + \frac{\lambda}{2}tr\left(W^TGW\right) Qr=Q+2λtr(WTGW)

t r ( ⋅ ) tr(\cdot) tr() 表示迹操作(trace operation)。迹等于对角线之和等于特征值之和。

EM算法迭代计算期望和最小梯度,直到收敛。

E-Step:从最后迭代的得到的参数中计算后验概率矩阵 P O P_O PO

P O [ m , n ] = P o l d ( m ∣ x n ) = P R [ m , n ] g m ( x n ) p ( x n ) P_O\left[m,n\right]=P^{old}\left(m|x_n\right)=\frac{P_R\left[m,n\right]g_m\left(x_n\right)}{p\left(x_n\right)} PO[m,n]=Pold(mxn)=p(xn)PR[m,n]gm(xn)

M-Step:求导和更新参数。

W : = ( G + λ σ 2 P d − 1 ) − 1 ⋅ ( P d − 1 P X − Y ) W :=\left(G+\lambda\sigma^2P_d^{-1}\right)^{-1}\cdot\left(P_d^{-1}PX-Y\right) W:=(G+λσ2Pd1)1(Pd1PXY)

σ 2 : = 1 2 N P ( t r ( X T P d X ) − 2 t r ( X T P T Z ) + t r ( Z T P d Z ) ) \sigma^2:=\frac{1}{2N_P}\left(tr\left(X^TP_dX\right)-2tr\left(X^TP^TZ\right)+tr\left(Z^TP_dZ\right)\right) σ2:=2NP1(tr(XTPdX)2tr(XTPTZ)+tr(ZTPdZ))

ω : = 1 − N P N \omega:=1-\frac{N_P}{N} ω:=1NNP

P d = d i a g ( P 1 ) P_d=diag\left(P\mathbf{1}\right) Pd=diag(P1) 1 \mathbf{1} 1 表示元素都是1的列向量。


  1. 样条函数其实就是分段函数,表示在相邻点 x k x_k xk x k + 1 x_{k+1} xk+1 之间用低阶多项式函数 S k ( x ) S_k(x) Sk(x) 进行插值。分段线性插值和三次样条插值都属于样条插值。 ↩︎

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐