SVO之逆深度滤波

本文详细介绍了SVO(Simultaneous Localization And Mapping)中的逆深度滤波方法,涉及概率深度模型、贝叶斯推断、参数近似后验等关键概念。通过建立高斯+均匀分布混合模型描述测量值的似然概率,并使用变分推断推导参数近似,最终实现深度的精确估计。深度滤波的成功与patch选择、种子点管理和不确定性测量密切相关。
摘要由CSDN通过智能技术生成

概率深度模型

贝叶斯推断

深度的测量包括两种,一种是正确的测量,一种是由于遮挡、图像变换或重复纹理导致的错误的测量。如块匹配时,有可能包括误差很大的外点。

研究发现:

好的测量值通常是分布在正确深度值附近的。

错误的测量是在深度范围 [ Z m i n , Z m a x ] [Z_{min},Z_{max}] [Zmin,Zmax]之间的均匀分布。

因此,我们得到的结果通常是二者的混合。使用高斯+均匀分布混合模型来描述测量值的似然概率分布:
(1) p ( x n ∣ Z , π ) = π N ( x n ∣ Z , τ n 2 ) + ( 1 − π ) U ( x n ∣ Z min ⁡ , Z max ⁡ ) p \left( x _ { n } | Z , \pi \right) = \pi N \left( x _ { n } | Z , \tau _ { n } ^ { 2 } \right) + ( 1 - \pi ) U \left( x _ { n } | Z _ { \min } , Z _ { \max } \right) \tag{1} p(xnZ,π)=πN(xnZ,τn2)+(1π)U(xnZmin,Zmax)(1)
其中 Z Z Z是真实深度, π \pi π是为内点的概率, τ n 2 \tau_n^2 τn2是好的测量的方差,与两个相机的相对位置有关。

我们需要置信度来决定深度是否收敛,或者失败。最大后验不具有这个功能,EM算法容易陷入局部最优。使用贝叶斯推断,最大化后验分布。二阶矩来作为估计的置信度。
(2) p ( Z , π ∣ x 1 … x N ) ∝ p ( Z , π ) ∏ n p ( x n ∣ Z , π ) p ( Z , \pi | x _ { 1 } \ldots x _ { N } ) \propto p ( Z , \pi ) \prod _ { n } p \left( x _ { n } | Z , \pi \right) \tag{2} p(Z,πx1xN)p(Z,π)np(xnZ,π)(2)
求解这个问题,需要建立稠密的二维直方图如下图所示,会大大提升计算量。
在这里插入图片描述

参数近似后验

使用单模态参数后验,近似为深度高斯分布乘内点率Beta分布,有:
(3) q ( Z , π ∣ a n , b n , μ n , σ n 2 ) : = Beta ⁡ ( π ∣ a n , b n ) N ( Z ∣ μ n , σ n 2 ) q ( Z , \pi | a _ { n } , b _ { n } , \mu _ { n } , \sigma^2 _ { n } ) : = \operatorname { Beta } ( \pi | a _ { n } , b _ { n } ) N ( Z | \mu _ { n } , \sigma _ { n } ^ { 2 } ) \tag{3} q(Z,πan,bn,μn,σn2):=Beta(πan,bn)N(Zμn,σn2)(3)
其中 a n , b n a_n, b_n an,bn分别表示在种子点生命周期内的内点,外点测量值出现的次数。 μ n , σ n 2 \mu_n, \sigma_n^2 μn,σn2分别代表深度的均值和方差。若n-1是正确的后验,则递推的有新后验(Beta分布乘以二项分布还是Beta分布):
(4) C × p ( x n ∣ Z , π ) q ( Z , π ∣ a n − 1 , b n − 1 , μ n − 1 , σ n − 1 2 ) C \times p \left( x _ { n } | Z , \pi \right) q ( Z , \pi | a _ { n - 1 } , b _ { n - 1 } , \mu _ { n - 1 } , \sigma _ { n - 1 } ^ { 2 } )\tag{4} C×p(xnZ,π)q(Z,πan1,bn1,μn1,σn12)(4)
参数化近似之后的计算结果也会收敛到相同的值,若收敛到错误值也可以通过外点率很低判断出来。
在这里插入图片描述
深度估计的成功与否,与patch选择的好坏有直接关系。

种子点使我们想要估计深度的一个像素,通过内点率来判断是否为外点,当没有搜索到局部最大值时,增加 b n b_n bn的值作为惩罚。

文献1中由于帧间小运动,使用上一次估计均值附近的w个像素半径内进行搜索。
在这里插入图片描述

种子点的修剪

分为三种情况:

  • 收敛,从list中移除,生成3D点;
  • 未收敛,从list中删除;
  • 等待,需要时间去收敛。

分别对应三种判断机制:

  • 当前分布有99%概率内点率 π &lt; η o u t l i e r \pi&lt;\eta_{outlier} π<ηoutlier,则失败
  • 内点率大于 η i n l i e r \eta_{inlier} ηinlier,并且深度方差 σ n &lt; ϵ \sigma_n&lt; \epsilon σn<ϵ,则成功
  • 其它

参数近似推导

变分推断推导2

对于观测量 X \bf X X,隐变量 Z \bf Z Z:
(5) ln ⁡ p ( X ) = L ( q ) + K L ( q ∥ p ) \ln p ( \mathbf { X } ) = \mathcal { L } ( q ) + \mathrm { KL } ( q \| p ) \tag{5} lnp(X)=L(q)+KL(qp)(5)
其中定义:
(6) L ( q ) = ∫ q ( Z ) ln ⁡ { p ( X , Z ) q ( Z ) } d Z \mathcal { L } ( q ) = \int q ( \mathbf { Z } ) \ln \left\{ \frac { p ( \mathbf { X } , \mathbf { Z } ) } { q ( \mathbf { Z } ) } \right\} \mathrm { d } \mathbf { Z } \tag{6} L(q)=q(Z)ln{ q(Z)p(X,Z)}dZ(6)

(7) K L ( q ∥ p ) = − ∫ q ( Z ) ln ⁡ { p ( Z ∣ X ) q ( Z ) } d Z \mathrm { KL } ( q \| p ) = - \int q ( \mathbf { Z } ) \ln \left\{ \frac { p ( \mathbf { Z } | \mathbf { X } ) } { q ( \mathbf { Z } ) } \right\} \mathrm { d } \mathbf { Z } \tag{7} KL(qp)=q(Z)ln{ q(Z)p(ZX)}dZ(7)

与EM算法的差别在于,这里不包含参数 θ \theta θ,因为它是随机变量包含在了隐变量 Z Z Z中了。

我们的目标是最大化下界函数(6),使它接近最大似然的效果,这等价于最小化KL差异。即可以选择合适的 q ( Z ) q(Z) q(Z)使得
KL差异消失,所以我们选择 q ( Z ) = p ( Z ∣ X ) q({\bf Z})=p({\bf Z|X}) q(Z)=p(ZX),带入公式(7)可以发现 ln ⁡ ( ) \ln() ln()中结果是1,即KL=0。

合理的限制 q ( Z ) q({\bf Z}) q(Z)族的方法是使用参数分布 q ( Z ∣ ω ) q({\bf Z}|\omega) q(Zω),下界函数(6)也变成了参数 ω \omega ω的函数。

Z \bf Z Z分解成独立的连乘形式:
(8) q ( Z ) = ∏ i = 1 M q i ( Z i ) q ( \mathbf { Z } ) = \prod _ { i = 1 } ^ { M } q _ { i } \left( \mathbf { Z } _ { i } \right) \tag{8} q(Z)=i=1Mqi(Zi)(8)
把公式(8)带入公式(6)得到:
(9) L ( q ) = ∫ ∏ i q i { ln ⁡ p ( X , Z ) − ∑ i ln ⁡ q i } d Z = ∫ q j { ∫ ln ⁡ p ( X , Z ) ∏ i ≠ j q i d Z i } d Z j − ∫ q j ln ⁡ q j d Z j +  const  = ∫ q j ln ⁡ p ~ ( X , Z j ) d Z j − ∫ q j ln ⁡ q j d Z j + c o n s t \begin{aligned} \mathcal { L } ( q ) &amp; = \int \prod _ { i } q _ { i } \left\{ \ln p ( \mathbf { X } , \mathbf { Z } ) - \sum _ { i } \ln q _ { i } \right\} \mathrm { d } \mathbf { Z } \\ &amp; = \int q _ { j } \left\{ \int \ln p ( \mathbf { X } , \mathbf { Z } ) \prod _ { i \neq j } q _ { i } \mathrm { d } \mathbf { Z } _ { i } \right\} \mathrm { d } \mathbf { Z } _ { j } - \int q _ { j } \ln q _ { j } \mathrm { d } \mathbf { Z } _ { j } + \text { const } \\ &amp; = \int q _ { j } \ln \widetilde { p } \left( \mathbf { X } , \mathbf { Z } _ { j } \right) \mathrm { d } \mathbf { Z } _ { j } - \int q _ { j } \ln q _ { j } \mathrm { d } \mathbf { Z } _ { j } + \mathrm { const } \end{aligned} \tag{9} L(q)=iqi{ lnp(X,Z)ilnqi}dZ=qj

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值