Detectron 安装步骤

Requirements:

  • Linux 16.04, Python2, NVIDIA GPU (Detectron 目前只有 GPU 版本)
  • CUDA 9.0, cuDNN7.0.5
  • Caffe2, COCO API

为保持 Python 环境的独立性与完整性,安装前新建一个新的虚拟环境,以下安装过程在虚拟环境中进行

1
2
3
# 在主环境下
conda create -n detectron python=2.7
source activate detectron

[TOC]


CUDA & cuDNN

安装 CUDA9.0 和 cuDNN7.0.5,具体安装步骤参考英伟达官网


Caffe2

1. 从源码编译

以下为源码编译的过程,尝试过安装 Pre-Built Binaries,结果失败了,也可以直接安装预编译文件(推荐),[2. 安装预编译文件](#2. 安装预编译文件)

安装依赖包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
git \
libgoogle-glog-dev \
libgtest-dev \
libiomp-dev \
libleveldb-dev \
liblmdb-dev \
libopencv-dev \
libopenmpi-dev \
libsnappy-dev \
libprotobuf-dev \
openmpi-bin \
openmpi-doc \
protobuf-compiler \
python-dev \
python-pip \
libgflags-dev \
cmake
pip install --user \
future \
numpy \
protobuf \
typing \
hypothesis

pip install 使用默认镜像下载速度较慢,可以选择使用清华大学 pypi 镜像

1
2
3
4
5
6
# for temporary use
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

# set to default
pip install pip -U # upgrade pip to the latest version (>=10.0.0)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
下载代码仓库并编译
1
2
3
4
git clone https://github.com/pytorch/pytorch.git && cd pytorch
git submodule update --init --recursive # 安装所需子模块
conda install pyyaml # 安装缺少的依赖包
python setup.py install

如果编译顺利通过,恭喜,接下来测试 caffe2 安装是否正确,[3. 安装后测试](#3. 安装后测试)

错误信息1:服务器安装的 git 在执行 clone 命令时报错找不到 https 协议,应该是安装不完整导致的,可以在当前环境下重新安装 git 后重试(使用命令 conda install git,推荐)或者使用以下命令代替:

1
git clone git://github.com/pytorch/pytorch.git && cd pytorch

错误信息2(未解决):在执行安装命令时 (python setup.py install),出现以下错误:

1
······/libmklml_intel.so: file not recognized: File truncated.

该错误指向 pytorch/third_party/ideep/mkl-dnn/external/mklml_lnx_2019.0.1.20180928/lib/libmklml_intel.so 文件,可能是文件不完整导致的错误,但是未找到原因及解决方法。如果出现此错误请尝试通过预编译文件安装 caffe2.

其他错误:查看 Caffe2 troubleshooting

2. 安装预编译文件

Caffe2 只提供 Anaconda 的预编译安装包,需要安装 Anaconda 或 Miniconda

首先添加清华大学维护的 PyTorch 源,下载速度更快:

1
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

然后执行安装操作:

1
conda install pytorch-nightly

3. 安装后测试

安装完成后,测试安装是否成功

1
2
3
4
5
6
# To check if Caffe2 build was successful
python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

# To check if Caffe2 GPU build was successful
# This must print a number > 0 in order to use Detectron
python -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'

根据执行结果判断安装是否成功

从源码编译需注意:

If the caffe2 Python package is not found, you likely need to adjust your PYTHONPATH environment variable to include its location (/path/to/caffe2/build, where build is the Caffe2 CMake build directory).


COCO API

依赖:

  • setuptools>=18.0
  • cython>=0.27.3
  • matplotlib>=2.1.0
1
2
3
4
5
6
conda install setuptools cython matplotlib
COCOAPI=/path/to/clone/cocoapi # 指定安装路径
git clone https://github.com/cocodataset/cocoapi.git $COCOAPI
cd $COCOAPI/PythonAPI
make
#python setup.py install --user

Detectron

下载代码仓库:

1
2
DETECTRON=/path/to/clone/detectron    # 指定安装路径
git clone https://github.com/facebookresearch/detectron $DETECTRON

安装 Python 依赖:

1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r $DETECTRON/requirements.txt

然后 make:

1
cd $DETECTRON && make

安装完成后运行测试:

1
python $DETECTRON/detectron/tests/test_spatial_narrow_as_op.py

结果输出 OK,安装完毕

输出以下提示信息不必理会:

1
2
No handlers could be found for logger "caffe2.python.net_drawer"
net_drawer will not run correctly. Please install the correct dependencies.

Troubleshooting

参照 Detectron Troubleshooting

Reference

  1. https://github.com/facebookresearch/Detectron/blob/master/INSTALL.md
  2. https://caffe2.ai/docs/getting-started.html?platform=ubuntu&configuration=prebuilt
  3. https://blog.csdn.net/weixin_43624538/article/details/84712617

P.S.

CUDA8.0 cuDNN5.1.10 安装失败,原因:PyTorch 需要 cuDNN>=7.0

查看 CUDA 和 cuDNN 版本:

1
2
3
4
5
# CUDA
cat /usr/local/cuda/version.txt

# cuDNN
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2