在这里插入图片描述
arXiv论文地址
项目网页
pointnet++代码地址

安装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 and 3d_interpolation代码同上

3.安装好,要让pointnet代码真正运行,还要修改很多代码内容

原文用到python2,我用的是python3.7,有些函数要改,像xrange,print函数
其实我改好了依然跑不起来
原因是我只有一个2080显卡,内存只有8GB,batch_size太大会让内存爆掉,batch_size设置4就还好
后面会继续讲训练过程
数据标注效果

预测效果

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐