pointnet 结果可视化_pointnet++的运行
对于Pointnet++这个网络是一个基于和扩展Pointnet网络,pointnet网络(V1模型)可以独立的转换各个点的特征,也可以处理整个点集的全局特征,然而在多数情况下,存在明确定义的距离度量,例如,由3D传感器手机的3D电云的欧几里得距离或者注入等距形状表面的流形的测地距离。在pointnet++中,网络对点集的空间局部特征进行了处理。
本博文主要记录跑pointnet++时候遇到的几个问题,以及如何解决的。
pointnet++官网的运行环境是:在 Unbuntu14.04系统下,Python版本2.7,Tensorflow-GPU版本 1.2.0
本博文的运行的环境是:在Ubuntu18.04.1系统下, Python版本 3.6.2, Tensorflow-GPU版本 1.8.0
问题1:python版本不一致的问题
官网的代码运行的Python版本是2.7,本博文的Python版本是3.6.2,所以需要将所有的代码中出现 xrange 更改为range
所有需要print的部分都需要使用括号括起来。
问题2:缺少一些必要的库的问题
如果代码中缺少必须要是用的库,那么你需要安装相应的库。一些库可以使用pip命令进行安装,而有的一些自己编写的函数需要导入的则需要将它的路径添加到python的libary path中即可。
对于可以使用pip命令安装的库可以使则需要使用下面命令进行缺少库的安装。
pip3 install 库的名称
#例如,缺少numpy
pip3 install numpy
对于一些自己编写的需要导入,像这个里面的 modelnet_dataset.py 、modelnet_h5_dataset.py 等 就不能使用pip命令进行安装,这时就在终端中输入以下命令新建一个pth格式文件,(针对在pycharm中进运行代码的)
echo > pointnet++.pth
使用右键点击 Open With Text Editor 打开文件后,在里面添加 需要导入自己编的函数的路径然后保存。
把保存后的文件复制到你的python的site-packages文件夹中,我的是在路径:/home/hui/anaconda3/lib/python3.6/site-packages中。这时候重新打开pycharm就会发现,找不到自己编写的库的问题已经解决。
问题3:如何进行编译tf_ops文件夹下的文件并得到 *so 和 *o 格式的文件
在tf_ops的文件夹下,有 3d_interpolation、grouping、sampling 三个文件夹,每一个文件夹中的文件都需要进行编译才能运行
1.如果你的环境配置和官方的环境配置一样,进入到sampling文件夹中(以这个编译为例,其他两个和这个一模一样),右击打开终端,输入下面命令就可以编译成功。
sh tf_sampling_compile.sh
编译前: 编译成功后:
2.如果和官方的环境不一样(其实可以不用管tensorflow的版本,版本高的都用TF1.4 并将TF1.2下面的命令注释掉就行;低于1.4的你就用TF1.2下面的命令,将TF1.4注释掉),则需要修改 tf_sampling_compile.sh 文件中的内容。
修改前的内容,如下图所示。
修改后的内容,如下图所示。
下面是对上面为什么这样修改的解释说明:
对于 /bin/bash 下面的修改,你需要找到你电脑中安装nvidia的cuda的位置,如果是默认安装位置一般情况下是在路径: /usr/local/cuda-9.0/bin/nvcc 下,如果记不清楚在哪里,直接文件夹的搜索,找到nvcc路径,并将 /usr/local/cuda-8.0/bin/nvcc l路径替换掉即可。
该前:
改后:
对于# TF1.4 下面的修改,需要替换掉5个路径
①路径:/usr/local/lib/python2.7/dist-packages/tensorflow/include 的替换。
你需要找到你自己的python下的tensorflow的安装包在哪里,我的使用的anaconda下的环境,路径在 /home/hui/.local/lib/python3.6/site-packages/tensorflow/include (如果你找不到,直接使用‘tensorflow’关键词进行搜索) ,然后替换掉原始文件中的路径 /usr/local/lib/python2.7/dist-packages/tensorflow/include 就行。
②路径: /usr/local/cuda-8.0/include 的替换
对于 /usr/local/cuda-8.0/include 命令,找到你的电脑中安装的cuda下的include路径即可(找不到,直接使用关键词‘cuda’ 进行搜索)。(我的是:/usr/local/cuda-9.0/include 替换掉 /usr/local/cuda-8.0/include)。
③路径: /usr/local/lib/python2.7/dist-packages/tensorflow/include/external/nsync/public 的替换。
这个是你所安装的tensorflow库文件夹下的public文件夹(不一定在tensorflow文件夹下,找不到直接用关键词‘external’搜索文件夹,找到后替换)。
我的路径是:/home/hui/.local/lib/python3.6/site-packages/external/nsync/public 替换掉 /usr/local/lib/python2.7/dist-packages/tensorflow/include/external/nsync/public
④路径: /usr/local/cuda-8.0/lib64/ 的替换。
跟②一样的方法,只要找到②,这个就一定能找到。我的路径:/usr/local/cuda-9.0/lib64/ 替换掉 /usr/local/cuda-8.0/lib64/
⑤路径: /usr/local/lib/python2.7/dist-packages/tensorflow 的替换。
跟①一样的方法,只要找到①,这个也一定能找到。我的路径:/home/hui/.local/lib/python3.6/site-packages/tensorflow 替换掉 /usr/local/lib/python2.7/dist-packages/tensorflow
替换掉上面路径后然后保存。
替换前:
替换后:
然后使用下面命令进行编译,得到 *o 和 *so 文件就说明编译成功。
sh tf_sampling_compile.sh
编译成功后如下图所示:
tf_ops 文件夹下的 3d_interpolation 和 grouping 文件夹的编译方式和上面一样。
如果你使用单GPU进行训练到这里代码基本没有什么问题,可以正常训练。如果是多个GPU进行训练还需要解决下面的问题四。
问题4:tensorflow版本不同带来的问题
由于我这里是tensorflow1.8.0版本,官网是1.4版本,有些代码是不一样的,这里进行修改(很小的修改,大部分还是不需要改的)。
train_multi_gpu.py文件的186 和 188 行会报出下图的错误:
错误的代码 :
##train_multi_gpu.py文件中的186行和188行
pc_batch = tf.slice(pointclouds_pl,
[i*DEVICE_BATCH_SIZE,0,0], [DEVICE_BATCH_SIZE,-1,-1])
label_batch = tf.slice(labels_pl,
[i*DEVICE_BATCH_SIZE], [DEVICE_BATCH_SIZE])
改正后的代码:
pc_batch = tf.slice(pointclouds_pl,
[int(i*DEVICE_BATCH_SIZE),0,0], [int(DEVICE_BATCH_SIZE),-1,-1])
label_batch = tf.slice(labels_pl,
[int(i*DEVICE_BATCH_SIZE)], [int(DEVICE_BATCH_SIZE)])
到这里我碰到所有的问题已经解决,可以正常运行,下面是运行的结果。
运行结果
1.运行下面命令,在tensorboard中可视化。
tensorboard --logdir=log
2.CPU的使用情况
3. GPU的使用情况
4.使用 utils 文件夹下的 show3d_balls.py 文件可视化出来的结果。
pointnet 结果可视化_pointnet++的运行相关推荐
- pointnet 结果可视化_PointNet论文复现及代码详解
写在前面 本文主要对PointNet(之前有解读论文)的代码进行了分析和解读,有助于进一步理解其思想.可以发现,PointNet的结构并不复杂,比起CNN还要简单一些.理解PointNet关键在于理解 ...
- pointnet 结果可视化_pointNet代码
组成 1.PointNet classification network分类网络 part segmentation network 数据集 1.point clouds sampled from 3 ...
- pointnet 结果可视化_PointNet 网络分析
目前二维深度学习取得了很大的进步并且应用范围越来越广,随着三维设备的发展,三维深度学习得到了很大的关注.PointNet是斯垣福大学在2016年提出的一种点云分类/分割深度学习框架. PointNet ...
- MaxCompute Studio使用心得系列3——可视化分析作业运行
上一篇写分享了通过MaxCompute Studio 编写sql脚本时"编译"功能带来的便捷,这次分享脚本编译好提交运行后,自助查看作业的执行情况. 我们很熟悉的是通过logvie ...
- 爬取猫眼电影影评,数据可视化分析源代码运行说明
欢迎关注微信公众号:简说Python 账号:xksnh888 关注回复:1024,可以领取精选编程学习电子书籍. 爬取猫眼电影影评,数据可视化分析 项目地址 :github项目地址 之前一直有同学说不 ...
- Tensorflow学习教程------tensorboard网络运行和可视化
tensorboard可以将训练过程中的一些参数可视化,比如我们最关注的loss值和accuracy值,简单来说就是把这些值的变化记录在日志里,然后将日志里的这些数据可视化. 首先运行训练代码 #co ...
- Python命令行可视化库
我们通常都是在自己的电脑上跑程序,直接是可以可视化相应的结果.如果是在服务器上的话,使用终端,是不太方便查看结果.本文介绍4个可以在命令行中使用的Python库,分别是 Bashplotlib tqd ...
- 发现 4 个 Python 命令行可视化库,又酷又炫!
通常大家都是在自己的电脑上跑程序,直接是可以可视化相应的结果. 如果是在服务器上的话,使用终端,是不太方便查看结果. 今天给大家介绍4个可以在命令行中使用的Python库. 分别是Bashplotli ...
- TensorFlow笔记(3) TensorBoard可视化
TensorFlow笔记(3) TensorBoard可视化 1. TensorBoard简介 2. 运行TensorBoard 3. 常用API 1. TensorBoard简介 TensorBoa ...
最新文章
- [软件架构:设计模式系列C#篇]系列教程汇总
- 6招识破翻新iPhone
- 原创,自己做的一个简单实用的提示小插件,兼容性很好,基本上都兼容!
- mongoDB 数据库简介
- win 8升级win8.1的几个问题
- [html] marquee详解
- win32应用程序_电脑打不开exe程序|Win10提示exe不是有效32应用程序
- java 国际化 properties_java Properties 读取文件,国际化
- 生成指定序列的前一字典序序列(洛谷P2525题题解,C++语言描述)
- jstack 线程状态分析_面试官:说说你是怎么用JDK监控和故障处理工具的吧?例如jstack...
- HTML控制表格边线显示。
- 计算机组成原理第6版课后答案,计算机组成原理第6章习题参考答案
- Win8怎么在桌面显示我的电脑
- 计算机专业人才需求大吗,对计算机专业人才需求现状
- 对于提高团队开会效率的看法
- linux文件与目录管理常用命令的分类【linux基础篇五】
- 现代企业管理的12法宝(zt)
- 共读四步法:看见正向核心的力量—欣赏式探询共读会
- 2019年南京大学计算机研究生复试分数线,南京大学2019年硕士研究生复试基本分数线...
- spring-context.xml
热门文章
- C#中的线程(中)-线程同步
- linux必须运行在enforcing,Linux系统中SELinux的工作模式(Disabled、Permissive和Enforcing)...
- plink - 关于提取某一个特定的SNP
- GE千兆以太网光口模式协商原理
- 研究生毕业后要不要落户上海?今年非上海生源应届生申请户籍评分办法~
- Windows Essentials 2012(Windows live 2012) 简体中文离线版
- linux查看db2表空间大小,DB2 查看表空间的容器情况
- opengl/c++ 用粒子系统实现星轨效果
- 2个或多个路由器有线连接设置技巧分享
- 关于Blender导出FBX动作失效的问题