欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

【三维视觉】【深度学习】ubuntu18.04下PointNet官方代码Pytorch实现

发布时间:2024/1/1 63 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【三维视觉】【深度学习】ubuntu18.04下PointNet官方代码Pytorch实现 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

【三维视觉】【深度学习】ubuntu18.04下PointNet官方代码Pytorch实现

提示:最近开始在三维深度学习方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。


文章目录

  • 【三维视觉】【深度学习】ubuntu18.04下PointNet官方代码Pytorch实现
  • 前言
  • 一、数据集说明
    • 1.CloudCompare
    • 2.点云数据
    • 3.ModelNet10/40【点云分类】
    • 4.ShapeNet 【部件分割】
  • 二、PointNet模型运行
    • 1.下载源码并安装环境
    • 2.下载并编译可视化工具
    • 3.Classification【分类】
      • 训练
      • 测试
    • 4.Segmentation【分割】
      • 训练
      • 测试
  • 总结


前言

PointNet是由斯坦福大学的Charles R. Qi等人在《PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation》【论文地址】一文中提出的模型,是点云神经网络的鼻祖,它提出了一种网络结构,可以直接从点云中学习特征。
在详细解析PointNet网络之前,首要任务是搭建PointNet【Pytorch-demo地址】所需的运行环境,并模型完成训练和测试工作,展开后续工作才有意义。


一、数据集说明

1.CloudCompare

CloudCompare是一个三维点云(网格)编辑和处理软件。
安装前的准备配置:git、和cmake

# 安装git,用于从Github上克隆项目到本地 sudo apt-get install git # 安装cmake,用于程序的编译 sudo apt-get install cmake # 解决camke时出现Failed to find "GL/gl.h"的问题,缺少libGl库 sudo apt-get install libgl1-mesa-dev sudo apt-get install build-essential qt5-default qtscript5-dev libssl-dev qttools5-dev qttools5-dev-tools qtmultimedia5-dev libqt5svg5-dev libqt5webkit5-dev libsdl2-dev libasound2 libxmu-dev libxi-dev freeglut3-dev libasound2-dev libjack-jackd2-dev libxrandr-dev libqt5xmlpatterns5-dev libqt5xmlpatterns5

源码编译安装【强烈推荐官方教程】
或者可以在软件商店和用snap来安装(docker的ubuntu18.04容器安装存在不少问题)

# git下载CloudCompare源码(需要科学上网) git clone --recursive https://github.com/cloudcompare/CloudCompare.git cd CloudCompare&& mkdir build && cd build cmake .. make -j16 # cmake --build . # cmake --install .

cmake过程中可能出现的错误

根据提示到"/root/CloudCompare/libs/qCC_db/extern/CCCoreLib/"发现内部是空的。

解决方法
在githup上找到CCCoreLib目录下,点击进入CCCoreLib官方地址

同样通过git下载。

# 到CCCoreLib所在目录下 cd /root/CloudCompare/libs/qCC_db/extern # 删除CCCoreLib空文件夹 rm -rf CCCoreLib/ # git下载CCCoreLib源码(需要科学上网) git clone --recursive https://github.com/CloudCompare/CCCoreLib.git

cmake编译成功

2.点云数据

点云中每个点都包含了空间坐标信息,这些信息之间构成一定的集合空间特性:

  • 点云数据是无序的,排列顺序并不改变其指代的信息 ;
  • 扫描与视角不同导致点云数据近密远疏;
  • 点云是非结构化数据,不同于图像像素的结构化,因此不利于CNN进行卷积操作。
  • 如何对点云数据进行特征提取是需要解决的任务

    3.ModelNet10/40【点云分类】

    ModelNet10/40是一个基础的3d点云图像分类的数据集,它里面全部都是CAD手工绘制的点云数据,在pointnet和pointnet++都有使用这个数据集进行分类。官网下载(部分可直接下载,其它需要邮件作者):

    百度云链接【提取码:ca89】:

    4.ShapeNet 【部件分割】

    ShpaeNet是一个大规模的3d点云部件分割的形状数据集,在pointnet和pointnet++都有使用这个数据集进行部件分割。官网下载需注册审核才能下载,审核较慢):

    百度云链接【提取码:evqi 】


    二、PointNet模型运行

    1.下载源码并安装环境

    在ubuntu18环境下,建议安装安装anaconda环境,方便搭建专用于PointNet模型的虚拟环境。
    【Pytorch-教程】

    # 创建虚拟环境 conda create -n PointNet-Pytorch python==3.7.4 # 查看新环境是否安装成功 conda env list # 激活环境 source activate PointNet-Pytorch # 下载githup源代码到合适文件夹,并cd到代码文件夹内 git clone https://github.com/fxia22/pointnet.pytorch cd pointnet.pytorch # 通过清华源,下载所需的第三方包 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -e . # 查看所有安装的包 pip list conda list

    提示(我也是第一次接触,感觉挺有用,分享大佬博客供大家参考)
    pip install -e . 解析
    setup.py 解析

    最终的安装的所有包。

    检查torch版,已经安装torch-gpu版本

    # 查看pytorch版本 import torch print(torch.__version__) # 查看cuda版本 print(torch.version.cuda) # 查看cuda是否可用 print(torch.cuda.is_available()) # 查看可用cuda数量 print(torch.cuda.device_count())


    测试过程需要安装的包

    # 安装opencv pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python # 安装matplotlib pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib

    2.下载并编译可视化工具

    # 打开gitbash进入到pointnet的script文件夹内 cd scripts #编译可视化工具 bash build.sh # 下载数据集 bash download.sh

    正确编译后在"pointnet.pytorch/utils/"目录下产生render_balls_so.so文件。

    用命令在"pointnet.pytorch/shapenetcore_partanno_segmentation_benchmark_v0/"下载完成的数据集,或者通过博主提供的百度云进行下载解压。

    3.Classification【分类】

    训练

    # pointnet.pytorch-master/utils文件夹下 cd utils # 训练 python train_classification.py --dataset=/root/pointnet.pytorch/shapenetcore_partanno_segmentation_benchmark_v0/ --nepoch=4 --dataset_type=shapenet

    测试

    # pointnet.pytorch-master/utils文件夹下 cd utils # 测试 cls_model_3.pth是训练好的模型 python show_cls.py --model cls/cls_model_3.pth



    解决出现的“FileNotFoundError: [Errno 2] No such file or directory: 'shapenetcore_partanno_segmentation_…synsetoffset2category.txt’”问题:
    1.修改show_cls.py中root中的路径:

    2.修改和添加部分代码【强烈建议】:

    parser.add_argument('--dataset', type=str, default='', help='dataset path') root=opt.dataset,


    同时测试命令增加dataset路径

    python show_cls.py --model cls/cls_model_3.pth --dataset=/root/pointnet.pytorch/shapenetcore_partanno_segmentation_benchmark_v0/

    4.Segmentation【分割】

    训练

    # pointnet.pytorch-master/utils文件夹下 cd utils # 训练 python train_segmentation.py --dataset=/root/pointnet.pytorch/shapenetcore_partanno_segmentation_benchmark_v0/ --nepoch=5 --class_choice=Motorbike

    测试

    # pointnet.pytorch-master/utils文件夹下 cd utils # 测试 cls_model_3.pth是训练好的模型 python show_seg.py --model seg/seg_model_Motorbike_4.pth --dataset=/root/pointnet.pytorch/shapenetcore_partanno_segmentation_benchmark_v0/ --class_choice Rocket


    界面交互快捷键功能
    q程序是死循环的, 退出程序
    t+q变换颜色
    q放大
    m缩小
    r恢复原状
    s保存图片

    总结

    尽可能简单、详细的介绍PointNet的安装流程以及解决了安装过程中可能存在的问题。后续会根据自己学到的知识结合个人理解讲解PointNet的原理和代码。

    总结

    以上是生活随笔为你收集整理的【三维视觉】【深度学习】ubuntu18.04下PointNet官方代码Pytorch实现的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。