YOLACT论文阅读及解析

YOLACT:Real-time Instance Segmentation

摘要

本文提出了一个简单的、全卷积的实时实例分割模型,在MS COCO上以33.5fps的速度实现了29.8mAP,且只在一个gpu上训练就得到了这个结果。
本文将实例分割分成两个子任务:
(1)生成一系列prototype masks
(2)预测每个实例的mask系数
然后通过将prototype和mask系数线性组合来生成instance masks
作者发现这个过程不依赖于repooling,可以产生高质量的masks并且exhibits tem-
poral stability for free
(表现出稳定性?)
此外,本文分析了prototypes的突发行为,发现尽管它们是fully-convolutional,但会以一种translation variant的方式自己对实例进行localize
本文还提出了比NMS更快的Fast NMS

引言

创建一个实时实例分割算法需要什么?
过去几年,实例分割领域取得了巨大的进步,部分原因是利用了已建立的目标检测领域的强大并行。最先进的实例分割算法(如Mask RCNN和FCIS)直接建立在目标检测的发展上(如Faster R-CNN和R-FCN)。上述这些方法主要关注性能而不是速度,导致缺乏实时实例分割的实时目标检测器(如SSD和YOLO)。本文的目标是用一个快速的、单阶段(one-stage)的实例分割模型来填补这一空白,就像SSD和YOLO填补了目标检测的空白一样。coco上的各种实例分割方法的速度性能比较

**coco上的各种实例分割方法的速度性能比较**

但实例分割远比目标检测困难,类似YOLO和SSD的one-stage目标检测器可以简单地移除第二阶段并用其他方式弥补性能损失来加速现有的两级检测器(如Faster R-CNN)。但同样的方法不容易扩展到实例分割领域。SOTA的两阶段实例分割算法是否依赖于feature localization(特征定位)来产生mask。就是说这些方法在某些边界框区域“重池化(repool)”(使用RoI-pool/align等方法)
,然后把这些localized features输入到mask预测器中。这个方法本质上是顺序的,所以很难加速。也存在一些像FCIS这样的并行执行这些步骤的方法,但它们需要在localization后进行大量的后处理,所以离实时还很远。
为了解决上述问题,提出了YOLACT,一个实时实例分割框架,它放弃了显式的localization步骤。YOLACT将实例分割分成两个并行任务:
(1)在整个图像上生成non-local prototype masks的字典
(2)预测每个实例的一组线性组合系数
然后从这两个组件生成一个完整的图像实例分割是简单的:对于每个实例,使用对应的预测系数线性结合prototypes,然后裁剪出预测的包围框。本文表明通过这种方式分割,网络学会了如何自己localize 实例masks,在视觉上、空间上和语义上相似的实例在prototypes表现出不同。
此外,由于prototype masks的数量与类别的数量无关(如:类别可以比prototypes多)。YOLACT学会了一种分布式表示,其中每个实例都由跨类别共享的prototypes组合分割。这种分布式表示在prototype空间中产生了有趣的突发行为:一些prototypes对图像进行空间划分、一些定位实例、一些检测实例轮廓、一些编码位置敏感方向图(类似在FCIS中硬编码一个位置敏感模块获得的那些),大多数是这些任务的组合。
这种方法还有几个实际的优点。首先也是最重要的一点:速度快:由于其并行结构和极其轻量级的组装过程,YOLACT仅为一级主干探测器增加了少量的计算开销,即使在使用ResNet101时,也很容易达到30fps每秒;实际上整个mask分支的评估仅需5ms。第二,masks是高质量的:由于masks使用了图像空间的全部范围,而不会因为repooling损失任何的质量,我们的masks对于大物体的质量是明显高于其他方法的(如图7).最后,它是一般性的:生成prototypes和masks系数的想法可以应用到任何现代目标检测器。
本文的主要贡献:第一个实时(>30fps)实例分割算法,并在具有挑战性的MS COCO数据集上得到了有竞争力的结果(见图1)。此外,本文分析了YOLACT的prototypes的突发行为,并提供实验来研究在不同骨干架构、prototypes数量和图像分辨率下获得的速度和性能的权衡。本文还提出了一种新的Fast NMS方法,比传统的NMS快12ms,性能损失可以忽略不计。
YOLACT的代码:(https://github.com/dbolya/yolact)

相关工作

实例分割

由于其重要性,人们对提高实例分割的准确率进行了大量的研究。Mask-RCNN是一种典型的两阶段实例分割方法:首先产生候选的兴趣区域(region-of-interests,ROI),然后在第二阶段对这些ROIs进行分类和分割。后续工作试图通过丰富FPN特征或解决mask的置信度分数与其定位精度之间的不兼容性来提高其精度。这些两阶段方法需要re-pooling每个ROI的特征,并通过后续的计算处理它们,这使得它们无法获得实时速度(30fps),即使是减小图片大小的情况下(见图2c)。
单阶段实例分割方法生成位置敏感图(position sensitive maps),通过位置敏感池化(position-sensitive pooling)组装成最终的masks,或结合语义分割logits和方向预测logits。虽然在概念上比两阶段方法快,但仍需要repooling或其他重要的计算(如mask voting)。这严重限制了它们的速度,使它们不能实时。相比之下,我们的组装步骤更加轻量(仅仅一个线性结合),并且可以实现为一个gpu加速的矩阵-矩阵乘法,使得我们的方法非常快。
最后,一些方法首先进行语义分割,再进行边界检测,像素聚类或者学习嵌入以形成实例masks。同样,这些方法有多个阶段和\或涉及昂贵的集群过程,这限制了它们对实时应用程序的可行性。

实时实例分割

虽然存在实时目标检测和语义分割,但很少有人关注实时实例分割。《Straight to Shapes》和《Box2Pix》可以实时执行实例分割(《Straight to Shapes》在Pascal SBD 2012上的帧数为30fps,在Cityscapes上的帧数为10.9fps,《Box2Pix》在KITTI上的帧数为35fps),但它们的准确性远远低于现代基准。事实上,Mask R-CNN仍是语义挑战性数据集上最快的实例分割方法之一,如COCO(在550像素图像上达到13.5fps,见表2c)。

Prototypes

学习原型(又名aka vocabulary或code-book)在cv领域得到了广泛的研究。经典的包括文本(textons)和视觉词(visual words),并通过稀疏性和局部先验进行改进。其他人已经设计了目标检测的prototypes。尽管相关,这些工作使用prototypes来表示特征,而我们使用它们来组装masks进行实例分割。此外,我们学习prototypes是特定于每个图像,而不是整个数据集共享的全局prototypes。

3.YOLACT

1111
图2:YOLACT架构:蓝色/黄色表明prototypes中的低/高值,灰色节点表明未训练的函数,本例中k=4,使用ResNet101+FPN在RetinaNet的基础上建立了这个框架

我们的目标是像mask R-CNN和Faster R-CNN一样,在现有的单阶段目标检测模型中添加一个mask分支,但没有明确的特征定位步骤(如特征repooling)。为了做到这一点,我们将实例分割的复杂任务分解为两个更简单、并行的任务,它们可以组装成最终的masks。第一个分支使用FCN生成一种图像大小的“prototype masks”,它们并不依赖于任何一个实例。第二个添加一个额外的head到目标检测分支来预测每个锚的"mask系数"向量,这些锚在prototype空间中编码了一个实例的存在。最后对于每个存在于NMS的实例,使用线性组合这两个分支的工作来为该实例构造一个mask。

Rationale

本文以这种方式进行实例分割,主要是因为masks在空间上是连续的,即彼此接近的像素可能是一个实例的一部分。虽然卷积层(conv)自然地可以利用这种一致性,但全连接层(fc)却不行。这产生了一个问题,因为单阶段目标检测器为每个锚生成的类和box系数作为fc层的输出。两阶段方法如Mask R-CNN通过使用localization步骤(如RoI-Align)来解决这个问题,它保留了特征的空间一致性,同时也运行maks作为一个conv层输出。然而,这样做需要模型的很大一部分等待第一阶段RPN来进行localization候选,导致了显著的速度损失。
因此,本文将问题分解成两个平行的部分,利用擅长生成语义向量的fc层和擅长生成空间连贯的masks的conv层分别生成“mask系数”和“prototype masks”。然后由于prototypes和mask系数可以单独计算,相对于主干检测器的计算开销主要来自组装步骤,这可以实现一个单一的矩阵乘法。用这种方法,在保持特征空间的空间一致性的同时,仍然是单阶段的、快速的

3.1 prototype Generation

在这里插入图片描述

prototype生成分支(protonet)为整个图像预测一组k个prototype masks。我们将protonet实现为一个FCN,它的最后一层有k个通道(每个prototype都有一个通道),并将其连接到一个骨干特征层(见图3)。虽然这种表述类似于标准语义分割,但不同之处在于我们在prototypes上没有显示出明显的损失。相反,对于这些prototypes的所有监督都来自于组装后的最终masks损失。
我们注意到两个重要的设计选择:从更深层次的主干特征中进行protonet可以产生更健壮的masks,更高的分辨率prototypes可以产生更高质量的masks和在更小的目标上更好的性能。因此,我们使用FPN是因为它的最大特征层(在例子中是P3,见图2)是最深的。然后我们将其上采样到输入图像大小的四分之一以提高在小目标上的性能。
最后,我们发现protonet的输出无界是很重要的,因为这允许网络为prototypes产生巨大的、强大的激活,使得它十分可信(如明显的背景)。因此我们可以选择带有ReLU或无非线性的protonet。我们可以使用ReLU获得更多可解释的prototypes

3.2 Mask Coeffcients

典型的基于锚的目标检测器在它们的预测head中有两个分支:一个分支预测c个类别置信度,另一个预测4个bounding box回归。对于mask 系数预测,我们只需并行添加第三个分支预测k个mask 系数,每个prototype对应一个。因此,不是每个锚产生4+c个系数,而是产生4+c+k个系数。
然后对于非线性,我们发现能从最终的mask中减去prototypes是很重要的。因此我们将tanh应用到k mask系数,从而在没有非线性的情况下产生更稳定的输出。这种设计的相关性如图2所示,因为如果不考虑减法,两个mask都是不可构造的。

3.3 Mask Assembly

为了生成实例masks,我们将prototype分支和mask系数分支的工作结合起来,使用前者和后者的线性组合作为系数。然后通过一个sigmoid非线性来产生最终的masks。使用单个矩阵乘法和sigmoid可以有效实现这些操作:
在这里插入图片描述
其中P是prototype masks的hwk矩阵,C是在NMS和分数阈值中存在的n个实例的mask系数的一个n*k矩阵。其他更加复杂的组合步骤也是可能的;然而我们通过一个基本的线性组合保持它的简单(和快速)

losses

使用三种损失来训练模型:分类损失 L c l s L_{cls} Lcls,box回归损失 L b o x L_{box} Lbox和mask损失 L m a s k L_{mask} Lmask,权重分别为1,1.5和6.125。 L c l s L_{cls} Lcls L b o x L_{box} Lbox的定义与SSD中一样。然后为了计算mask损失,我们只需在组装好的masks M和ground truth masks之间进行像素级的二元交叉熵计算 L m a s k = B C E ( M , M g t ) L_{mask}=BCE(M, M_{gt}) Lmask=BCE(M,Mgt)

Cropping Masks

在评估过程中,使用预测的bounding box裁剪出最终的masks。在训练中使用ground truth bounding box,将 L m a s k L_{mask} Lmask除以ground truth bounding box区域来保留prototypes中的小目标。

3.4 Emergent Behavior

在这里插入图片描述

我们的方法是令人惊讶的,因为一般关于FCNs的普遍共识是:FCNs是平移不变的,所以需要任务需要在【24】中添加平移可变性。因此像FCIS和Mask R-CNN这种方法显式地添加平移可变性,无论是通过directional maps和位置敏感repooling,或将mask分支放到第二阶段,这样它就不必处理localizing实例。在我们的方法中,添加的唯一的平移可变性方法是用预测的bounding box截取最终的masks。然后,我们发现我们的方法也适用于不进行截取的中型和大型目标,所以这不是截取的结果。相反,YOLACT学会了如何通过prototypes中的不同激活函数自己localize实例。
要了解这是如何实现的,首先注意在没有padding的FCN中,图5中实心红色图像(图像a)的prototype activations实际上是不可能的。因为卷积输出到单个像素,如果它在图像中的任何地方的输入都是相同的,那么在conv输出中的任何地方的结果都是相同的。另一方面,像ResNet这样的现代FCNs中的一致边缘padding使得网络可以判断像素距离图像边缘多远。从概念上讲,它可以实现这一点的一种方法是人多个层按顺序将填充的0从边缘向中心扩散(类似于使用[1,0]的核)。这意味着ResNet对于实例本身就是平移可变的,我们的方法大量利用了这一特性(图像b和c表现出了明显的平移可变性)。
我们观察到许多prototypes在图像的某些"分区"上被激活。也就是说,它们只在隐式学习到的边界一侧的目标上被激活。在图5中,原型1-3就是这样的例子。通过组合这些分区图,网络可以区分同一语义类的不同(甚至重叠)实例,例如在图d中,通过从prototype2中减去prototype3可以将绿色雨伞和红色雨伞分开。
此外,作为学习对象,prototypes是可压缩的。也就是说如果protonet将多个prototypes的功能组合到一起,那么mask系数分支可以学习到哪些情况需要哪些功能。例如,在图5中,prototype2是一个分区原型,但也会在左下角的实例上表现十分强烈。prototype3与之类似,但适用于右边的实例。这也解释了为什么在实践中,即使使用低至k=32的prototypes(见表2b),该模型的性能也不会降低。另一方面,增加k很可能是无效的,因为预测系数很困难。 由于线性组合的性质,如果网络在一个参数上产生较大误差,生成的mask可以会消失或者导致其他目标的丢失。因此,网络必须起到平衡的作用以产生正确的系数,而添加更多的prototypes会使着变得困难。实际上,我们发现,对于更高的k值,网络仅仅添加了冗余的prototypes,边缘级别的变化很小,略微增加了 A P 95 AP_{95} AP95,但没有太多其他变化。

Backbone Detector

在这里插入图片描述
对于主干探测器,我们优先考虑速度和特征丰富性,因为预测这些prototypes和系数是一个困难的工作,需要良好的特征才能做好。因此我们的主干探测器严格遵守RetinaNet,并强调速度。

YOLACT Detector

我们使用带有FPN的ResNet-101作为默认特征主干,基本图像大小为550*550。我们不保留纵横比,以获得每幅图像一致的评估时间。 像RetinaNet一样,我们通过不产生 P 2 P_{2} P2 P 6 P_{6} P6 P 7 P_{7} P7来修改FPN,作为从 P 5 P_{5} P5(而不是 C 5 C_{5} C5)开始的连续3x3,步长为2的conv层,并在每层设置3个长宽比为[1,1/2,2]的锚。 P 3 P_{3} P3的锚有24个像素的平方面积,每个后续层是前一层面积的两倍(面积为[24,48,96,192,384])。对于连接到每个 P i P_{i} Pi的预测head,我们有一个由3个分支共享的3x3的conv,任何每个分支并行获得自己的3x3conv。与RetinaNet相比,我们的预测head设计(如图4)更轻,更快。我们将 s m o o t h L 1 smoothL_{1} smoothL1loss应用于训练box回归,并用与SSD相同的方式对box回归坐标进行编码。为了训练类预测,我们使用softmax交叉熵和c个正标签和1个背景标签,使用一个3:1(负:正)比例的OHEM选择训练样本。因此,与RetinaNet不同的是我们不使用focal loss,我们发现这在我们的情况下不适用。
通过这些设计选择,我们发现在相同图片大小的情况下,这种主干比使用ResNet的SSD性能更好,速度更快。

5.Other Improvements

我们还讨论了其他改进,这些改进要么提高了速度,但对性能几乎没有影响,要么提高了性能,而没有速度损失。

Fast NMS

在为每个锚生成bounding box回归系数和类别置信度后,像大多数目标检测器一样,我们执行NMS以抑制重复检测。在以前的许多工作中,NMS是按顺序执行的。也就是说,对于数据集中的每个c类,按置信度降序对检测到的框进行排序,然后对于每个检测,删除所有置信度低于它的、IoU重叠大于某个阈值的框。 虽然这种方法在5fps左右的速度下够快,但却是获得30fps的一个大的障碍(例如,5fps时10ms的提高导致0.26fps的提高,但30fps时10ms的提高导致12.9fps的提升)。
为了调整传统NMS的顺序性,我们引入了Fast NMS,这是NMS的一个版本,在这个版本中,每个实例都可以被并行地保留或丢弃。 要做到这一点,我们只需允许已经删除的检测来抑制其他检测,这在传统的NMS中是不可能的。 这种放宽允许我们完全在标准GPU加速的矩阵运算中实现快速NMS。
为了执行Fast NMS,我们首先计算前n个预测的cnn成对IoU矩阵X,按每个c类别的分数降序排列。GPU上的分批排序很容易获得,计算IoU也很容易矢量化。 然后,如果有任何得分更高的检测,且相应的IoU大于某个阈值t,我们将删除检测。 我们首先将X的下三角形和对角线设置为 0 : X k i j = 0 , ∀ k , j 0:X_{kij}=0,\forall{k,j} 0:Xkij=0,k,j,这可以在一个批处理triu调用中执行,然后取列最大值
在这里插入图片描述
计算每个检测中的最大IoU值矩阵K。最后用t(t<K)对该矩阵进行阈值化将指示每个类别保留哪些检测。
因为宽松,Fast NMS有移除稍微过多boxes的效果。然而,与速度的急剧增加相比,由此造成的性能损失可以忽略不计(见表2a)。在我们的代码库中,Fast NMS比传统NMS的Cython实现快11.8毫秒,而性能只降低了0.1 mAP。在Mask R-CNN benchmark suite中,Fast NMS比CUDA实现的传统NMS快15.0毫秒,性能损失仅为0.3 mAP

Semantic Segmentation Loss

虽然Fast NMS以少量性能换取速度,但也有一些方法可以在不降低速度的情况下提高性能。其中一种方法是在训练期间使用测试时未执行的模块对模型施加额外损失。这有效的增加了特征的丰富性,同时没有速度损失。
因此,我们仅在训练期间应用语义分割损失。注意因为我们从实例注释中构造了损失的ground truth,所以这没有严格捕捉语义分割(即没有强制标准的每一个像素一个类)。为了在训练期间创造预测,我们需要将一个带有c输出通道的1x1conv层直接连到主干中最大的feature map( P 3 P_{3} P3)上。由于每个像素可以分配给多个类,我们使用sigmoid和c通道代替softmax和c+1。这一损失的权重为1,并导致0.4的mAP提升。

6.Results

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们使用标准度量报告MS COCO和Pascal 2012 SBD上的实例分割结果。对于MS COCO,我们在train2017上训练,在val和test-dev上进行评估。

Implementation Details

我们使用ImageNet预训练的权值在一个gpu上训练batchsize为8的所有模型。我们发现这是一个足够的批量大小使用batch norm,所以我们保留未冻结的预训练batch norm但不添加任何bn层。我们使用SGD进行800k迭代训练,初始学习率为 1 0 − 3 10^{-3} 103,在迭代280k、600k、700k和750k时除以10,使用 5 × 1 0 − 4 5\times10^{-4} 5×104的权重衰减,0.9的动量和SSD中使用的所有数据增强。对于Pascal,我们训练120k次迭代,在60k和100k时将学习率做除法。我们还将锚的规模乘以4/3,因为目标往往更大。COCO在一台Titan Xp上的训练需要4-6天(取决于配置),在Pascal上的训练不到1天。

Mask Results

我们首先在表1中的MS COCO的test-dev集上比较YOLACT和最先进的方法。因为我们的主要目标是速度,所以我们与其他没有增加测试时间的单模型结果进行比较。 我们报告了在一台Titan Xp上计算的所有速度,因此一些列出的速度可能比原始文件中的速度更快 。
YOLACT-550提供了极具竞争力的实例分割性能,同时速度是COCO上之前最快的实例分割方法的3.8倍。我们还注意到,与其他方法相比,我们的方法的性能存在一个有趣的不同。 从我们在图7中的定性发现,在50%重叠阈值下,YOLACT-550和Mask R-CNN之间的差距为9.5 AP,而在75%IoU阈值下,差距为6.6 AP。 这与FCIS的性能不同有关,例如与gap一致的Mask R-CNN相比(AP值分别为7.5和7.6)。此外,在最高(95%)的IoU阈值,我们的表现优于Mask R-CNN,分别为1.6和1.3AP。
我们在表1中报告了候选模型配置的数量。除了我们的基本550×550图像大小模型外,我们还训练400×400(YOLACT-400)和700×700(YOLACT-700)模型,并相应地调整了锚的范围( s x = s 550 / 550 ∗ x s_{x}=s_{550}/550*x sx=s550/550x)。降低图像大小会导致性能大幅下降,这表明实例分割自然需要更大的图像。然后,如预期的那样,增大图像大小会显著降低速度,但也会提高性能。
除了我们的基础主干网ResNet-101,我们还测试了ResNet-50和DarkNet-53,以获得更快的结果。如果更高的速度是需要的,我们建议使用ResNet-50或DarkNet-53,而不是降低图像大小,因为这些配置的性能比YOLACT-400好得多,但只是稍微慢一点。
最后,我们还在Pascal 2012 SBD上对我们的ResNet-50模型进行了训练和评估,如表3所示。YOLACT明显优于报告中SDB性能的常用方法,同时速度也显著加快。

Mask Quality

因为我们生成了大小为138x138的最终mask,并且因为我们直接从原始特征创建masks(不使用repooling来转换和移位特征),我们用于大目标的masks质量明显高于Mask R-CNN和FCIS的那些masks。例如,在图7中,YOLACT生成了一个清晰地沿着手臂边界的mask,而FCIS和Mask R-CNN都有更多的噪声。 此外,尽管总体mAP差5.9,但在95%IoU阈值下,我们的模型达到1.6AP,而Mask R-CNN达到1.3AP。这表明repooling确实会导致mask质量的下降。

Temporal Stability

虽然我们只使用静态图像进行训练,不应用任何temporal smoothing,但我们发现,我们的模型在视频上产生的时间稳定的masks比Mask R-CNN更大,后者的masks在帧间抖动,即使对象静止。我们相信我们的masks更稳定,部分原因是它们的质量更高(因此帧之间的误差空间更小),但主要是因为我们的模型是单阶段的 。两阶段法产生的masks高度依赖于第一阶段的区域提案(region proposals)。我们的方法则不同:即使模型预测了帧之间不同的boxes,prototypes也不会受到影响,从而产生时间上更稳定的masks。

Discussion

尽管我们的maks具有更高的质量和更好的性能,比如时间稳定性,但在总体性能上落后于最先进的实例分割方法,尽管速度要快得多。大多数错误都是由探测器中的错误引起的:misclassification,box-misalignment等。然而我们已经确定由YOLACT的masks生成算法引起的两个典型错误。

Localization Failure

如果场景中的一个位置中有太多目标,网络可能无法在其本身的prototype中定位每个目标。在这些情况下,网络将输出更接近前景mask的内容,而不是组中某些目标的实例分割。例如在图6中的第一张图片(第一行第一列)中,红色飞机下面的蓝色卡车没有正确定位。

Leakage

我们的网络利用了mask在组装后被裁剪的情况,而没有尝试抑制裁剪区域外的噪声。当边界框准确时,这种方法可以很好地工作,但当边界框不准确时,噪声可能会影响到实例mask,导致裁剪区域外部产生一些"leakage"。当两个实例彼此相距较远时也可能发生这种情况,因为网络已经学习到它不需要localize遥远的实例,裁剪将处理这种情况。然而如果预测的边界框过大,mask也将包含一些远处实例的mask。例如图6(第2行第4列)表现了这种leakage,因为mask分支认为三名滑雪者距离足够远而不需要将他们分开。

Understanding the AP Gap

然而仅仅localization失败和leakage不足以解释YOLACT的基本模型和Mask R-CNN之间几乎6 mAP的差距。事实上,我们在COCO上的基础模型在其test-dev测试和box mAP(29.8 mask,32.3 box)之间只有2.5mAP的差距,这意味着即使使用完美的masks,我们的模型也只能获得一点mAP。此外,Mask R-CNN具有相同的mAP差异(35.7mask,38.2box),这表明两种方法之间的差距在于我们的检测器性能相对较差,而不是我们生成mask的方法。

A.Appendix

在这里插入图片描述

A.1. Box Result

由于YOLACT除了生成masks还生成boxes,我们还可以将其目标检测性能与其他目标检测方法进行比较。此外,虽然我们的mask性能是实时的,但我们在使用YOLACT作为目标检测器时不需要生成masks。因此,YOACT在运行生成boxes时比运行生成masks时更快,在表4中,我们将我们的性能和速度与YOLOv3的各种版本进行了比较。
因此,我们能够以相似的速度获得与YOLOv3相似的检测结果,同时不使用YOLOv2和YOLOv3中的任何其他改进,如multi-scale training,optimized anchor boxes, cell-based regression encoding, and objectness score。因为在我们的观察中,检测性能的提升主要来自于使用FPN和使用masks进行训练(两者都与YOLO所做的改进有交集),所以很可能可以将YOLO和YOLACT结合起来,创建一个更好的检测器。
此外,这些检测结果表明,我们的mask分支总共只需要6毫秒来评估,这表明我们的mask计算是多么的小。

A.2. More Qualitative Results

图6显示了许多相邻人员和车辆的示例,但其他类别的示例并不多。 为了进一步支持YOLACT不仅仅是做语义分割,我们在图8中包含了更多的定性结果,这些结果是针对具有相同类的相邻实例的图像。
例如,在一张有两只大象的图像中(图8第2行,第2列),尽管两个实例框相互重叠,但它们的masks清楚地分隔了实例。斑马(第4行,第2列)和鸟类(第5行,第1列)的例子也清楚地表明了这一点。
请注意,对于其中的一些图像,box没有完全从mask裁剪下来,这是因为出于速度原因(并且模型是用这种方法训练的),我们以prototype分辨率裁剪mask(即图像分辨率的四分之一),每个方向有1px的填充。另一方面,相对应的box以原始图像分辨率展示,没有用padding。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值