【Object Detection】【maskrcnn_benckmark】Ubuntu16.04 下安装与设置

本文记录 Ubuntu16.04 下安装 maskrcnn_benchmark 的过程.
安装环境:
Ubuntu16.04
CUDA 9.0
python3.6

1. 简介

maskrcnn_benckmarkFacebook Research 下的一个项目。这个项目包含了多种通用目标检测(General Object Detection)算法的 PyTorch 实现。项目工程高度模块化,关键模块使用 cpp/cuda 实现,并将核心功能封装为 Python Package。

maskrcnn-benchmark已经冻结(maskrcnn-benchmark has been deprecated),即它将不在更新。

2. 安装

INSTALL

安装要求:

  • 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.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值