Ubuntu16.04从源码安装detectron2

Ubuntu16.04从源码安装detectron2

准备工作

首先确保pytorch的cuda版本和系统的一致。

首先查看pytorch对应的cuda版本,通过conda list命令可以查看,我这边装的是1.5,对应的是cuda-10.1

pytorch 1.5.0 py3.7_cuda10.1.243_cudnn7.6.3_0    pytorch

再查看系统的cuda版本,即/usr/local/路径下cuda文件夹对应的cuda版本,我这边是下面这样

cuda-10.0
cuda-9.0
cuda-8.0
cuda #软连接,指向cuda-10.0

系统没有cuda-10.1,可以从官网下载或者从其他电脑拷贝一份放在这里,然后将软连接指向cuda-10.1,命令如下

cd /usr/local/
rm -rf cuda
ln -s /usr/local/cuda-10.1 cuda

安装

然后按照官网给的命令,从源码安装即可。
命令如下:

git clone https://github.com/facebookresearch/detectron2.git
cd detectron2
python setup.py build develop

安装完之后,通过命令

ldd build/lib.linux-x86_64-3.7/detectron2/_C.cpython-37m-x86_64-linu
x-gnu.so

结果显示如下:

        linux-vdso.so.1 =>  (0x00007ffe967f8000)
        libc10.so => not found
        libtorch.so => not found
        libtorch_cpu.so => not found
        libtorch_python.so => not found
        libcudart.so.10.1 => /opt/anaconda3/envs/pytorch-1.5/lib/libcudart.so.10.1 (0x00007fa99a4ce000)
        libc10_cuda.so => not found
        libtorch_cuda.so => not found
        libstdc++.so.6 => /opt/anaconda3/envs/pytorch-1.5/lib/libstdc++.so.6 (0x00007fa99a35a000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa99a051000)
        libgcc_s.so.1 => /opt/anaconda3/envs/pytorch-1.5/lib/libgcc_s.so.1 (0x00007fa99a827000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa999e34000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa999a6a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa99a74d000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fa999866000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa99965e000)

如果出现错误

input, roi, spatial_scale, output_size[0], output_size[1], sampling_ratio, aligned
RuntimeError: CUDA error: invalid device function
Segmentation fault (core dumped)

可能是系统的cuda版本和pytorch的不一致,我系统cuda软连接指向cuda-10.0时会报这个错误。

参考

posted @ 2021-01-31 17:55  VVingerfly  阅读(543)  评论(0编辑  收藏  举报