该项目的github原始地址:https://github.com/charlesq34/pointnet2

目录

  • 1.环境配置
    • 1.1 环境展示
    • 1.2 环境配置
    • 1.3 下载源码及训练数据集
    • 1.4 编译tf_ops
  • 2. 训练

1.环境配置

1.1 环境展示

官方在ubuntu14.04上进行了测试,所用环境为:

tensorflow-gpu1.2
python2.7

我所使用的设备为2080上的ubuntu18.04,所用的环境为:

anaconda3
tensorflow-gpu 1.8.0
python 3.6
cuda 9.0
cudnn7.6
gcc 5.5

conda list如下:

接下来配置上述环境,并编译tensorflow(编译过程遇到的问题比较多)

1.2 环境配置

创建虚拟环境:conda creat -n pointnet++ python=3.6
启动环境:conda activate pointnet++
安装:tensorflow-gpu:pip install tensorflow-gpu==1.8.0
查看是否安装成功:python -c 'import tensorflow as tf; print(tf.__version__)'(安装成功:输出1.8.0)

其余环境可以在运行程序报错后依次pip安装
安装与tensorflow-gpu1.8对应的cuda和cudnn,这里需要cuda9.0,cudnn7.6,安装过程参看:ubuntu18.04下cuda9.0-cudnn7.6安装与多版本cuda共存及切换

1.3 下载源码及训练数据集

源码地址:https://github.com/charlesq34/pointnet2
修改代码:由于python2与python3的语法上的不同,需要将代码中的xrange替换为range;print后面的加括号
下载数据集:下载地址
将下载好的数据放置到pointnet2-master/data/目录下并解压,如下tree:

将代码中下载数据集的部分注释掉:在train.py 和train_multi_gpu.py中注释掉第25行的import modelnet_ht_dataset

1.4 编译tf_ops

官网中的指导:

终端输入:

python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())'
输出:/home/gzz/anaconda3/envs/pointnet++/lib/python3.6/site-packages/tensorflow/include

python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())'
输出:/home/gzz/anaconda3/envs/pointnet++/lib/python3.6/site-packages/tensorflow

cd 到tf_ops文件夹,将3d_interpolation、grouping、sampling中的.sh文件进行修改(以tf_sampling_compile.sh为例):
将下图蓝色部分改为自己的cuda版本,红色部分为上面的第一个输出,灰黑色部分为上面的第二个输出+/

#/bin/bash
/usr/local/cuda-9.0/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC# TF1.2
#g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -lcudart -L /usr/local/cuda-8.0/lib64/ -O2 -D_GLIBCXX_USE_CXX11_ABI=0# TF1.4
g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I /home/gzz/anaconda3/envs/pointnet++/lib/python3.6/site-packages/tensorflow/include -I /usr/local/cuda-9.0/include -I /home/gzz/anaconda3/envs/pointnet++/lib/python3.6/site-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-9.0/lib64/ -L /home/gzz/anaconda3/envs/pointnet++/lib/python3.6/site-packages/tensorflow/ -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=0

三个.sh文件操作一样。
这里编译可能会遇到一些问题,我的是按照上述改成功的。
如果失败可以将最后面的-D_GLIBCXX_USE_CXX11_ABI=0改为-D_GLIBCXX_USE_CXX11_ABI=1,或者注释掉#-D_GLIBCXX_USE_CXX11_ABI=0(网上教程gcc版本高于4.0要改为1,这里一开始我是按照网上教程上来直接就改了,但是后面运行train.py文件报错,后面发现0才适合我,如果这里遇到编译失败或者编译成功后train.py报错的话可以把这几种都试试)我的报错如下:

tensorflow.python.framework.errors_impl.NotFoundError: /home/wu/pointnet2-master/tf_ops/sampling/tf_sampling_so.so: undefined symbol: _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringB5cxx11Ev

关于该问题可以参看:
官网issues48

2. 训练

python train.py

报错:

FileNotFoundError: [Errno 2] No such file or directory: ‘/home/wu/pointnet2-master/data/modelnet40_normal_resampled/shape_names.txt’

将data/modelnet40_normal_resampled/下的modelnet40_shape_names.txt文件改名为shape_names.txt即可


训练数据将保存在log文件夹中的log_train.txt中:

通过:tensorboard --logdir=/home/wu/pointnet2-master/log可以可视化训练过程,其中–logdir后面是你自己的log文件夹的位置

训练完以后进行验证:

python evaluate.py --num_votes 12

pointnet2(pointnet++)源码复现相关推荐

  1. muduo网络库源码复现笔记(十七):什么都不做的EventLoop

    Muduo网络库简介 muduo 是一个基于 Reactor 模式的现代 C++ 网络库,作者陈硕.它采用非阻塞 IO 模型,基于事件驱动和回调,原生支持多核多线程,适合编写 Linux 服务端多线程 ...

  2. 3D点云深度学习PointNet源码解析——conv2D,fc,max_pooling

    PointNet在实际搭建网络结构时,其实是将N×3N×3N\times 3的点云当作图片处理,即height=N,width=3.作者对其搭建网络所用到的各种层进行了二次封装,存放于tf_util. ...

  3. AttacKG: Constructing Technique Knowledge Graph from Cyber Threat Intelligence Reports 源码复现

    AttacKG:从网络威胁情报报告构建技术知识图谱 文章摘要 网络攻击越来越复杂和多样化,使得攻击检测越来越具有挑战性.为了打击这些攻击,安全从业者积极总结并以网络威胁情报(CTI)报告的形式交流他们 ...

  4. PointNet源码解读

    本次源码解读的地址为:https://github.com/yanx27/Pointnet_Pointnet2_pytorch,这一版本的源码易读性高,主要是封装程度较低,注释较全,安装额外的库也比较 ...

  5. 目标检测——detr源码复现【 End-to-End Object Detection with Transformers】

    1.环境 2.文档 detr源码地址 detr论文地址 3.数据集 自定义coco数据集 4.模型 在github上面下载 链接:https://pan.baidu.com/s/1fmOYAOZ4yY ...

  6. 3D点云深度学习PointNet源码解析——pointnet_cls.py.py

    参考博客: #这个文件实现了网络的分类结构.输出为B*40,是每个样本对于每个类别的概率.网络结构在get_model()中定义,loss则在get_loss中定义 import tensorflow ...

  7. 【图像语义分割】DeepLabv3+(Pytorch版) 源码复现—Kitti数据集

    自己研究课题涉及到图像语义分割,所以最近复现了Deeplabv3+,在KITTI数据集上进行实验,kitti的语义分割数据集是按照cityspace的数据集制作的所有可以用cityspaces的训练模 ...

  8. pytorch 测试每一类_DeepFM全方面解析(附pytorch源码)

    写在前面 最近看了DeepFM这个模型.把我学习的思路和总结放上来给大家和未来的自己做个参考和借鉴.文章主要希望能串起学习DeepFM的各个环节,梳理整个学习思路.以"我"的角度浅 ...

  9. android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、风扇叶片效果等源码...

    2019独角兽企业重金招聘Python工程师标准>>> Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android ...

最新文章

  1. php变量类型怎么表示,PHP 数据类型_php
  2. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!...
  3. signature=eddfa127dafaf9a7c1ea87598961fbc9,Slingerende vrachtwagens verleden tijd?
  4. VTK:图片之ImageOrientation
  5. 假导出Excel功能实现,按CSV格式快速导出功能代码参考(追求代码追求简洁复用)...
  6. 15 操作系统第四章 文件管理 文件的物理结构 文件存储空间管理
  7. AntDesignUI - V3.0 技术手册(资源篇)
  8. jQuery: 合并表格中相同文本的相邻单元格
  9. JVM—引用计数和可达性分析算法(存活性判断)
  10. 工业机器人实训耗材_工业机器人实训室
  11. 对VC++一些常见问题的整理
  12. group by 深入总结
  13. android 开机自启动实现
  14. java 多线程课件_Thread_java多线程参考源码_ppt_大学课件预览_高等教育资讯网
  15. 支付宝和微信横扫境外商户,外国人冷眼旁观
  16. 三种方法解决苹果手机签名问题
  17. 与rasp的初次心动
  18. VS2019 MFC模式下如何调用控制台并用cprintf在控制台打印
  19. 【工业智能】用AI来做工业设备的故障诊断,目前还停留在“鸡尾酒疗法”阶段
  20. 天然“降脂药”,帮你“吃掉”血脂!

热门文章

  1. axios框架里面如何使用get,post,通用ajax方法请求。
  2. mysql序列号生成_超详细的mysql数据库GTID介绍—概念、优缺点、原理、生命周期等
  3. 位运算解决二进制位上不同数字的个数问题
  4. bs4用法实例:用Python爬取金融市场数据
  5. Python图片转html字符画
  6. ROS2——南溪的ROS2使用手册
  7. 有监督学习问题的分类:回归问题和分类问题
  8. 【Qt教程】2.6 - Qt5 自定义控件封装
  9. CSDN写博客时设置图片显示大小
  10. java实现一个简单的登录界面