PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
目录
- 介绍
- 核心思想及其实现
- 核心思想
- 实现步骤
- 如何改进PointNet++
- **局部几何结构的处理**
- **动态图的引入**
- **特征聚合的灵活性**
- **全局和局部特征的结合**
- 论文题目:Dynamic Graph CNN for Learning on Point Clouds
- 发布期刊:TOG
- 作者单位:麻省理工 伦敦帝国理工
- 代码地址:https://github.com/WangYueFt/dgcnn
介绍
它主要讨论了如何在点云(Point Cloud)上进行深度学习的挑战,并提出了一种新的神经网络模块EdgeConv,用于改进点云分类和分割任务。
论文的主要内容如下:
- 研究背景:点云是一种常见的几何表示,广泛用于3D感知、自动驾驶和机器人等领域。然而,由于点云缺乏固有的拓扑结构,传统的卷积神经网络(CNN)难以直接在点云上应用。论文旨在解决这一问题,将卷积神经网络的思想扩展到不规则的点云数据中。
- EdgeConv模块:为了在点云上捕捉局部几何结构,作者提出了EdgeConv操作,它通过计算每个点与其邻域点之间的关系(边特征)来获取点云的局部几何信息。EdgeConv模块的设计保证了点的排列不变性,使其可以动态地在不同层次上捕捉语义特征。
- 动态图结构:与传统的图卷积网络不同,DGCNN(Dynamic Graph CNN)在每一层中都会动态地重新计算点与点之间的邻近关系。这种动态图的更新机制使得网络可以捕捉到点云的全局几何特性。
- 实验与结果:论文通过在多个标准数据集(如ModelNet40、ShapeNetPart和S3DIS)上进行测试,展示了所提出模型的优越性能。在这些分类和分割任务上,DGCNN达到了当时的最新效果,尤其是在点云分类和语义分割任务中表现出色。
核心思想及其实现
DGCNN(Dynamic Graph Convolutional Neural Network)的核心思想在于通过动态图结构和EdgeConv操作,改进深度神经网络在不规则点云数据上的特征提取和处理能力。
核心思想
-
动态图构建:传统的卷积神经网络在处理图像时,卷积操作依赖于网格结构,而点云数据是无规则的。DGCNN通过构建图(Graph),将点与其邻居之间的关系通过边(Edge)来表示。图中的节点是点云中的点,边是点与其邻域点的关系。
-
EdgeConv操作:为了在点云上进行局部特征提取,DGCNN设计了EdgeConv模块。EdgeConv对每个点及其邻居点构建边特征,捕捉局部几何结构。通过计算点之间的差异(如位置差异),生成边的特征,然后对这些边特征进行聚合。这样,网络能够学习到点与其邻居之间的几何关系,而不仅仅是点的独立特征。
-
动态更新图结构:DGCNN的图结构在每一层网络中都会根据当前特征动态更新。即每一层中的图并不是固定的,而是根据该层输出的特征空间重新计算最近邻点。这种动态更新使得网络能够捕捉到随着深度增加而逐渐抽象的全局几何信息。
实现步骤
-
输入点云数据:
- 输入是一个点云的集合,每个点可能包含坐标(如3D坐标)和其他信息(如颜色、法线等)。假设输入有n个点,每个点有F维特征。
-
构建图:
- 对于每个点,基于欧几里得距离找到其最近的k个邻居,构建k近邻图(k-nearest neighbor graph)。图中的每条边表示该点与邻居点的连接。
-
EdgeConv操作:
- 对于图中的每个点,计算与其邻居点的边特征。边特征的计算方式为:( h_{\Theta}(x_i, x_j) = h_{\Theta}(x_j - x_i) ),其中( x_i )是中心点,( x_j )是其邻居点,( \Theta )是可学习的参数。
- 对边特征进行聚合(如取最大值或求和),生成点的新的特征表示。
-
图的动态更新:
- 每层网络计算完成后,基于新的特征空间,重新计算每个点的k个最近邻居,更新图结构。这个过程确保网络在每层学习到的特征能够捕捉到不同尺度和语义层次的几何信息。
-
多层EdgeConv堆叠:
- 多次应用EdgeConv操作,每次输出的特征都会递进捕捉更加抽象的几何信息。最终通过全局池化操作(如最大池化或平均池化),将所有点的全局特征汇总。
-
任务输出(如分类或分割):
- 对于分类任务:全局特征通过全连接层,输出最终的分类标签。
- 对于分割任务:将每个点的局部特征与全局特征结合,输出每个点的分类结果。
如何改进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 逐渐聚合更大范围的局部信息,最终形成全局特征。局部几何信息在每层的图更新过程中也被保留并逐步扩展到全局,这使得网络在保持全局语义信息的同时,能够更好地捕捉局部细节。
相关文章:

PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
目录 介绍核心思想及其实现核心思想实现步骤 如何改进PointNet**局部几何结构的处理****动态图的引入****特征聚合的灵活性****全局和局部特征的结合** 论文题目:Dynamic Graph CNN for Learning on Point Clouds发布期刊:TOG作者单位:麻省理…...
FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析
GetBitContext结构体和其相关的函数分析: FFmpeg中位操作相关的源码:GetBitContext结构体,init_get_bits函数、get_bits1函数和get_bits函数分析 FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析 一、skip_bits函数 skip…...

加密
一、加密 加密运算需要两个输入:密钥和明文 解密运算也需要两个输入:密钥和密文 密文通常看起来都是晦涩难懂、毫无逻辑的,所以我们一般会通过传输或者存储密文来保护私密数据,当然,这建立在一个基础上,…...

Kibana:如何使用魔法公式创建具有影响力的可视化效果?(第 1 部分)
作者:来自 Elastic Vincent du Sordet 我们将看到 Kibana Lens 编辑器中的神奇数学公式如何帮助突出显示高值。 简介 在上一篇博文《作为非设计师设计直观的 Kibana 仪表板》中,我们强调了创建直观仪表板的重要性。它展示了简单的更改(分组…...

【C++】多态and多态原理
目录 一、多态的概念 二、多态的定义及实现 🌟多态的构成条件 🌟虚函数 🌟虚函数的重写 🌠小贴士: 🌟C11 override 和 final 🌟重载、重写(覆盖)、重定义…...

C# 实现二维数据数组导出到 Excel
目录 功能需求 范例运行环境 Excel DCOM 配置 设计实现 组件库引入 编辑 方法设计 生成二维数据数组 核心方法实现 调用示例 总结 功能需求 将数据库查询出来的数据导出并生成 Excel 文件,是项目中经常使用的一项功能。本文将介绍通过数据集生成二维…...
nlohmann::json中有中文时调用dump转string抛出异常的问题
问题描述 Winodows下C开发想使用一个json库,使用的nlohmann::json,但是遇到json中使用中文时,转成string,会抛出异常。 nlohmann::json contentJson;contentJson["chinese"] "哈哈哈";std::string test con…...

Unity中InputField一些属性的理解
先看代码: using UnityEngine; using UnityEngine.UI;public class TestInput : MonoBehaviour {[SerializeField]InputField inputField;void Start(){Debug.Log(inputField.text);Debug.Log(inputField.text.Length);Debug.Log(inputField.preferredWidth);Debug…...

【webpack4系列】webpack构建速度和体积优化策略(五)
文章目录 速度分析:使用 speed-measure-webpack-plugin体积分析:使用webpack-bundle-analyzer使用高版本的 webpack 和 Node.js多进程/多实例构建资源并行解析可选方案使用 HappyPack 解析资源使用 thread-loader 解析资源 多进程并行压缩代码方法一&…...
从零开始搭建 PHP
🛠️ 从零开始搭建 PHP 环境:详细教程 PHP(Hypertext Preprocessor)是最流行的后端脚本语言之一,广泛用于构建动态网站和 Web 应用程序。在开始 PHP 开发之前,首先需要搭建 PHP 运行环境。无论你使用的是 …...

【数据结构】8——图3,十字链表,邻接多重表
数据结构8——图3,十字链表,邻接多重表 文章目录 数据结构8——图3,十字链表,邻接多重表前言一、十字链表结构例子 复杂例子 二、邻接多重表(Adjacency Multilist)例子 前言 除了之前的邻接矩阵和邻接表 …...
eth-trunk 笔记
LACP:Link Aggregation Control protocol 链路聚合控制协议 将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的。同时,这些捆绑在一起的链路通过相互间的动态备份,可以有效地提高链路的可靠性 一、配…...

通信工程学习:什么是接入网(AN)中的TF传送功能
接入网(AN)中的TF传送功能 在通信工程中,TF(Transfer Function)传送功能是指为接入网(AN)不同位置之间提供通道和传输介质,以实现数据的有效传输。以下是关于TF传送功能的详细解释&a…...

【JavaEE】IO基础知识及代码演示
目录 一、File 1.1 观察get系列特点差异 1.2 创建文件 1.3.1 delete()删除文件 1.3.2 deleteOnExit()删除文件 1.4 mkdir 与 mkdirs的区别 1.5 文件重命名 二、文件内容的读写----数据流 1.1 InputStream 1.1.1 使用 read() 读取文件 1.2 OutputStream 1.3 代码演示…...

安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式
总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 系统导航方式默认一般是按键的,如果要改成手势的话,我们来看看用户怎么修改的: 设置=>系统=>手势=>系统导航,在这里进行修改。我们来分析下这个流程,并且将其修改为…...
[技术杂谈]暗影精灵8plus电竞版台式机安装和使用注意
最近买回二手台式机准备做深度学习训练模型使用。由于个人不是十分有钱,因此下血本入手一台,不然深度学习玩不转。配置:i9-12900K / 64G d4 3733频率 / 1TSSD2TB机械 / RTX3090 24G显卡 旗舰版 机箱45L超大机箱。买回来后整体不错&#…...
【加密算法基础——AES解密实践】
AES 解密实践 AES 解密是对使用 AES 加密算法加密的数据进行恢复的过程。 常用的解密方式有三种: 在线解密工具:格式比较好控制,但是有些在线工具兼容性不好,有时候无法解出,不知道是自己的密文密钥没找对࿰…...

Spring01
spring框架 spring是轻量级的容器框架 spring framework 1、Spring核心学习内容 IOC、AOp, jdbcTemplate,声明式事务 2、IOC:控制反转,孚以管理部8号对象 3.AOP:切面编程4.JDBCTemplate:是spring提供一套访问数据库的技术,应用性强,相对好理解5.声明式…...
gogps 利用广播星历解算卫星位置matlab函数satellite_orbits详细注解版
主要注释了广播星历计算GPS BDS卫星位置的。 function [satp, satv] satellite_orbits(t, Eph, sat, sbas)% SYNTAX: % [satp, satv] satellite_orbits(t, Eph, sat, sbas); % % INPUT: % t clock-corrected GPS time % Eph ephemeris matrix % sat satellite…...

Oracle按照某一字段值排序并显示,相同的显示序号
Oracle按照某一字段值排序并显示,相同的显示序号 最近的工作遇到对于相同的字段,按照序号去显示值,并对相同的值进行排序 实验了半天,感觉满意的答案,分享给大家 第一种: ROW_NUMBER 语法: ROW_NUMBER() OVER (ORDER BY your_column) AS sequence_number 说明: 根据your_column…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...