3D点云几何拟合

Supervised Fitting of Geometric Primitives to 3D Point Clouds

论文地址:

http://openaccess.thecvf.com/content_CVPR_2019/papers/Li_Supervised_Fitting_of_Geometric_Primitives_to_3D_Point_Clouds_CVPR_2019_paper.pdf

摘要

将几何基元拟合到三维点云数据可以在底层三维形状的低层数字化三维数据和高层结构信息之间建立一个桥梁。使许多下游应用在三维数据处理。长期以来,基于RANSAC的方法一直是解决此类原始设置问题的金标准,需要对每个输入参数进行仔细的调整,无法很好地适应具有不同形状的大型数据集。引入了有监督原始拟合网络(SPFN),一种端到端的神经网络,可在不受任何用户控制的情况下,在不同的尺度上检测出不同数量的原始体。该方法利用地面真值原始曲面和原始隶属度对网络进行监督。架构不是直接预测原型,而是首先预测每一点的属性,然后使用微分模型估计模块计算原始类型和参数。在一个新的ANSI三维机械部件模型基准上评估了的方法,并证明了与目前最先进的基于ransac的方法和直接神经预测方法相比的显著改进。

主要贡献

•提出SPFN,一种端到端的有监督神经网络,它以点云为输入,检测不同尺度的不同数量的基元。

•可微原始模型估计器解决了一系列线性最小二乘问题,从而使整个管道端到端可训练。

•使用一个新的机械部件CAD模型数据集来演示网络的性能。

最近的三维扫描技术和大规模的三维存储库拓宽了三维几何数据处理的机会。但是,这些存储库中的大多数扫描数据和模型都表示为数字化点云或网格。由于缺乏与形状语义一致的结构信息,三维数据的这种低级表示限制了对它们进行几何操作的能力。例如,当编辑从几何基本体构建的形状时,对每个基本体的类型和参数的了解可以极大地帮助操作生成可信的结果(图1)。为了解决数字化数据中缺乏此类结构信息的问题,本文考虑了将三维点云映射到一些最适合底层形状的几何基元的转换问题。

Supervised Primitive Fitting Network

提出了一种监督基元拟合网络(SPFN),该网络采用点云P∈RN×3表示的输入形状,其中N是点的个数,并预测了一组最适合输入的几何基元。SPFN的输出包含每个原型的类型和参数,以及分配给它的输入点列表。网络支持L=4种类型的基元:平面、球体、圆柱体和圆锥体(图3),将这些类型相应地索引0、1、2、3。本文将使用符号{·}i,:和{·}:,k分别表示矩阵的第i行和第k列。

训练时的SPFN管道如图2所示。使用PointNet++[25]分段体系结构来使用输入点云P。一个小小的改进是,在PointNet++管道的末端添加了三个独立的完全连接层,方便预测计算。

计算了成员矩阵W和ˆW中所有列对的并集上的松弛交集(RIoU)[15]。两个指示向量W和Wˆ的RIoU定义如下:

然后通过匈牙利匹配[16]给出两个矩阵列之间的最佳一对一对应关系(由RIoU确定)。根据这一对应关系,对真值原型进行重新排序,使真值原型k与预测的原型k相匹配。由于小扰动将导致匹配结果变化的输入集的测度为零,因此整个管道几乎处处保持可微。使用外部匈牙利匹配解算器获得最佳匹配指标,将这些指标注入网络,进一步的损失计算和梯度传播。

Evaluation Metrics

评估指标设计如下。对单个形状的每个数量进行描述,并将数字报告为所有测试形状中这些数量的平均值。对于每一个基元度量,先按照执行基元重新排序,以便匹配预测基元和基本真元的索引。

在表1中报告了SPFN和effient RANSAC的结果。由于Ef-fient RANSAC能够提供更高分辨率的点云,使用与SPFN(第1行)相同的8k输入点云和以相同方式采样和扰动的另一64k输入点云(第2行)对其进行测试。即使与高分辨率点云的结果相比,SPFN在所有指标上都优于Ef-fient RANSAC。阈值为0.01的{Sk}和P覆盖率数字都显示了较大的边距,
SPFN fits原型更加精确。

引入每个点来测试有效的RANSAC SPFN预测的属性。首先训练只有Lseg损失的SPFN,然后对预测的隶属度矩阵中的每一段使用effient RANSAC预测单个原型(表1,第4行)。进一步在训练中依次添加Ltype和Lnorm损失,并在effient RANSAC(第5-6行)中使用预测的原始类型ˆt和点法线ˆN。

图5说明了{Sk}覆盖率,对于不同尺度的地面真值原型,覆盖率Q为0.01。有效的RANSAC覆盖率在利用网络分割结果时有所提高,但在规模较小时仍然较低。相反,SPFN在所有尺度上都表现出一致的高覆盖率。

为了测试真实的噪声模式,三维打印了一些测试模型,并使用DAVID SLS2三维扫描仪扫描了输出。注意,在合成噪声上训练的SPFN成功地重建了所有原型,包括小片段(图6)。

3D点云几何拟合的更多相关文章

  1. 2020厦门大学综述翻译:3D点云深度学习(Remote Sensiong期刊)

    目录 摘要 1.引言: 2.点云深度学习的挑战 3.基于结构化网格的学习 3.1 基于体素 3.2 基于多视图 3.3 高维晶格 4.直接在点云上进行的深度学习 4.1 PointNet 4.2 局部 ...

  2. segMatch:基于3D点云分割的回环检测

    该论文的地址是:https://arxiv.org/pdf/1609.07720.pdf segmatch是一个提供车辆的回环检测的技术,使用提取和匹配分割的三维激光点云技术.分割的例子可以在下面的图 ...

  3. 3D点云配准算法简述

    ​蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点云 ...

  4. 3D点云完美匹配

    3D点云完美匹配 The Perfect Match: 3D Point Cloud Matching with Smoothed Densities 地址链接: http://openaccess. ...

  5. 3D点云深度学*

    3D点云深度学* 在自动驾驶中关于三维点云的深度学*方法应用.三维场景语义理解的方法以及对应的关键技术介绍. 1. 数据 但是对于3D点云,数据正在迅速增长.大有从2D向3D发展的趋势,比如在open ...

  6. 3D点云点云分割、目标检测、分类

    3D点云点云分割.目标检测.分类 原标题Deep Learning for 3D Point Clouds: A Survey 作者Yulan Guo, Hanyun Wang, Qingyong H ...

  7. 3D点云重建原理及Pytorch实现

    3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruc ...

  8. 2020国防科大综述:3D点云深度学习——综述(3D点云分割部分)

    目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D点云分割 3.1 3D语义分割 3.1.1 基于投影的方法 多视图表示 球形表示 3.1.2 基于离散的方法 稠密离散表示 稀 ...

  9. 2020国防科大综述:3D点云深度学习—综述(点云形状识别部分)

    目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D形状分类 3.1基于多视图的方法 3.2基于体素的方法 3.3基于点的方法 3.3.1 点对多层感知机方法 3.3.2基于卷积 ...

随机推荐

  1. 【yml】springboot 配置类 yml语法

    参考:https://www.runoob.com/w3cnote/yaml-intro.html YAML 是 "YAML Ain't a Markup Language"(YA ...

  2. hdu1024 最大m子序列和

    题意:      给你一个序列n个数组成,然后让你在里面找到m个子序列,让这m个子序列的和最大. 思路:       dp[i][j]表示的是第j个数字在第i个子序列时的当前最优值. dp[i][j] ...

  3. MS08_067漏洞攻击

    MS08_067 MS08_067是典型的缓冲区溢出漏洞,Windows的Server服务在处理特制RPC请求时存在缓冲区溢出漏洞,远程攻击者可以通过发送恶意的RPC请求触发这个溢出,导致完全入侵用户 ...

  4. Tomcat PUT方法任意文件上传(CVE-2017-12615)

    目录 漏洞复现: 漏洞利用工具: 漏洞环境:当 Tomcat运行在Windows操作系统,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将 ...

  5. 【python】Leetcode每日一题-位1的个数

    [python]Leetcode每日一题-位1的个数 [题目描述] 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例1 ...

  6. java之Map的使用

    Map的实现类有很多,其中较为常见的有HashMap,HashTable,LinkedHashMap,TreeMap,下面分别对这几个类进行简单的分析: 1.HashMap HashMap的结构数组+ ...

  7. SQL注入,PreparedStatement和Statement

    代码区 还是一个工具类 代码: package cn.itcats.jdbc; import java.sql.Connection;import java.sql.DriverManager;imp ...

  8. class的大小

    3个问题: sizeof一个空类是多大?为什么?编译器为什么这么做? 在这个类中添加一个virtual函数后再sizeof,这时是多大?为什么? 将这个类再virtual继承一个其它的空类,这是多大? ...

  9. golang:net/http理解总结

    Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现.使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序. http服务端的创建流程 在使用http ...

  10. [Qt] 信号和槽

    信号与槽:是一种对象间的通信机制 观察者模式:当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal).这种发出是没有目的的,类似广播.如果有对象对这个信号感兴趣,它就 ...