三维深度学习Pytorch-PointNet系列之win10下环境安装与demo运行

Posted 牙牙要健康

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三维深度学习Pytorch-PointNet系列之win10下环境安装与demo运行相关的知识,希望对你有一定的参考价值。

【三维深度学习】Pytorch-PointNet系列之win10下环境安装与demo运行

提示:最近开始在三维深度学习方面进行研究,从PointNet开始入手,对这个系列的网络进入深入学习,记录相关知识点,分享学习中遇到的问题已经解决的方法。


文章目录


前言

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


一、数据集说明

CloudCompare是一个三维点云(网格)编辑和处理软件,百度云链接【提取码:q56f】。
解压运行"CloudCompare.exe"安装完成。

1.点云数据

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

  1. 点云数据是无序的,排列顺序并不改变其指代的信息 ;
  2. 扫描与视角不同导致点云数据近密远疏;
  3. 点云是非结构化数据,不同于图像像素的结构化,因此不利于CNN进行卷积操作。

如何对点云数据进行特征提取是需要解决的任务

2.ModelNet10/40【点云分类】

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

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

3.ShapeNet 【部件分割】

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

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


二、PointNet模型运行

1.下载源码并安装环境

在Windows10环境下,建议安装安装anaconda环境,方便搭建专用于PointNet模型的虚拟环境。

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

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

最终的安装的所有包。

检查torch版本发现安装的是torch-cpu版本

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


卸载torch-cpu版本,手动安装符合主机的torch-gpu版本,解决后续会出现的“AssertionError: Torch not compiled with CUDA enabled”问题。
1.打开cmd,执行下面的指令查看CUDA版本号:

nvidia-smi


2.安装GPU版本的torch:官网

conda/pip安装都行:

# 通过清华源,下载所需的第三方包
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117

检查新的torch版本

测试过程需要安装的包

# 安装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.下载并编译可视化工具

win10系统下还是有点麻烦,需要保证主机安装了以下环境!!!【可跳过到本小节最后我会提供需要编译得到的dll和数据集】

win10配置GCC/G++运行环境
win10配置wget
win10配置gitbash
Windows下需打开修改build.sh 文件内容,因为.so文件是Linux动态链接库,相对应Windows的动态链接库则是.dll。

g++ -std=c++11 $SCRIPTPATH/../utils/render_balls_so.cpp -o $SCRIPTPATH/../utils/render_balls_so.so -shared -fPIC -O2 -D_GLIBCXX_USE_CXX11_ABI=0 
#修改为
g++ -std=c++11 $SCRIPTPATH/../utils/render_balls_so.cpp -o $SCRIPTPATH/../utils/render_balls_so.dll -shared -fPIC -O2 -D_GLIBCXX_USE_CXX11_ABI=0 
# 打开gitbash进入到pointnet的script文件夹内
cd script
#编译可视化工具
bash build.sh 
# 下载数据集
bash download.sh

打开gitbash在script目录下执行上述命令。

可能执行完、"bash build.sh "后没有产生dll文件,原因是因为gcc/g++编译过程缺少"libisl-*.dll"文件。
解决方式是下载x86_64-4.9.1-release-posix-seh-rt_v3-rev0.7z文件【百度云链接 提取码:mh6n】,解压后将所有文件拷贝/替换到MinGW的安装路径之下。
正确编译后产生render_balls_so.dll文件,或者通过提供的百度云链接下载解压。

用命令下载完成的数据集,或者通过提供的百度云链接下载解压。

跳到这里的朋友 需要分别把下列文件放到正确的文件夹
render_balls_so.dll 百度云链接【提取码:8oam】

ShapeNet 百度云链接【提取码:evqi】下载解压

3.Classification【分类】

训练

# pointnet.pytorch-master/utils文件夹下
cd utils
# 训练
python train_classification.py --dataset=E:\\deep-learning-for-image-processing-master\\3dPointCloud\\pytorch\\pointnet.pytorch-master\\shapenetcore_partanno_segmentation_benchmark_v0\\ --nepoch=4 --dataset_type=shapenet


解决出现的“RuntimeError: An attempt has been made to start a new process…”问题:
1.关闭多线程: 设置train_classification.py中的workers=0。

2.加上if name==‘main’: 将要运行的部分放进if name==‘main’:中【强烈推荐】。

测试

# 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.修改和添加部分代码【强烈建议】:

同时测试命令增加dataset路径

python show_cls.py --model cls/cls_model_3.pth --dataset=E:\\deep-learning-for-image-processing-master\\3dPointCloud\\pytorch\\pointnet.pytorch-master\\shapenetcore_partanno_segmentation_benchmark_v0\\

4.Segmentation【分割】

训练

# pointnet.pytorch-master/utils文件夹下
cd utils
# 训练
python train_segmentation.py --dataset=E:\\deep-learning-for-image-processing-master\\3dPointCloud\\pytorch\\pointnet.pytorch-master\\shapenetcore_partanno_segmentation_benchmark_v0\\ --nepoch=5 --class_choice=Chair

出现的“RuntimeError: An attempt has been made to start a new process…”问题,解决方法如上。

测试

# pointnet.pytorch-master/utils文件夹下
cd utils
# 测试 cls_model_3.pth是训练好的模型
python show_seg.py --model seg/seg_model_Chair_4.pth --dataset=E:\\deep-learning-for-image-processing-master\\3dPointCloud\\pytorch\\pointnet.pytorch-master\\shapenetcore_partanno_segmentation_benchmark_v0\\ --class_choice Earphone


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

总结

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

以上是关于三维深度学习Pytorch-PointNet系列之win10下环境安装与demo运行的主要内容,如果未能解决你的问题,请参考以下文章

PCL系列——三维重构之贪婪三角投影算法

PCL系列——三维重构之移动立方体算法

物体的三维识别与6D位姿估计:PPF系列论文介绍

PCL系列——如何逐渐地配准一对点云

深度学习,分割后处理之通过填补孔洞,提高分割准确度

Deep Learning(深度学习)学习笔记整理系列之