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 foundlibtorch.so => not foundlibtorch_cpu.so => not foundlibtorch_python.so => not foundlibcudart.so.10.1 => /opt/anaconda3/envs/pytorch-1.5/lib/libcudart.so.10.1 (0x00007fa99a4ce000)libc10_cuda.so => not foundlibtorch_cuda.so => not foundlibstdc++.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
时会报这个错误。
参考
- detectron2-INSTALL