当前位置:   article > 正文

Pytorch:复现PointNet_基于 pointnet 融合 mrf 室内场景识别

基于 pointnet 融合 mrf 室内场景识别


一、【点云分类】和【部件分割】:

1.1 复现结果展示

1.2 复现过程

1.1.1 复现过程参考博客:https://blog.csdn.net/BIT_HXZ/article/details/123521410
1.1.2 代码下载:https://github.com/fxia22/pointnet.pytorch
1.1.3 作者论文:https://arxiv.org/abs/1612.00593
1.1.4 PointNet算法解读:3D点云物体检测(唐宇迪)
1.1.5 数据集:shapenetcore_partanno_segmentation_benchmark_v0

# 查看数据集中seg格式文件保存的标签数据,该文件保存了一行类别标签。
import numpy as np
fn = "D:\\PointNet\\pointnet.pytorch-master\\shapenetcore_partanno_segmentation_benchmark_v0\\02691156\points_label\\1a04e3eab45ca15dd86060f189eb133.seg"
seg = np.loadtxt(fn).astype(np.int64)
print(seg.shape, seg[0:199])
  • 1
  • 2
  • 3
  • 4
  • 5

1.1.6 环境配置:跟着李沐大神配置 CUDA 和 GPU 版本的 torch

GPU 版本的 torch 配置注意事项:①,要先安装NVIDIA驱动。②,安装GPU版本的torch要在base环境。③,安装过程中不要科学上网。

1.3 复现过程中遇到的问题

1.3.1 分类遇到的问题

用编译器直接复现,要加一行

if __name__ == "__main__":
  • 1

用 CPU 不用 GPU 的要在 if name == “main”: 后面加如下一行

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# 把全部的 .cuda() 换成 .to(device)
  • 1
  • 2

然后把全部的 .cuda() 换成 .to(device)。如图所示,

参数设置和代码修改如下图所示:

1.3.2 分类可视化(检验)遇到的问题

待补充…

1.3.3 部件分割遇到的问题

分割修改的代码如下图所示,

用 CPU 的可以和分类的操作一样,把全部的 .cuda() 换成 .to(device)

1.3.4 部件分割可视化(检验)遇到的问题

①、【dll = np.ctypeslib.load_library(‘render_balls_so’, ‘.’) OSError: no file with expected extension:】
点击链接下载【https://download.csdn.net/download/qq_35591253/86507242】(0积分下载)下载 render_balls_so.dll 替换 pointnet.pytorch-master\utils 文件夹下的 render_balls_so.dll。

1.3.5 思考

①、 代码中为什么有时候用 Conv1d 升维,有时候用 Conv1d 降维。有时候用 Linear() 降维。在查了其他人的博客以后,我发现当作用于一维数据的时候,一维卷积 Conv1d() 和 Linear() 的效果是一模一样的,那为什么 Pointnet 里面不全用 Conv1d() 或者全用 Linear() 呢?
首先我找到了下图的规律,如图所示。从下图可以看出,黄框部分,有好多点(n行)同时通过 MLP 的时候,就用 conv1d() ;绿框部分,有一行通过 MLP 的时候,用的是 Linear() 。

在这里插入图片描述
已经有人比较了在相同输入数据的条件下两者之间的区别:(1)Linear() 比 conv1d() 的计算速度快;(2)Conv1d() 的精度比 Linear() 的高;(3)在反向传播更新梯度的时候,数值有差异。
那么为什么这么设计呢?查了大量资料以后,我觉得这个答案最靠谱。当你必须保留语义分割中的空间信息时,使用卷积 Conv1d() 。当你不需要做任何与空间信息相关的事情时,比如在基本分类(mnist、猫狗分类器)中,使用线性层 Linear() 。

②、 感谢网友 Liu1998121 的提醒,CPU 运行精度明显低于 GPU 运行的精度的原因,可能是 CPU 和 GPU 默认的数据类型不一样。


二、室内场景点云语义分割

2.1 复现结果展示

用meshlab打开:

用paraview打开:

图例如下表所示,

类名ceilingfloorwallbeamcolumnwindowdoortablechairsofabookcaseboardclutter
标签label12345678910111213

2.2 复现过程

2.2.1 复现过程参考博客:https://blog.csdn.net/weixin_42371376/article/details/118142529
2.2.2 复现代码:https://github.com/hetao255/Pointnet_Pointnet2_pytorch
2.2.3 数据集:S3DIS

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/115891?site
推荐阅读
相关标签
  

闽ICP备14008679号