前言:距离上次更新已经很遥远了~~~ Tensorflow的物体检测框架已经基本搞完,中间穿插了一些ssd的镜像制作,年后回来开始上手Facebook的开源检测框架 Detectron,目前为止还有去阅读源码,安装环境加弄清使用流程用了一周的时间,实在惭愧,这里总结一下,希望能够有所帮助。
Detectron安装
Detectron 是Facebook AI开源的一个检测框架,其中集成了Mask R-CNN,RetinaNet等先进模型。官方网址为: https://github.com/facebookresearch/Detectron。
Detectron 依赖于caffe2(现在caffe2现在已经集成到了pytorch里)。caffe2的安装教程官网为:https://caffe2.ai/docs/getting-started.html。其中提供了各种不同平台的不同安装源的教程,大家可以根据自己操作系统平台选择对应教程安装(但是Detectron只支持Linux),如下所示:
通过在官网的浏览了解到,Detectron只支持GPU运行,因此需要选择GPU版本的caffe2环境;其次,Detectron官网的提示其依赖为python2。通过实际安装,这里说明一下Detectron是兼容python3运行的。
Detectron的安装流程相对清晰,根据官网的说明,主要分为以下四个部分:
- NVIDIA GPU 环境相关CUDA与cuDNN,版本参照官网
- Caffe2
- COCO API
- Detectron
本人使用的操作系统为CentOS。caffe2官网没有相关的源码安装教程,提示与Ubuntu系统上安装流程一致。参照Ubuntu的源码安装caffe2流程,尝试了在CentOS上源码安装,或许是由于caffe2在pytorch上的迁移,也或许是我其中的步骤没有操作正确,总会出现一个错误,这里就不提示了,也借鉴过他人的教程,依然没有走通,并且整个流程就算走通也是比较麻烦,因此最后还是通过conda来安装,也是借鉴别人的话 “conda大法好啊!”。下面直接把Dockerfile文件的内容贴出来,不使用docker的就按照对应的操作执行即可,简单清晰。
# home下,基于centos的detectron镜像制作
FROM nvidia/cuda:9.0-cudnn7-devel-centos7
# 设置网络
ARG https_proxy=https://
ARG http_proxy=http://
# 安装相关工具
RUN yum -y install wget &&
yum -y install bzip2 &&
yum -y install git &&
yum -y install make &&
# 安装anaconda
cd /home &&
wget https://repo.anaconda.com/archive/Anaconda2-2018.12-Linux-x86_64.sh &&
bash Anaconda2-2018.12-Linux-x86_64.sh -b &&
echo "PATH=~/anaconda2/bin:$PATH" >> ~/.bashrc &&
source ~/.bashrc &&
pip install protobuf &&
pip install cython &&
# 安装caffe2
conda install -y pytorch-nightly -c pytorch &&
# 验证caffe2是否安装成功
# python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" ||echo "Failure"
# python -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'
# 安装cocoAPI
git clone https://github.com/cocodataset/cocoapi.git &&
cd cocoapi/PythonAPI/ &&
make install &&
python setup.py install --user &&
# 安装detectron
cd /home &&
git clone https://github.com/facebookresearch/detectron &&
pip install -r detectron/requirements.txt &&
cd detectron/ &&
make &&
yum install -y libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=false &&
yum install -y libXext &&
yum install -y libXrender &&
# 测试detectron是否安装成功
# python detectron/tests/test_spatial_narrow_as_op.py
这里安装的Anaconda,如果安装miniconda可以节约镜像空间。如果是用python3.6,则安装对应版本的conda与后续的相关依赖。
关于CentOS系统Detectron的conda安装总结到这里,如有错误误导非常抱歉,欢迎批评指出。下一节对Detectron的使用流程进行简单总结。