深度学习在三维点云处理与三维重建中的应用探索

news/2025/3/22 0:45:25

目录

点云数据处理

数据清洗

数据降噪和简化

数据配准

特征提取

数据增强

数据组织

性能考量

PointNet

PointNet++

算法问题

改进方法 

三维重建

重建算法

架构模块

流程步骤

标记说明

优点和挑战


点云数据处理

数据清洗

  1. 去噪:点云数据通常包含噪声。可以使用统计滤波、半径滤波或其他噪声移除算法来清除噪点。

  2. 异常值移除:通过分析点云数据的统计特性,移除偏离平均值或中位数特别远的点,这些通常是由于传感器误差造成的。

数据降噪和简化

  1. 体素化:用体素网格(3D像素)代替大量的点,这可以大幅减少数据量,同时保持空间结构。

  2. 下采样:使用均匀采样、随机采样或远点采样等方法来减少点数,提高处理速度。

数据配准

  1. 预对齐:如果数据来自不同的传感器或不同的时间点,可能需要进行粗配准,以确保它们在同一坐标系中。

  2. 标准化:对点云数据进行缩放和旋转,使其拥有统一的尺度和方向。

特征提取

  1. 曲面特征:提取曲率、法线等几何特征,这对于后续的分割和识别工作非常有帮助。

  2. 颜色特征:如果点云带有RGB信息,可以将颜色特征和几何特征结合起来使用。

数据增强

  1. 仿真数据:使用仿真生成的点云数据来增强训练集,特别是对于难以在现实世界中收集的情况。

  2. 数据插值:对于稀疏区域,可以使用插值算法来估计缺失的点,但要小心保持数据的真实性。

数据组织

  1. 空间索引:使用KD-Tree、八叉树等数据结构来优化查询和检索操作,对于大规模数据来说尤为重要。

  2. 分批处理:如果点云数据量非常大,需要分批次处理,以避免内存溢出。

性能考量

  1. 计算资源:预处理步骤可能需要大量计算资源。优化算法和使用GPU加速是提高效率的关键。

  2. 内存管理:在处理大规模点云数据时,有效的内存管理至关重要,以避免延迟和程序崩溃。

通过以上预处理步骤,可以确保点云数据质量和一致性,为SLAM和语义分割任务打下坚实基础。这些步骤对于处理大规模数据集来说是通用的,而对于具体的实现细节,可能还需要根据具体情况进行调整和优化。

PointNet

PointNet是一个深度学习算法,它用于三维点云的处理和分析。它的主要创新是能够直接从点云数据中学习特征,而不需要将数据转换成其他格式,比如体素(Voxel)或图像。PointNet能够处理无序的点集,并且对于点的输入顺序不敏感。这使得PointNet在三维对象识别和分类、场景语义分割和其他三维数据处理任务中非常有效。

PointNet通过使用多层感知器(MLP)网络,学习点的空间编码,并通过一个对称函数(例如最大池化函数)来确保对输入点的置换不变性。这是处理点云数据的一个重要特性,因为点云通常是无序的,并且相同的3D形状可以以任何顺序表示其点。

PointNet整体网络架构

PointNet++

PointNet++的核心思想,包括分层特征学习、基于区域的处理、最远点采样选择区域中心、以及半径参数控制局部区域大小等。PointNet++在各种3D点云理解任务上,如物体分类和部件分割,都取得了比原始PointNet更好的性能表现。

  • 分组(gouping)

例如:输入为batch*1024*6(1024个点,每个点对应3个坐标3个法向量信息)
分组后输出为:batch*128*16*6(128个中心点,每个簇16个样本)
实际计算时是选择多种半径,多种样本点个数,目的是特征更丰富PointNet++
例如:半径=(0.1,0.2,0.4);对应簇的样本个数(16,32,64)

  • 对各组进行特征提取

先进行维度变换(b*npoints*nsample*features,8*128*16*6->8*6*16*128)
进行卷积操作(例如:in=6,out=64)就得到提取的特征(8*64*16*128)
注意当前每个簇都是16个样本点,我们要每一个簇对应一个特征
按照pointnet,做MAX操作,得到8*64*128

  • 继续做多次采样,分组,卷积:

例如:采样中心点(1024->512->128)
每一次操作时,都要进行特征拼接(无论半径为0.1,0.2,0.4;以及簇采样点个数)
最终都得到batch*中心点个数*特征(但是特征个数可能不同)
执行拼接操作(b*512*128,b*512*256,b*512*512)->(b*512*896)

  • 经过多次采样,分组,pointnet得到最终整体特征,再进行分类

整个过程是一个典型的深度学习中的特征层次化提取过程,用于从原始数据中自动学习到有用的特征。在三维点云的处理中,这种方法特别有效,因为它能处理原始点云数据的无序性,并能从不同的尺度捕捉到形状和结构的特征。通过这样的处理,神经网络能够学习到复杂的模式,从而在各种任务上达到很好的性能。 

算法问题

改进方法 

整体网络模型

三维重建

重建算法

GitHub - zju3dv/NeuralRecon: Code for "NeuralRecon: Real-Time Coherent 3D Reconstruction from Monocular Video", CVPR 2021 oral

单目视频实时三维重建的NeuralRecon系统。其关键思想是通过三维稀疏卷积和GRU对每个视频片段的稀疏TSDF体积进行增量的联合重建和融合。这种设计使NeuralRecon能够实时输出准确和连贯的重建。实验表明,NeuralRecon在重建质量和运行速度上都优于最先进的方法。通过neural-recon重建的稀疏TSDF体可以直接用于3D物体检测、3D语义分割和神经渲染等下游任务。我们相信,通过与下游任务端到端的联合训练,NeuralRecon为基于学习的多视图感知和识别系统提供了新的可能性。 

https://www.youtube.com/watch?v=wuMPaUTJuO0&t=134s

这张图片描述了一个名为“NeuralRecon”的三维重建系统的架构,这个系统采用了一种粗到细(coarse-to-fine)的方法来处理图像,并生成预测的几何结构。

架构模块

  • 图像编码器: 该模块从输入视频帧中提取特征。
  • GRU: 该模块是一个循环神经网络,用于编码视频中的时间信息。
  • MLP: 该模块是一个全连接神经网络,用于预测场景中每个像素的深度。
  • 融合: 该模块结合了 MLP 和 GRU 模块的预测。
  • 上采样: 该模块将粗略深度预测上采样到所需分辨率。
  • 稀疏化: 该模块从深度图中移除异常预测。

流程步骤

  1. 从单目视频中提取特征

    • 局部视频片段中的关键帧图像首先通过图像骨干网络提取多层次特征。
  2. 反向投影和聚合成3D特征体

    • 这些多层次图像特征随后沿着对应的相机光线进行反向投影,并聚合成3D特征体
      F_{t}^{l},代表场景在粗糙的细节层次上的表示。
  3. 粗到细的TSDF预测

    • 从最粗糙的层级开始(层级0=1),系统预测一个稠密的截断符号距离场(TSDF)体积。
    • 在随后的层级中,系统对来自前一层级的TSDF体积进行上采样和细化,并与通过GRU(门控循环单元)融合模块和多层感知机(MLPs)维护在每个层级上的全局隐藏状态进行串联。
  4. 维护全局隐藏状态

    • 在不同层级中,以世界坐标系定义的特征量作为全局隐藏状态,使用GRU单元维护。这有助于随时间维持重建的连贯性。
  5. 最终重建

    • 在最后的层级,输出的TSDF S_{t}^{l}用于替换全局TSDF体积(S_{q}^{g})中的相应体素,从而在时间t产生最终的连贯重建。

PS:   TSDF是“Truncated Signed Distance Field”的缩写。在计算机视觉和图形学中,TSDF是一种用于表示三维形状的数据结构。它在体积重建领域特别受欢迎,如三维扫描和SLAM(Simultaneous Localization and Mapping)系统。 

标记说明

  • 绿色箭头(C):表示特征在不同尺度间的串联(Concatenate)。
  • 黄色箭头(S):表示稀疏化操作(Sparsify),可能是为了减少计算复杂度。
  • 蓝色箭头(U):表示上采样(Upsample),在粗到细的策略中上采样是为了细化特征。
  • 粉色块(Extract/Replace):表示从大尺度特征中提取细节,并替换原有的粗尺度特征。

优点和挑战

  • 优点:NeuralRecon的方法解决了传统基于深度的3D重建方法的两大缺点:
    • 传统方法独立地为每个关键帧估计单视图深度图,可能导致不一致性,。NeuralRecon则直接重建局部表面,确保了连贯的局部几何估计。
    • 基于深度的方法因为重叠的关键帧深度估计有冗余计算,而NeuralRecon通过预测体积表示消除了这种冗余,即使使用更大的3D CNN也能保持实时性能。
  • 挑战:虽然该系统避免了传统逐帧处理的消耗,但处理速度慢和GRU不稳定仍然是需要解决的问题。系统需要维持一个全局隐藏状态,这可能会对计算资源造成压力。

这个系统的创新之处在于使用了多尺度的方法结合深度学习来处理SLAM问题,并利用GRU网络来维持时序信息,从而提高了三维重建的效率和准确性。


https://dhexx.cn/news/show-5318064.html

相关文章

Collections.synchronized * 是什么方法?Collections.synchronized* 中的方法和并发集合类有什么区别

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:Collections.synchronized * 是什么 Collections.synchronized* 是 Java 集合框架(Java Collections Framework)中提供的一组静态方法,用于将非…

永磁同步电机无感FOC(扩展卡尔曼滤波EKF位置观测控制)

文章目录 1、前言2、扩展卡尔曼滤波器原理2.1 预测阶段(时间更新阶段)2.2 校正阶段(状态更新阶段) 3、永磁同步电机EKF的模型4、永磁同步电机EKF的无位置状态观测仿真4.1 核心模块(在滑膜、龙伯格、磁链等观测器基础上…

VScode远程连接虚拟机提示: 无法建立连接:XHR failed.问题解决方案

一问题描述 在vscode下载插件Remote-SSH远程连接虚拟机时提示无法建立连接 二.最大嫌疑原因: 我也是在网上找了许久,发现就是网络原因,具体不知,明明访问别的网页没问题,就是连不上,然后发现下载vscode的…

react合成事件与原生事件区别备忘

朋友问起在做一个下拉框组件,下拉的点击事件是用react的onClick触发,外部区域点击关闭则用dom的原生点击事件绑定,问题是下拉的点击事件无法阻止冒泡到dom的原生事件。 我说,react的合成事件 和 原生事件是不一样的,尽…

SkyWalking 为所有的API接口增加 tag

背景胡扯 线上接口报错,接着被 SkyWalking 抓到,然后 SkyWalking 触发告警,最后老板你,让你辛苦一下,在明早上班前把这个bug 改了,并告诉你你是全公司的希望。谁说不是呢?为公司业务保驾护航&a…

【云存储】Go项目实践(Fedora、GlusterFS、ownCloud)实验解析

本博客主要是为了理解并记录实验中的每一个步骤的含义,以更好的理解该实验的目的与所作的内容。 一些建议: 由于安装在VMWare中的Fedora由版本原因没有办法安装VMTools,因此会导致难以将Windows中的Word文件内的命令直接复制到Fedora里面&a…

【贪心算法经典应用】哈夫曼编码原理与算法详解 python

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…

使用Google reCAPTCHA防止机器注册

本文作者:陈进坚 博客地址:https://jian1098.github.io CSDN博客:https://blog.csdn.net/c_jian 简书:https://www.jianshu.com/u/8ba9ac5706b6 联系方式:jian1098qq.com 环境要求 能翻墙的电脑域名 验证原理 在谷歌…

xhci 数据结构

xhci 数据结构 xhci 数据结构主要在手册上有详细的定义,本文根据手册进行归纳总结: 重点关注的包括: device contexttrb ringtrb device context设备上下文 设备上下文数据结构由xHC管理,用于向系统软件报告设备配置和状态信息。…

URL的绝对路径/相对路

一、URL 浏览器要想发起请求,必须是一个完整的url地址. URL是一个固定格式的字符串 它表达了: 从网络中 哪台计算机(domain) 中的 哪个程序(port) 寻找 哪个服务(path),并注明了…