kimera semantic中关于semantic label的融合方法

本文介绍了Kimera-Semantics中SemanticTsdfServer的工作流程,详细讲解了FastSemanticTsdfIntegrator函数,涉及voxblox的继承与扩展,包括语义层更新、似然模型、概率计算和最大似然标签选择。着重展示了如何结合观测频率进行像素级语义分割和颜色映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kimera semantic的SemanticTsdfServer继承了voxblox的TsdfServer,有自己的单独的semanticlayer,使用了自己的semantic的integrator。

流程与voxblox的一致,记录一下:
void FastSemanticTsdfIntegrator::integrateSemanticFunction

该函数前面做的事情就是如同voxblox一样,更新继承的voxel层,然后更新semanticlayer。


      updateTsdfVoxel(origin, point_G, global_voxel_idx, color, weight, voxel);

      SemanticVoxel* semantic_voxel = allocateStorageAndGetSemanticVoxelPtr(
          global_voxel_idx, &semantic_block, &semantic_block_idx);
      SemanticProbabilities semantic_label_frequencies =
          SemanticProbabilities::Zero();
      CHECK_LT(semantic_label, semantic_label_frequencies.size());
      semantic_label_frequencies[semantic_label] += 1.0f;
      updateSemanticVoxel(global_voxel_idx,
                          semantic_label_frequencies,
                          &mutexes_,
                          voxel,
                          semantic_voxel);
// TODO(Toni): ideally, return new_sdf from updateTsdfVoxel, but we need to
  // modify Voxblox for that.
  // Similar to color blending in Voxblox tsdf_integrator.cc,
  // Quoting Voxblox:
  // color blending is expensive only do it close to the surface
  //  if (std::abs(sdf) < config_.default_truncation_distance) {
  // Do the same for semantic updates:
  // Don't do it bcs of copyrights... :'(
  ////// Here is the actual logic of Kimera-Semantics:   /////////////////////
  // Calculate new probabilities given the measurement frequencies.
  updateSemanticVoxelProbabilities(measurement_frequencies,
                                   &semantic_voxel->semantic_priors);

  // Get MLE semantic label.
  calculateMaximumLikelihoodLabel(semantic_voxel->semantic_priors,
                                  &semantic_voxel->semantic_label);

  // Colorize according to current MLE semantic label.
  updateSemanticVoxelColor(semantic_voxel->semantic_label,
                           &semantic_voxel->color);

updateSemanticVoxelProbabilities的实现很简单:
*semantic_prior_probability +=
semantic_log_likelihood_ * measurement_frequencies;

其中,semantic_log_likelihood_这个是hardcode的一个似然模型。比如label数量是N,则记录一个N*N的矩阵,矩阵的一行如苹果,代表了如果看到的结果是苹果,那么实际上,是其他物体的概率,如是地板的概率为0,是苹果的概率为0.9,是雪梨的概率为0.05,是香蕉的概率为0,等,记录该行对应的列的位置。

measurement_frequencies是一个列向量,对应着此次观测的物品的概率。如香蕉的概率为0.8。。。

在对得到的某个semantic分割的像素进行更新某个voxel时,因为label的数字是唯一的(深度学习学出来的)直接把measurement_frequencies对应的该label的位置改为1,其他为0.
实际上,如果带了confidence,可以把1改为对应的confidence(如果数据量的问题不能输出全部的类别的概率,就只关注这个得出来的最高的label概率就行)。

semantic_log_likelihood_measurement_frequencies得到的是一个N1的列向量,里面记录了该voxel对应的不同label的概率。

接下来的calculateMaximumLikelihoodLabel,就是挑选对应的最大概率的label:
semantic_posterior.maxCoeff(semantic_label);

而updateSemanticVoxelColor这个仅仅是赋予label对应的颜色,给人看的,可以不需要这种操作。

### Kimera SLAM 方法的优缺点分析 Kimera 是一种多线程实时 SLAM 系统,专为机器人导航和增强现实应用设计。它结合了几何重建、语义分割以及动态物体检测等功能,在复杂环境中表现出较高的鲁棒性和准确性。 #### 优点 1. **高精度几何重建** Kimera 提供了精确的地图构建能力,能够实现实时稠密三维地图生成[^3]。这种特性使其适用于需要高度细节化环境表示的应用场景。 2. **支持语义理解** 不同于传统仅依赖几何信息的方法Kimera 集成了语义分割技术,可以识别并标注不同类型的对象(如行人、车辆等),从而增强了系统的感知能力和决策制定过程[^4]。 3. **动态环境适应性强** Kimera 能够有效处理含有移动障碍物的场景。通过分离静态背景与动态前景,该算法显著提高了在拥挤或变化频繁区域中的表现水平[^5]。 4. **模块化架构设计灵活易扩展** 整体采用分层结构——前端负责视觉里程计估计;中间件完成局部优化和平滑操作;而后端则专注于全局一致性维护及闭环探测等工作流划分清晰合理便于后续改进升级或其他功能接入需求[^6]。 #### 缺点 1. **计算资源消耗较大** 由于融合了多种高级计算机视觉算法(例如深度学习模型用于语义解析),运行时可能需要高性能硬件支持才能保持流畅体验[^7]。 2. **初始化时间较长** 在某些情况下,特别是当初始条件较差或者存在较多干扰因素时,系统启动阶段可能会经历较长时间来稳定其姿态估算结果[^8]。 3. **对外界光照敏感度较高** 尽管具备一定抗噪性能,但在极端低光条件下或是面对反光表面时仍可能出现追踪失败现象[^9]。 ```python # 示例代码展示如何加载预训练好的神经网络模型进行语义分割部分工作流程简化版示意 import torch from torchvision import models def load_semantic_model(): model = models.segmentation.deeplabv3_resnet101(pretrained=True) device = 'cuda' if torch.cuda.is_available() else 'cpu' return model.to(device) semantic_model = load_semantic_model() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值