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…...

Android设备推送traceroute命令进行网络诊断
文章目录 工作原理下载traceroute for android推送到安卓设备执行traceroutetraceroute www.baidu.com Traceroute(追踪路由) 是一个用于网络诊断的工具,主要用于追踪数据包从源主机到目标主机所经过的路由路径,以及每一跳&#x…...
CSP-38th
目录 1.正态分布 2.走马 3.信息传输 4.字符串可能性个数 5.最多访问节点个数 1.正态分布 本来是很简单的一道模拟题,根据 (n-u) /a 的整数位、十分位确定是在第几行,根据百分位确定是在第几列,但是我直接将 (n-u)/a 乘以100后进行 // 和…...

OneNet + openssl + MTLL
1.OneNet 使用的教程 1.在网络上搜索onenet,注册并且登录账号。 2.产品服务-----物联网服务平台立即体验 3.在底下找到立即体验进去 4.产品开发------创建产品 5.关键是选择MQTT,其他的内容自己填写 6.这里产品以及开发完成,接下来就是添加设…...
python版若依框架开发:后端开发规范
python版若依框架开发 从0起步,扬帆起航。 python版若依部署代码生成指南,迅速落地CURD!项目结构解析前端开发规范后端开发规范文章目录 python版若依框架开发1.启动命令2.配置⽂件3.上传配置1.启动命令 本项⽬⾃定义了两个启动命令 pyhton app.py --env=devpython app.p…...

源码级拆解:如何搭建高并发「数字药店+医保购药」一体化平台?
在全民“掌上看病、线上购药”已成常态的今天,数字药店平台正在以惊人的速度扩张。而将数字药店与医保系统打通,实现线上医保购药,更是未来互联网医疗的关键拼图。 那么,如何从技术底层搭建一个 支持高并发、可扩展、安全合规的数…...
旅行商问题(TSP)的 C++ 动态规划解法教学攻略
一、问题描述 旅行商问题(TSP)是一个经典的组合优化问题。给定一个无向图,图中的顶点表示城市,边表示两个城市之间的路径,边的权重表示路径的距离。一个售货员需要从驻地出发,经过所有城市后回到驻地&…...

毕设 基于机器视觉的驾驶疲劳检测系统(源码+论文)
文章目录 0 前言1 项目运行效果2 课题背景3 Dlib人脸检测与特征提取3.1 简介3.2 Dlib优点 4 疲劳检测算法4.1 眼睛检测算法4.2 打哈欠检测算法4.3 点头检测算法 5 PyQt55.1 简介5.2相关界面代码 6 最后 0 前言 🔥这两年开始毕业设计和毕业答辩的要求和难度不断提升…...

Unity | AmplifyShaderEditor插件基础(第五集:简易膨胀shader)
一、👋🏻前言 大家好,我是菌菌巧乐兹~本节内容主要讲一下,如何用shader来膨胀~ 效果预览: 二、💨膨胀的基本原理 之前的移动是所有顶点朝着一个方向走,所以是移动 如果所有顶点照着自己的方…...

ARM SMMUv3简介(一)
1.概述 SMMU(System Memory Management Unit,系统内存管理单元)是ARM架构中用于管理设备访问系统内存的硬件模块。SMMU和MMU的功能类似,都是将虚拟地址转换成物理地址,不同的是MMU转换的虚拟地址来自CPU,S…...

【前端】es6相关,柯里化
0. 严格模式 严格模式的概念从ES6引进。通过严格模式,可以在函数内部选择进行较为严格的全局或局部的错误条件检测。 MDN中严格模式的描述 严格模式通过抛出错误来消除了一些原有静默错误严格模式修复了一些导致 JavaScript引擎难以执行优化的缺陷:有时…...