(二十)论文阅读 | 目标检测之SNIPER


简介

在这里插入图片描述

图1:论文原文

论文是发表在 N I P S   2018 {\rm NIPS\ 2018} 上的一篇关于目标检测的论文。如标题所示,论文的主要贡献是提出一种高效的多尺度训练方法,实际上包含了对 S N I P {\rm SNIP} 的改进。实验结果为在 C O C O {\rm COCO} 数据集上,基于 F a s t e r R C N N + R e s {\rm Faster–RCNN+Res–} N e t 101 {\rm Net101} 及论文提出的方法,其 m A P {\rm mAP} 可达 47.6 % {\rm 47.6\%} 。在速度方面,单 G P U {\rm GPU} 每秒可处理 5 {\rm 5} 张输入图像。
论文原文 源码


0. Abstract

论文提出一种实例级的多尺度训练方法, S N I P E R {\rm SNIPER} 。与传统处理图像金字塔的方式(逐层逐像素处理)不同, S N I P E R {\rm SNIPER} 仅关注标注框附近的上下文区域(文中称之为 c h i p s chips ,本文译为碎片)。同时,这里每层标注框的选取方式参考 S N I P {\rm SNIP} ,即仅选择特定尺寸的标注框。在生成负样本时,碎片通过 R P N {\rm RPN} 网络生成。因此,在训练过程中,碎片是根据图像中场景的复杂性自适应生成的。最后, S N I P E R {\rm SNIPER} 打破了想要在实例级任务上获得好的结果,其模型输入必须是高分辨率图像的观点。
论文贡献:(一)提出一种高效的多尺度训练方法,可以有效减少模型的计算量,在获得 S N I P {\rm SNIP} 相当精度的前提下,速度是其 3 {\rm 3} 倍之多;(二)指出在训练高性能目标检测器时,我们不要仅关注输入图像的分辨率,而要更加注重采样的正负样本的质量。


1. Introduction

作者根据人类视觉系统的规律得出:当我们集中于附近的目标时,远处的目标会变得模糊 ,并且我们很难同时关注不同尺度的目标;同时在给定时间点,我们仅能够有效处理小范围视野的信息,自然而然地忽略掉视野中的其他内容。而当前实例级的视觉识别任务,如目标检测,偏离了这种处理视觉信息的方式。通常为了实现多尺度训练, R C N N {\rm RCNN} 系列等方法基于金字塔结构逐层逐像素地处理,这带来了计算量的显著增加。

S N I P {\rm SNIP} 所作的工作的就是在多尺度训练中,忽略掉极端尺寸目标的梯度,如高分辨率图中的大目标和低分辨率图中的小目标等。针对 S N I P {\rm SNIP} 的工作,作者指出是否在金字塔上处理整幅图像(对应于文中提出的裁剪策略)?是否可以仅在目标周围采样(忽略掉图中的其余区域,对应于第一段的内容)?

同时作者也指出,忽略掉图像中的某些区域能够带来计算量的减少,但同时也有可能丢失重要信息。所以在多尺度训练过程中,应权衡计算量、上下文、负样本采样(如何高效地忽略掉图像的背景区域,同时不丢失重要信息)等方面。由此,作者提出 S N I P E R {\rm SNIPER} ,它基于图像内容在整幅图像中自适应地采样碎片。其中,正类碎片基于标注实例得到,使用 R P N {\rm RPN} 产生负类碎片(这两个方面后面会单独说明)。作者指出, S N I P E R {\rm SNIPER} 能够获得同 S N I P {\rm SNIP} 相当的精度,同时大幅提升了模型的推理速度。


2. Background

我们首先来介绍文中大量提及的 R C N N {\rm RCNN} F a s t   R C N N {\rm Fast\ RCNN}
在这里插入图片描述

图2:RCNN

首先对于输入图像,使用 S e l e c t i v e   S e a r c h {\rm Selective\ Search} 算法产生约 2 k {\rm 2k} 个建议框。然后对于每个建议框,将其尺寸调整为 224 × 224 {\rm 224×224} (感觉是为了迎合 I m a g e N e t {\rm ImageNet} 数据集的预训练模型?)。对于每个调整尺寸后的建议框,使用 C N N {\rm CNN} 提取特征,最后进行回归操作和使用 S V M {\rm SVM} 分类。在 R C N N {\rm RCNN} 中,由于所有的建议区域都会被调整为固定尺寸,检测模型只用适应这一种固定的尺寸,所以 R C N N {\rm RCNN} 具有良好的尺度不变性。但同时我们也可以看到,由于没有共享卷积运算, R C N N {\rm RCNN} 模型的计算量验证依赖于建议区域的数量。

在这里插入图片描述

图3:Fast RCNN

R C N N {\rm RCNN} 最大的不同是, F a s t   R C N N {\rm Fast\ RCNN} 将利用 S e l e c t i v e   S e a r c h {\rm Selective\ Search} 产生的建议区域映射到特征图上(如上图中的红色框所示),从而实现了卷积计算的共享。然后,使用 R o I {\rm RoI} 池化将映射后的建议区域调整为固定尺寸,最后进行回归操作和使用 S o f t m a x {\rm Softmax} 分类。但同时我们注意到,不同大小的目标实质上是在同一尺度下的特征图上处理的,这破坏了 R C N N {\rm RCNN} 原来的尺度不变性(即 F a s t   R C N N {\rm Fast\ RCNN} 必须适应不同尺度图像的输入,即模型需要在多尺度条件下训练才能保证其检测效果的鲁棒性)。

作者综合分析 R C N N {\rm RCNN} F a s t   R C N N {\rm Fast\ RCNN} 的优势和劣势,所提出的 S N I P E R {\rm SNIPER} 通过产生特定尺度的碎片保留了二者的优点,这些碎片涵盖了尽可能多的特定尺度的建议区域。像 F a s t   R C N N {\rm Fast\ RCNN} 一样, S N I P E R {\rm SNIPER} 对在碎片内的所有建议区域进行高效的分类(将 S N I P E R {\rm SNIPER} 中的碎片类比为 F a s t {\rm Fast} R C N N {\rm RCNN} 的特征图,碎片内的建议区域即为 F a s t   R C N N {\rm Fast\ RCNN} 中映射到特征图上的建议区域)。同时,由于 S N I P E R {\rm SNIPER} 不对含大目标的图像进行上采样、忽略容易分类的背景区域,使其比 F a s t {\rm Fast} R C N N {\rm RCNN} 的训练速度更快。

作者指出在 S N I P {\rm SNIP} 中,尽管极端尺寸目标的梯度被忽略(即不参与训练),它仍可被看做是几乎使用了图像金字塔的所有像素,这同样会产生大量的计算。( S N I P {\rm SNIP} 仍基于图像金字塔,虽然每层上可能是仅处理了少量像素,但所有层合起来则几乎处理了图像中的所有像素)而 S N I P E R {\rm SNIPER} 的做法是:从多尺度的金字塔上固定地采样大小为 512 × 512 {\rm 512×512} 的区域。因此在极端大的图像中, 512 × 512 {\rm 512×512} 可能仅关注原图的 1 / 10 {\rm 1/10} 的区域。但同时,由于 S N I P E R {\rm SNIPER} 中的碎片仅根据标注实例产生,其相对于原图分辨率可能很小(如根据一个小的标注实例产生一个较小的碎片,其中包含的背景区域即负样本数量有限)。所以,作者指出产生负类碎片的过程非常重要。论文的做法是首先训练一个 R P N {\rm RPN} ,而使用 R P N {\rm RPN} 产生可能包含目标的区域,将这些产生的区域定义为负类碎片。最后,相比于 S N I P {\rm SNIP} S N I P E R {\rm SNIPER} 的精度与其相当,但后者的速度是前者的 3 {\rm 3} 倍之多!


3. SNIPER

3.1 Chip Generation

{ s 1 , s 2 , . . . , s i , . . . , s n } \{s_1,s_2,...,s_i,...,s_n\} 表示图像的多个尺度,产生的碎片集合为 C i C^i 。在特定尺度下,首先图像的尺寸被调整为 W i × H i W^i×H^i ,然后以 d d 为间隔放置 K × K K×K (上述提到的 512 × 512 512×512 )的碎片(类似于滑动窗口的思路,即将原任何尺寸的图裁剪出 512 × 512 512×512 大小的区域)。对于图像的每个尺度,均会产生正类碎片和父类碎片,其详细内容如下。

3.2 Positive Chip Selection

对于尺度 i i ,规定一个有效范围 R i = [ r m i n i , r m a x i ] , i [ 1 , n ] R^i=[r_{min}^i,r_{max}^i],i∈[1,n] ,该范围决定了参与训练的标注框(这借鉴了 S N I P {\rm SNIP} 的思想),有效的标注框集合记为 G i G^i 。然后,选择包含尽可能多标注实例的碎片作为正类碎片(标注框整体处于碎片内部称为包含),将所有尺度下产生的碎片集合记为 C p o s i C^i_{pos} ,最后保证每个标注框至少处于至少一个碎片内。由于上述规定的范围可能存在重叠部分,一个标注框可能处于多个碎片内部。同时,某个标注框可能会被碎片截断,而剩余部分仍会保留在碎片内部。下图是正类碎片的选取过程:在这里插入图片描述

图4:Positive Chip Selective

如上图左侧:绿色边框为标注的实例框,而其他颜色边框表示根据原图产生的碎片,这些碎片集合包含了所有的标注框。右图是产生的碎片的细节,其中红色边框为无效的标注框,即在一个碎片内仅处理特定尺寸范围的目标。同时我们也可以看到,第二幅图和第三幅图中的电视均被视为有效标注、第四幅图中的椅子标注被截断。

注意这个过程同 R C N N {\rm RCNN} 中处理候选区域的过程由异曲同工之妙,同样是根据原图裁剪得到固定大小的区域,这就使得 S N I P E R {\rm SNIPER} 具有 R C N N {\rm RCNN} 的尺度不变性。这样,对于每一个碎片内部,由于碎片是通过不同尺度得到的,大目标和小目标的检测都得到了充分的保证。

3.3 Negative Chip Selection

由于上述过程产生的正类碎片包含了所有的标注实例,但同时由于背景区域没有参与训练,这会导致假阳率的增大(由于大量正样本而只包含极少数的负样本,模型倾向于产生正类结果,最终模型基本会将所有的输入当作正类结果)。所以,作者指出有效地产生父类碎片仍非常重要。同时由于图像中的绝大部分区域为背景,这些区域是容易被分类的,从而可以避免这部分区域的相关计算。

文中具体的做法是:首先使用一个预训练的 R P N {\rm RPN} 用于产生建议区域,这些区域可以大致指示其内部是否包含实例。如果某个某个碎片内不包含任何建议区域,那么它其中肯定不包含实例,即容易分类的样本,我们可以忽略这些区域的计算。接着,剔除那些被正类碎片包含的建议区域。然后同正类碎片的选取过程一致,将包含尽可能多的建议区域的碎片称为负类碎片,将所有尺度下产生的碎片集合记为 C n e g i C^i_{neg} 。下图是正类碎片的选取过程:在这里插入图片描述

图5:Negative Chip Selective

如上图第一行,图中的绿色边框为标注边界框。第二行中的橙色框表示由 S N I P E R {\rm SNIPER} 选取的负类碎片,其中红色圆点表示某个建议框的中心。

注意这个过程将可能包含假阳样本的区域作为负类碎片(由于该区域包含大量由 R P N {\rm RPN} 产生的候选区域),同时负样本根据负类碎片得到,这样得到的负样本是难分样本,这有利于增强模型检测鲁棒性。

3.4 Label Assignment

S N I P E R {\rm SNIPER} 的训练过程与 F a s t e r   R C N N {\rm Faster\ RCNN} 类似,即使用网络产生建议区域的同时对其分类。在训练过程中,通过 R P N {\rm RPN} 产生的建议区域根据碎片内的标注框分配类别标签和确定回归目标。具体地,将与任何标注框的交并比大于 0.5 {\rm 0.5} 的建议区域确定为正样本。同时像 S N I P {\rm SNIP} 一样,使用有效的标注框给 R P N {\rm RPN} 产生的区域分配标签,通过无效的标注框过滤掉无效的先验框。

3.5 Benefit

在训练过程中,从整个数据集中随机采样碎片以产生批训练数据。对于 C O C O {\rm COCO} 数据集,每幅图像平均产生 3 {\rm 3} 512 × 512 {\rm 512×512} 大小的碎片。在训练 800 × 1333 {\rm 800×1333} 的图像时, S N I P E R {\rm SNIPER} 所处理的像素数仅为其他方法的 30 % {\rm 30\%} 。同时由于每个碎片的大小是固定的,这使得我们可以在增大训练批次的同时可以满足 G P U {\rm GPU} 的充分利用。

以此,我们可以得出:在实例级识别任务中使用 S N I P E R {\rm SNIPER} 可以消除输入图像分辨率的瓶颈,即我们可以通过再采样的碎片来训练模型。即前文提到的, S N I P E R {\rm SNIPER} 否定了想要在实例级任务上获得好的结果,其模型输入必须是高分辨率图像的观点。


4. Experiments Details

在这里插入图片描述

图6:召回率

上述给出是否采样负类碎片得到的模型的召回率的比较。由结果我们可以看到,是否使用负类碎片不会显著影响模型的召回率。作者指出这是由于假阳率的改变不会影响召回率。
在这里插入图片描述

图7:AP

上述给出是否采样负类碎片得到的模型的平均准确率的比较。由结果我们可以看到,是否使用负类碎片将会显著影响模型的精度,原因在上文已分析过了。在这里插入图片描述

图8:目标检测实验结果对比

上图中最后两行是 S N I P E R {\rm SNIPER} 用于实例分割的结果。

文章还包含许多实验设置的细节,以及是如何设计消融实验的,详细内容请参考原文。


5. Conclusion

论文提出一种高效的多尺度训练方案,在 S N I P {\rm SNIP} 的基础上, S N I P E R {\rm SNIPER} 更加注重减少模型的计算量。 S N I P E R {\rm SNIPER} 通过从多尺度金字塔中裁剪固定的碎片用于训练,采样的正类碎片包含了图像中的有效信息、采样的负类碎片可以为模型提供高质量的负样本,从而提高了模型检测精度和鲁棒性。作者最后指出,以后可以在碎片尺寸(本文为 512 × 512 {\rm 512×512} )上开展相关研究工作。

由于没有阅读源码,本文只总结了 S N I P E R {\rm SNIPER} 的大体结构和信息,详细内容请阅读论文原文


参考

  1. Singh B, Najibi M, Davis L S. SNIPER: Efficient multi-scale training[C]//Advances in neural information processing systems. 2018: 9310-9320.
  2. https://blog.csdn.net/u014380165/article/details/82284128?utm_source=blogxgwz5.


猜你喜欢

转载自blog.csdn.net/Skies_/article/details/106257834