三维深度学习pytorch-pointnet系列之win10下环境安装与demo运行(代码片段)

牙牙要健康 牙牙要健康     2023-04-06     294

关键词:

【三维深度学习】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的原理和代码。

深度学习系列专题

写作目的:旨在将所有深度学习相关的东西进行一个总结,把能想到的东西先写下来,完了之后再进行调序。专题一:多层感知机(传统概念的神经网络)专题二:什么是卷积神经网络(CNN),循环神经网络(RNN)专题三:如何优化参... 查看详情

深度学习算法简要总结系列

...视觉】PointNet++的pytorch实现代码阅读论文阅读笔记|三维目标检测——PointNet++论文阅读笔记|三维目标检测——PointNetPointNet++详解(一):数据增强方法一文搞懂PointNet全家桶——强势的点云处理神经... 查看详情

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

...ICP)配准PCL系列——如何逐渐地配准一对点云PCL系列——三维重构之泊松重构PCL系列——三维重构之贪婪三角投影算法PCL系列——三维重构之移动立 查看详情

深度学习系列paddlepaddle之数据预处理

  上篇文章讲了卷积神经网络的基本知识,本来这篇文章准备继续深入讲CNN的相关知识和手写CNN,但是有很多同学跟我发邮件或私信问我关于PaddlePaddle如何读取数据、做数据预处理相关的内容。网上看的很多教程都是几个常见... 查看详情

三维点云深度学习与语义理解方法及关键技术

作者:若晨Date:2020-05-14来源:三维点云深度学习与语义理解方法及关键技术这一次给大家带来在自动驾驶中关于三维点云的深度学习方法应用、三维场景语义理解的方法以及对应的关键技术介绍。1.三维点云深度学习在深度学... 查看详情

aboutcg特效之王houdini基础系列视频学习教程

...王Houdini基础系列视频学习教程Houdini是一个完全节点化的三维软件,把底层完全开放给用户,因此有无穷的可能性。他就好比是三维版的Nuke。Houdini将重点关注艺术工作者和工作室的实际需求,解决他们渴望在最近时间内完成更... 查看详情

三维点云深度学习与语义理解方法及关键技术

作者:若晨Date:2020-05-14来源:三维点云深度学习与语义理解方法及关键技术这一次给大家带来在自动驾驶中关于三维点云的深度学习方法应用、三维场景语义理解的方法以及对应的关键技术介绍。1.三维点云深度学习在深度学... 查看详情

深度学习入门系列-神经网络

机器学习    定义:机器学习(MachineLearning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织... 查看详情

深度学习入门系列之doc

这周老师让把深度学习的名词过一遍,小玛同学准备在过一遍DeepLearning名词的同时把基本的模型也过一遍。感谢杰哥发我深度学习入门系列能让我有机会快速入门。下面就来doc一些学到的东西线性感知器感知器(线性单元)有个... 查看详情

收集了一些单张图像重建三维模型的相关文献报道(持续补充)

前言毕设在做单图像重建三维模型,所以记录一章相关资源的集合,如果有推荐的好文献欢迎私聊、评论。文献单张图像重建人脸3D模型的卷积神经网络系统研究_喻晗基于改进Pix2Vox的单图像三维重建网络_何鑫睿基于深度... 查看详情

深度学习,分割后处理之通过填补孔洞,提高分割准确度(代码片段)

...通过后处理的方法把它填上,可以提高分割准确度。这种三维孔洞,我们希望有一种便捷方法,可以直接填补这种三维孔洞。可以使用SITK的二值孔洞填补方法。sitk.Binar 查看详情

深度学习背景下的图像三维重建技术进展综述

...仕鹏,魏豪,张衡原文地址:​​深度学习背景下的图像三维重建技术进展综述​​三维重建是指从单张二维图像或多张二维图像中重建出物体的三维模型,并对三维模型进行纹理映射的过程。三维重建可获取从任意视角观测并... 查看详情

学习笔记之——视觉三维重建

本博文为本人学习三维重建的学习笔记,本博文的大部分内容来源于网络各类教程博客,本博文仅供本人学习记录用理论学习视觉三维重建=定位定姿+稠密重建+surfacereconstruction/mesh+纹理贴图 SLAM与三维重建的... 查看详情

aws之搭建深度学习主机

B.G至2017.11GPU选型:(参考知乎、CSDN)高性价比的两款:GTX1080ti,TitanX--通常调试算法 i7CPU+32G内存+SSD+2*GPU(单块显存>6G),总计成本2.7-4w+RMB土豪系列:TeslaK80,M40 云:(每小时成本高于物理机,优势是托管环境系统)AWS、UCl... 查看详情

全球名校课程作业分享系列--斯坦福计算机视觉与深度学习cs231n之knn(代码片段)

课程作业原地址:CS231nAssignment1作业及整理:@郭承坤&&@Molly&&@寒小阳时间:2018年1月。出处:http://blog.csdn.net/han_xiaoyang/article/details/79138352任务背景用K最近邻的方法去完成图像识别的任务代 查看详情

深度学习系列part

这是《GPU学习深度学习》系列文章的第三篇,主要是接着上一讲提到的如何自己构建深度神经网络框架中的功能模块,进一步详细介绍Tensorflow中Keras工具包提供的几种深度神经网络模块。本系列文章主要介绍如何使用腾讯云GPU服... 查看详情

全球名校课程作业分享系列--斯坦福计算机视觉与深度学习cs231n之tensorflow实践(代码片段)

课程作业原地址:CS231nAssignment1作业及整理:@邓妍蕾&&@郭承坤&&@寒小阳时间:2018年2月。出处:http://blog.csdn.net/han_xiaoyang/article/details/79278930在前面的作业中你已经写了很多代码来实现很多的神... 查看详情

全球名校课程作业分享系列--斯坦福计算机视觉与深度学习cs231n之特征抽取与图像分类提升(代码片段)

课程作业原地址:CS231nAssignment1作业及整理:@邓妍蕾&&@Molly&&@寒小阳时间:2018年1月。出处:http://blog.csdn.net/han_xiaoyang/article/details/791400840.前言我们已经看到,通过用输入 查看详情