SpNet 的环境配置问题与解决方式

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 时遇到问题

 

安装setup文件遇到的问题与解决方案

 解决方案:根据所给的路径,找到对应的代码

#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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值