pointnet++代码实现并训练自己的数据集
arXiv论文地址项目网页pointnet++代码地址安装pointnet++1.安装TensorFlow安装TensorFlow,pointnet++使用的是TensorFlow1.0早期版本,经过多次编译失败以及bug,最终测试1.13.1版本,对应cuda10.0,cudnn7.4.具体查看页面2.安装必要库tensorflow-gpu==1.13.1plyfile==0.7.3numpy=
安装pointnet++
1.安装TensorFlow
安装TensorFlow,pointnet++使用的是TensorFlow1.0早期版本,经过多次编译失败以及bug,最终测试1.13.1版本,对应cuda10.0,cudnn7.4.具体查看页面
2.安装必要库
tensorflow-gpu==1.13.1
plyfile==0.7.3
numpy==1.16.4
scipy==1.5.2
opencv-python==4.5.2.54
h5py==2.10.0
matplotlib==3.2.2
克隆项目不说了
3.编译定制的 tf_ops
算子
更改nvcc和python路径。需要删除-D_GLIBCXX_USE_CXX11_ABI=0g++
命令中的标志才能正确编译
- 修改编译文件,以
/samping/tf_sampling_compile.sh
为例
Github
上提供的源代码如下,有TF1.2和TF1.4两种版本
#/bin/bash
/usr/local/cuda-8.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 /usr/local/lib/python2.7/dist-packages/tensorflow/include -I /usr/local/cuda-8.0/include -I /usr/local/lib/python2.7/dist-packages/tensorflow/include/external/nsync/public -lcudart -L /usr/local/cuda-8.0/lib64/ -L/usr/local/lib/python2.7/dist-packages/tensorflow -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=0
为了减少改动,将代码中的CUDA路径和版本改成自己环境的版本,同时将路径用变量表示,替换源代码如下:
CUDA_ROOT=/usr/local/cuda-10.0
TF_ROOT=/home/chengle/anaconda3/envs/pn21/lib/python3.7/site-packages/tensorflow
/usr/local/cuda-10.0/bin/nvcc tf_sampling_g.cu -o tf_sampling_g.cu.o -c -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC
#TF xxx.xxx
g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I ${TF_ROOT}/include -I ${CUDA_ROOT}/include -I ${TF_ROOT}/include/external/nsync/public -lcudart -L ${CUDA_ROOT}/lib64/ -L ${TF_ROOT} -ltensorflow_framework -O2 #-D_GLIBCXX_USE_CXX11_ABI=0
(1).查看CUDA版本方法:
cat /usr/local/cuda/version.txt
或
nvcc -V
(2).查看TensorFlow版本和路径方法:
import tensorflow as tf
print(tf.sysconfig.get_lib())
- 编译代码
在 .sh
文件夹下打开中端,激活环境
conda activate xxxxx
sh tf_sampling_compile.sh
如果生成了tf_sampling_so.so
文件则编译成功,如上过程编译其它的两种操作。(tf_sampling_so.so
有大小,如果0kb也是失败了)
最终获得
- 编译
grouping
and3d_interpolation
代码同上
3.安装好,要让pointnet代码真正运行,还要修改很多代码内容
原文用到python2,我用的是python3.7,有些函数要改,像xrange,print函数
其实我改好了依然跑不起来
原因是我只有一个2080显卡,内存只有8GB,batch_size太大会让内存爆掉,batch_size设置4就还好
后面会继续讲训练过程
数据标注效果
预测效果
更多推荐
所有评论(0)