目标检测——Mask R-CNN【请结合其他博客一起食用】

大家好 今天来到了我们Maskrcnn 的分享
由于MaskRCNN网络包含了很多之前介绍过的知识点,例如RPN,FPN,RoIPooling,RoIAlign,故这遍文章看上去显得比较‘单薄’,如果想弄清楚Mask RCNN网络,需要结合之前的博文一同食用! o(=•ェ•=)m

前言

本篇论文其实还是分割为主,但是目前我们的网络基础是分类和检测,知识积累还不够,所以如有分割问题解释的不到位,当我们学习完分割的基础网络还会回来修改的!如果大佬看到我讲的有问题,期待大佬们的点评。(求读者对本文多一点容错,宽容本文~)


另外,本文综合了主流的各种博文,也算是阅文无数!感谢大佬们的帮助!可能并没有联系大佬就进行了copy,对知识产权的侵犯抱歉!
再次疯狂给各位大佬打call!感谢大佬们!

0 前情提要

Mask R-CNN是ICCV 2017的best paper,彰显了计算机视觉领域在2017年的最新成果。在深度学习2017年的最新发展中,单任务的网络结构已经逐渐不再引人瞩目,取而代之的是集成,复杂,一石多鸟的多任务网络模型。 Mask R-CNN就是典型的代表。本大作的一作是何恺明,在该篇论文发表的时候,大佬已经去了FaceBook。


(感觉大佬有些......小可爱~(๑•ᴗ•๑))

今天的分享,我们想先介绍一下,MaskRCNN有多厉害。 我们可以用它干点啥?


可以看到,在实例分割Mask R-CNN框架中,还是主要完成了三件事情:
1)目标检测,直接在结果图上绘制了目标框。
2)目标分类,对于每一个目标,需要找到对应的类别,区分到底是人,是车,还是其他类别。
3)像素级目标分割,在每个目标中,需要在像素层面区分,什么是前景,什么是背景。
Mask rcnn是何恺明基于以往的Faster Rcnn架构提出的新的卷积网络,一举完成了物体实例分割,该方法在有效地目标检测的同时完成了高质量的语义分割。文章的主要思路就是把原有的Faster-RCNN进行扩展,添加一个分支使用现有的检测对目标进行并行预测。
同时,这个网络结构比较容易实现和训练,速度5fps也算比较快,可以很方便的应用到其他的领域,像目标检测,分割,和人物关键点检测等。并且比现有的算法效果都要好,在后面的实验结果部分有展示出来。

我们来看一下为什么会要提出MaskRCNN?
深度学习的解决任务主要分为以下几种(通俗的来解释一下):
(1)图像分类 Image Classification
图像分类,该任务需要我们对出现在某幅图像中的物体做标注。比如一共有1000个物体类,对一幅图中所有物体来说,某个物体要么有,要么没有。可实现:输入一幅测试图片,输出该图片中物体类别的候选集。【即我们要知道某种物体的分类】
(2)物体检测 Object detection
判断属于某个特定类的物体是否出现在图中且 物体定位,定位常用表征就是物体的边界框。可实现:输入测试图片,输出检测到的物体类别和位置。【即我们要知道物体的分类并且检测出矩形框的位置】
(3)语义分割 Semantic scene labeling
语义标注/分割:该任务需要将图中每一点像素标注为某个物体类别。同一物体的不同实例不需要单独分割出来。对下图,标注为人,羊,狗,草地。而不需要羊1,羊2,羊3,羊4,羊5。像素级别的语义分割,对图像中的每个像素都划分出对应的类别,即实现像素级别的分类。【即我们要知道图像中的不同种类的在哪里并且分割出来】
(4)实例分割 Instance segment
实例分割是物体检测+语义分割的综合体。相对物体检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割可以标注出图上同一物体的不同个体(羊1,羊2,羊3…)。【即我们要知道每个物体在哪里并且分割出来】
(5)全景分割(自动驾驶领域中用的比较多,也放上来)
实现实例分割和语义分割的统一,全景分割将传统意义上相互独立的实例分割(检测和分割每个目标实例)和语义分割(为每个像素分配一个类标签)任务统一起来了。这种统一是自然的,并在一种孤立的研究状态中呈现出一种既不存在于实例中,也不存在于语义分割中的全新的挑战。【有兴趣的伙伴们可以了解一下】



1 基础结构


看MaskRCNN的粗略网络结构,不禁觉得眼熟,这不就是faster rcnn改了一点咩??其实这是大佬工作的归并。 使用了RCNN系列、FPN、Resnet\ResNeXt、FCN。

1.1 Mask RCNN

【整体来说】一个概念上简单,灵活和通用的目标分割框架。我们的方法有效地检测图像中的目标,同时为每个实例生成高质量的分割掩码。添加一个与现有目标检测框回归并行的分支,用于预测目标掩码,来扩展Faster R-CNN。
【泛化性】Mask R-CNN很容易推广到其他任务,例如,允许我们在同一个框架中估计人的姿势。我们在COCO挑战的所有三个项目中取得了最佳成绩,包括目标分割,目标检测和人体关键点检测。
【简单且有效】Mask R-CNN训练简单,相对于Faster R-CNN,只需增加一个较小的开销,运行速度可达5 FPS。没有使用额外技巧,Mask R-CNN优于所有现有的单一模型,包括COCO 2016挑战优胜者。

简单而有效的方法----> 促进未来目标级识别领域研究的坚实基础【baseline】;
快速的训练和测试速度,以及框架的灵活性和准确性 ----> 将促进未来目标分割的研究;
人体姿态估计任务 ----> 展示我们框架的通用性 ;

通过添加一个:用于在每个感兴趣区域(RoI)上预测分割掩码的分支来扩展Faster R-CNN [34],这个掩码分支与用于分类和目标检测框回归的分支并行执行,如下图所示(用于目标分割的Mask R-CNN框架)。掩码分支是作用于每个RoI的小FCN,以像素到像素的方式预测分割掩码。


2 Mask RCNN 细节

Faster R-CNN: 我们首先简要回顾一下Faster R-CNN检测器。Faster R-CNN由两个阶段组成。称为区域提议网络(RPN)的第一阶段提出候选目标边界框。第二阶段,本质上是Fast R-CNN,使用RoI Pool从每个候选框中提取特征,并进行分类和边界回归。两个阶段使用的特征可以共享,以便更快的推理。
Mask R-CNN采用相同的两个阶段,具有相同的第一阶段(即RPN)。在第二阶段,与预测类和框偏移量并行,Mask R-CNN还为每个RoI输出二进制掩码。

2.1 损失函数LmaskL_{mask}

在训练期间,我们将在每个采样后的RoI上的多任务损失函数定义为L=Lcls+Lbox+LmaskL=L_{cls}+L_{box}+L_{mask}。分类损失LclsL_{cls}和检测框损失LboxL_{box}与Faster rcnn中定义的相同。
掩码分支对于每个RoI的输出维度为KmmK*m*m,即K个分辨率为m×m的二进制掩码,每个类别一个,K表示类别数量。我们为每个像素应用Sigmoid,并将Lmask定义为平均二进制交叉熵损失。对于真实类别为k的RoI,仅在第k个掩码上计算LmaskL_{mask}(其他掩码输出不计入损失)。
我们对LmaskL_{mask}的定义允许网络为每个类独立地预测二进制掩码,这样不会跨类别竞争。我们依靠专用分类分支预测用于选择输出掩码的类标签。这将解耦掩码和类预测。【耦合:两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象 】这与通常将FCN应用于像素级Softmax和多重交叉熵损失的语义分段的做法不同。在这种情况下,掩码将在不同类别之间竞争。通过实验发现,这种方法是改善目标分割效果的关键。

我们来详细介绍一下损失函数LmaskL_{mask}
(1)mask分支采用FCN对每个RoI的分割输出维数为KmmK*m*m(其中:m表示RoI Align特征图的大小),即K个类别的mmm*m的二值mask ----> 保持mmm*m的空间布局,pixel-to-pixel操作需要保证RoI特征 映射到原图的对齐性,这也是使用RoIAlign解决对齐问题原因,减少像素级别对齐的误差。KmmK*m*m二值mask结构解释:最终的FCN输出一个K层的mask,每一层为一类,Log输出,用0.5作为阈值进行二值化,产生背景和前景的分割Mask;
(2)LmaskL_{mask} 使得网络能够输出每一类的 mask,且不会有不同类别 mask 间的竞争. 分类网络分支预测 object 类别标签,以选择输出哪个mask,对每一个ROI,如果检测得到ROI属于哪一个分类,就只使用哪一个分支的相对熵误差作为误差值进行计算;
(3)(举例说明:分类有3类(猫,狗,人),检测得到当前ROI属于“人”这一类,那么所使用的LmaskL_{mask}为“人”这一分支的mask,即,每个class类别对应一个mask可以有效避免类间竞争(其他class不贡献Loss);
(4)对每一个像素应用sigmoid,然后取RoI上所有像素的交叉熵的平均值作为LmaskL_{mask}

2.2 FCN分支介绍

FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。 最后逐个像素计算softmax分类的损失, 相当于每一个像素对应一个训练样本。


简单的来说,FCN与CNN的区别在把于CNN最后的全连接层换成卷积层,输出的是一张已经Label好的图片。FCN 存在一个问题,输入经过几个卷积和池化后,输出特征图的分辨率下降,因此,FCN 的直接预测分辨率低,导致了相对模糊的物体边界。




掩码表示——ROI Align

具体来说,我们使用FCN来为每个RoI预测一个m×m的掩码。这允许掩码分支中的每个层显式的保持m×m的对象空间布局,而不会将其缩成缺少空间维度的向量表示。与以前使用fc层掩码预测的的方法不同,我们的全卷积表示需要更少的参数,并且如实验所证明的更准确。
这种像素到像素的行为需要RoI特征,它们本身就是小特征图。为了更好地对齐,以准确地保留显式的像素空间对应关系,我们开发出在掩模预测中发挥关键作用的以下RoIAlign层。
Faster R-CNN不是为网络输入和输出之间的像素到像素对齐而设计的。(前文讲述roi pooling 时已经预告过了,当faster rcnn时不在乎像素级的差异,是粗略的空间量化特征提取,进行了多次量化【上/下取整】。而像素级别,对于分割问题至关重要)。
RoIPooling使用取整量化,导致特征图RoI映射回原图RoI时空间不对齐明显,造成误差;于是使用RolAlign代替了RoIPooling;为了修正错位,我们提出了一个简单的,量化无关的层,称为RoIAlign,可以保留精确的空间位置。尽管是一个看似很小的变化,RoIAlign起到了很大的作用:

  • 它可以将掩码准确度提高10%至50%;
  • 在更严格的位置度量下,显示出更大的收益;
  • 其次,我们发现解耦掩码和分类至关重要:我们为每个类独立地预测二进制掩码,这样不会跨类别竞争,并且依赖于网络的RoI分类分支来预测类别;
  • 相比之下,FCN通常执行每像素多类分类,分割和分类同时进行,基于我们的实验,对于目标分割效果不佳;

RoI Pool是从每个RoI提取小特征图(例如,7×7)的标准操作。 RoI Pool首先将浮点数表示的RoI缩放到与特征图匹配的粒度,然后将缩放后的RoI分块,最后汇总每个块覆盖的区域的特征值(通常使用最大池化)。例如,对在连续座标系上的xx计算[x/16],其中16是特征图步幅,[⋅]表示四舍五入。同样地,当对RoI分块时(例如7×7)时也执行同样的计算。这样的计算使RoI与提取的特征错位。虽然这可能不会影响分类,因为分类对小幅度的变换具有一定的鲁棒性,但它对预测像素级精确的掩码有很大的负面影响。
为了解决这个问题,我们提出了一个RoI Align层,可以去除RoI Pool的错位,将提取的特征与输入准确对齐。我们提出的改变很简单:不再使用量化,避免计算过程中的四舍五入(比如,我们使用x/16代替[x/16])。我们选取分块中的4个常规的位置,使用双线性插值来计算每个位置的精确值,并将结果汇总(使用最大或平均池化)。(我们抽取四个常规位置,以便我们可以使用最大或平均池化。事实上,在每个分块中心取一个值(没有池化)几乎同样有效。我们也可以为每个块采样超过四个位置,我们发现这些位置的收益递减。)

【双线性差值】
双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。【具体的可以参见博客图像处理之双线性插值法,感谢大佬们的分享!】

假如我们想得到点 P = (x, y) 的函数值(比如说在图像中最简单的映射就是点(x,y)的像素值,即转化为我们想得到点P的像素值);
而我们已知的是Q11=(x1,y1)Q12=(x1,y2)Q21=(x2,y1)Q22=(x2,y2)Q_11= (x1, y1);Q12 = (x1, y2);Q21 = (x2, y1);Q22 = (x2, y2)的四个点的像素值;
【解决方案:双线性差值】(就是两次的线性插值)
f(R1)x2xx2x1f(Q11)+xx1x2x1f(Q21),whereR1=(x,y1)f(R2)x2xx2x1f(Q11)+xx1x2x1f(Q22),whereR2=(x,y2) f(R_1) \approx \frac{x_2-x}{x_2-x_1}f(Q_{11}) + \frac{x-x_1}{x_2-x_1}f(Q_{21}) , where R_1=(x,y_1) \\ f(R_2) \approx \frac{x_2-x}{x_2-x_1}f(Q_{11}) + \frac{x-x_1}{x_2-x_1}f(Q_{22}) , where R_2=(x,y_2) \\
然后在 y 方向进行线性插值,综合起来就是双线性插值最后的结果。(注明:由于图像双线性插值只会用相邻的4个点,因此上述公式的分母都是1)

如我们在消融实验(控制变量法)中,RoI Align的改进效果明显。我们还比较了的RoI Warp操作。 与RoI Align不同,RoI Warp忽略了对齐问题,并在实现中,有像RoI Pool那样的四舍五入计算。因此,即使RoI Warp也采用双线性重采样,如实验所示(更多细节见表格2c),它与RoI Pool效果差不多。这表明了对齐起到了关键的作用。 在相关实验中,作者发现将采样点设为4会获得最佳性能,甚至直接设为1在性能上也相差无几。事实上,ROI Align 在遍历取样点的数量上没有ROI Pooling那么多,但却可以获得更好的性能,这主要归功于解决了misalignment的问题。

ROI Warp方法比前面提到的ROI Pooling方法稍微好一些。
该方法出现在Instance-aware Semantic Segmentation via Multi-task Network Cascades中。主要的区别在于第二步。还是用上面提到的例子:在该网络中假设使用的骨架网络中的 feat_stride=16,且测试图像中的一个边界框的大小为400∗300
1)corp操作。 边界框在对应feature map上的大小为200/16∗150/16=25∗18.75,注意这个时候出现小数了。那么就需要像之前的方法一样对其进行第一次量化操作,得到的特征图上大小为25∗18。
2)warp操作。 这里使用的是双线性差值算法,使corp操作的特征图变化到固定的尺度上去,比如14∗14,这样再去做Pooling得到固定的输出。这里的座标就是连续的了,不会存在量化误差。
可以看出这里去掉了第二次的量化操作,进而减小了误差,也提升了检测的精度。

3 网络架构

为了证明我们的方法的普适性,我们构造了多种不同结构的Mask R-CNN。使用不同的:
(i)用于整个图像上的特征提取的下层卷积网络,
(ii)用于检测框识别(分类和回归)和掩码预测的上层网络。

我们使用”网络-深度-特征输出层”的方式命名底下层卷积网络。我们评估了深度为50或101层的ResNet和ResNeXt网络。使用ResNet的Faster R-CNN从第四阶段的最终卷积层提取特征,我们称之为C4。例如,使用ResNet-50的下层网络由ResNet-50-C4表示。
我们还探讨特征金字塔网络(FPN)。 FPN使用具有横旁路连接的自顶向下架构,以从单尺度输入构建网络中的特征金字塔。使用FPN的Faster R-CNN根据其尺度提取不同级别的金字塔的RoI特征,不过其它部分和平常的ResNet类似。使用ResNet-FPN进行特征提取的Mask R-CNN可以在精度和速度方面获得极大的提升。
对于上层网络,我们基本遵循了以前论文中提出的架构,我们添加了一个全卷积的掩码预测分支。具体来说,我们扩展了 ResNet和FPN中提出的Faster R-CNN的上层网络。详细信息如下图(上层网络架构:我们扩展了两种现有的Faster R-CNN上层网络架构,分别添加了一个掩码分支。图中数字表示分辨率和通道数,箭头表示卷积、反卷积或全连接层(可以通过上下文推断,卷积减小维度,反卷积增加维度。)所有的卷积都是3×3的,除了输出层,是1×1的。反卷积是2×2的,步进为2,,我们在隐藏层中使用ReLU。左图中,“res5”表示ResNet的第五阶段,简单起见,我们修改了第一个卷积操作,使用7×7,步长为1的RoI代替14×14,步长为2的RoI。右图中的“×4”表示堆叠的4个连续的卷积。)

基于FCN(Fully Convolutional Networks,全卷积网络),把 ROI 区域映射为一个 mmnumclassm*m*numclass 的特征层,例如28288028*28*80,论文中结构如右图:
对 ROIAlign 操作生成的 ROI 区域固定大小的特征图,经过 4 个卷积操作后,生成141414*14大小的特征图;然后经过上采样生成 28*28 大小的特征图;最后通过卷积操作生成大小为282828*28,深度为 80 的特征图。
上述过程为全卷积网络,这样可以保证 mask 分支的每一层都有 mmm*m 大小的空间布局,不会缺少空间维度的向量,并且与全连接层预测 mask 相比,FCN 需要更少的参数,可以得到更好的效果。

ResNet-C4的上层网络包括ResNet的第五阶段(即9层的“res5),这是计算密集型的。
对于FPN,下层网已经包含了res5,因此可以使上层网络包含更少的卷积核而变的更高效。
我们注意到我们的掩码分支是一个非常简单的结构。也许更复杂的设计有可能提高性能,但不是这项工作的重点。

3.1 网络结构细化图

代码中将Resnet101网络,分成5个stage,记为 [C1,C2,C3,C4,C5]; 如果了解FPN网络(也可以参看上面提供的FPN网络博文链接),知道这里的5个阶段分别对应着5中不同尺度的feature map输出,用来建立FPN网络的特征金字塔(feature pyramid)
先通过MaskRCNN网络结构图,整体了解MaskRCNN网络。

  • 【FPN】虽然事先将ResNet网络分为5个stage,但是,并没有利用其中的Stage1即P1的特征,官方的说法是因为P1对应的feature map比较大计算耗时所以弃用; 相反,在Stage5即P5的基础上进行了下采样得到P6,故,利用了[P2 P3 P4 P5 P6]五个不同尺度的特征图输入到RPN网络,分别生成RoI;
  • [P2 P3 P4 P5 P6]五个不同尺度的特征图由RPN网络生成若干个anchor box,经过NMS非最大值抑制操作后保留将近共2000个RoI(2000为可更改参数),由于步长stride的不同,分开分别对[P2 P3 P4 P5]四个不同尺度的feature map对应的stride进行RoIAlign操作,将经过此操作产生的RoI进行Concat连接,随即网络分为三部分:全连接预测类别class、全连接预测矩形框box、全卷积预测像素分割mask;
3.2 实现细节【略】

(想详细了解的小伙伴请回去看论文~)
超参数的设置与现有的Fast/Faster R-CNN基本一致。虽然这些设定是在原始论文中是用于目标检测的,但是我们发现我们的目标分割系统也是可以用。
【训练】:与Faster R-CNN中的设置一样,如果RoI与真值框的IoU不小于0.5,则为正样本,否则为负样本。掩码损失函数Lmask仅在RoI的正样本上定义。掩码目标是RoI及其对应的真值框之间的交集的掩码。
我们采用以图像为中心的训练。图像被缩放(较短边)到800像素。批量大小为每个GPU2个图像,每个图像具有N个RoI采样,正负样本比例为1:3。 C4下层网络的N为64,FPN为512。我们使用8个GPU训练(如此有效的批量大小为16)160k次迭代,学习率为0.02,在120k次迭代时学习率除以10。我们使用0.0001的权重衰减和0.9的动量。
RPN锚点跨越5个尺度和3个纵横比。为方便消融,RPN分开训练,不与Mask R-CNN共享特征。本文中的,RPN和Mask R-CNN具有相同的下层网络,因此它们是可共享的。
【测试】:在测试时,C4下层网络中的候选数量为300,FPN为1000。我们在这些候选上执行检测框预测分支,然后执行非极大值抑制。然后将掩码分支应用于评分最高100个检测框。尽管这与训练中使用的并行计算不同,但它可以加速推理并提高精度(由于使用更少,更准确的RoI)。掩码分支可以预测每个RoI的KK个掩码,但是我们只使用第kk个掩码,其中kk是分类分支预测的类别。然后将m×mm×m浮点数掩码输出的大小调整为RoI大小,并使用阈值0.5将其二值化。
请注意,由于我们仅在前100个检测框中计算掩码,Mask R-CNN将边缘运行时间添加到其对应的Faster R-CNN版本(例如,相对约20%)

4 实验:目标分割

我们对Mask R-CNN与现有技术进行彻底的比较,并且进行了综合的消融实验。我们的实验使用COCO数据集。我们报告标准的COCO指标,包括AP(平均超过IoU阈值),AP50,AP75和APS,APM,APL(不同尺度的AP)。除非另有说明,使用掩码IoU评估AP
我们训练使用80k训练集和35k验证集的子集(trainval35k)的组合,并在剩下的5k个验证集子集(minival)上报告消融。

4.1 主要结果
Mask R-CNN在COCO测试集上的结果。这些结果基于ResNet-101,掩码AP达到了35.7,并可以5FPS的速度运行。掩码标记为彩色,并且标记出了边框、类别和置信度。
Mask R-CNN在COCO测试集上更多的结果。使用ResNet-101-FPN,并可以35FPS运行。掩码AP为35.7(表1)
FCIS+++(上)对比 Mask R-CNN(下,ResNet-101-FPN)。 FCIS在部分重叠对象上有问题,Mask R-CNN没问题。

我们将Mask R-CNN与其它最先进的目标分割方法进行比较,如下表(表1)所示:(COCO test-dev上的目标分割掩码AP。 MNC和FCIS分别是COCO 2015和2016分割挑战的获胜者。Mask R-CNN优于更复杂的,包含多尺度训练和测试、水平翻转测试的FCIS+++,和OHEM[ online hard example mining(OHEM)算法训练基于区域的卷积检测算子的高效目标检测算法,能够对简单样本和一些小数量样本进行抑制,使得训练过程更加高效。所有条目都是单模型的结果)

4.2 消融实验

我们进行了一些消融来分析Mask R-CNN。结果显示在下表(表2)中(Mask R-CNN的消融。我们在trainval35k上训练,在minival上测试,并报告掩码AP,除非另有说明。),并在下面详细讨论。


【结构】 表2a显示了具有各种使用不同下层网络的Mask R-CNN。它受益于更深层次的网络(50对比101)和高级设计,包括FPN和ResNeXt(我们使用64×4d的普通的ResNeXt)。我们注意到并不是所有的框架都会从更深层次的或高级的网络中自动获益(参见13中的基准测试)。
【独立与非独立掩码】 Mask R-CNN解耦了掩码和类预测:由于现有的检测框分支预测类标签,所以我们为每个类生成一个掩码,而不会在类之间产生竞争(通过像素级Sigmoid和二值化损失)。在表2b中,我们将其与使用像素级Softmax和非独立损失的方法进行比较(常用于FCN)。这些方法将掩码和类预测的任务结合,导致了掩码AP(5.5个点)的严重损失。这表明,一旦目标被归类(通过检测框分支),就可以预测二值化掩码而不用担心类别,这样可以使模型更容易训练。
【类相关与类无关掩码】 我们默认预测类相关的掩码,即每类一个m×m掩码。有趣的是,这种方法与具有类别无关掩码的Mask R-CNN(即,预测单个m×m输出而不论是那一类)几乎同样有效:对于ResNet-50-C4掩码AP为29.7,而对于类相关的对应的模型AP为30.3 。这进一步突出了我们的方法中的改进:解耦了分类和分割。
【RoIAlign】 表2c显示了对我们提出的RoIAlign层的评估。对于这个实验,我们使用的下层网络为ResNet-50-C4,其步进为16。RoIAlign相对RoIPool将AP提高了约3个点,在高IoU(AP75)结果中增益更多。 RoIAlign对最大/平均池化不敏感,我们在本文的其余部分使用平均池化。
此外,我们与采用双线性采样的MNC [10]中提出的RoI Warp进行比较。如实验:目标分割所述,RoIWarp仍然四舍五入了RoI,与输入失去了对齐。从表2c可以看出,RoIWarp与RoIPool效果差不多,比RoIAlign差得多。这突出表明正确的对齐是关键。
我们还使用ResNet-50-C5下层网络评估了RoIAlign,其步进更大,达到了32像素。我们使用与图3(右)相同的上层网络,因为res5不适用。表2d显示,RoIAlign将掩码AP提高了7.3个点,并将掩码的AP75AP75 提高了10.5个点(相对改善了50%)。此外,我们注意到,与RoIAlign一样,使用步幅为32的C5特征(30.9 AP)比使用步幅为16的C4特征(30.3 AP,表2c)更加精准。 RoIAlign在很大程度上解决了使用大步进特征进行检测和分割的长期挑战。
最后,当与FPN一起使用时,RoIAlign显示出1.5个掩码AP和0.5个检测框AP的增益,FPN具有更精细的多级步长。对于需要更精细对准的关键点检测,即使使用FPN,RoIAlign也显示出很大的增益(表6)。
【掩码分支】 分割是一个像素到像素的任务,我们使用FCN来利用掩码的空间布局。在表2e中,我们使用ResNet-50-FPN下层网络来比较多层感知机(MLP)和FCN。使用FCN可以提供超过MLP 2.1个点的AP增益。为了与MLP进行公平的比较,FCN的上层网络的卷积层没有被预训练。

【参考博文】
roi pool/ align:https://www.cnblogs.com/wangyong/p/8523814.html
双线性插值:https://zhuanlan.zhihu.com/p/49832048
全景分割: http://www.sohu.com/a/215073729_297710
https://blog.csdn.net/u010821666/article/details/78697723
https://blog.csdn.net/xiamentingtao/article/details/78598511
http://www.sohu.com/a/215073729_297710
https://cloud.tencent.com/developer/news/189753

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章