pointnet2(pointnet++)源码复现⽬录
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,安装过程参看:
1.3 下载源码及训练数据集
1.4 编译tf_ops
官⽹中的指导:
终端输⼊:
python -c 'import tensorflow as tf; print(_include())'
输出:/home/gzz/anaconda3/envs/pointnet++/lib/python3.6/site-packages/tensorflow/include
python -c 'import tensorflow as tf; print(_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版本,红⾊部分为上⾯的第⼀个输出,灰⿊⾊部分为上⾯的第⼆个输出+/
tensorflow入门教程#/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/l ocal/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-packag es/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.s_impl.NotFoundError: /home/wu/pointnet2-
master/tf_ops/sampling/tf_sampling_so.so: undefined symbol:
_ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringB5cxx11Ev
关于该问题可以参看:
2. 训练
python train.py
报错:
FileNotFoundError: [Errno 2] No such file or directory: ‘/home/wu/pointnet2-
master/data/modelnet40_normal_resampled/’
将data/modelnet40_normal_resampled/下的modelnet40_⽂件改名为即可训练数据将保存在log⽂件夹中的中:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论