mmdetection安装

商汤科技(2018 COCO 目标检测挑战赛冠军)和香港中文大学最近开源了一个基于Pytorch实现的深度学习目标检测工具箱mmdetection,支持Faster-RCNN,Mask-RCNN,Fast-RCNN等主流的目标检测框架,现在又加入Cascade-RCNN、SSD以及其他一系列目标检测框架。目前没有yolo的计划hhh。

相比于Facebook开源的Detectron框架,作者声称mmdetection有三点优势:performance稍高、训练速度稍快、所需显存稍小。

项目需要,这个项目开源的时间又比较短,相关教程比较少啦,就记录下自己踩的坑给别人铺路吧。

本人的系统环境:

Ubuntu 16.04
Cuda 9.0 + Cudnn 7.1.3
Python 3.6 (mmdetection要求Python版本需要3.4+)
Anaconda 3 (可选)
这里推荐大家使用Anaconda,可以比较方便的创建Python虚拟环境,避免不同的Python库之间产生冲突。在安装mmdetection之前,需要安装以下几个依赖库:

PyTorch 0.4.1 和 torchvision
Cython
mmcv

下面是我的安装和测试步骤,以Anaconda 3为例。

1.安装anaconda3 

这里官网https://www.anaconda.com/download/#linux 找对应的python版本即可,down下来之后 bash下载下来的.sh文件。

然后一路yes 即可。现在的版本自动加入~/.bashrc中,不需要手动添加路径啦。

下载包的过程很慢,因为默认是国外的源。推荐换源。不要用清华的源,反正我清华的源下着下着老是down掉了,用中科大的源。

sudo gedit ~/.condarc

然后替换下面的代码:

channels:
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
  - https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
  - https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
show_channel_urls: true

保存后source一下即可。

2. 使用conda创建Python虚拟环境,这样就创建了名为mmdetection的Python3.6环境,并且在terminal中激活

conda create -n mmdetection python=3.6
source activate mmdetection

3. 安装pytorch0.4.1 gpu版本,这里pytorch0.4.1 官网已经找不到了 需要翻墙才能找到 所以不建议pip安装,conda安装比较稳,反正我是被坑的 清华的源下载pytorch老是崩,pip方法又装不上,可以说来来回回折腾了好几遍了。 github mmdetection上说现在也支持1.0的了。没有人去弄过我不想当第一个吃螃蟹的人 就只在这里贴一下,如果有人实在想用pytorch1.0的话。

https://github.com/open-mmlab/mmdetection/pull/157

不想的话老老实实按照下面安装0.4.1吧。

conda install pytorch=0.4.1 torchvision -c pytorch

安装好以后,进入Python环境,输入以下代码测试是否安装成功,不报错则说明安装成功

import torch
import torchvision

在这里有一个困了我一天的天坑 , 我import torch的时候报了下面的错

>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/szagoruyko/anaconda/lib/python2.7/site-packages/torch/__init__.py", line 1, in <module>
    from torch._C import *
ImportError: dlopen(/Users/szagoruyko/anaconda/lib/python2.7/site-packages/torch/_C.so, 2): Symbol not found: _THRefcountedMapAllocator
  Referenced from: /Users/szagoruyko/anaconda/lib/python2.7/site-packages/torch/lib/libshm.dylib
  Expected in: /Users/szagoruyko/torch/install/lib/libTH.dylib
 in /Users/szagoruyko/anaconda/lib/python2.7/site-packages/torch/lib/libshm.dylib

(上述来自github的描述,我的报错忘记截图了)

 网上给的一个最相关的解答竟然是重装conda或者降回到torch0.4.0 可是mmdetection必须要求0.4.1啊! 我就傻傻的重装了好几次 带着中科大的源也偶尔下载失败,耗了一天,最后在github上找到解答。是机器之前有人装过detectron,里面装过pytorch,在~/.bashrc中加入了 pytorch的 PATH,导致冲突,注释掉之前的即可。

4.安装cython

conda install  cython

5.安装mmcv

git clone https://github.com/open-mmlab/mmcv.git
cd mmcv
pip install .

注意pip install 后面有个点,别漏了

6.安装mmdetection

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
./compile.sh
python setup.py install

到此,我们就完成了mmdetection及其依赖库的安装

7.测试demo

将下方的代码写入py文件,并存放到mmdetection文件夹目录下,然后运行。该代码的功能是检测图片中的目标,测试模型是官方给出的Faster-RCNN-fpn-resnet50的模型,运行代码会自动下载模型。由于模型是存储在亚马逊云服务器上,速度可能会稍慢。

import mmcv
from mmcv.runner import load_checkpoint
from mmdet.models import build_detector
from mmdet.apis import inference_detector, show_result

cfg = mmcv.Config.fromfile('configs/faster_rcnn_r50_fpn_1x.py')
cfg.model.pretrained = None

# 构建网络,载入模型
model = build_detector(cfg.model, test_cfg=cfg.test_cfg)

_ = load_checkpoint(model, 'https://s3.ap-northeast-2.amazonaws.com/open-mmlab/mmdetection/models/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth')

# 测试一张图片
img = mmcv.imread('test.jpg')
result = inference_detector(model, img, cfg)
show_result(img, result)

结果:


  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值