FMR—Feature-metric Registration论文解读

目录

一、导言

二、先导知识

1、逆组合算法

三、相关工作

1、优化算法为主的配准工作

2、基于特征的点云配准

3、端到端学习的配准

四、FMR框架

1、Encoder模块

2、Decoder分支模块

3、特征指标配准分支模块

4、损失函数

五、数据集

1、ModelNet40

2、7Scene数据集

六、实验


一、导言

        该论文来自2020年的CVPR,提到原有的点云配准工作主要使用点云对应关系,而该论文中使用最小化特征度量误差来优化配准过程。

(1)半监督或者无监督的训练方式,只需要少量或者不需要标注数据就可以训练出好的特征提取网络。

(2)基于特征度量的方式,而不是传统基于几何特征的度量方式(如ICP),使用最小化特征度量来提高离群点、噪音和密度差影响的鲁棒性。

二、先导知识

1、逆组合算法

        逆组合算法一般用于组合优化问题,常常有一组解,适用于解决NP难问题。基本方法是生成初始的一组解后,通过不断对解进行微调(如交换两个元素,删除并添加某个元素)的方式,评估新的组合,以确定是否更新原问题的最优解。

        对于点云配准工作中,逆组合算法一般适用于提高配准精度或者处理复杂形状或有噪声的点云。基本方法是在对点云粗配准后,对得到的变换参数(姿态)进行扰动,比如给定一个扰动范围,对六个参数在扰动范围内随机扰动得到新的变换,评估是否为最优解。

        在本论文中,逆组合算法更进一步优化,不再是简单的一个扰动因子,而是引入雅克比矩阵,计算关于源点云的扰动增量,使这个扰动更加针对性。

三、相关工作

1、优化算法为主的配准工作

        大多数都是二阶段优化的算法,即对应搜索和转换估计,主要关注存在噪声和离群点下的估计变换,这些方法使用基于坐标的欧氏距离度量来评估投影误差,而几何度量对于噪声和离群点很敏感。

        传统针对离群点的方法有:通过使用截断最小二乘损失函数,因为截断最小二乘对离群点不敏感;半定规划松弛替代非凸优化问题;随机采样;高斯滤波原有数据。

2、基于特征的点云配准

        通过制定特征子或者直接使用神经网络来学习最终配准的特征,并根据特征度量误差来估计变换姿态。

        近期的基于特征的配准工作有:3DMatch(从rgb-d中提取3d特征)、PPFNet(通过全局特征子构建PPF特征,包括点对距离,点法向量角度,点对坐标系角度)、The Perfect Match(特征子构建旋转不变性)

3、端到端学习的配准

        端到端的点云配准:不需要搜索对应点的关系,将点云配准转换为回归问题。

        对于当前的端到端的点云配准,将变换参数视为一个黑盒过程,仍然在欧式空间中测量距离度量,而本文通过在特征空间中测量距离,从而更好的解决了噪声、密度差异、部分差异的问题。

四、FMR框架

        FMR框架包括编码器模块以及多任务分支两个部分,通过最小化特征度量投影误差(其实就是经过编码器后得到的点云特征来进行最小化)来计算变换姿态。

1、Encoder模块

        Encoder模块由两个MLP层和一个最大池化层组成,参考了PointNet的结构。通过Encoder模块得到1024维点云特征,Encoder的目的是理解到旋转变换。

2、Decoder分支模块

        用于在无监督情况下训练Encoder,由四层全连接层组成,并由LeakyReLU激活,输出仍然为1024维度。

3、特征指标配准分支模块

        利用逆组合算法(IC算法)来估计变换参数,最小化特征度量投影误差。

        特征度量投影误差:r=||F(P)-(R \cdot F(Q)+T)||^2_2。(相较于ICP算法,只是作了提取特征后的误差)

        对于源点云的点计算雅克比矩阵(并没有用传统随机梯度方法,而是用有限梯度方法计算,其实就类似于用极限来估算导数,只要扰动因子极小就等价于导数值)

        雅克比矩阵:J=\frac{\partial F_p}{\partial \theta_{\xi}}=\frac{F(R_iP+t_i-F(P))}{\xi},其中\xi表示无穷小的扰动因子,包含三个角度参数和三个抖动参数,一般给定为2*e^{-2}

        变换参数的增量:\Delta \theta =-(J^TJ)^{-1}Jr (逆组合算法)

        更新目标点云:Q_{k+1}=Exp(\theta_{k+1})Q_k不太清楚为什么这里转指数

4、损失函数

        损失函数分为无监督的倒角损失(Chamfer损失)和有监督的几何损失。

        倒角损失:每一个采样点到所有源点云的损失加上所有源点云的点到采样点的损失。

        其中,\phi_{\theta_i}指第i个感知机的输出,A表示采样范围,采样数量5k,采样范围为整个源点云,x代表点云特征,对于不同的点云通过解码器生成不同的特征。

        几何损失:就是一般的估计出来的姿态与真实矩阵间的差。

        对于无监督框架而言,只需要计算倒角损失部分,而对于半监督框架而言,需要计算倒角损失和几何损失的和。 

五、数据集

1、ModelNet40

        40个类别的点云数据作为源点云,目标点云经过随机的刚性变换得到,旋转角度为0-45度,平移0-0.8。

2、7Scene数据集

        包含7个室内场景,为RGB-D数据,在将图片投影成点云进行多帧的融合,初始旋转角度在0-60度,平移在0-1.0之间。

六、实验

1、对比实验中与下面三种模型进行对比

(1)LM-ICP(经典优化算法)

(2)3DSmoothNet+RANSAC(特征学习方法)

(3)PointNetLK(深度学习配准方法)

        在大角度下显著优于PointLK模型,而3DSmoothNet结构更适合与点云匹配,对于配准工作虽然学习到了旋转不变性,但仍然不能摆脱大旋转带来的影响,通过半监督框架可以有效避免数据依赖。

2、高密度差异和高噪声条件下的性能

        该框架优于PointLK框架,但在70%以上的密度差异和噪声条件后,仍然在均方差上有一定的提升。

3、比较半监督框架和无监督框架

        这里他提到所有实验基于半监督做的,而单独比较无监督框架优于半监督框架,其实对于一般的对于密度差异、噪声、旋转影响小的数据集,感觉半监督框架应该优于无监督框架。

4、推广到跨源数据和稀疏室外点云

参考文献:https://arxiv.org/abs/2005.01014

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/400320.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot快速入门(自动创建)

目录 前言 步骤 1 创建项目 2 选择生成器springBoot 3 修改后,如图所示 4 点击下一步 5 点击Web----SpringWeb 6 点击创建 6.1 如果发生报错如: 6.2 替换合适版本,等待重新加载 7 添加contronller类 7.1 添加HelloController 类 8 ​​创建…

基于JAVA的医院管理住院系统研究与实现

点击下载源码 基于JAVA的医院管理住院系统研究与实现 摘 要 医院管理住院系统是一项集多类学科为一体的系统,其中包含医学、信息、计算机等学科,广泛的应用在当今欧美等发达国家,给治疗患者们提供了很大的便利。假如全面实现了这一系统&…

【启明智显技术分享】工业级HMI芯片Model3A开发过程中问题记录笔记

一、Model3A芯片介绍 Model3A是启明智显针对工业、行业以及车载产品市场推出的一款高性能、低成本的工业级HMI(Human-Machine Interface,人机界面)芯片。该芯片主要应用于工业自动化、智能终端HMI、车载仪表盘、两轮车彩屏仪表、串口屏、智能…

Docker容器管理之FAQ

一、前言 某次,某容器服务发现无法使用了,查看状态为restaring状态,后看是云主机重启了,导致本地的nfs-server未自动启动,导致关联的集群主机,远程挂载点无法使用,影响容器服务运行。故此&#…

老师分班查询助手,新学期老师都在用!

作为一名教师,您是否曾经在新学期伊始,面对着一堆学生名单和分班结果,感到无从下手?是否曾经历过在黑板上一笔一划地写下每个学生的名字和班级,然后一遍又一遍地回答家长和学生的询问?这样的场景&#xff0…

web页面的性能测试

背景 测试大模型主要web页面的性能 使用工具 通过google自带的lighthouse测试页面的性能 各个参考指标 First Contentful Paint(FCP):测量在用户导航到页面后浏览器呈现第一段 DOM 内容所花费的时间。页面上的图像、非白色<canvas>元素和 SVG 被视为 DOM 内容&#…

ECMAScript6语法:类

在 ES6 中新增了类的概率&#xff0c;多个具有相同属性和方法的对象就可以抽象为类。类和对象的关系如下&#xff1a; &#xff08;1&#xff09;类抽象了对象的公共部分&#xff0c;它泛指某一大类&#xff08;class&#xff09;。 &#xff08;2&#xff09;对象特指通过类…

Linux:基础IO

目录 1. stdin & stdout & stderr 2. 系统文件I/O 1. 接口介绍 open write read close lseek 2. open函数返回值 3. 文件描述符fd 0 & 1 & 2 文件描述符的分配规则 重回定向 dup2 简易Shell的模拟实现 4. FILE 5. 再谈对文件的理解 1. stdin …

threejs webgl效果 功能特效

雷达效果 ​飘扬的红旗 光柱效果 OD线 下雪 下雨 光墙效果 能源球 烟火效果 threejs烟花效果 光圈效果 threejs 光圈 波动 function initScene() {scene new THREE.Scene();}function initCamera() {camera new THREE.PerspectiveCamera(45, window.innerWidth / window.inne…

深入探索PDF源码解析:从PDF到Excel的数据统计分析找到正文

在数字化时代&#xff0c;数据已成为企业决策和业务运营的关键。PDF文档作为一种广泛使用的文件格式&#xff0c;其中蕴含着大量有价值的信息。然而&#xff0c;PDF文档的结构和格式使得直接对其进行数据提取和分析变得复杂。为了解决这个问题&#xff0c;我们采取了一种创新的…

SQL注入实例(sqli-labs/less-17)

0、初始网页 1、确定闭合字符 注入点在于password框&#xff0c;闭合字符为单引号 2、爆库名 1 and updatexml(1,concat(0x7e,database(),0x7e),1)# 1 and (select 1 from (select count(*),concat((select database()),floor(rand()*2))x from information_schema.tables gr…

经纬恒润亮相第四届焉知汽车年会,功能安全赋能域控

8月初&#xff0c;第四届焉知汽车年会在上海举行。此次年会围绕当下智能电动汽车的热点和焦点&#xff0c;聚焦于智能汽车场景应用、车载通信、激光雷达、智能座舱、功能安全、电驱动系统等多个领域&#xff0c;汇聚了来自OEM、科技公司、零部件供应商、测试认证机构、政府院校…

Spark SQL Catalyst工作流程

我们写的SQL语句&#xff0c;会经过一个优化器 (Catalyst)&#xff0c;转化为 RDD&#xff0c;交给集群执行。 而Catalyst在整个Spark 生态中的地位也是至关重要的。 SQL到RDD中间经过了一个Catalyst&#xff0c;它就是Spark SQL的核心&#xff0c;是针对Spark SQL语句执行过程…

使用pytest+selenium编写网页UI自动化脚本和用例

1 UI自动化测试 UI自动化测试&#xff08;User Interface Automation Testing&#xff09;是一种通过编写脚本或使用自动化测试工具&#xff0c;对界面&#xff08;UI&#xff09;进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面&#xff0c;自动化执行用户…

kali安装docker

docker 安装 ● 1、更新 kali 下载资料源&#xff1a;apt-get update ● 2、如果出现上面没有数字签名问题&#xff0c;那就是需要下载证书 使用命令&#xff1a; wget archive.kali.org/archive-key.asc #下载证书 apt-key add archive-key.asc #添加证书 ● 3、重新更新一…

redis列表若干记录

2、列表 ziplist ziplist参数 entry结构 entry-data:节点存储的元素prelen&#xff1a;记录前驱节点长度encoding&#xff1a;当前节点编码格式encoding encoding属性 使用多个子节点存储节点元素长度&#xff0c;这种多字节数据存储在计算机内存中或者进行网络传输的时的字节…

redis面试(十六)公平锁释放和排队加锁

锁释放 RedissonFairLock.unlockInnerAsync()方法 这和加锁的逻辑没有太大区别 也就是说在客户端A他释放锁的时候&#xff0c;也会走while true的脚本逻辑&#xff0c;看一下有序集合中的元素的timeout时间如果小于了当前时间&#xff0c;就认为他的那个排队就过期了&#xf…

如何减少 Docker 镜像大小:6 种优化方法

如果您想减少docker镜像的大小&#xff0c;您需要使用构建docker镜像的标准最佳实践。 本博客讨论了您可以快速实施的各种优化技术&#xff0c;以制作最小、最精简的 docker 镜像。我们还将介绍一些用于 Docker 镜像优化的最佳工具。 Docker 作为一种容器引擎&#xff0c;可以…

k8s核心架构分析

k8s核心概念概述 Kubernetes入门&#xff1a;掌握集群核心&#xff0c;释放容器潜能 技术爱好者们&#xff0c;CD集群的核心概念是构建、部署和管理容器化应用的基石。掌握这些概念&#xff0c;不仅助你深入理解技术细节&#xff0c;更能在CD集群中自如操作&#xff0c;无论是…

2 C 语言开发工具选择、 MinGW 的安装与配置、VS Code 的安装与配置、插件推荐

目录 1 开发工具选择 1.1 Visual Studio 1.2 Code::Block 1.3 Clion 1.4 VS Code 1.5 在线编辑工具 2 开发工具安装 2.1 安装 MinGW-w64 2.1.1 MinGW-w64 介绍 2.1.2 解压 MinGW 2.1.3 将 MinGW 添加至环境变量 2.1.4 验证安装 2.2 安装 VS Code 2.2.1 下载安装包…