【论文阅读】【点云处理】Point-Voxel CNN for Efficient 3D Deep Learning

本文介绍了Point-Voxel CNN (PVCNN),一种结合点云和体素处理的3D深度学习方法。PVCNN旨在克服传统Voxel-based和Point-based方法的缺点,通过两个分支——点云分支和体素分支,提升速度和精度。Voxel分支利用3D卷积处理体素,Point分支则采用MLP计算点特征。实验表明PVCNN在速度和准确性上都有所提升。文章还探讨了PVCNN与PointCNN、SpiderCNN、DGCNN等方法的对比,以及与PV-RCNN的区别,提供了对点云处理方法更深入的理解。

2019NIPS
MIT与上海交通大学,Song Han老师

我觉得本文还是比较容易理解的,但是在读的过程中,我对PVCNN产生了其他思考,可能PVCNN中实现的东西有更深层次的内涵,希望读者能够耐心看一下思考这部分,因为我的思考也不一定对,很期待大家的不同意见。 但我认为,对这篇文章的思考让我对point-based的方法和voxel-based的方法有了更深入的理解。

PVCNN

本文首先介绍了目前Voxel-based和Point-based的方法的缺点。

Voxel-based Method的缺点

Voxel-based的缺点已经是为人所熟知的,主要就是在将点云变为voxel的过程中,信息的丢失程度与resolution的大小有关。但随着resolution的增加,the computational cost and memory requirement是三次方增加的。而且本文增加了实验分析,本文给出了,相比于算术运算,内存操作所需要的时间和消耗的能量更为昂贵。下图对比了算数运算与内存访问的时间能量的消耗。
在这里插入图片描述

Point-based Method的缺点

Point-base的方法,本文详细分析了point-based的运算速度慢的原因:

  • point-based的方法的输入是无序的点云,在前向计算过程中,需要找出某些点邻域内的点,由于点云是无序的,所以不能通过其在点云中的位置进行索引,需要使用KNN方法去计算寻找,而这个计算过程则是非常慢的。
  • point-based的某些方法中,是根据点的位置使用
### 使用稀疏点体素卷积的高效3D架构搜索方法 #### 方法概述 稀疏点体素卷积(Sparse Point-Voxel Convolution, SPVConv)是一种高效的3D模块,旨在解决传统稀疏卷积无法维持高分辨率表示以及点体素卷积难以扩展至大规模3D场景的问题[^1]。通过结合SPVConv与自动化神经架构搜索(Neural Architecture Search, NAS),可以构建出既轻量又高性能的3D模型。 #### 自动化神经架构搜索流程 3D-NAS 是一种专门针对3D场景理解任务设计的模型搜索框架。它利用进化算法(Evolutionary Algorithm)来自动发现最优网络结构[^2]。具体而言,整个过程如下: - **初始化种群**:从随机生成的一组候选网络开始。 - **评估与选择**:在每次迭代中,对当前种群内的所有候选网络进行性能评估,并挑选出表现最好的前\( k \)个模型作为父代个体。 - **繁殖下一代**: - 对于突变操作,从顶级候选人中随机选取一个样本,并按照预定概率修改其某些结构参数(如通道数、网络深度等)[^3]。 - 而交叉操作则是从前\( k \)名候选人里选出两份蓝图,再将其特征随机组合成一个新的设计方案。 - **资源约束验证**:确保新生后代皆符合设定好的预算条件;若有违反,则重新取样直至合格为止。 最终,在经历若干轮次演化之后,会从最后一轮剩余成员当中甄选最佳方案作为目标输出。 #### 实验环境配置 为了便于实际应用开发测试工作开展起来更加顺利便捷一些列准备工作必不可少其中包括但不限于安装必要的依赖库准备相应的硬件设施等等下面给出一段简单的Python脚本示范如何加载预训练权重完成基本预测任务: ```python import torch from spvnas.models.spvcnn import SPVCNN device = 'cuda' if torch.cuda.is_available() else 'cpu' model = SPVCNN(num_classes=20).to(device) checkpoint = torch.load('path_to_checkpoint.pth', map_location=device) model.load_state_dict(checkpoint['state_dict']) model.eval() # Example input data preparation omitted here. with torch.no_grad(): outputs = model(inputs.to(device)) ``` 此外还提供了多个公开可用的数据集支持比如SemanticKITTI可用于进一步训练或微调现有模型实例提升特定应用场景下的效果表现[^4]. ---
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值