预测协方差矩阵

部署运行你感兴趣的模型镜像

本文为原创文章,转载请注明出处---https://blog.youkuaiyun.com/q_z_r_s

机器感知
一个专注于SLAM、三维重建、机器视觉等相关技术文章分享的公众号
公众号:机器感知

假设机器人位姿为3维,每个landmark为2维,EKF中的状态向量为:
x=[xvy1y2⋯yn]T x=\left[\begin{matrix}x_v&y_1&y_2&\cdots&y_n\end{matrix}\right]^T x=[xvy1y2yn]T
运动方程和观测方程为:
xt=f(xt−1,ut,vt)zt=h(xt,ωt) x_t=f(x_{t-1},u_t,v_t)\\ z_t=h(x_t,\omega_t) xt=f(xt1,ut,vt)zt=h(xt,ωt)
故有:
Gt=I+[∂f∂x3×303×2n02n×302n×2n]=[F3×303×2n02n×3I2n×2n] G_t=I+\left[\begin{matrix}\frac{\partial{f}}{\partial{x}}_{3\times3}&0_{3\times2n}\\ 0_{2n\times3}&0_{2n\times2n}\end{matrix}\right]=\left[\begin{matrix}F_{3\times3}&0_{3\times2n}\\0_{2n\times3}&I_{2n\times2n}\end{matrix}\right] Gt=I+[xf3×302n×303×2n02n×2n]=[F3×302n×303×2nI2n×2n]
因此,协方差矩阵的预测值为:
Σ‾t=GtΣt−1GtT+Rt=[F3×303×2n02n×3I2n×2n]Σt−1[F3×3T03×2n02n×3I2n×2n]+Rt=[F3×303×2n02n×3I2n×2n][Δ3×31Δ3×2n2Δ2n×33Δ2n×2n4][F3×3T03×2n02n×3I2n×2n]+Rt=[F3×303×2n02n×3I2n×2n][Δ3×31F3×3TΔ3×2n2Δ2n×33F3×3TΔ2n×2n4]+Rt=[F3×3Δ3×31F3×3TF3×3Δ3×2n2Δ2n×33F3×3TΔ2n×2n4]+Rt \begin{align} \overline{\Sigma}_t&=G_t\Sigma_{t-1}G_t^T+R_t\\ &= \left[\begin{matrix}F_{3\times3}&0_{3\times2n}\\0_{2n\times3}&I_{2n\times2n}\end{matrix}\right]\Sigma_{t-1} \left[\begin{matrix}F_{3\times3}^T&0_{3\times2n}\\0_{2n\times3}&I_{2n\times2n}\end{matrix}\right]+R_t\\ &=\left[\begin{matrix}F_{3\times3}&0_{3\times2n}\\0_{2n\times3}&I_{2n\times2n}\end{matrix}\right]\left[\begin{matrix} \Delta^1_{3\times3}&\Delta^2_{3\times2n}\\ \Delta^3_{2n\times3}&\Delta^4_{2n\times2n} \end{matrix}\right] \left[\begin{matrix}F_{3\times3}^T&0_{3\times2n}\\0_{2n\times3}&I_{2n\times2n}\end{matrix}\right]+R_t\\ &=\left[\begin{matrix}F_{3\times3}&0_{3\times2n}\\0_{2n\times3}&I_{2n\times2n}\end{matrix}\right]\left[\begin{matrix} \Delta^1_{3\times3}F_{3\times3}^T&\Delta^2_{3\times2n}\\ \Delta^3_{2n\times3}F_{3\times3}^T&\Delta^4_{2n\times2n} \end{matrix}\right]+R_t\\ &=\left[\begin{matrix} F_{3\times3}\Delta^1_{3\times3}F_{3\times3}^T&F_{3\times3}\Delta^2_{3\times2n}\\ \Delta^3_{2n\times3}F_{3\times3}^T&\Delta^4_{2n\times2n} \end{matrix}\right]+R_t \end{align} Σt=GtΣt1GtT+Rt=[F3×302n×303×2nI2n×2n]Σt1[F3×3T02n×303×2nI2n×2n]+Rt=[F3×302n×303×2nI2n×2n][Δ3×31Δ2n×33Δ3×2n2Δ2n×2n4][F3×3T02n×303×2nI2n×2n]+Rt=[F3×302n×303×2nI2n×2n][Δ3×31F3×3TΔ2n×33F3×3TΔ3×2n2Δ2n×2n4]+Rt=[F3×3Δ3×31F3×3TΔ2n×33F3×3TF3×3Δ3×2n2Δ2n×2n4]+Rt

综上,可以得出,预测协方差矩阵时,只要与机器人位姿相关的的协方差矩阵块都是有变化的,而仅与landmark相关的协方差矩阵块完全没有任何变化。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### 使用Latent Diffusion Model (LDM) 进行协方差矩阵预测的方法实现 #### 背景介绍 在处理复杂的概率分布时,尤其是当目标是建模数据的不确定性或变异性时,协方差矩阵扮演着至关重要的角色。对于隐含扩散模型(Latent Diffusion Models, LDM),其核心在于通过一系列逐步去噪的过程来生成高质量的数据样本。在此过程中,不仅关注于重建输入特征本身,还涉及到捕捉不同维度间的依赖关系——即协方差结构。 #### 参数设置与初始化 为了利用LDM来进行协方差矩阵的估计,在前向传播阶段定义了高斯分布的标准差\(\beta_n\)作为噪声水平的一个指标[^1];而在反向传播期间,则引入另一个参数\(\sigma_n^2\)表示逆过程中的高斯分布方差。此外,还需要设定一个权重因子\(w\)用来调整正则化的强度。 #### 训练流程概述 基于条件引导机制构建的框架允许更灵活地控制生成图像的质量特性[^2]。具体来说: - **编码器部分**:接收原始图片并映射至低维潜在空间; - **解码器部分**:负责将经过修改后的潜在表征还原成可视化的输出形式; - **中间层(Diffusion Process)**:执行多次迭代式的加权平均操作以及加入适量随机扰动项以模拟真实世界中的变化趋势。 #### 重参数化技巧的应用 考虑到直接对具有不确定性的变量求导存在困难,采用重参数化技术能够有效解决这一难题。该方法的核心思想是在保持原有统计性质不变的前提下,把原本难以优化的目标转化为易于计算的形式。例如,在标准情况下我们有: \[ z=\mu+\epsilon*\sqrt{\Sigma} \] 其中,\(z\)代表最终得到的新样本;\(\mu\)指代均值矢量;而\(\Sigma\)则是待估测对象—协方差阵。\(\epsilon\)是从单位正态分布抽取出来的独立同分布序列[^3]。 ```python import torch from torch import nn import numpy as np class LatentDiffusionModel(nn.Module): def __init__(self, input_dim, hidden_dims, output_dim): super().__init__() layers = [] dims = [input_dim] + hidden_dims for i in range(len(dims)-1): layers.append(nn.Linear(dims[i], dims[i+1])) layers.append(nn.ReLU()) self.encoder = nn.Sequential(*layers) self.mean_head = nn.Linear(hidden_dims[-1], output_dim) self.logvar_head = nn.Linear(hidden_dims[-1], int(output_dim*(output_dim+1)/2)) # Lower triangular elements of covariance matrix def reparameterize(self, mu, logvar_tril_elements): batch_size = mu.size(0) dim = int((np.sqrt(1 + 8*logvar_tril_elements.shape[1]) - 1)//2) std_matrix = torch.zeros(batch_size,dim,dim).to(mu.device) idx = torch.tril_indices(row=dim,col=dim,offset=0) std_matrix[:,idx[0],idx[1]] = torch.exp(logvar_tril_elements / 2.) eps = torch.randn_like(std_matrix) covar_mat = torch.bmm(std_matrix, std_matrix.transpose(-2,-1)) return mu.unsqueeze(-1)+torch.matmul(covar_mat,eps).squeeze() def forward(self,x): h=self.encoder(x) mean=self.mean_head(h) logvar_tril_elements=self.logvar_head(h) sample=self.reparameterize(mean,logvar_tril_elements) return mean,sample ``` 此代码片段展示了如何在一个简单的神经网络架构内应用上述理论概念。特别值得注意的是`reparameterize()`函数实现了从给定均值和下三角元素构成的协方差矩阵中抽样的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值