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

PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用

目录

    • 介绍
    • 核心思想及其实现
      • 核心思想
      • 实现步骤
    • 如何改进PointNet++
      • **局部几何结构的处理**
      • **动态图的引入**
      • **特征聚合的灵活性**
      • **全局和局部特征的结合**

Pasted image 20240916093929

  • 论文题目:Dynamic Graph CNN for Learning on Point Clouds
  • 发布期刊:TOG
  • 作者单位:麻省理工 伦敦帝国理工
  • 代码地址:https://github.com/WangYueFt/dgcnn
    Pasted image 20240916093939

介绍

它主要讨论了如何在点云(Point Cloud)上进行深度学习的挑战,并提出了一种新的神经网络模块EdgeConv,用于改进点云分类和分割任务。

论文的主要内容如下:

  1. 研究背景:点云是一种常见的几何表示,广泛用于3D感知、自动驾驶和机器人等领域。然而,由于点云缺乏固有的拓扑结构,传统的卷积神经网络(CNN)难以直接在点云上应用。论文旨在解决这一问题,将卷积神经网络的思想扩展到不规则的点云数据中。
  2. EdgeConv模块:为了在点云上捕捉局部几何结构,作者提出了EdgeConv操作,它通过计算每个点与其邻域点之间的关系(边特征)来获取点云的局部几何信息。EdgeConv模块的设计保证了点的排列不变性,使其可以动态地在不同层次上捕捉语义特征。
  3. 动态图结构:与传统的图卷积网络不同,DGCNN(Dynamic Graph CNN)在每一层中都会动态地重新计算点与点之间的邻近关系。这种动态图的更新机制使得网络可以捕捉到点云的全局几何特性。
  4. 实验与结果:论文通过在多个标准数据集(如ModelNet40、ShapeNetPart和S3DIS)上进行测试,展示了所提出模型的优越性能。在这些分类和分割任务上,DGCNN达到了当时的最新效果,尤其是在点云分类和语义分割任务中表现出色。

Pasted image 20240916093923

核心思想及其实现

DGCNN(Dynamic Graph Convolutional Neural Network)的核心思想在于通过动态图结构和EdgeConv操作,改进深度神经网络在不规则点云数据上的特征提取和处理能力。
Pasted image 20240916094452

核心思想

  1. 动态图构建:传统的卷积神经网络在处理图像时,卷积操作依赖于网格结构,而点云数据是无规则的。DGCNN通过构建图(Graph),将点与其邻居之间的关系通过边(Edge)来表示。图中的节点是点云中的点,边是点与其邻域点的关系。

  2. EdgeConv操作:为了在点云上进行局部特征提取,DGCNN设计了EdgeConv模块。EdgeConv对每个点及其邻居点构建边特征,捕捉局部几何结构。通过计算点之间的差异(如位置差异),生成边的特征,然后对这些边特征进行聚合。这样,网络能够学习到点与其邻居之间的几何关系,而不仅仅是点的独立特征。

  3. 动态更新图结构:DGCNN的图结构在每一层网络中都会根据当前特征动态更新。即每一层中的图并不是固定的,而是根据该层输出的特征空间重新计算最近邻点。这种动态更新使得网络能够捕捉到随着深度增加而逐渐抽象的全局几何信息。

实现步骤

  1. 输入点云数据

    • 输入是一个点云的集合,每个点可能包含坐标(如3D坐标)和其他信息(如颜色、法线等)。假设输入有n个点,每个点有F维特征。
  2. 构建图

    • 对于每个点,基于欧几里得距离找到其最近的k个邻居,构建k近邻图(k-nearest neighbor graph)。图中的每条边表示该点与邻居点的连接。
  3. EdgeConv操作

    • 对于图中的每个点,计算与其邻居点的边特征。边特征的计算方式为:( h_{\Theta}(x_i, x_j) = h_{\Theta}(x_j - x_i) ),其中( x_i )是中心点,( x_j )是其邻居点,( \Theta )是可学习的参数。
    • 对边特征进行聚合(如取最大值或求和),生成点的新的特征表示。
      Pasted image 20240916094458
  4. 图的动态更新

    • 每层网络计算完成后,基于新的特征空间,重新计算每个点的k个最近邻居,更新图结构。这个过程确保网络在每层学习到的特征能够捕捉到不同尺度和语义层次的几何信息。
  5. 多层EdgeConv堆叠

    • 多次应用EdgeConv操作,每次输出的特征都会递进捕捉更加抽象的几何信息。最终通过全局池化操作(如最大池化或平均池化),将所有点的全局特征汇总。
  6. 任务输出(如分类或分割)

    • 对于分类任务:全局特征通过全连接层,输出最终的分类标签。
    • 对于分割任务:将每个点的局部特征与全局特征结合,输出每个点的分类结果。

如何改进PointNet++

DGCNN 和 PointNet++ 都是处理 3D 点云数据的深度学习模型,但 DGCNN 引入了动态图卷积的概念,改进了 PointNet++ 的一些局限性,特别是在捕捉局部几何结构和特征关系方面。以下是 DGCNN 如何在核心思想上改进 PointNet++ 的几个方面:

局部几何结构的处理

  • PointNet++:虽然 PointNet++ 在 PointNet 的基础上改进了对局部几何结构的捕捉,采用了分层的多尺度邻域聚合策略(通过区域分组和采样来获取点的邻域信息),但是它仍然对每个点独立处理,没有显式利用邻域点之间的几何关系。它主要依赖距离等简单的局部特征。
  • DGCNN:DGCNN 引入了 EdgeConv 操作,通过计算每个点与其邻域点的边特征(edge features),能够捕捉到更丰富的局部几何信息。EdgeConv 操作不只是简单地聚合邻居点的特征,而是通过计算点之间的相对差异(如相对位置),来明确表达点与其邻居之间的几何关系。这种基于邻域结构的特征提取方法比 PointNet++ 更有效地捕捉了点云中的局部几何结构。

动态图的引入

  • PointNet++:在每一层的特征提取中,PointNet++ 仅基于固定的欧几里得距离构建邻域结构。这意味着一旦邻域结构确定后,它在整个网络中保持不变,这样可能会忽略高层特征中的全局信息。
  • DGCNN:DGCNN 动态地根据每一层的特征空间重新计算邻居关系,构建动态图。这种动态图更新允许模型在更深层次上根据高层特征捕捉更加抽象的关系。随着每一层特征空间的更新,图结构也随之改变,确保了模型能够学习到在全局语义空间中相互关联的点。这样不仅保留了局部信息,还通过逐层的图更新扩展了网络的感受野,逐步学习到全局的几何特征。

特征聚合的灵活性

  • PointNet++:在局部特征聚合上,PointNet++ 使用简单的最大池化来聚合每个点的局部特征,从而达到排列不变性。然而,这种简单的池化方式并没有充分利用点之间的几何关系。
  • DGCNN:DGCNN 的 EdgeConv 操作引入了一个多层感知器(MLP),用于计算点与邻居点之间的边特征,并在局部几何结构上执行聚合。这使得特征聚合过程更加灵活,不仅仅是依赖简单的几何距离。通过这种方式,DGCNN 在聚合过程中可以更加细致地捕捉点与点之间的语义关系,从而提高特征表示的丰富性。

全局和局部特征的结合

  • PointNet++:主要关注局部区域的特征,并将全局特征和局部特征分开处理,在后续层中仅通过池化得到全局特征。
  • DGCNN:通过逐层图更新和 EdgeConv 操作,DGCNN 自然结合了局部和全局特征。随着网络层次的加深,DGCNN 逐渐聚合更大范围的局部信息,最终形成全局特征。局部几何信息在每层的图更新过程中也被保留并逐步扩展到全局,这使得网络在保持全局语义信息的同时,能够更好地捕捉局部细节。

http://www.kler.cn/news/307448.html

相关文章:

  • vue中v-bind和v-model的区别和应用
  • 车载软件架构 --- SOA设计与应用(中)
  • Spring Boot- 配置中心问题
  • 【Hot100】LeetCode—51. N 皇后
  • F12抓包11:UI自动化 - Recoder(记录器)
  • 【裸机装机系列】3.kali(ubuntu)-更新sources.list并重启
  • 华为OD机试真题-单词接龙-E卷(含题目描述+解题思路+代码解析)
  • 【CMake】使用CMake在Visual Studio 构建多cpp文件项目
  • pytest 接口测试
  • C++——写一函数求sinh(x)的值,求sinh(x)的近似公式为sinh(x)=(e^x+e^(-x))/2。
  • Java项目: 基于SpringBoot+mybatis+maven校园资料分享平台(含源码+数据库+答辩PPT+毕业论文)
  • 时空大数据平台:激活新质生产力的智慧引擎
  • GitLab CI_CD 从入门到实战笔记
  • 响应式CSS 媒体查询——WEB开发系列39
  • 【系统架构设计师-2015年真题】案例分析-答案及详解
  • vulkano (rust) 画一个三角形 (vulkan 渲染窗口初始化 (Linux) 下篇)
  • [000-002-01].第03节:Linux系统下Oracle的安装与使用
  • 【C++11 —— 线程库】
  • 近乎实时的物联网数据管道架构
  • 大数据新视界 --大数据大厂之MongoDB与大数据:灵活文档数据库的应用场景
  • 微信小程序如何设置左侧导航栏跟随页面滑动
  • Leetcode—1137. 第 N 个泰波那契数【简单】
  • uniapp 实现Toast轻提示!
  • 分类预测|基于黑翅鸢优化最小二乘支持向量机分类预测Matlab程序BKA-LSSVM 多特征输入多类别输出 含基础LSSVM
  • 面试—MySQL
  • 自制一键杀死端口进程程序# tomcat 如何杀死tomcat进程
  • 【C++题目】1.日期差值
  • MySQL篇(运算符)(持续更新迭代)
  • bat批量修改文件名
  • c++ templates常用函数