文章目录

  • 一、【点云分类】和【部件分割】:
    • 1.1 复现结果展示
    • 1.2 复现过程
    • 1.3 复现过程中遇到的问题
      • 1.3.1 分类遇到的问题
      • 1.3.2 分类可视化(检验)遇到的问题
      • 1.3.3 部件分割遇到的问题
      • 1.3.4 部件分割可视化(检验)遇到的问题
      • 1.3.5 思考
  • 二、室内场景点云语义分割
    • 2.1 复现结果展示
    • 2.2 复现过程

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

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.1.6 环境配置:跟着李沐大神配置 CUDA 和 GPU 版本的 torch

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

1.3 复现过程中遇到的问题

1.3.1 分类遇到的问题

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

if __name__ == "__main__":

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

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

然后把全部的 .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打开:

图例如下表所示,

类名 ceiling floor wall beam column window door table chair sofa bookcase board clutter
标签label 1 2 3 4 5 6 7 8 9 10 11 12 13

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

Pytorch:复现PointNet相关推荐

  1. 我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!

    大家好,我是红色石头! 在上三篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 我用 PyTorch ...

  2. 我用 PyTorch 复现了 LeNet-5 神经网络(CIFAR10 数据集篇)!

    大家好,我是红色石头! 在上两篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 详细介绍了卷积神经网络 ...

  3. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(自定义数据集篇)!

    在上三篇文章: 这可能是神经网络 LeNet-5 最详细的解释了! 我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)! 我用 PyTorch 复现了 LeNet-5 ...

  4. NVIDIA新作解读:用GAN生成前所未有的高清图像(附PyTorch复现) | PaperDaily #15

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  5. 亚像素卷积网络(ESPCN)学习与Pytorch复现

    论文内容 论文地址:Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolution ...

  6. 基于PyTorch实现PointNet++

    PointNet++完整代码链接: https://github.com/zhulf0804/Pointnet2.PyTorch 关于点云的深度学习表示 PointNet / PointNet++是基 ...

  7. Pytorch复现FCN网络

    Pytorch复现FCN网络详解(可复现) 1.环境配置 windows10,pytorch=1.3,python=3.6 参考博客:https://github.com/wkentaro/pytor ...

  8. CV+Deep Learning——网络架构Pytorch复现系列——Detection(一:SSD:Single Shot MultiBox Detector 4.推理Detect)

    上一话 CV+Deep Learning--网络架构Pytorch复现系列--Detection(一:SSD:Single Shot MultiBox Detector 3.loss)https:// ...

  9. Resnet50 pytorch复现

    Resnet50 pytorch复现 之前复现过Resnet18,今天复现与Resnet网络结构稍有不同的Resnet50 Resnet50的基本结构是1x1卷积->3x3卷积->1x1卷 ...

  10. 【医学图像分割网络】之Res U-Net网络PyTorch复现

    [医学图像分割网络]之Res U-Net网络PyTorch复现 1.内容 U-Net网络算是医学图像分割领域的开山之作,我接触深度学习到现在大概将近大半年时间,看到了很多基于U-Net网络的变体,后续 ...

最新文章

  1. 2016 - 1- 21 - RunLoop使用(2016-1-24修改一次)(2016 - 1 - 24 再次修改)
  2. Linux state 方式 安装nginx 服务
  3. python自学教程变量_Python学习入门基础教程(learning Python)--2.2.1 Python下的变量解析...
  4. springboot+sockjs进行消息推送(广播模式)
  5. IDEA中使用Maven构建SSM项目
  6. C++走向远洋——52(十三周阅读程序)
  7. http协议-响应和请求
  8. 柳传志:如何看人和用人
  9. 再见,2016,你好,2017
  10. python爬取动态网页_Python实现爬取网页中动态加载的数据
  11. CentOS使用DNF配置
  12. tkinter--画布
  13. Linux文件锁内核VFS层源码实现讲解
  14. oracle 11g 新特性之动态绑定变量窥视(一)
  15. 剖析 SPI 在 Spring 中的应用
  16. 常用好的网址汇总(个人喜欢的)
  17. matlab2014simulink中的三相晶闸管整流桥怎么找_吴忠逆变电源逆变器设备,三相线性变频电源,信誉保障...
  18. 高性能计算--HPCC--他人评述
  19. 神经网络基础知识第一章
  20. linux0.11-文件系统

热门文章

  1. string类的常用方法有哪些以及用法
  2. 开发互动式电子书提高学生学习成绩的语境学习模式
  3. 基于ghOSt用户调度器的环境搭建
  4. 【STM32F407的DSP教程】第18章 DSP控制函数-更好用的SIN,COS计算
  5. php 商品价格区间表,ThinkPHP框架,按分类,计算商品价格区间,来完成价格搜索...
  6. 关于uxtheme.dll为无效的windows映像的问题
  7. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第30讲:PHP多维数组
  8. 外星人系统下载Alienware X17R2系统dell原厂预装版 WIN11-21H2外星人原厂WIN11系统下载,附创建带F12 SupportAssist OS Recovery恢复功能教程
  9. 使用Vue完成记事本
  10. 根据交换机端口分配固定地址的方法