论文阅读: DCN

Introduction

传统的CNN中,convolutionpooling 的操作已被定死。只能在方正死板的区域内按部就班地映射操作:
这里写图片描述

这种设计显然对于现实场景中遇到ratio(比例)和rotation(旋转角度)多变的的非刚体object,是不够general的。那么怎么办呢?

传统的回避途径有以下两个:

  • 根据先验 加数据:根据先验信息,增加training dataset的ratio和rotation多样性和丰富性;
  • 使用“平移不变”的结构:主要为基于“滑窗”的检测结构。

但是依然无法一劳永逸,原因有二:

  • 对object的 几何变换不general;
  • 对object的 复杂 几何变换不general。

与其回避,不如直面。对于传统的一套fixed的module(普通convolution、普通RoI Pooling),MSRA的Dai Jifeng大佬对应提出了deformable的一套module:Deformable Convolution & Deformable RoI Pooling

本质的解决思路就是,让传统的Convolution和RoI Pooling操作能够 “ 自动形变 ” :
这里写图片描述

通过“deformable”的逐层叠加,使得CNN能 更精准地 (不受ratio、rotation的影响) 读取object的语义:
这里写图片描述

Innovation

Deformable Convolution

普通的Convolution计算公式如下:
这里写图片描述

其中 R R R定义为:
这里写图片描述

Deformable Convolution在其后面简单地加上了一个 “ 2-D offset ” :
这里写图片描述

于是,新的Deformable Convolution计算公式如下:
这里写图片描述

Deformable RoI Pooling

普通的RoI Pooling计算公式如下:
这里写图片描述

同样的,Deformable RoI Pooling也是简单地在其后面加上了一个 “ 2-D offset ” :
这里写图片描述

得到新的Deformable RoI Pooling计算公式如下:
这里写图片描述

Deformable PS RoI Pooling

作者还顺带对自己在R-FCN中提出的PS RoI Pooling进行了一下“deformable”改进:
这里写图片描述

Result

通过实验,发现如果“Deformable conv3×3”逐层叠加三次感受野可以比普通Convolution的叠加更加契合object的实际范围。这也意味着,可能会获得更精准的语义信息来帮助识别:
这里写图片描述

Detection领域和Segmentation领域的几大扛把子算法也出来为“Deformable套件”代言:“自从用了MSRA的Deformable,mAP越来越高。” (= ̄ω ̄=) 
这里写图片描述

Note:

  • 之所以只用在最后几层,是因为:后面细节信息丢失较多,才需要deform来将object更好地刻画。

最后,连COCO数据集都站出来,用满表全胜的数据为“Deformable套件”打call:“Deformable就是好,稳定涨点,谁用谁知道。。。” ( ̄▽ ̄)~*
这里写图片描述

Thinking

简单地说,deformable module就是在传统module的输出后面加上了一个 “2-D offset”。

在我看来,DCN的好处主要有四:

  • 设计简单;
  • 增加的参数量少;
  • 支持training end-to-end;
  • 对各复杂的视觉task都general。

当大家趋之若鹜压榨Feature/Image Pyramid、Head、Proposal、Speed/accuracy trade-off剩余价值的时候,DCN却另辟蹊径,洞察本质,对最基石的 Conv / RoI_Pooling 计算方式开刀。不得不说,insight很棒,简直拨云见雾,天马行空。


[1] Deformable Convolutional Networks

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页