当前位置: 首页 > news >正文

怎样搭建网站视频教程/seo优化方案报价

怎样搭建网站视频教程,seo优化方案报价,域名做网站自己的电脑,做网站如何导入信用卡付款首先是关于SuMa的阅读,SuMa是一个完整的激光SLAM框架,核心在于“基于面元(surfel)”的过程,利用3d点云转换出来的深度图和法向量图来作为输入进行SLAM的过程,此外还改进了后端回环检测的过程,利用提出的面元的概念和使…

首先是关于SuMa的阅读,SuMa是一个完整的激光SLAM框架,核心在于“基于面元(surfel)”的过程,利用3d点云转换出来的深度图和法向量图来作为输入进行SLAM的过程,此外还改进了后端回环检测的过程,利用提出的面元的概念和使用到的虚拟帧来优化回环检测的过程。
SuMa的核心分为以下几个步骤:

1. SuMa预处理

预处理的部分将3d点云转换为两张图,原文用的词是vertex map和normal map,这里直接翻译为顶点图和法向量图
预处理的过程本质上就是建立一个3d到2d的转换,原始的点云是3d的,顶点图和法向量图都是2d的,所以需要一个转换关系,论文首先使用的是点云到顶点图的转换,对于点云中的每个点,有:
在这里插入图片描述
其中出现的两个参数分别是
在这里插入图片描述
其中r是深度,f是竖直方向的视野范围
此外w和h分别表示顶点图的大小。对于顶点图中的每个点,论文都使用 V D V_D VD来表示。得到了顶点图后,利用其相邻的关系,就可以得到法向量图,就像其名字一样,法向量图存储的是每个位置上的法向量(normal),在计算时可以直接使用顶点图中的相邻元素进行计算:
在这里插入图片描述
为了保证计算的有效性,对于边界的元素,如果位置超过了图像的范围,也就是说位置不合法了,这种情况直接不参与计算,只保留合法位置的法向量信息。
在这里插入图片描述
在经过预处理之后,原本的3D点云地图就被转换成两张二维的图像,后续的里程计和回环检测都是在这两张图的基础上

2. SuMa地图表示

前面看过的论文里,地图的表示方法有很多种,最普通的基于特征点、特征线,稍微进阶一些的比如基于物体的就是用的物体地图,而LOAM也可以看作是基于边和面的地图,在SuMa中作者提出了一种基于面元的地图

面元即论文中的surfel这个单词,面元地图指的就是面元作为地图中的基本元素,一个面元就相当于一个小平面,可以抽象为一个小的圆形,每个面元用一个位置向量、一个法向量和一个半径表示,此外还保留两个时间戳,分别是创建面元的时间和最后一次更新面元的时间

除此之外,为了体现面元的置信度,方便后续筛选掉错误的面元,论文对每个面元设置了一个优势比(odds ratio),用来体现一个面元的可靠程度,其计算方法为:
在这里插入图片描述
其中的odds为一个函数,具体表示为:
在这里插入图片描述
p s t a b l e p_{stable} pstable p p r i o r p_{prior} pprior表示面元是一个稳定面元的概率和先验概率,这其实是一个不断更新的过程,如果确定两帧的两个面元对应的是地图上的同一个面元,那么更新时必然是一个迭代的更新,原面元法向量与待整合面元的法向量夹角越小、距离越近,对应到公式中的 e x p exp exp项也就越接近1,整体也就向着 p s t a b l e p_{stable} pstable的方向移动,从而让面元的可靠程度越高。

此外,关于时间戳信息,引入这个量主要是为了将地图中的面元区分为两部分:动态图和静态图。动态图记为 M a c t i v e M_{active} Mactive而静态图记为 M i n a c t i v e M_{inactive} Minactive,里程计进行位姿估计的过程主要是用动态图,而回环检测的部分则使用静态图。最近更新时间超过一定阈值就将其记为静态图,否则放在动态图。

3. SuMa里程估计

前面提到里程计估计这部分只用动态图,也就是距离当前不太远的内容。这部分就是利用这些内容,通过最小化一个偏差,来得到一个帧间位姿变换。论文使用的是类似于重投影误差的方法或者说类似ICP的方法,对于当前帧的顶点图的每个点,根据位姿变换T投影到上一帧,找到上一帧的顶点图中距离其最近的一点,从而得到该点所在的面元,计算投影点到面元的距离并求和,最小化这个距离,就是我们优化过程的目标函数:

在这里插入图片描述
其中, T C t − 1 C t ( k ) u T^{(k)}_{C_{t-1}C_{t}}u TCt1Ct(k)u是将当前帧的点转换到上一帧, v u v_u vu是上一帧与之对应的点, n u T n^T_u nuT是对应点的面元的法向量,因为是计算到面元距离,所以要乘以一个法向量
在这里插入图片描述
通过迭代优化图中的T,从而得到一个更加准确的位姿变换T,这个过程称为帧到模型的ICP。可以看到目标函数中是对当前帧顶点图的所有点进行距离的统计,所以必然需要一定的筛选措施,这里除了去除投影后位置不合法的点,还将角度偏差过大和距离偏差过大的点也去除了,这里的角度偏差过大指的是法向量图中对应位置的角度的偏差。
在优化的过程中,先用上一帧和上上帧之间的帧间变换作为初始值,之后利用高斯牛顿法进行后端的非线性优化,最终计算出帧间变换T。

4. SuMa地图更新

面元计算这部分,首先对当前帧的每个点,计算其所在面元的半径,公式如下:
在这里插入图片描述
其中p和clamp都是函数,具体表示为:
在这里插入图片描述
在这里插入图片描述
这个半径表示的是当前这个点所在的面元的可能的半径,但是不是保留这个点还需要判断。判断的过程首先利用前面得到的帧间变换矩阵,将当前帧的信息投影到世界坐标系下,在这一步我们需要用到前面保留的2d-3d之间的转换关系,这个关系可以给我们指明点之间是怎样的一个观察方法,按照这个方法,我们沿着当前点的视线延长,看看延长线能否与一个地图上的面元相交,如果没有相交,那么根据当前点的信息新建一个面元添加到地图中;如果存在一个面元,那么就检测距离与角度的偏差值:
在这里插入图片描述

  • 如果符合条件,则认为当前的点所在的面元和地图上的面元是一个面元,如果新的测量更加准确,比如说半径更小,就进行整合操作:
    在这里插入图片描述
    这时前面计算的半径就能用到了,而且与位置和法向量的整合方法不同,半径的整合是完全替代,直接用新的、更小的半径代替前面的半径。之后更新面元的可信度
  • 如果不符合条件,就调低面元的可信度,除此之外不做其它操作。在一次更新之后,去除过旧的面元和可信度过低的面元。

5. SuMa回环检测

回环检测的部分首先是要获得一个候选回环帧,论文中使用的方法是遍历静态图,从中找出距离当前帧最近的一帧,公式如下:
在这里插入图片描述
这里所谓的最近是只考虑了平移没有考虑旋转,这是因为旋转在寻找距离最近的时候并不会产生影响。得到最近的帧之后,利用存储的位姿变换关系,可以得到这两帧之间的旋转和平移关系:
在这里插入图片描述
对于这两个关系,旋转可以直接拿来使用,但是平移上论文又引入了一个参数量:
在这里插入图片描述
这里是考虑到单纯使用重叠程度作为是否出现回环的判断标准容易出现误判,所以这里在平移上增加了一个系数,从而产生了三个初值,从这三个初值中选一个最优值作为回环的匹配程度。
除此之外,论文还提出了一个虚拟帧,虚拟帧本质上就是投影后的候选回环帧和当前帧的整合,具体做法是先利用位姿变换关系,将候选回环帧投影到当前位置,之后采用与前面一样的视角检测方法,如果视线上存在更近的点,就用这个点去替代投影帧上的点,以此构成虚拟帧。
得到虚拟帧之后,采用相同的方法计算帧间残差,因为增加了参数,所以是三个位姿去计算残差,从中选择最小的作为评判回环是否出现的标准。如果出现了回环,还要持续检测后面一个时间段内的位姿变换,必须保证一个时间段内位姿的变换与候选回环帧之间保持一致性才可以认为真正出现了回环。如果真的出现了回环,就利用位姿图进行优化,对回环进行优化。

总的来说在回环检测这部分,首先要遍历静态图,选择距离最近的一帧作为候选回环帧,根据候选回环帧和当前帧制作虚拟帧,利用虚拟帧和三个位姿变换计算相似度,如果相似度满足阈值且后续一个时间段内都符合条件,就认为真正出现回环,通过图优化进行回环校正。

6. SuMa++

SuMa++则是在SuMa的基础上引入了语义相关的内容,因为大部分的框架都是相似的,这里就简单记录一下。

首先SuMa++使用RangerNet++来获得点的语义标签,产生一个语义mask用来标记点的语义信息。其次考虑到错误分类会对后序的内容产生影响,SuMa++引入了一种洪泛算法来消除错误标签。洪泛算法以语义mask和顶点图为输入,输出修正之后的语义mask,伪代码如下:

在这里插入图片描述
整个过程主要是对边缘信息的处理,首先对于语义mask中的一个点,如果在其邻域范围内,有其它语义信息的点,那么就认为这个点是边缘点,将这个点去除,全部处理一遍之后,相当于将两个物体边缘的部分去除掉了。之后再对这些去掉的空白位置,采用就近分配的原则,重新为其分配标签。最终效果为:
在这里插入图片描述
很直观的可以发现,从( a )图到( c )图,物体与物体之间的边界区分更加明显,可以更好的为后续的动态物体的去除作铺垫。

除此之外,考虑到对于SLAM过程而言,制图起着关键作用的,主要是静态的物体,而非动态物体,因此SuMa++将动态物体去除掉,主要方法是在更新地图时,检测地图与当前帧对应点的语义一致性,简单来说就是如果是同一个位置但是标签变了,那么就认为这个位置上的面元是动态物体上的一个面元,通过在可信度函数是增加语义一致性项来加速置信度的降低

在这里插入图片描述
但是作者也提到了,在场景特征不那么丰富的情况下,这种过滤方法会让特征不足,从而影响SLAM的效果。
在这里插入图片描述
最后SuMa++还使用了语义ICP,在里程计的目标函数部分,增加一个语义权重项,通过比较地图点与扫描点之间的语义一致性来调整权重,也就是说不仅空间上要存在一致性,语义上也要满足一致性

在这里插入图片描述
在这里插入图片描述
SuMa++在SuMa的基础上增加了语义信息,将语义信息与面元相结合,语义获取部分使用Rangenet++来获取语义mask,并通过洪泛算法对mask中的物体边界部分进行修正。语义的应用方面,SuMa++利用语义的一致性,通过比较地图点和当前帧的同一位置上的语义信息,将对制图过程意义不那么明显的动态物体筛除,此外还将语义信息应用在里程计的目标函数中,为目标函数增加语义权重,从而体现出语义一致性。

相关文章:

论文阅读记录SuMa SuMa++

首先是关于SuMa的阅读,SuMa是一个完整的激光SLAM框架,核心在于“基于面元(surfel)”的过程,利用3d点云转换出来的深度图和法向量图来作为输入进行SLAM的过程,此外还改进了后端回环检测的过程,利用提出的面元的概念和使…...

性能分析与调优: Linux 内存观测工具

目录 一、实验 1.环境 2.vmstat 3.PSI 4.swapon 5.sar 6.slabtop 7.numstat 8.ps 9.top 10.pmap 11.perf 12.bpftrace 二、问题 1.接口读写报错 2.slabtop如何安装 3.numactl如何安装 4.numad启动服务与关闭NUMA 5. perf如何安装 6. kernel-lt-doc与kern…...

【ARM 嵌入式 编译系列 3.4 -- 查看所依赖库文件的路径 详细介绍】

文章目录 问题背景库文件路径查看库文件路径信息打印显示连接标准库不使用标准库 libgcc.a问题背景 在自己构建的 Makefle系统中对 cortex-m33 代码编译时,在链接阶段总是报出下面问题 ... arm-none-eabi-ld: cannot find libgcc.a: No such file or directory arm-none-eab…...

分布式锁3: zk实现分布式锁3 使用临时顺序节点+watch监听实现阻塞锁

一 zk实现分布式锁 1.1 使用临时顺序节点 的问题 接上一篇文章,每个请求要想正常的执行完成,最终都是要创建节点,如果能够避免争抢必然可以提高性能。这里借助于zk的临时序列化节点,实现分布式锁 1. 主要修改了构造方法和lock方…...

google drive api

1.创建oauth2 json 文件 https://developers.google.com/drive/api/quickstart/pythoncchttps://developers.google.com/drive/api/quickstart/python这里要注意quickstart的code会经常更新,有可能之前的版本不能用了 比方说下面这个包 from google.oauth2.crede…...

3_代理模式(动态代理JDK原生和CGLib)

一.代理模式 1.概念 代理模式(Proxy Pattern )是指为其他对象提供一种代理,以控制对这个对象的访问,属于结构型模式。 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的…...

Linux的权限(1)

目录 操作系统的"外壳"程序 外壳程序是什么? 为什么存在外壳程序? 外壳程序怎么运行操作? 权限 什么是权限? 权限的本质? Linux中的(人)用户权限? su和su -的区别…...

数据安全保障的具体措施有哪些

随着信息化时代的到来,数据已经成为企业和社会发展的重要资产。然而,数据安全问题也日益突出,如何保障数据的安全性、完整性和可用性成为了亟待解决的问题。以下将详细探讨数据安全保障的各个方面,以期为企业和社会提供更好的数据…...

浅谈标签及应用场景

一、标签的定义 标签是根据业务场景的需求,通过对目标对象(包含静态、动态特性),运用抽象、归纳、推理等算法得到的高度精炼的特征标识,用于差异化管理与决策。标签由标签名称和标签值组成,打在目标对象上…...

Linux动态分配IP与正向解析DNS

目录 一、DHCP分配 1. 动态分配 1.1 服务端服务安装 1.2 修改服务端dhcp配置 1.3 修改客户端dhcp,重启查询网卡信息 2. 根据mac固定分配 2.1 修改服务器端dhcp服务配置 2.2 客户端自动获取,查看网卡信息 二、时间同步 1. 手动同步 2. 自动同…...

pyspark 使用udf 进行预测,发现只起了一个计算节点

PySpark UDF 只使用一个计算节点的问题 原因分析 默认的并行度设置 PySpark在执行UDF(用户定义函数)时,默认可能不会利用所有可用的计算节点。这是因为UDF通常在单个节点上执行,并且如果没有正确设置分区,可能会导致数…...

mysql触发器的简单使用

mysql触发器 触发器是一个特殊的存储过程,在事件delete、insert、update发生时自动执行一条或多条SQL语句(执行多条SQL语句需要用begin、end 包裹起来) 创建触发器 创建触发器的四大必要条件 唯一的触发器名称触发器关联的表触发器响应的…...

全志T113开发板Qt远程调试

1引言 通常情况下工程师在调试Qt程序时,需要频繁制作镜像烧录到核心板来测试Qt程序是否完善,这样的操作既费时又费力。这时我们可以通过QtCreator设备功能,定义设备后,在x86_64虚拟机上交叉编译qt程序,将程序远程部署到…...

学习使用php、js脚本关闭当前页面窗口的方法

学习使用php、js脚本关闭当前页面窗口的方法 前言方法一:使用JavaScript代码方法二:通过http头文件来实现方法三:使用服务器端脚本来实现 前言 在开发web应用程序时,我们通常需要在不同的网页之间进行导航。通常情况下&#xff0…...

python 人脸检测与人脸识别

安装库文件: pip install dlib face_recognition import dlib import face_recognition import cv2 from PIL import Image, ImageDraw# 判断运行环境 cpu or gpu def check_env():print(dlib.DLIB_USE_CUDA)print(dlib.cuda.get_num_devices())# 判断人脸在图片当中的位置 def…...

RT-Thread: ulog 日志 讲解和使用

说明:记录 RT-Thread: ulog 日志功能和使用流程。 官网资料链接: https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/ulog/ulog 1.ulog 简介 日志的定义:日志是将软件运行的状态、过程等信息&#x…...

git ssh key 配置

一、Profile Settings-->SSH Keys 我们点击这里会有详情的文档介绍生成sshkey。 ssh-keygen -t rsa -b 2048 -C "邮箱" --回车... 将生成的id_rsa.pub粘贴到如下保存 git config --global user.name "用户名" git config --global user.email "邮…...

MongoDB聚合:$documents

$documents阶段可以根据输入值返回字面意义的文档。 语法 { $documents: <表达式> }$documents接受可解析为对象数组的任何有效表达式&#xff0c;包括&#xff1a; 系统变量&#xff0c;如 $$NOW 或 $$SEARCH_META $let 表达式 $lookup 表达式作用域中的变量 没有…...

程序员英语 - 英文会议常用句型

相信大部分程序员都会有如下经历&#xff1a; 产品经理&#xff08;BA&#xff09;们在和外系统聊集成方案时或者给用户解决某个问题时发现搞不定了&#xff0c;这个时候就会拉上程序员一起上会参与讨论或者排查问题&#xff0c;但程序员们英文又不好&#xff0c;上了会又听不懂…...

UV贴图和展开初学者指南

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建…...

解密Path环境变量

解密Path环境变量 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起深入探讨程序开发中不可或缺的一项关键技术——“path环境变量”。无论…...

git撤销提交到本地的commit

有些时候&#xff0c;当我们提交代码到本地后&#xff0c;突然发现因为某些原因需要撤销提交本地的代码。 就比如我&#xff0c;因为代码写错了分支&#xff0c;已经提交到本地了&#xff0c;而我需要取消&#xff0c;并且还要把代码搞得另外的分支上。 提交前&#xff1a; …...

使用Adobe Acrobat Pro DC给pdf文件填加水印

前言 GPT4的官方售价是每月20美元&#xff0c;很多人并不是天天用GPT&#xff0c;只是偶尔用一下。 如果调用官方的GPT4接口&#xff0c;就可以按使用量付费&#xff0c;用多少付多少&#xff0c;而且没有3个小时内只能提问50条的使用限制。 但是对很多人来说调用接口是比较麻烦…...

解决:Unity : Error while downloading Asset Bundle: Couldn‘t move cache data 问题

目录 问题&#xff1a; 尝试 问题得到解决 我的解释 问题&#xff1a; 最近游戏要上线&#xff0c;发现一个现象&#xff0c;部分机型在启动的时候闪退或者黑屏&#xff0c;概率是5%左右&#xff0c;通过Bugly只有个别机型才有这个现象&#xff0c;其实真实情况比这严重的多…...

SpringBoot默认配置文件

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot默认配置文件 📚个人知识库: Leo知识库,欢迎大家访问 1.前言☕…...

Flink构造宽表实时入库案例介绍

1. 安装包准备 Flink 1.15.4 安装包 Flink cdc的mysql连接器 Flink sql的sdb连接器 MySQL驱动 SDB驱动 Flink jdbc的mysql连接器 2. 入库流程图 3. Flink安装部署 上传Flink压缩包到服务器&#xff0c;并解压 tar -zxvf flink-1.14.5-bin-scala_2.11.tgz -C /opt/ 复…...

【Kubernetes】K8s 查看 Pod 的状态

K8s 查看 Pod 的状态 [rootk8s-master1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-3 1/1 Running 2 (34m ago) 14hNAME&#xff1a;Pod 的名称。READY&#xff1a;代表 Pod 里面有几个容器&#xff0c;前面是启动的&#xff0c;后面…...

Linux系统操作命令

Linux管理 在线查询Linux命令&#xff1a; https://www.runoob.com/linux/linux-install.htmlhttps://www.linuxcool.com/https://man.linuxde.net/ 1.Linux系统目录结构 Linux系统的目录结构是一个树状结构&#xff0c;每一个文件或目录都从根目录开始&#xff0c;并且根目…...

大模型学习与实践笔记(五)

一、环境配置 1. huggingface 镜像下载 sentence-transformers 开源词向量模型 import os# 设置环境变量 os.environ[HF_ENDPOINT] https://hf-mirror.com# 下载模型 os.system(huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-…...

100个GEO基因表达芯片或转录组数据处理之GSE126848(003)

写在前边 虽然现在是高通量测序的时代&#xff0c;但是GEO、ArrayExpress等数据库储存并公开大量的基因表达芯片数据&#xff0c;还是会有大量的需求去处理芯片数据&#xff0c;并且建模或验证自己所研究基因的表达情况&#xff0c;芯片数据的处理也可能是大部分刚学生信的道友…...