Superpoint Network for Point Cloud Oversegmentation
它本身的环境
Python 3.6.6
Pytorch 1.4.0
CUDA 10.1
我配置的 cuda : 11.1 选择的pytorch=1.8.0 python=3.6
一、compile the "libply_c" library
第一步:编译的准备工作,参考 编译方式
这个是它推荐的参考链接,由于我创建环境的时候已经安装了pytorch,所以只执行了2,3步骤
pip install future python-igraph tqdm transforms3d pynvrtc fastrlock cupy h5py sklearn plyfile scipy pandas
conda install -c anaconda boost; conda install -c omnia eigen3; conda install eigen; conda install -c r libiconv
安装库的时候,可能整行的命令安装时会报错,建议逐步安装。
(sklearn的名称需要更换为 scikit-learn)
第二步:编译过程
CONDAENV=YOUR_CONDA_ENVIRONMENT_LOCATION
cd libs/ply_c
cmake . -DPYTHON_LIBRARY=$CONDAENV/lib/libpython3.6m.so -DPYTHON_INCLUDE_DIR=$CONDAENV/include/python3.6m -DBOOST_INCLUDEDIR=$CONDAENV/include -DEIGEN3_INCLUDE_DIR=$CONDAENV/include/eigen3
make
cd ../../
上面是它本身给出的编译相关命令
首先,你要知道你的环境地址,
conda info --envs
查找你的环境对应的地址。
然后使用cd 命令进入文件(实际上的命令如下)
cd lib/ply_c
之后,使用cmake 的时候,要将CONDAENV 更改为你环境对应的地址(该命令有指定libpython3.6.m,如果你安装的python版本不是3.6,你需要进行更改)
我make的时候遇到了一些问题。
问题1:ply_c.cpp:4:23: fatal error: Eigen/Dense: No such file or directory
#include <Eigen/Dense>
^ compilation terminated.
原因:Dense的路径不对。真正路径是 eigen3/Eigen/Dense
方案一:可以在代码中加入 #include <Eigen/Dense>修改为 #include <eigen3/Eigen/Dense>
方案二:找到环境路径下的include,将eigen3下的文件Eigen复制到 include 文件夹下即可。
问题2:wrap_python.hpp:50:23: fatal error: pyconfig.h: No such file or directory 57 | # include <pyconfig.h>
解决方案:有的说没有安装python依赖 ,使用此命令安装 sudo apt-get install python3-dev
但是对我不适用。
方案:需要手动export 一个路径,需要修改环境的路径。我执行的命令是:
export CPLUS_INCLUDE_PATH=/usr/local/anaconda3/envs/spnetpy36tor14/include/python3.6m
(注意:需要修改你自己创建的环境的路径)
导入路径之后,再次make
问题3:*** No rule to make target 'usr/local/anaconda3/envs/spnetpy36tor14/lib/libpython3.6m.so', needed by 'libply_c.so'. Stop.
原因:属于找不到所依赖的文件所导致的(搜到的说法)
解决方案:错误的位置:[CMakeFiles/Makefile2:76: CMakeFiles/ply_c.dir/all] Error 2
在出错的一行前后添加了输出,再次make,发现,只输出了CCCCCCCCCCC。
$(MAKE) -f CMakeFiles/ply_c.dir/build.make CMakeFiles/ply_c.dir/build
说明这一行代码运行有误。
找到对应的文件,CMakeFiles/ply_c.dir/build.make,打开,找到对应的路径
/usr/local/anaconda3/envs/spnetpy36tor14/lib/libpython3.6m.so
发现路径前多了一个$,把它删除就可以了。
再次make,运行成功。
二、build the ops
cd libs/pointops && python setup.py install && cd ../../
Note that this may take a long time.
建议逐行执行命令,在python setup.py install 时遇到问题
解决方案:根据所给的路径,找到对应的代码
将
#define CHECK_CUDA(x) AT_CHECK(x.type().is_cuda(), #x, " must be a CUDAtensor ")
#define CHECK_CONTIGUOUS(x) AT_CHECK(x.is_contiguous(), #x, " must be contiguous ")
#define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x)
替换为
#define CHECK_CUDA(x) TORCH_CHECK(x.is_cuda(), #x, " must be a CUDAtensor ")
#define CHECK_CONTIGUOUS(x) TORCH_CHECK(x.is_contiguous(), #x, " must be contiguous ")
#define CHECK_INPUT(x) CHECK_CUDA(x);CHECK_CONTIGUOUS(x)
再将
cudaStream_t stream = THCState_getCurrentStream(state);
替换为
cudaStream_t stream = at::cuda::getCurrentCUDAStream().stream();
有很多文件里的内容需要替换。逐一替换。
执行命令 python setup.py install 会报错,可以从错误的里面找对应的路径与文件。
自此,配置完成。
参考的链接有:installation problem · Issue #3 · fpthink/SPNet · GitHub
cmake error in ply_c · Issue #138 · loicland/superpoint_graph · GitHub