PointNet++理解
创始人
2024-04-29 08:49:53
0

一、PointNet++解决了PointNet存在的哪些问题

  1. PointNet的point-wise MLP,仅仅是对每个点表征,对局部结构信息整合能力太弱 --> PointNet++的改进:sampling和grouping整合局部邻域
  2. PointNet的global feature直接由max pooling获得,无论是对分类还是对分割任务,都会造成巨大的信息损失 --> PointNet++的改进:hierarchical feature learning framework,通过多个set abstraction逐级降采样,获得不同规模不同层次的local和global feature(最后一个set abstraction输出可以认为是global feature),这样获得的global特征更高级,表征能力更强
  3. 分割任务的全局特征global feature是直接复制与local feature拼接,这样直接进行拼接的话,可利用的global feature太少了,生成discriminative feature能力有限 --> PointNet++的改进:分割任务设计了encoder-decoder结构,先降采样再上采样,使用skip connection将对应层的local-global feature拼接,这样的特征更高级,更具有判别性
  4. 当然PointNet++还解决了当点云不均匀的时候,在密集区域学习出来的特征可能不适合稀疏区域的问题,解决方法就是对不同半径的子区域进行特征提取后进行特征堆叠,不同半径的子区域的特征提取的维度变换也会随着半径的不同而不同

二、PointNet++的SA模块中有不可导的FPS采样操作,梯度如何能够反向传播?

3D检测里面有这样一类操作,用白话讲,可以归类为“路由”:即把特征从哪里取出来,或把特征汇聚到哪里去。“路由”的建立过程本身可以不可导(比如FPS和ball query)。但“路由”一旦建立,特征的传递和映射过程一般都是可导的。所以对于FPS操作在反向传播时的具体实现我认为和torch.scatter的梯度反传类似,初始化一个0张量,然后按照scatter赋值过去。

对于pointnet++中的一个例子(因为不能debug进用C++写的自定义的cuda算子,debug没法进c++的代码的,只能到调用的那一步,所以推荐直接采用全局搜索),对于前向传播中那些不能导的操作,是要重写一下backward函数的,重写时可能会调用自己实现的cuda代码。可以看到重写的backward函数返回值只有第一个有梯度,第二个没有梯度。backward的参数输入来自于forward的输出的梯度,backward返回值对应于forward的输入的梯度,所以说明idx没有梯度,被截断了,说明idx这条路是死的,但是features这条路依然有梯度

案例
在这里插入图片描述
在这里插入图片描述
外部调用逻辑:
在这里插入图片描述

Refer

  1. 【代码阅读】PointNet++代码梳理
  2. 【代码阅读】详解在Pytorch中定义自己写的CUDA编程函数
  3. 【代码阅读】PointNet++具体实现详解
  4. Python 利用setup制作自定义包-打包-安装
  5. pytorch通过torch.utils.cpp_extension构建CUDA/C++拓展
  6. 利用torch.autograd.Function自定义层的forward和backward
  7. PyTorch 源码解读之 torch.autograd:梯度计算详解

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...