心得:
SNIPER主要的贡献在于通过自己设计的策略,使得产生的region proposals 更加的准确,使得最终的效果显著提高。
论文翻译与总结:
摘要:
我们提出了SNIPER,一种在实例级视觉识别任务中执行高效多尺度训练的算法。 SNIPER不是处理图像金字塔中的每个像素,而是以适当的比例处理地面实例(称为芯片)周围的上下文区域。对于背景采样,使用从用短学习计划训练的区域提议网络提取的提议生成这些上下文区域。因此,在训练期间每个图像生成的码片数量基于场景复杂度自适应地改变。与COCO数据集上800x1333像素的常用单一规模训练相比,SNIPER仅处理30%的像素。但是,它也观察到了像1400x2000像素那样的图像分辨率。由于SNIPER采用重采样低分辨率芯片(512x512像素),即使使用ResNet-101主干网,单个GPU上的批量大小也可达20。因此,它可以在训练期间从批量标准化中受益,而无需跨GPU同步批量标准化统计。 SNIPER将像对象检测这样的实例级别识别任务的训练更接近于图像分类协议,并且建议在高分辨率图像上训练对于例如级别视觉识别任务而言重要的普遍接受的指导可能是不正确的。我们基于Faster-RCNN和ResNet-101骨干的实现在COCO数据集上获得了47.6%的mAP用于边界框检测,并且在使用单个GPU进行推理期间可以每秒处理5个图像。代码可在https://github.com/mahyarnajibi/SNIPER/获得。
心得:SNIPER不处理image pyramid的每一个像素,而是以合适的比例处理chip周围的文本区域,对于背景采样,通过RPN一个短期的学习,然后生成的proposals产生上下文区域。在训练期间,在训练期间产生的每一个图片产生的chip数量随着背景的复杂性自适应的调整。在coco数据集上,相对于single scale train,SNIPER仅仅处理30%像素。SNIPER认为在高分辨图像上训练可能是不对的,它的实例级的识别任务的训练更接近于图像分类的本质。
介绍 :
人类有一个中央凹视觉系统,可以固定距离和大小的物体。例如,当我们专注于附近的物体时,远处的物体变得模糊[7]。当然,我们很难同时关注不同尺度的物体[30]。我们只在任何给定的时间点处理一个小视野,并自适应地忽略图像中剩余的视觉内容。然而,设计用于例如物体视觉识别任务(如物体检测)的计算机算法偏离了这种处理视觉信息的自然方式。为了获得对比例具有鲁棒性的表示,诸如Faster-RCNN / Mask-RCNN [29,12]之类的流行检测算法在多尺度图像金字塔上进行训练[22,33]。由于每个像素都在每个尺度上处理,因此这种处理视觉信息的方法显着增加了训练时间。例如,构建3比例图像金字塔(例如,比例= 1x,2x,3x)需要处理原始图像中存在的像素数量的14倍。因此,在许多情况下使用多规模培训是不切实际的。
总结:在我们使用人眼看物体的时候,很难同时关注不同尺度的物体,在任何时间点,我们智能关注一张图像中很小的一部分区域,但是计算机不是的。
最近,研究表明,在训练期间使用多个尺度时,忽略具有极端分辨率的物体的梯度是有益的[33]。 例如,在构建3个尺度的图像金字塔时,应分别在大小分辨率下忽略大小物体的梯度。 如果是这种情况,出现一个直观的问题是,我们是否需要以3倍的分辨率处理整个图像? 难道不会在这个分辨率下对小物体周围的小型RoI(芯片)进行采样吗? 另一方面,如果图像已经是高分辨率,并且其中的对象也很大,那么对该图像进行上采样是否有任何好处?
虽然忽略图像的重要部分会节省计算,但较小的芯片也会缺少识别所需的上下文。背景的重要部分也将在更高的分辨率下被忽略。因此,在加速多规模培训的同时,计算,背景和负挖掘之间存在权衡。为此,我们提出了一种新的训练算法,称为具有高效重采样的图像金字塔尺度标准化(SNIPER),它根据图像内容自适应地采样来自图像金字塔的多个尺度的芯片。我们采用了基于区域提议网络生成的建议的基于真实实例和负实际基础的生成芯片。在相同条件下(固定批量标准化),我们表明SNIPER的性能与SNIP [33]中提出的多尺度策略一样,同时在COCO数据集训练期间减少了处理因子3的像素数。由于SNIPER采用512x512大小的芯片进行培训,因此可以在单个GPU节点上获得大批量大小的优势并进行批量标准化培训。特别是,即使使用基于ResNet-101的Faster-RCNN检测器,我们也可以使用每GPU 20个批量大小(总批量大小为160)。虽然效率很高,但SNIPER在COCO检测数据集上获得了竞争性能,即使使用简单的检测架构如Faster-RCNN也是如此。
总结:我们忽略图像的重要部分会节省计算,但是也会丢掉很多信息,因此,在训练的时候在计算、背景和负挖掘之间存在权衡。SNIPER采用512x512大小的芯片进行培训,因此可以在单个GPU节点上获得大批量大小的优势并进行批量标准化培训。
背景:
基于深度学习的物体检测算法主要是从R-CNN检测器[11]发展而来的,它始于用无监督算法生成的对象提议[34],将这些提议重新调整为规范的224x224大小的图像,并使用卷积神经网络对它们进行分类。 [19]。该模型是尺度不变的,但是R-CNN的训练和推理的计算成本与提议的数量成线性比例。为了缓解这一计算瓶颈,Fast-RCNN [10]提出将区域提案投影到高级卷积特征图,并使用池特征作为区域提议的语义表示。在此过程中,对卷积层共享计算,并且在每个提议上仅应用轻量级完全连接的层。然而,对于不同大小的对象的卷积是在单个尺度上执行的,这破坏了R-CNN的尺度不变性。因此,执行多尺度的推断,并且通过从更接近预训练网络的分辨率的一对相邻尺度中选择特征来组合来自多个尺度的检测[13,10]。 Fast-RCNN模型已经成为区域提案分类的事实上的方法,因为它很快并且在其特征中捕获了更多的上下文,这在RCNN中是缺乏的。
总结:R-CNN是尺度不变的,它的训练和推理的计算和proposal生成的数量呈现线性的关系,为了解决这个问题,Fast-Rcnn产生的region proposal送到高等级的卷积层,然后进行池化,产生了高等级的语义信息。
值得注意的是,在多尺度训练中,Fast-RCNN对图像中的每个提议(无论是小还是大)进行上采样和下采样。这与R-CNN不同,每个提案的大小调整为224x224像素的规范大小。不对大对象进行上采样,并且在R-CNN中不对小对象进行下采样。在这方面,R-CNN更适当地不对图像中的每个像素进行上/下采样,而是仅在那些可能包含对象到适当分辨率的区域中。然而,R-CNN并不像Fast-RCNN那样分享附近提案的卷积特征,这使得它变慢。为此,我们提出了SNIPER,它通过生成涵盖特定规模的最大提议的规模特定上下文区域(芯片)来保留这两种方法的好处。 SNIPER对Fast-RCNN等芯片内的所有提议进行了分类,使我们能够在芯片内对多个提案进行有效的分类。由于SNIPER没有对图像进行采样,其中大型对象和远程对象不是处理背景区域,因此与在图像金字塔上训练的Fast-RCNN检测器相比,它显着更快。
总结:R-CNN每一个proposal都会调整到224x224的规范大小,但是Fast-RCNN对图像中的每一个proposal都会进行上采样和下采样,这会浪费时间,但是新提出的SNIPER没有对图像进行上采样,所以它更快。
SNIP [33]也对图像金字塔的几乎所有像素(如Fast-RCNN)进行了训练,但忽略了极端分辨率对象产生的梯度。特别地,图像金字塔(480和800像素)的2个分辨率总是参与训练,并且在图像的1400像素分辨率中对多个1000像素作物进行采样。 SNIPER通过从图像金字塔的3个等级中采样512像素裁剪,将此裁剪程序提升到极致水平。在极端尺度(如3倍),SNIPER观察到不到图像中原始内容的十分之一!不幸的是,由于仅使用地面实例生成的SNIPER芯片与原始图像的分辨率相比非常小,因此背景的重要部分不参与训练。这导致假阳性率增加。因此,为背景区域生成芯片也很重要。在SNIPER中,这是通过从可能覆盖误报的区域中随机采样固定数量的芯片(本文中最多2个)来实现的。为了找到这样的区域,我们培训了一个时间短的轻量级RPN网络。该网络的提议用于为可能包含误报的区域生成芯片(这可能会被像EdgeBox [42]这样的无监督提议所取代)。添加负芯片采样后,SNIPER的性能与SNIP相匹配,但速度提高了3倍!由于我们能够通过观察不到十分之一的图像来获得类似的性能,因此,在训练期间,非常大的内容并不是重要的,而是包含高性能探测器,但是包含硬阴性的采样区域是。
3 SNIPER
我们在本节中描述了SNIPER的主要组件。 一个是正/负芯片挖掘,另一个是生成芯片后的标签分配。 最后,我们将讨论使用SNIPER进行训练的好处。
3.1芯片生成
SNIPER在图像中以多个尺度{s1,s2,..,si,..,n}生成芯片Ci。 对于每个比例,首先将图像重新调整为宽度(Wi)和高度(Hi)。 在这个画布上,K×K像素芯片以相等的d像素间隔放置(在本文中我们将d设置为32)。 这导致每个比例的二维芯片阵列。
总结:SNIPER在图像中以多个尺度{s1,s2,..,si,..,n}生成芯片Ci。在每一个scale上,都对图像的长宽进行重新调整。在这个K x K 像素的chip 都是以d 像素等间隔放置,因此,在每一个scale,chip都是一个二维数组。
3.2正chip选择
对于每个尺度,存在期望的区域范围Ri = [rimin,rimax],i∈[1,n],其确定哪个地面实况框/提议参与每个尺度i的训练。位于Ri中的地面实况边界框的有效列表称为Gi。然后,贪婪地选择芯片,以便覆盖最大数量的有效地面实况框(Gi)。如果它完全封闭在芯片内,据说可以覆盖地面实体盒。来自刻度的所有正切片按照图像组合并且被称为Ci pos。对于每个地面实况边界框,始终存在覆盖它的芯片。由于连续的Ri包含重叠间隔,因此可以将地面实况边界框分配给不同尺度的多个芯片。同一地面实况边界框也可能来自相同规模的多个芯片。裁剪与芯片部分重叠(IoU> 0)的地面实例。所有裁剪的地面实况框(有效或无效)都保留在芯片中,并用于标签分配。
通过这种方式,每个地面实况框都以适当的比例覆盖。由于裁剪尺寸远小于图像的分辨率(即对于高分辨率图像而言小于10倍),因此SNIPER不会以高分辨率处理大部分背景。这样可以在处理高分辨率图像时显着节省计算和内存需求。我们用一个如图1所示的例子来说明这一点。图的左侧显示了带有绿色边界框表示的地面实况框的图像。图左侧的其他彩色矩形显示了SNIPER在原始图像分辨率下生成的芯片,覆盖了所有对象。这些芯片在图的右侧示出,具有相同的边框颜色。绿色和红色边界框表示对应于芯片尺度的有效和无效的地面实况对象。可以看出,在该示例中,SNIPER通过形成4个低分辨率芯片以适当的比例有效地处理所有地面实况对象。
总结:每个scale(共i个,i=1,...,n),都会有个对应的area range Ri,这个范围决定了这个scale上哪些ground truth box是用来训练的。所有ground truth box中落在 Ri 范围内的ground truth box 称为有效的(对某个scale来说),其余为无效的,有效的gt box集合表示为 Gi 。在某一Scale中,从所有chips中选取包含(完全包含)有效 gt box最多的chip,作为Positive Chip,该尺度下Positive Chip的集合称为 Cipos ,保证每个scale下的每一个gt box都会有chip包含它。因为不同scale的Ri的区间会有重叠,所以一个gt box可能会被不同scale的多个chip包含,也有可能被同一个scale的多个chip包含。被割裂的gt box(也就是部分包含)则保持残留的部分。
1图1:SNIPER正片选择。 SNIPER基于图像内部的对象的存在自适应地采样上下文区域(也称为芯片)。 左侧:图像,地面真实框(由绿线表示),以及原始图像标记(由蓝色,黄色,粉红色和紫色矩形表示)。 右侧:考虑物体的大小来执行向下/向上采样。 覆盖的对象以绿色显示,相应比例中的无效对象显示为红色矩形。
3.3负片选择
虽然积极的筹码涵盖了所有积极的例子,但背景的重要部分并未被他们覆盖。对背景进行错误分类会增加误报率。在当前的对象检测算法中,当执行多尺度训练时,图像中的每个像素都在所有尺度上被处理。虽然所有尺度的训练都会降低误报率,但也会增加计算量。我们假设背景的大量数量易于分类,因此,我们可以避免在这些区域中执行任何计算。那么,我们如何消除易于分类的区域?一种简单的方法是使用对象提议来识别对象可能存在的区域。毕竟,我们的分类器对区域提案进行操作,如果图像的一部分没有区域提议,则意味着很容易将其归类为背景。因此,我们可以在训练期间忽略图像的这些部分。
为此,对于负片芯片挖掘,我们首先训练RPN几个迭代。没有负片用于训练该网络。该网络的任务是粗略地指导我们选择可能包含误报的区域,因此它没有必要非常准确。该RPN用于生成整个训练集的提议。我们假设如果RPN在图像的主要部分中没有生成任何提议,则它不太可能包含对象实例。对于负片选择,对于每个比例i,我们首先删除所有已经覆盖的提议。然后,对于每个比例i,我们贪婪地选择覆盖至少M个提议的所有芯片。这为每个图像Cineg的每个比例生成一组负片。在训练期间,我们从所有尺度产生的负片芯池中随机地对每个时期(每个图像)的负片数进行随机采样,即.Si i = 1Cineg。图2显示了SNIPER生成的负片的示例。第一行显示图像和地面实况框。在最下面一行中,我们显示了未涵盖的提议和生成的相应负片(橙色框)。但是,为清楚起见,我们在其中心用红色圆圈表示每个提案。如图所示,SNIPER仅处理可能包含误报的区域,从而导致更快的处理时间。
总结:算法对背景的识别效果不好,导致假正例(即把背景误判成目标)的比率比较高。使用rpn,找出背景,训练时将这一部分进行忽略。
具体生成流程:首先使用训练集训练一个不是很精确的RPN,生成一系列 proposals,对每个scale i,移除该scale下被 positive chip 所覆盖到的那些proposals,因为它们大概率与positive chip 中的gt box重合,所以并非要作为负样本的背景。在输入图片的每个scale下的chip池中选取包含至少M个proposals的所有chips作为 negative chip(也要满足在本尺度的Ri范围内),其集合称为 Cineg。
图2:SNIPER负片选择。 第一行:图像和地面实况框。 底行:正面筹码中未包含的负面建议(由清晰度位于每个提案中心的红色圆圈表示)和基于提案生成的负面筹码(由橙色矩形表示)。
3.4标签分配
我们的网络在Faster-RCNN这些芯片上端到端地进行了培训,即。它学会了生成建议,并用单一网络对它们进行分类。在训练时,RPN生成的提议会根据芯片内部存在的所有地面实况框分配标签和边界框目标(用于回归)。我们没有根据Ri过滤地面实况框。相反,在训练期间忽略不属于Ri的提议。因此,一个被裁剪的大型地面实况框可以生成一个很小的有效提案。与Fast-RCNN一样,我们将任何重叠大于0.5的提案标记为地面实况框为正,并为提案指定边界框目标。我们的网络是端到端培训的,我们每个芯片生成300个提案。我们不应用任何约束,即应将这些提议的一小部分重新采样为正数[29],如Fast-RCNN。我们没有使用OHEM [32]进行分类,并使用简单的softmax交叉熵损失进行分类。为了分配RPN标签,我们使用有效的地面实况框来分配标签和无效的地面实况框以使锚点无效,如SNIP [33]中所做的那样。
3.5好处
对于培训,我们从整个数据集中随机抽取芯片以生成批次。平均而言,当在三个等级(512 / ms 2,1.667,3)上进行训练时,我们在COCO数据集(包括负片)上生成每个图像大小为512x512的5个码片。当以800x1333的图像分辨率执行单刻度训练时,这仅比每个图像处理的像素数多30%。由于我们所有的图像都具有相同的大小,因此数据包装得更好,从而可以更好地利用GPU,从而轻松克服额外的30%开销。但更重要的是,我们在3个规模,大批量规模和批量标准化培训中获得了多规模培训的好处,而在单个8 GPU节点上没有任何性能下降!
通常认为高分辨率图像(例如800×1333)对于例如水平识别任务是必需的。因此,例如级别识别任务,不可能使用在单个GPU上计算的批量标准化统计来训练。已经提出了诸如同步batchnormal化[22,41]或128 GPU(28)的训练的方法来缓解这个问题。同步批量标准化显着减慢了培训速度,对128个GPU进行培训对大多数人来说也是不切实际的。因此,最近提出了组标准化[35],以便在训练期间,在低批量设置中,实例级别识别任务可以从另一种标准化形式中获益。 WithSNIPER,我们表明可以减轻图像分辨率瓶颈,例如水平识别任务。只要我们能够覆盖负片并使用适当的比例归一化方法,我们就可以使用大批量重采样低分辨率芯片进行训练,即使在像COCO这样具有挑战性的数据集上也是如此。我们的研究结果表明,超出某一领域的背景在培训期间可能不是有益的。如[24]中所建议的那样,深度神经网络的有效接收域也不足以利用图像中的远处像素。
在像OpenImagesV4 [18]这样包含170万张图像的非常大的数据集中,大多数对象都很大,所提供的图像都是高分辨率(1024x768),所以将图像上采样3倍并不重要。在这种情况下,使用SNIPER,我们使用(512 / ms,1)的标度生成350万个大小为512x512的芯片。请注意,SNIPER还执行自适应下采样。由于尺度较小,芯片将覆盖更多背景,由此减少了负采样的影响。在这种情况下(正片选择),与OpenImagesV4中上述尺度的幼稚多尺度训练相比,SNIPER仅处理一半像素数。因此,我们能够在单个8 GPU节点上用3天内的170万张图像训练Faster-RCNN和ResNet-101骨干!
4 实验细节
我们在COCO数据集上评估SNIPER以进行对象检测。 COCO在训练和验证集中包含123,000个图像,在test-dev集中包含20,288个图像。 我们对组合的培训和验证集进行培训,并在test-dev集上报告结果。 由于评估服务器不提供召回建议,我们对118,000张图像进行训练并报告其余5,000张图像(通常称为迷你套装)的召回情况。
在COCO上,我们训练SNIPER,批量大小为128,学习率为0.015。我们使用的芯片尺寸为512×512像素。 训练的尺寸设置为(512 / ms,1.667,3),其中ms是图像的宽和高的最大值。对于每个标度,期望的范围(即,Ri)分别设置为(0,802),(322,1502)和(1202,inf)。训练在总共6个时期进行,在时期5结束时逐步降低。图像移动被用作数据增强技术。每个时代需要11,000次迭代。为了训练没有底片的RPN,每个时期需要7000次迭代。我们使用RPN生成负片并将其训练为2个时期,固定学习率为0.015,无需任何降压。因此,训练2个时期的RPN需要不到总训练时间的20%。 RPN提案是从所有规模中提取的。请注意,推理需要1/3的时间才能完全向前 - 向后传递,我们不会执行任何移动以提取提议。因此,这个过程也很有效。我们使用[27]中描述的混合精确训练。为此,我们将重量衰减重新调整100,将学习率降低100并将梯度重新调整为100.这样可以确保我们可以训练半精度激活(因此批量大2倍)而没有任何损失。准确性。我们对第一个卷积层使用fp32权重,在RPN(分类和回归)中使用最后一个卷积层,在Faster-RCNN中使用完全连接的层。
我们使用流行的检测器,使用ResNets [14,15]和MobileNetV2 [31]的Faster-RCNN来评估SNIPER。在conv4特征之上使用RPN生成建议,并且在连接conv4和conv5特征之后执行分类。在conv5分支中,我们使用可变形卷积和1的步幅。我们在RPN中使用512维特征映射。对于分类分支,我们首先将连接的特征映射投影到256维,然后添加2个完全连接的层和1024个隐藏单元。对于像MobileNetv2这样的轻量级网络[31],为了保持网络的计算处理能力,我们没有对网络进行任何架构更改,例如改变网络的步幅或增加可变形的卷积。将RPN尺寸设为256,将fc层的尺寸从1024加到512. RPN和分类分支都应用于具有用于MobileNetv2的步幅32的层上。
在映像完成后,SNIPER为COCO数据集生成120万个芯片。这导致每个图像大约5个码片。在一些包含许多对象实例的图像中,SNIPER可以生成多达10个芯片,而其他只有一个大的显着对象,它只会产生一个芯片。在某种意义上,它减少了传播到实例级别的梯度的不平衡,该实例级别存在于在全分辨率图像上训练的检测器中。至少在理论上,对全分辨率图像的训练偏向于大对象实例。
4.1 召回分析
我们观察到,如果我们不进行负抽样,则RPN的召回(平均多次重叠阈值0.5:0.05:0.95)不会减少。 这是因为召回不能解释误报。 如第4.2节所示,这与用于检测的mAP相反,其中负采样起着重要作用。 此外,在正片采样中,我们确实覆盖了每个地面实例样本。因此,为了生成建议,仅仅训练正样本是足够的。 这一结果进一步支持了SNIPER基于RPN发现负数的策略,其中训练仅针对正样本进行。
4.2负芯片挖掘和规模
SNIPER使用负片芯挖掘来降低误报率,同时通过跳过图像内的简单区域来加速训练。如第3.3节所述,我们使用经过短期学习计划培训的区域提案网络来查找这些区域。为了评估我们的负挖掘方法的有效性,我们将SNIPER的平均精度与轻微变量进行比较
在训练期间仅使用正芯片(表示为SNIPER w / o neg)。所有其他参数保持不变。表2比较了这些模型的性能。所提出的负片芯挖掘方法显着改善了所有本地化阈值和对象大小的AP。值得注意的是,负片芯片挖掘将平均精度从43.4提高到46.1。这与我们评估提案的最后一节形成对比。这是因为mAP受到误报的影响。如果我们不在图像中包含与阴性实例相似的阴性区域,则会增加我们的假阳性率并对检测性能产生不利影响。 SNIPER是一种高效的多尺度训练算法。在本文的所有实验中,我们使用前面提到的三个尺度(详见第4节)。为了证明SNIPER有效地从多尺度训练中受益,我们通过高分辨率量表将体积从3减少到2。表2显示了在这两种设置下SNIPER的平均精度。可以看出,通过减少比例数量,性能在所有评估指标上始终大幅下降。
4.4推论
我们对图像金字塔进行推断,并将原始图像缩放到以下分辨率(480,512),(800,1280)和(1400,2000)。 第一个元素是最小尺寸,条件是最大尺寸不超过第二个元素。 训练和推理的有效范围与SNIP类似[33]。 为了组合检测,我们使用Soft-NMS [4]。 我们不执行fl [[39],迭代边界框回归[9]或掩盖紧缩[22]。
4.5与最先进的技术比较
很难公平地比较不同的探测器,因为它们在骨干架构上有所不同(如ResNet [14],ResNext [36],Xception [6]),训练前数据(例如ImageNet-5k,JFT [16],OpenImages [18] ),底层网络中的不同结构(例如多尺度特征[20,26],可变形卷积[8],较重的头[28],锚尺寸,路径聚合[22]),测试时间增加如浮动,蒙版收紧因此,我们将我们的结果与SNIP [33]进行比较,这是一种在图像金字塔上训练物体探测器的最新方法。结果如表3所示。不使用批量标准化[17],SNIPER获得了可比较的结果。虽然SNIP [33]几乎处理所有图像金字塔,但另一方面,SNIPER通过跳过简单区域来降低计算成本。此外,由于SNIPER在较低分辨率输入上运行,因此可减少内存占用。这使我们可以增加批量大小,与SNIP不同[33],我们可以在培训期间从批量标准化中获益。通过批量标准化,SNIPER在所有指标中都显着优于SNIP。应该注意的是,不仅所提出的方法更准确,而且在训练期间它也快3倍。据我们所知,对于具有ResNet-101主干(具有可变形卷积)的Faster-RCNN架构,我们报告的46.1%的结果是最先进的。如果我们在OpenImagesV4数据集上预先检测检测器,则此结果可提高到46.8%。添加实例分割头并训练检测网络可将性能提高到47.6%。凭借我们高效的批量推理管道,我们可以在单个V100 GPU上每秒处理5个图像,并且仍然可以获得47.6%的mAP。这意味着在现代GPU上,对包括高分辨率(如1400x2000)的图像金字塔进行推理是切实可行的。我们还显示了使用MobileNetV2训练的Faster-RCNN的结果。与SSDLite [31]版本相比,它获得了34.1%的mAP,获得了22.1%。这再次强调了图像金字塔(和SNIPER训练)的重要性,因为我们可以将探测器的性能提高12%。我们还显示了实例细分的结果。网络架构与Mask-RCNN [12]相同,只是我们不使用FPN [20]并使用与对象检测相同的检测架构。对于多任务,我们尝试了两种损失函数变体来训练掩模分支。一个是N类的前景 - 背景softmax函数,另一个是N + 1路softmax函数。例如,对于每个类,用双向Softmax损失训练的网络清楚地表现得更好。但是,对于物体检测,N + 1路Softmax损失会导致稍微好一点的结果。我们在推理期间仅使用3个刻度,并且在调整大小之前不执行浮动,蒙版收紧,迭代边界框回归,填充蒙版等。我们的实例分割结果是初步的,到目前为止我们只训练了2个模型。
5相关工作
SNIPER从过去一年开发的多种技术中受益匪浅。值得注意的是,已经证明,对于诸如对象检测和语义分割之类的任务,使用批量归一化统计[28,22,41]进行训练是很重要的。这是SNIPER更好性能的一个重要原因。 SNIPER也从大批量大小中获益,这被证明对物体检测有效[28]。与SNIP [33]一样,SNIPER忽略图像金字塔中极端尺度的物体梯度,以改善多尺度训练。在过去,已经提出了许多不同的方法来理解上下文[38,1,25],比例[5,37,20,26]和采样[21,32,2,3]的作用。对于利用网络的不同层的特征和设计用于明确编码用于分类的上下文/多尺度信息[26,23,39,40]的体系结构,已经给予了相当大的重视。我们的结果强调,上下文对于训练高性能物体探测器可能不是非常重要。
6结论和未来的工作
我们提出了一种有效的多尺度训练算法,该算法从多尺度图像金字塔中采集低分辨率芯片,以加速多尺度训练3倍。在这样做时,由于正负芯片的有效采样技术,SNIPER没有在检测器性能上做出妥协。由于SNIPER采用重新采样的低分辨率芯片,因此可以在单个GPU上进行大批量训练,使其更接近训练图像分类的协议。这与用于实例级识别任务的高分辨率图像训练的通常做法形成对比。将来,我们希望加速多尺度推理,因为可以在不执行昂贵计算的情况下消除背景的重要部分。评估上下文开始会损害对象检测器的性能的芯片分辨率也是有趣的