计算机系统应用教程网站

网站首页 > 技术文章 正文

CV中的特征金字塔PANet

btikc 2024-09-14 00:47:01 技术文章 26 ℃ 0 评论

1. 前言

PANet 是 CVPR 2018 的一篇实例分割论文,作者来自港中文,北大,商汤和腾讯优图。论文全称为:Path Aggregation Network for Instance Segmentation ,即用于实例分割的路径聚合网络。PANet 在 Nask RCNN 的基础上做了多处改进,充在 COCO 2017 实例分割比赛上夺冠,同时也是目标检测比赛的第二名。接下来就一起来看看吧。

2. 贡献

PANet 整体上可以看做是对 Mask-RCNN 做了多个改进,充分地融合了特征,具体来说 PANet 的贡献可以总结为如下几点。

  • FPN(这个已经有了,不算论文的贡献)
  • Bottom-Up Path Augmentation
  • Adaptive Feature Pooling
  • Fully-Connected Fusion

3. PANet 整体结构

为了更好地去讲解上面几个小点,先看一下 PANet 的整体结构,如下图所示。

可以看到 PANet 的结构的组成部分就是我们讲的 FPN,Bottom-Up Path Augmentation,Adaptive Feature Pooling,Fully-Connected Fusion 这四个小模块了,接下来我们详细讲解。FPN是特征金字塔(具体可参考我之前博客讲解的)。

5. Bottom-up Path Augmentation

Bottom-up Path Augemtation 的提出主要是考虑到网络的浅层特征对于实例分割非常重要,不难想到浅层特征中包含大量边缘形状等特征,这对实例分割这种像素级别的分类任务是起到至关重要的作用的。因此,为了保留更多的浅层特征,论文引入了 Bottom-up Path Augemtation。我们从 Figure1 中可以看到,作者用红绿两个箭头来表示这个结构是如何起作用的?

红色的箭头表示在 FPN 中,因为要走自底向上的过程,浅层的特征传递到顶层需要经过几十个甚至上百个网络层,当然这取决于 BackBone 网络用的什么,因此经过这么多层传递之后,浅层的特征信息丢失就会比较严重。

绿色的箭头表作者添加了一个 Bottom-up Path Augemtation 结构,这个结构本身不到 10 层,这样浅层特征经过原始 FPN 中的横向连接到 P2 然后再从 P2 沿着 Bottom-up Path Augemtation 传递到顶层,经过的层数不到 10 层,能较好地保存浅层特征信息。注意,这里的 N2 和 P2 表示同一个特征图。 但 N3,N4,N5 和 P3,P4,P5 不一样,实际上 N3,N4,N5 是 P3,P4,P5 融合后的结果。

Bottom-up Path Augemtation 的详细结构如 Figure2 所示,是一个常规的特征融合操作,这里展示的是NiNi 经过一个尺寸为3×33×3,步长为22 的卷积之后,特征图尺寸减小为原来的一半然后和Pi+1Pi+1 这个特征图做 add 操作,得到的结果再经过一个卷积核尺寸为3×33×3,stride=1stride=1 的卷积层得到Ni+1Ni+1。

6. Adaptive Feature Pooling

这一结构做的仍然是特征融合。论文指出,在 Faster-RCNN 系列的标检测或分割算法中,RPN 网络得到的 ROI 需要经过 ROI Pooling 或 ROI Align 提取 ROI 特征,这一步操作中每个 ROI 所基于的特征都是单层特征,FPN 同样也是基于单层特征,因为检测头是分别接在每个尺度上的。比如 ResNet 网络中常用的res5的输出。

在引入 Adaptive Feature Pooling 作者做了 Figure3 这个实验,可以看到图中有 4 条不同的曲线,分别对应了 FPN 网络中的 4 个特征层,然后每一层都会经过 RPN 网络获得 ROI,因此这 4 条曲线就对应了 4 个 ROI 集合。图像中的横坐标表示的是 ROI 集合提取的不同层特征的占比。例如蓝色曲线表示 level1 的特征层,应该是尺度最小的 ROI 的集合,这一类型的 ROI 所提取的特征仅有 30% 是来自 level1 特征层的特征,剩下的 70% 均来自 level2,3,4。其他 level 的特征层同理,因此就有了作者的这个思考和改进,也就是说对每个 ROI 提取不同层的特征并做融合,这对于提升模型效果显然是有好处的。

本文提出的 Adaptive Feature Pooling 则是将单层特征换成多层特征,即每个 ROI 需要和多层特征(论文中是 4 层)做 ROI Align 的操作,然后将得到的不同层的 ROI 特征融合在一起,这样每个 ROI 特征就融合了多层特征。Adaptive Feature Pooling 的详细结构下图 所示。

RPN 网络获得的每个 ROI 都要分别和N2,N3,N4,N5N2,N3,N4,N5 特征层做 ROI Align 操作,这样个 ROI 就提取到 4 个不同的特征图,然后将 4 个不同的特征图融合在一起就得到最终的特征,后续的分类和回归都是基于此最终的特征进行。

7. Fully-Connected Fusion

PANet 最后一个贡献是提出了 Fully-connected Fusion,这是对原有的分割支路 (FCN) 引入一个前景二分类的全连接支路,通过融合这两条支路的输出得到更加精确的分割结果。这个模块的具体实现如下图所示。

从图中可以看到这个结构主要是在原始的 Mask 支路(即带 deconv 那条支路)的基础上增加了下面那个支路做融合。增加的这个支路包含22 个3×33×3 的卷积层,然后接一个全连接层,再经过 reshape 操作得到维度和上面支路相同的前背景 Mask,即是说下面这个支路做的就是前景和背景的二分类,输出维度类似于文中说的28×28×128×28×1。而上面的支路输出维度类似28×28×K28×28×K,其中KK 代表数据集目标类别数。最终,这两条支路的输出 Mask 做融合以获得更加精细的最终结果。

8. 跨卡训练 BN

作者还提到 PANet 的训练使用了跨卡 BN 层计算,引入这个的原因主要是为了在训练过程中 BN 层的计算会更稳定。因为 BN 层的计算依赖 batch_size 的设置,设置得过小会导致 BN 层的参数不稳定,但 Two-Stage 的目标检测算法搭配 caffe 框架,其 batch_size 会非常小,因此跨卡 BN 是必须的。

9. 实验结果

下面的 Table1 展示了 PANet 和 Mask-RCNN,COCO 2016 的冠军 FCIS 算法的分割效果对比。

下面的 Table2 则展示了和 Mask RCNN、FCIS、RentinaNet 算法在 COCO 数据集上的检测效果对比,可以看到。精度提升是很大的。

Tabel3 则展示了这篇论文的消融实验,即文章提出的创新点带来的精度提升,其中 RBL 是这篇文章的 BaseLine,也就是带 FPN 的 Mask-RCNN。

而 Table6 和 Table7 也值得关注,因为这里透漏了在实例分割中的一些涨点方法:

  • Deformable Convolution(DCN)可变性卷积,这天生就适合分割任务吧?
  • Testing tricks,提了 2.5 个 mAP,主要包括 Multi-Scale Tesing,这个比较耗时,但是效果一般都不差。
  • Horizontal Flip Tesing,不了解。
  • larger model 更深更宽的网络一般精度更好。
  • ensemble 模型融合,融合多个了 ResNeXt-101、ResNet-269、SE-ResNeXt-101 等网络的结果。

10. 附录

  • 论文原文:https://arxiv.org/pdf/1803.01534.pdf
  • 代码实现:https://github.com/ShuLiu1993/PANet
  • 参考资料:https://blog.csdn.net/u014380165/article/details/81273343

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表