本文记录 Ubuntu16.04 下安装 maskrcnn_benchmark 的过程.
安装环境:
Ubuntu16.04
CUDA 9.0
python3.6
文章目录
1. 简介
maskrcnn_benckmark 是 Facebook Research 下的一个项目。这个项目包含了多种通用目标检测(General Object Detection)算法的 PyTorch 实现。项目工程高度模块化,关键模块使用 cpp/cuda 实现,并将核心功能封装为 Python Package。
maskrcnn-benchmark已经冻结(maskrcnn-benchmark has been deprecated),即它将不在更新。
2. 安装
安装要求:
- PyTorch 1.0 nightly or newer
- torchvision
- cocoapi
- yacs
- matplotlib
- GCC >= 4.9
- OpenCV
旧版本项目仅支持 pytorch 1.0 nightly.
现在版本可支持到 pytorch 1.3.
使用低于1.3版本的pytorch,运行需要修改源码. 参看 issues1182.
2.1 准备并下载依赖项
创建虚拟环境:
$ mkvirtualenv --no-site-packages -p python3.6 maskrcnn-benchmark
(maskrcnn-benchmark)$
创建安装目录:
(maskrcnn-benchmark)$ ROOT_DIR='path_to_the_parent_directory_OF_maskrcnn-benchmark'
(maskrcnn-benchmark)$ mkdir -p ${ROOT_DIR} # {ROOT_DIR} means the parent directory of maskrcnn-benchmark
(maskrcnn-benchmark)$ cd ${ROOT_DIR}
下载 maskrcnn_benckmark 和 cocoapi 依赖:
(maskrcnn-benchmark)$ pip install ipython ninja yacs cython matplotlib tqdm opencv-python
2.2 安装 PyTorch
推荐使用 PyTorch 1.1.0
安装 pytorch 1.1.0 和 torchvision 0.3.0:
(maskrcnn-benchmark)$ pip install torch==1.1.0 -f https://download.pytorch.org/whl/cu90/torch_stable.html
(maskrcnn-benchmark)$ pip install torchvision==0.3.0
如果使用 PyTorch-nightly
安装 pytorch-nightly 和 torchvision-nightly:
(maskrcnn-benchmark)$ pip install torch_nightly==1.0.0.dev20190409 -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html
(maskrcnn-benchmark)$ pip install torchvision-nightly==0.2.3
2.3 安装 pycocotools
cocoapi
安装 pycocotools:
(maskrcnn-benchmark)$ cd ${ROOT_DIR}
(maskrcnn-benchmark)$ git clone https://github.com/cocodataset/cocoapi.git
(maskrcnn-benchmark)$ cd cocoapi/PythonAPI
(maskrcnn-benchmark)$ python setup.py build_ext install
2.4 安装 cityscapesScripts
安装 cityscapesScripts
(maskrcnn-benchmark)$ cd ${ROOT_DIR}
(maskrcnn-benchmark)$ git clone https://github.com/mcordts/cityscapesScripts.git
(maskrcnn-benchmark)$ cd cityscapesScripts/
(maskrcnn-benchmark)$ python setup.py build_ext install
2.5 安装 apex
安装 apex:
(maskrcnn-benchmark)$ cd ${ROOT_DIR}
(maskrcnn-benchmark)$ git clone https://github.com/NVIDIA/apex.git
(maskrcnn-benchmark)$ cd apex
(maskrcnn-benchmark)$ python setup.py install --cuda_ext --cpp_ext
2.6 安装 maskrcnn_benckmark
安装 maskrcnn_benckmark:
(maskrcnn-benchmark)$ cd ${ROOT_DIR}
(maskrcnn-benchmark)$ git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
(maskrcnn-benchmark)$ cd maskrcnn-benchmark
# the following will install the lib with
# symbolic links, so that you can modify
# the files if you want and won't need to
# re-build it
(maskrcnn-benchmark)$ python setup.py build develop
测试:
(maskrcnn-benchmark)$ python -c "import maskrcnn_benchmark"
(maskrcnn-benchmark)$
成功安装
3. 设置数据管道
${ROOT_DIR}
|
|_ datasets
| |
| |_ coco
| |_ voc
|
|_ maskrcnn-benchmark # project directory
|
|_ packages # containing python packages for maskrcnn-benchmark
创建数据集目录
(maskrcnn-benchmark)$ cd ${ROOT_DIR}
(maskrcnn-benchmark)$ mkdir datasets
(maskrcnn-benchmark)$ ln -s /path/to/COCO coco
(maskrcnn-benchmark)$ ln -s /path/to/VOCdevkit voc
打开${ROOT_DIR}/maskrcnn-benchmark/maskrcnn_benchmark/config/paths_catalog.py
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
"""Centralized catalog of paths."""
import os
from copy import deepcopy
class DatasetCatalog(object):
DATA_DIR = "datasets"
...
...
将上面所示内容编辑为如下:
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
"""Centralized catalog of paths."""
import os
from copy import deepcopy
from pathlib import Path
class DatasetCatalog(object):
THIS_DIR = Path(__file__).parent
DATA_DIR = THIS_DIR.parents[2].joinpath("datasets") # ${ROOT_DIR}/datasets
DATASETS = {
...
...
测试
In[2]: import matplotlib.pyplot as plt
Backend TkAgg is interactive backend. Turning interactive mode on.
In[3]: from maskrcnn_benchmark.config.paths_catalog import DatasetCatalog
In[4]: from maskrcnn_benchmark.data.build import build_dataset
In[5]: coco_2017_train = build_dataset(['coco_2017_train'], transforms=None, dataset_catalog=DatasetCatalog)
loading annotations into memory...
Done (t=22.22s)
creating index...
index created!
In[6]: plt.imshow(coco_2017_train[0][0][0])
Out[6]: <matplotlib.image.AxesImage at 0x7f90f5f44208>
4. 运行 Demo
4.1 Webcam demo
运行脚本
(maskrcnn-benchmark)$ cd ${ROOT_DIR}/maskrcnn-benchmark/demo
(maskrcnn-benchmark)$ python webcam.py --min-image-size 800
显示heatmap
(maskrcnn-benchmark)$ python webcam.py --min-image-size 800 --show-mask-heatmaps
更多内容请参考${ROOT_DIR}/maskrcnn-benchmark/demo
.
4.2 Jupyter notebook demo
安装requests
.
(maskrcnn-benchmark)$ pip install requests
安装Jupyter notebook.
我的系统环境中已经安装了 Jupyter notebook
,现将maskrcnn-benchmark
环境的Python interpreter
添加到系统中的Jupyter notebook
.
(maskrcnn-benchmark)$ pip install ipykernel
(maskrcnn-benchmark)$ python -m ipykernel install --user --name maskrcnn-benchmark --display-name "maskrcnn-benchmark"
启动Jupyter notebook
服务
(maskrcnn-benchmark)$ deactivate
$ cd ${ROOT_DIR}/maskrcnn-benchmark/demo
$ jupyter notebook Mask_R-CNN_demo.ipynb
Ctrl + Enter
依次运行每个cell.