上个月,微软代季峰等研究者发布的一篇论文提出了一种可变形卷积网络,该研究「引入了两种新的模块来提高卷积神经网络(CNN)对变换的建模能力,即可变形卷积(deformable convolution)和可变形兴趣区域池化(deformable ROI pooling)」,详情参阅机器之心专栏文章《》。近日,该研究团队如其承诺的那样在 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) (责任编辑:本港台直播) |