专栏首页晓飞的算法工程笔记SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020
原创

SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020

论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡。PConv和SEPC对SOTA的检测算法有显著地提升 ,并且没有带来过多的额外计算量  

来源:晓飞的算法工程笔记 公众号

论文: Scale-Equalizing Pyramid Convolution for Object Detection

Introduction


  特征金字塔是解决物体尺度问题的重要手段,但是不同level的特征图其实存在较大的语义差距。为了消除这些语义差距,很多研究专注于如何加强特征的融合,但这些研究大都直接将特征图缩放相加,没有很好地考虑特征金字塔的内在属性。受尺度空间理论(多尺度提取特征点)的启发,论文提出PConv(pyramid convolution),使用3-D卷积来关联相近的特征图,挖掘尺度间的相互作用。考虑到特征金字塔的层间特征变化较大,层间各点的对应无规律,论文提出SEPC(scale-equalizing pyramid convolution)对特征金字塔的高层特征进行可变形卷积,能够自适应实际的尺度变化,保持层间尺度均衡。

  论文的主要贡献如下:

  • 提出轻量级金字塔卷积PConv,对特征金字塔进行3-D卷积来挖掘内在尺度的关联性。
  • 提出尺度均衡的金字塔卷积SEPC来减少特征金字塔与高斯金字塔间差异(论文证明了PConv在高斯金字塔上具有尺度不变性)。
  • 该模块能够提升SOTA single-stage目标检测算法的性能,而且几乎不影响推理速度。

Pyramid convolution


  PConv(pyramid convolution)其实是个3-D卷积,横跨尺度和空间维度,如图4a所示,PConv可表示为N个不同的2-D卷积。

  但不同pyramid level的特征图大小是不同的,为了容纳不同的尺寸,在PConv在处理不同的特征图时使用不同的stride,论文采样$N=3$,首个卷积核的stride为2,最小的的卷积核的stride为0.5。

  PConv可表示为公式1,$w1$、$w_0$和$w{-1}$为3个独立的2-D卷积核,$x$为输入的特征图,$*_{s2}$代表stride为2的卷积核。

  stride为0.5的卷积核先对特征图双线性上采样2倍,再用stride为1的卷积核进行处理。PConv也使用zero-padding,对于底层和顶层的pyramid level仅需使用公式2的其中两项即可,PConv的计算量大约为原始FPN的1.5倍。

Pipeline

  如图5a所示,RetinaNet可看作是$N=1$的PConv,将4个Conv head替换成$N=3$的PConv head,堆叠的PConv能够有效地逐步提高相关性,而且不会带来过多的额外计算。但为了尽可能减少计算量,可以选择分类和定位分支先共享4层PConv,再额外分别添加一层普通卷积层,如图5b所示,这样设计的计算量甚至比原生的RetinaNet还要少,具体计算可以看原文Appendix 1。

Integrated batch normalization (BN) in the head

  PConv使用共享的BN层,统计feature pyramid中所有特征图,而不是单图统计。由于统计来自于pyramid内所有的特征图,方差会变得更小。这样,即使使用很小的batch size也可以很好地训练BN层(方差较稳定)。

Scale-equalizing pyramid convolution


  PConv对于不同的level都使用固定的卷积核大小,在高斯金字塔上(模糊程度不严重且高斯核接近特征图缩放比例),PConv能够提取尺度不变的特征,具体证明可以看原文Appendix 3。

  但实际中,由于多层卷积和非线性操作的存在,特征金字塔的模糊程度比高斯金字塔要严重得多(特征的缩放程度可能跟特征图大小不成比例),使用固定的卷积核大小很难提取尺度不变的特征。为此,论文提出SEPC(scale-equalizing pyramid convolution),对除最底层外的高层特征使用可变形卷积,单独预测一个offset,能够自适应各层的模糊程度,保持特征图间的尺度均衡,从而提取尺度不变的特征。

  SEPC主要有以下好处:

  • 可变形卷积的自适应性能够处理特征金字塔较大的层间模糊程度。
  • 消除特征金字塔与高斯金字塔间的差异(论文证明PConv能够对高斯金字塔提取特征不变的特征)。
  • 由于高层特征的卷积计算量相对于低层减少了4倍(面积减少),对高层加入可变形卷积仅带来少量额外的计算量。

  SEPC分为两个版本,SEPC-full对图5b的Combined head和Extra head加入SEPC,而SEPC-lite则仅对Extra head加入SEPC。

Experiments


Single-stage object detectors

Effect of each component

Comparison of different BN implementations in the head

  BN层的输出$y=\gamma \frac{x-\mu}{\sigma} + \beta$,$\gamma$和$\beta$为参数,$\mu$和$\sigma$为统计结果,图7的三种BN的对比,其中Integrated BN(iBN)为论文提出的共享BN,全部参数和统计共享

Comparison with other feature fusion modules

Comparison with state-of-the-art object detectors

Extension to two-stage object detectors

CONCLUSION


  论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡。PConv和SEPC对SOTA的检测算法有显著地提升,并且没有带来过多的额外计算量。

如果本文对你有帮助,麻烦点个赞或在看呗~undefined更多内容请关注 微信公众号【晓飞的算法工程笔记】

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于层级表达的高效网络搜索方法 | ICLR 2018

    论文: Hierarchical Representations for Efficient Architecture Search

    VincentLee
  • YOLACT++ : 实时实例分割,从29.8mAP/33.5fps到34.1mAP/33.5fps

    论文: YOLACT++ Better Real-time Instance Segmentation

    VincentLee
  • Spiking-YOLO : 前沿性研究,脉冲神经网络在目标检测的首次尝试 | AAAI 2020

    论文: Spiking-YOLO: Spiking Neural Network for Energy-Efficient Object Detection

    VincentLee
  • "爱(AI)与你同行系列"(1):从哪三个方面入手做好特征选择工程?

    今天我们聊一聊特征工程方面的知识,随着大数据时代的到来,特征工程发挥着越来越重要的作用。当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行...

    double
  • 爱(AI)与你同行系列"(1):从哪三个方面入手做好特征选择工程?

    今天我们聊一聊特征工程方面的知识,随着大数据时代的到来,特征工程发挥着越来越重要的作用。当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行...

    double
  • 【PAT520 钻石争霸赛】7-2 真的恭喜你 (10分)

    当别人告诉你自己考了 x 分的时候,你要回答说:“恭喜你考了 x 分!”比如小明告诉你他考了90分,你就用汉语拼音打出来 gong xi ni kao le 9...

    韩旭051
  • 信息收集工具(ReconDog)

    ReconDog是一个你用来做基础信息收集的工具,它使用API来工作来使你的信息不被暴露

    bboysoul
  • 5 个非常有用的 Rust 小技巧

    自从做了 https://github.com/chainx-org/ChainX 项目以后,主力语言就转到了 Rust,今天刚好这个文章,比较剪短,跟大家分...

    用户1558438
  • 谷歌力作:神经网络训练中的Batch依赖性很烦?那就消了它!

    优化神经网络方法千千万,批量归一化(Batch Normalization,BN)就是其中之一。

    量子位
  • Component之Ping

    不管用哪个OS,做过网络应用的,应该都用过ping命令吧,它通过发送ICMP的ECHO_REQUEST报文,来测试对端计算机在网络上是否可达。VxWorks当然...

    Taishan3721

扫码关注云+社区

领取腾讯云代金券