Facebook Detectron物体检测研究平台实践

1月23日,Facebook 开源了自家的物体检测研究平台 Detectron。Detectron 是 Facebook AI 研究的软件系统,实现了最先进的物体检测算法,包括 Mask R-CNN。Detectron 用 Python 编写实现,并由深度学习框架 Caffe2 (Caffe2应该类似Brain++,内部使用)。
Facebook Detectron物体检测研究平台实践_第1张图片
Detectron 的由来

2016 年 7 月,Detectron 项目正式启动,旨在创建一个基于 Caffe2 的快速灵活的物体检测系统,当时处于早期 alpha 开发。经过一年半的发展,Detectron 已成熟,并支持很多内部项目,比如:Mask R-CNN 和 Focal Loss for Dense Object Detection。这 2 个项目分部拿到了 ICCV 2017 的 Marr Prize 和 Best Student Paper 奖。

由 Detectron 驱动的算法,为重要计算机视觉任务(比如实例分割)提供了直观的模型,并且在近年来我们社区视觉感知系统所取得的空前进步的中发挥了关键作用。

除了研究,许多 Facebook 团队使用 Detectron 平台来培训各种应用的定制模型,包括增强现实和社区完整性。 一旦接受培训,这些模型可以部署在云端和移动设备上。[来自伯乐在线原网址:http://top.jobbole.com/38535/?utm_source=www.jobbole.com&utm_medium=sidebar-top-news]
Detectron的github主页:https://github.com/facebookresearch/Detectron
根据readme的引导我们先安装caffe2框架:
这里我们用python2.7
先安装必要的python包:

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
      build-essential \
      cmake \
      git \
      libgoogle-glog-dev \
      libgtest-dev \
      libiomp-dev \
      libleveldb-dev \
      liblmdb-dev \
      libopencv-dev \
      libopenmpi-dev \
      libsnappy-dev \
      libprotobuf-dev \
      openmpi-bin \
      openmpi-doc
      protobuf-compiler \
      python-dev \
      python-pip                          
sudo pip install \
      future \
      numpy \
      protobuf
      sudo apt-get install -y --no-install-recommends libgflags-dev

接着配置cuda环境,由于caffe2已经能用cuda9.0所以我们用的环境是cuda9.0和cudnn7.0(这里提醒一下,对于GTX1060MAXQ的笔记本建议安装CUDA9.0,对于1080ti卡,虽然安装能安装CUDA8.0,跑caffe也能跑,但跑tensorflow时会发生一些莫名其妙的错误,这里建议安装CUDA9.0,各个框架对CUDA9.0的支持也都差不多了)
在网址:https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=deblocal
下载cuda.deb文件(虽然网上说deb安装会有问题,用.run,但笔者安装时没有问题)
执行:

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

再在英伟达网站上找到cudnnV7.0(英伟达cudnn下载链接经常崩溃,可以到百度上搜一下,百度网盘里也有)

tar -zxvf cudnn-9.0-linux-x64-v7.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

在终端中输入

nvcc -v

若无错则说明配置正确
下载caffe2

git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2

编译安装

make
cd build
sudo make install

在~/.bashrc添加环境变量:

 export PYTHONPATH=$PYTHONPATH:/home/ubuntu/caffe2/build

测试是否安装成功

cd ~ && python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

如果出现success则说明加载成功
对GPU进行测试:

python -m caffe2.python.operator_test.relu_op_test

如果出现

则说明GPU支持成功
接下来安装Detectron需要的一些python库

pip install numpy pyyaml matplotlib opencv-python>=3.0 setuptools Cython mock

安装 COCO API
COCOAPI提供微软COCO数据集Matlab, Python和Lua的API接口.

git clone https://github.com/cocodataset/cocoapi.git 
cd cocoapi/PythonAPI
make
python setup.py install

接下来进行Detectron的安装

git clone https://github.com/facebookresearch/detectron.git
cd detctron/lib
make

测试是否安装成功

cd tests
python test_spatial_narrow_as_op.py 

如果出现

则说明安装成功
先拿facebook训练好的模型来跑一个example,在Detectorn目录下运行:

python2 tools/infer_simple.py \
    --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml \
    --output-dir /tmp/detectron-visualizations \
    --image-ext jpg \
    --wts https://s3-us-west-2.amazonaws.com/detectron/35861858/12_2017_baselines/e2e_mask_rcnn_R-101-FPN_2x.yaml.02_32_51.SgT4y1cO/output/train/coco_2014_train:coco_2014_valminusminival/generalized_rcnn/model_final.pkl \
    demo

便会开始下载模型 总共会下载两个170多兆的,一个400多兆的在/tmp目录下,建议下载完后保存在其他目录
结果如下:
原图:
Facebook Detectron物体检测研究平台实践_第2张图片
识别效果:
Facebook Detectron物体检测研究平台实践_第3张图片
又出来mask-rcnn 突然发现类似行人检测的毕设好简单
此处应有猫:
Facebook Detectron物体检测研究平台实践_第4张图片

关于mask-rcnn的论文将在之后分享,解析
Facebook Detectron物体检测研究平台实践_第5张图片

你可能感兴趣的:(机器学习深度学习)