资源 | 微软发布可变形卷积网络代码:可用于多种复杂视觉任务

2017 年 5 月 6 日 机器之心

选自Github

机器之心编译

编辑:吴攀


上个月,微软代季峰等研究者发布的一篇论文提出了一种可变形卷积网络,该研究「引入了两种新的模块来提高卷积神经网络(CNN)对变换的建模能力,即可变形卷积(deformable convolution)和可变形兴趣区域池化(deformable ROI pooling)」,详情参阅机器之心专栏文章《专栏 | MSRA 视觉组最新研究:可变形卷积网络》。近日,该研究团队如其承诺的那样在 GitHub 上公布了相关代码。机器之心对该项目的 README.md 内容进行了编译介绍。


  • 项目地址:https://github.com/msracver/Deformable-ConvNets

  • 论文地址:https://arxiv.org/abs/1703.06211


本代码库的主要贡献者包括:熊郁文、齐浩之、张国栋、李益、代季峰、Bin Xiao、危夷晨。


声明


这是可变形卷积网络(Deformable ConvNets)的官方实现,需要注意:


  • 这个原实现基于我们在 Windows 上的内部 Caffe 版本。如果切换平台,由于各种平台有许多不同的具体细节,所以最终结果的准确度和运行时间会稍有不同。

  • 本代码是在官方的 MXNet@(commit 62ecb60) 测试的:https://github.com/dmlc/mxnet/tree/62ecb60,并使用了额外的用于可变形卷积网络的算子。

  • 我们基于在 ImageNet 上预训练的 ResNet-v1-101训练了我们的模型,并且使用了一个模型转换器。被转换后模型的准确度略低一点(在 ImageNet 验证集上的 Top-1 Error:24.0% v.s. 23.6%)。

  • 目前其仅包含使用 R-FCN 的可变形卷积网络。使用 DeepLab 的可变形卷积网络将在不久之后发布。

  • 本代码库使用了来自 MXNet rcnn example 和 mx-rfcn 的代码


介绍


可变形卷积网络最早在这篇 arXiv 技术报告中描述:https://arxiv.org/abs/1703.06211。


R-FCN 最早见于这篇 NIPS 2016 论文:https://arxiv.org/abs/1605.06409。



证书


© Microsoft, 2017. Licensed under an Apache-2.0 license.


引用可变形卷积网络


如果你要在你的研究中使用可变形卷积网络,请考虑引用:


@article{dai17dcn,

 Author = {Jifeng Dai, Haozhi Qi, Yuwen Xiong, Yi Li, Guodong Zhang, Han Hu, Yichen Wei},

 Title = {Deformable Convolutional Networks},

 Journal = {arXiv preprint arXiv:1703.06211},

 Year = {2017}

}

@inproceedings{dai16rfcn,

 Author = {Jifeng Dai, Yi Li, Kaiming He, Jian Sun},

 Title = {{R-FCN}: Object Detection via Region-based Fully Convolutional Networks},

 Conference = {NIPS},

 Year = {2016}

}



主要结果




注:运行时间是在单个 Maxwell Titan X GPU 上统计得到的(推理阶段的 mini-batch 大小是 1)


软件需求


1.Python 软件包里面可能没有 cython、opencv-python >= 3.2.0 和 easydict。如果你的系统已经设置了 pip,你可以通过以下代码获取和安装这些包:


pip install Cython

pip install opencv-python==3.2.0.6

pip install easydict==1.6


2. 对于 Windows 用户,编译 cython 模块需要 Visual Studio 2015


硬件需求


任何至少有 4GB 内存的英伟达 GPU 应该都可以。


安装


1. 克隆这个可变形卷积网络代码库:


git clone https://github.com/msracver/Deformable-ConvNets.git


2.Windows 用户请运行 cmd .\init.bat;Linux 用户请运行 sh ./init.sh。该脚本会自动编译 cython 模块并创建一些文件夹。


3. 将 ./rfcn/operator_cxx 中的 operator 复制到 $(YOUR_MXNET_FOLDER)/src/operator/contrib 并重新编译 MXNet。


4. 请按照 MXNet 的官方指南安装 MXNet。对于高阶用户,你可以将你的 Python 包放到 ./external/mxnet/$(YOUR_MXNET_PACKAGE),并修改 ./experiments/rfcn/cfgs/*.yaml 中的 MXNET_VERSION 到 $(YOUR_MXNET_PACKAGE)。这样你就可以快速切换不同的 MXNet 版本了。


演示(demo)


1. 要使用有我们训练的模型的 demo(在 COCO trainval 上训练的),请从 OneDrive 手动下载该模型:https://1drv.ms/u/s!AoN7vygOjLIQqmE7XqFVLbeZDfVN,并将其放置在 model/ 文件夹中。确保其看起来像这样:


./model/rfcn_dcn_coco-0000.params

./model/rfcn_coco-0000.params


2. 运行 demo:


python ./rfcn/demo.py


其默认运行可变形 R-FCN(Deformable R-FCN),并会给出一些预测结果,要运行 R-FCN,请使用:


python ./rfcn/demo.py --rfcn_only


我们不久后就将发布能够可视化其变形效果的可视化工具。


为训练和测试的准备


1. 请下载 COCO 和 VOC 2007+2012 数据,并按如下方式放置:


./data/coco/

./data/VOCdevkit/VOC2007/

./data/VOCdevkit/VOC2012/


2. 请从 OneDrive 手动下载在 ImageNet 上预训练的 ResNet-v1-101:https://1drv.ms/u/s!Am-5JzdW2XHzhqMEtxf1Ciym8uZ8sg,并将其放置到 .model/ 文件夹。确保其看起来像这样:


./model/pretrained_model/resnet_v1_101-0000.params


使用


1. 我们所有的实验设置(GPU 型号、数据集等)都保存为 yaml 文件,位于文件夹 ./experiments/rfcn/cfgs


2. 目前已经提供了 4 个配置文件,即用于 COCO/VOC 的 R-FCN 和用于 COCO/VOC 的 Deformable R-FCN。我们分别在 COCO 和 VOC 上使用了 8 个和 4 个 GPU 来训练模型。


3. 为了执行实验,请运行以对应配置文件为输入的 Python 脚本。比如,为了使用 ResNet-v1-101 在 COCO 上训练和测试可变形卷积网络,请使用以下命令:


python experiments\rfcn\rfcn_end2end_train_test.py --cfg


4. 请查看配置文件和我们的代码来了解更多细节。


其它


推荐使用不带 CuDNN 的 MXNet 版本。


代码已经在以下环境中进行了测试:


  • Ubuntu 14.04,一个 Maxwell Titan X GPU 和 Intel Xeon CPU E5-2620 v2 @ 2.10GHz

  • Windows Server 2012 R2,8 个 K40 GPU 和 Intel Xeon CPU E5-2650 v2 @ 2.60GHz

  • Windows Server 2012 R2,4 个 Pascal Titan X GPU 和 Intel Xeon CPU E5-2650 v4 @ 2.30GHz 



点击阅读原文,报名参与机器之心 GMIS 2017 ↓↓↓

登录查看更多
0

相关内容

CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
【CVPR2020-百度】用于视觉识别的门控信道变换
专知会员服务
12+阅读 · 2020年3月30日
专知会员服务
60+阅读 · 2020年3月19日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
38+阅读 · 2020年2月21日
近期必读的7篇 CVPR 2019【视觉问答】相关论文和代码
专知会员服务
35+阅读 · 2020年1月10日
近期必读的9篇 CVPR 2019【视觉目标跟踪】相关论文和代码
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
用PyTorch实现各种GANs(附论文和代码地址)
实战 | 基于深度学习模型VGG的图像识别(附代码)
七月在线实验室
12+阅读 · 2018年3月30日
胶囊网络资源汇总
论智
7+阅读 · 2018年3月10日
开源自动语音识别系统wav2letter (附实现教程)
七月在线实验室
9+阅读 · 2018年1月8日
【下载】PyTorch 实现的YOLO v2目标检测算法
专知
15+阅读 · 2017年12月27日
徒手实现CNN:综述论文详解卷积网络的数学本质
机器之心
25+阅读 · 2017年11月19日
资源 | 图森未来开源:Mask R-CNN的完整MXNet复现
机器之心
6+阅读 · 2017年10月26日
A survey on deep hashing for image retrieval
Arxiv
14+阅读 · 2020年6月10日
CoCoNet: A Collaborative Convolutional Network
Arxiv
6+阅读 · 2019年1月28日
Arxiv
5+阅读 · 2018年10月11日
Arxiv
8+阅读 · 2018年5月15日
Arxiv
6+阅读 · 2018年1月11日
VIP会员
相关VIP内容
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
【CVPR2020-百度】用于视觉识别的门控信道变换
专知会员服务
12+阅读 · 2020年3月30日
专知会员服务
60+阅读 · 2020年3月19日
【ICLR-2020】网络反卷积,NETWORK DECONVOLUTION
专知会员服务
38+阅读 · 2020年2月21日
近期必读的7篇 CVPR 2019【视觉问答】相关论文和代码
专知会员服务
35+阅读 · 2020年1月10日
近期必读的9篇 CVPR 2019【视觉目标跟踪】相关论文和代码
[综述]深度学习下的场景文本检测与识别
专知会员服务
77+阅读 · 2019年10月10日
Top
微信扫码咨询专知VIP会员