赞
踩
1.通过github下载pointnet++的包;
2.以分类为例,在pointnet2-master目录下新建data文件夹,将modelnet40_ply_hdf5_2048数据集解压到data文件夹内;
3.安装相关环境配置,有如下建议:
a. Anaconda3还是要装的,conda的虚拟环境在学习阶段,有着多种网络且各个网络环境不同时还是挺好用的
b.通过conda创建python2.7的虚拟环境
c.在python2.7的虚拟环境中安装conda install tensorflow-gpu==1.12.0,conda install会同时帮我们安装cudatoolkit 9.2 和 cudnn 7.6.5,测试此环境可运行pointnet++和spider cnn这两个架构
d.其他缺少的包可通过查找来做相应安装
4.tf_ops目录下的三个文件编译
铺垫:任意打开一终端,通过locate cuda_runtime.h
查找cuda_runtime.h位置。
本人电脑的结果如:/usr/local/cuda-10.0/include/cuda_runtime.h
a.对3d_interpolation内容修改
将tf_interpolate_compile.sh文件内的内容修改为:
# Get TF variables
TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')
TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
g++ -std=c++11 tf_interpolate.cpp -o tf_interpolate_so.so -shared -fPIC -I$TF_INC -I$TF_INC/external/nsync/public -L$TF_LIB -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=1
修改完成后运行sh tf_interpolate_compile.sh
b.对grouping内容修改
将tf_grouping_compile.sh文件内的内容修改为:
#/bin/bash
/usr/local/cuda-10.0/bin/nvcc tf_grouping_g.cu -o tf_grouping_g.cu.o -c -O2 -DGOOGLE_CUDA=1 -x cu -Xcompiler -fPIC
#!!!!!!上处cuda-10.0版本跟据locate cuda_runtime.h结果修改为相应的版本!!!!!!
# Get TF variables
TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')
TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
g++ -std=c++11 tf_grouping.cpp tf_grouping_g.cu.o -o tf_grouping_so.so -shared -fPIC -I$TF_INC -I$TF_INC/external/nsync/public -L$TF_LIB -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=1
将tf_grouping.cpp文件,第十行#include <cuda_runtime.h>
修改为#include </usr/local/cuda-10.0/include/cuda_runtime.h>
,修改内容见铺垫
修改完成后运行sh tf_grouping_compile.sh
c.对sampling内容修改
将tf_sampling_compile.sh文件内的内容修改为:
#/bin/bash
/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
#!!!!!!上处cuda-10.0版本跟据locate cuda_runtime.h结果修改为相应的版本!!!!!!
# Get TF variables
TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')
TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
g++ -std=c++11 tf_sampling.cpp tf_sampling_g.cu.o -o tf_sampling_so.so -shared -fPIC -I$TF_INC -I$TF_INC/external/nsync/public -L$TF_LIB -ltensorflow_framework -O2 -D_GLIBCXX_USE_CXX11_ABI=1
将tf_sampling.cpp文件,第十行#include <cuda_runtime.h>
修改为#include </usr/local/cuda-10.0/include/cuda_runtime.h>
,修改内容见铺垫
修改完成后运行sh tf_sampling_compile.sh
5.在pointnet2-master文件第一级目录下打开python2.7的conda虚拟环境,运行python train.py即可训练
/usr/bin/ld: 找不到 -ltensorflow_framework
collect2: error: ld returned 1 exit status
修改方法:一开始用的tf1.14.0,cuda10.1,cudnn7.6.5,就会报着个错误。论文给的环境是cuda8和cudnn6,经过测试,cuda9和cudnn7还能运行,再高就不行了,所以就别装tf1.12以上的tf架构了。anaconda就是解决这种问题的。
fatal error: cuda_runtime.h: No such file or directory
修改方法:通过locate cuda_runtime.h
查找cuda_runtime.h位置(本人电脑的结果如:/usr/local/cuda-10.0/include/cuda_runtime.h
),之后将cpp文件里的内容修改#include <cuda_runtime.h>
修改为#include </usr/local/cuda-10.0/include/cuda_runtime.h>
ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv
修改方法:将tf_ops目录下的三个文件的sh文件按上文修改后再进行sh命令。
主要就是要帮sh文件内的命令找对目录,并且要将-D_GLIBCXX_USE_CXX11_ABI=0
修改为 -D_GLIBCXX_USE_CXX11_ABI=1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。