我的博客

安装 facebookresearch 的 Detectron

目录
  1. 在 Caffe2 的 docker 容器中安装 Detectron
    1. 安装 Caffe2
    2. 在容器内安装 Detectron
  2. 通过 Dockerfile 安装 Detectron

Detectron 是 Facebook AI 研究院(FAIR)于 2018 年初公开的目标检测平台,使用 caffe2 深度学习框架。2019 年他们又推出了 Detectron2,这个是基于 PyTorch 的,是 Facebook 的下一代目标检测算法。

我最近需要复现一篇论文,所以需要安装和使用已经不再维护的 Detectron。

Github:https://github.com/facebookresearch/Detectron

安装文档:https://github.com/facebookresearch/Detectron/blob/master/INSTALL.md

有两种方法,第一是先 docker pull caffe2 的容器,然后在这个容器中安装 Detectron。方法二是使用 Detectron 仓库中提供的 Dockerfile 自动构建 Detectron 容器,开始时我第二个方法失败了,所以才使用方法一,但是方法一安装后,在复现论文过程中遇到问题,所以又尝试了第二种方法。

在 Caffe2 的 docker 容器中安装 Detectron

安装 Caffe2

文档:https://caffe2.ai/docs/getting-started.html

由于二进制安装包没有我使用的 CUDA 版本,所以选择了使用 docker 镜像

1
docker pull caffe2ai/caffe2

启动容器

1
docker run --gpus all -it caffe2ai/caffe2:latest /bin/bash

在容器内安装 Detectron

进入 root 目录

1
cd /root/

克隆仓库

1
2
git clone https://github.com/facebookresearch/detectron
cd detectron

安装依赖

1
root@72069f1e92cc:~/detectron# pip install -r requirements.txt

​ 这里用的是 python2

安装

1
make

测试

1
root@72069f1e92cc:~/detectron# python detectron/tests/test_spatial_narrow_as_op.py

结果报错:

Traceback (most recent call last):
File “detectron/tests/test_spatial_narrow_as_op.py”, line 88, in
c2_utils.import_detectron_ops()
File “/root/detectron/detectron/utils/c2.py”, line 43, in import_detectron_ops
detectron_ops_lib = envu.get_detectron_ops_lib()
File “/root/detectron/detectron/utils/env.py”, line 75, in get_detectron_ops_lib
raise Exception(‘Detectron ops lib not found’)
Exception: Detectron ops lib not found

我也没太弄清楚问题是啥

但是至此 python 中已经可以正常导入 caffe2 了

创建镜像

1
docker commit 72069f1e92cc my_detectron:v1.0

通过 Dockerfile 安装 Detectron

目前最新的 dockerfile 无法构建成功,原 Dockerfile 如下

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
27
28
# Use Caffe2 image as parent image
FROM caffe2/caffe2:snapshot-py2-cuda9.0-cudnn7-ubuntu16.04

RUN mv /usr/local/caffe2 /usr/local/caffe2_build
ENV Caffe2_DIR /usr/local/caffe2_build

ENV PYTHONPATH /usr/local/caffe2_build:${PYTHONPATH}
ENV LD_LIBRARY_PATH /usr/local/caffe2_build/lib:${LD_LIBRARY_PATH}

# Clone the Detectron repository
RUN git clone https://github.com/facebookresearch/detectron /detectron

# Install Python dependencies
RUN pip install -r /detectron/requirements.txt

# Install the COCO API
RUN git clone https://github.com/cocodataset/cocoapi.git /cocoapi
WORKDIR /cocoapi/PythonAPI
RUN make install

# Go to Detectron root
WORKDIR /detectron

# Set up Python modules
RUN make

# [Optional] Build custom ops
RUN make ops

看到 issue756 中提示,在 RUN git clone https://github.com/facebookresearch/detectron /detectron 下面加一句 RUN cd /detectron && git checkout d56e267,构建过程使用 d56e267 而不是最新代码可以构建成功。

构建命令 docker build -t detectron:c2-cuda9-cudnn7 .

评论无需登录,可以匿名,欢迎评论!