TensorMask | 基于密集滑窗的实例分割 | FAIR实验室19年3月新作

TensorMask: A Foundation for Dense Object Segmentation

一种密集实例分割的基本方法

原文链接:https://arxiv.org/pdf/1903.12174.pdf

建议对照原文阅读,内部公式显示不出来,所以用了简单文本/截图的表示方式。文中一些翻译用词为个人观点,如果偏差请谅解指出

摘要

在密集规则的网格上生成边界框物体预测的滑窗目标检测器非常流行。对比而言,现代的实例分割方法一般先检测物体的边界框,然后裁剪分割出对应的预测区域,比如Mask R-CNN。本文我们调查了密集滑窗实例分割(dense sliding-window instance segmentation)的范式,而这个目前还未被研究。我们研究发现,这个方法从根本上不同于其他的密集预测任务,如语义分割或边界框目标检测,因为每个空间位置的输出是空间维度的几何结构。为了公式化说明这个问题,我们将密集实例分割看作是一种4D张量的预测任务,并且提出了一种叫做TensorMask的通用框架,来显式地捕捉到几何信息并且能够在4D张量上使用新的运算。我们证明这种张量的视角可以在baseline上获得巨大的提升,并且能够和Mask R-CNN不相上下。这些结果显示了,在密集掩膜预测上,TensorMask可以作为新方法的基础模型和对这项任务的更完整的理解。

序言

滑窗范式(sliding-window paradigm)(通过在考察图像位置对应的密集集合上的窗口来寻找目标)是一种计算机视觉领域最早的也最成功的概念,很自然地和卷积神经网络联系在一起。然而,尽管目前依靠滑窗预测来生成初始候选区域并微调候选区域以获得更准确的预测的方法表现的非常出色,比如目标检测的Faster R-CNN和实例分割的Mask R-CNN。这类方法霸占了COCO检测挑战的排行榜。

最近,有一些回避了微调阶段,着眼于直接通过滑窗预测的边界框目标检测器再起,并且表现出了不错的结果,比如SSD和RetinaNet。对比而言,密集滑窗的实例分割一直没有动静,没有这样一种和SSD/RetinaNet可比拟的直接的、密集的方法用在分割掩膜预测上。为什么密集方法在检测上用到却没有出现在实例分割中呢?这是一个很有趣的基本学术问题。我们的目标就是构建这样一座桥梁来为密集实例分割搭建基础,弥补断层。

我们发现,目前不存在一种定义密集掩膜表征方法的核心概念以及在神经网络有效实现这些概念的方法。不像尺度无关的固定的、低维表征的边界框,分割掩膜需要更丰富、结构信息更多的表征。举例来说,掩膜本身是一个2D的空间图,更大物体的掩膜会得益于更大的空间图。研究密集掩膜有效的表征是使能密集实例分割的关键一步。

为了解决这个问题,我们定义了一系列核心概念来表征高维张量的掩膜,并且允许密集掩膜预测的新型网络结构的探索。我们提出并实验了几种网络来验证所提出的表征方法的优越性。我们的框架叫做TensorMask,是第一个采用密集滑窗方式的实例分割模型,效果可以与Mask R-CNN相提并论。

TensroMask表征的中心观点是使用结构化的4D张量来表征空间范围的掩膜。这个观点和先前的类别无关的、使用非结构化的3D张量的模型如DeepMask和InstanceFCN相比,后者掩膜被包在第三个通道维上。通道维度不像表征物体位置的维度,它没有明确的几何意义因此很难处理。通过使用基本的通道表征,模型就会失去从2D实体中使用结构化信息的机会,就好像MLPs和ConvNets在表征2D图像上的差异一样。

不像那些通道有向的方法,我们提出的4D张量(V, U, H, W),其中几何子张量(H, W)代表了目标的位置,几何子张量(V, U)代表了表征对应掩膜的位置。换句话说,4D张量包含了关于图像的几何含义和定义明确的单元。从在非结构维上编码掩膜到使用结构化的集合子张量的观点转变,帮助我们定义新的运算和新的网络结构。这些网络可以直接用有几何含义的方法操作子张量(V, U),包括坐标变换、尺度缩放、尺度金字塔等等。

在TensorMask模型的基础上,我们在4D张量的尺度索引表上发展了一种金字塔结构,叫做双向张量金字塔(tensor bipyramid)。相比于抽取多尺度的特征图的特征金字塔,双向张量金字塔包含了形状为(2^k*V,2^k*U,1/2^k*H,1/2^k*W)的4D张量组,其中k是尺度因子。这个结构在(H, W)和(V, U)几何子张量上都有金字塔形状,但是方向相反。这个自然的设计捕获了想要获得的属性**:大的物体需要高分辨率的掩膜和相对粗糙的空间定位(k大),小的物体需要低分辨率的掩膜和精确的空间定位(k小)**。

我们在网络主干上结合了这些模块,训练阶段参照RetinaNet,而将其密集边界框预测器扩展为了我们的密集掩膜预测器。通过详细的消融实验,我们验证了TensorMask的有效性,并且展示了显式捕获几何结构的重要性。最后,TensorMask和Mask R-CNN效果上持平。这些结果意味着我们提出的框架可以为密集滑窗实例分割的未来研究铺路。

相关工作

分类掩膜提议

先检测后分割

先像素级分类后聚类

密集滑窗方法:no prior methods exist for dense sliding-window instance segmentation

掩膜张量表征方式

TensorMask的中心思想是使用结构化的高维张量来表征图像信息(e.g. 掩膜),放在一系列密集滑窗中。

考虑在WxH的特征图上用一个VxU窗口滑动,我们可以通过张量CxHxW表征所有滑窗的位置上的掩膜,每个掩膜可以被参数化为C=V*U个像素,这个思想是DeepMask提出的。

这个表征的潜在精神实际上是一个(V, U, H, W)的4D张量,子张量代表了一个2D空间实体的掩膜。不同于将通道C看做是一个内部安排了VxU掩膜的黑箱,这个张量的观点会使能很多表征密集掩膜重要概念。

21c432a782b49bd6fd4aea0136ce957a251.jpg

927f5a873352403f74573cf0002826c6e93.jpg

5628270b6a2b157ab82286185f152f7e177.jpg

49d8a7e55bd680c531e2fdc6bfc74c5b01d.jpg

066df48e12a9ce53fa94e8817b329df2294.jpg

5fa483287b798526583058d40dd5cf2a3bb.jpg

0a26b198a287b7b9fb351d983f3b4dcb79c.jpg

3.6 双向张量金字塔(Tensor bipyramid)

在多尺度目标检测中,使用低分辨率的特征图来抽取大尺度的目标是一种常见的做法。这是因为固定尺寸的滑窗在低分辨率特征图上对应的是输入图像上大尺度的区域。道理在多尺度实例分割中也同样。但是,不同于预测框总是由四个尺度无关的数字表征,一个掩膜的像素尺寸一定和物体尺寸有关,为了保持恒定的分辨率密度。因此,我们采用基于尺度的掩膜像素数量,而不是总是使用VxU来表征不同尺度的掩膜。

考虑到在最精细特征图上的自然表征(V, U, H, W),这里(H, W)有最高的分辨率(最小的单位),我们期望用这个来处理最小的目标,进而(V, U)应该有最低的分辨率。以此为依据,我们构建了一个金字塔模型,逐步降低(H,W),逐步提高(V,U)。严格上说,我们定义双向张量金字塔如下:

03847ff2aac67643ffb1556546089040db4.jpg

77fbd645f1f7150e17243acf0901f33b776.jpg

TensorMask结构

我们由TensorMask的表征方式构建了整个模型。这些模型中有在滑动窗口中生成掩膜的掩膜预测头部网络,和预测目标分类的分类头部网络,后者和滑窗目标检测器中的框回归和分类头部类似。框预测在TensorMask中是不必要的,但是可以被很简单的加入进来。

4.1 掩膜预测头

我们的掩膜预测分支和FPN的卷积主干相连,FPN会生成尺寸为192a1bd145fc000bac91ed009f68719d3ac.jpg 的特征金字塔,其中对于每个k,通道C都是固定的。这些特征图会被用来当做各个预测头部的输入:掩膜预测、类别预测、框预测。对于不同层次会有权重,但是不同任务之间没有权重。

输出表征。 自然表征永远是网络的输出格式。任何表征(自然、对齐等等)可以被用在中间层中,但是都在最后会被转换成自然表征格式的输出。这个标准化解耦了来自网络设计的损失函数定义,简化不同表征的的使用。另外,我们的掩膜输出是类无关的,也就是说,滑窗总是会预测单个无关类别的掩膜,掩膜的类别会交由分类头来预测。类无关的掩膜预测避免了将输出尺寸和类别数量相乘。

baseline头部。我们设计了四种baseline头部,见图6,每种头部接受一个(C, H, W)作为输入特征图。然后通过合适输出通道数对1x1卷积核加ReLU来将特征图变为下一层所需要的4D张量,我们令这步操作为conv+reshape。图6a和6b是使用了自然表征和对齐表征的简单头部。在两种例子中,我们使用V*U作为1x1卷积的输出通道数,紧接着做align2nat操作。图6c和6d是使用了自然表征和对齐表征的放大头部,其1x1卷积输出通道数比简单头部少λ倍。

在baseline的TensorMask模型中,四个头部之一被选中并且和所有FPN层连接,输出形式是b8b3ce412ab9d6c28af98e1d19c67537b57.jpg ,如图7a,对于每个头部,输出滑窗总是和特征图有相同的单位,也就是对于每一层:68811695e5c5038b01fb7c16b0a562d0733.jpg

c9c3bb29739d7e793387d4252da1ad7982b.jpg

b8b781e6e6b6dea90a3bd4b78857d9d042f.jpg

**双向张量金字塔头。**不同于baseline头部,双向张量金字塔头部每层都接受高分辨率(H,W)特征图作为输入。图8展示了一种对FPN的小改动来获得这些特征图,对于每个结果层,都为(C, H, W),我们首先使用conv+reshape来产生合适的4D张量,接着用swap_align2nat运行掩膜预测头部,见图7b。这个双向张量金字塔模型在TensorMask中是最有效。

da3d04d98af4af67cf2fe1b3dcf0791b7f4.jpg

训练

标签分配。我们使用了DeepMask的标签分配规则来给每个窗分配标签。满足关于ground-truth掩膜m的三个条件的窗就认为是正例:

i) 包含度 Containment: 窗口完全包含m并且m的长边至少是窗长边的1/2,也就是:9bf029fa3cc49564058d5d416816c9b8128.jpg .

ii) 中心度 Centrality: m对应边界框的中心与窗的中心距离小于l2距离下的一个单位(e0f217b9adea78578b79af4ee2cef776334.jpg ).

iii) 唯一性 Uniqueness: 没有其他的掩膜m’≠m,满足以上两个条件。

如果m满足以上三个条件,那么这个窗会被标记为对应gt给出的掩膜、物体类别、框所对应的正例。否则,这个窗会被标记为负例。

对比基于IoU的框分配规则(RPN, SSD, RetinaNet),我们的规则是**掩膜驱动(mask-driven)**的。实验显示,相比于RetinaNet的9个多尺度锚点(anchor)使用一个或两个固定长宽比的窗尺寸我们的规则效果更好,

损失。对于掩膜预测头,我们采用了每像素二值分类损失。在我们的设置中,gt掩膜在滑窗中占比较大的区域,导致前景和背景像素失衡。因此我们使用focal loss而不是二值交叉熵来解决样本不平衡问题,尤其是当我们使用γ=2,α=1.5的FL*时效果尤为显著。单一窗的掩膜损失为窗中所有像素的平均(注意到tensor bipyramid中窗尺寸在不同层次中是变化的),总掩膜损失为所有正例窗的损失的平均(负例窗不贡献掩膜损失)。

对于分类头,我们采用γ=3,α=0.3的FL*,对于框回归,我们采用无参数的l1损失,总损失为各个任务损失的加权和。

实现细节。每个FPN层经过四个Cx3x3卷积+relu输出(而不是FPN原始的只有一个卷积)。对于各个头部,权重在各个层次中被共享,而不是在各个任务中。另外,我们发现FPN中平均(而不是加和)自顶向下和横向连接能够提高训练稳定性。我们使用FPN的第2-7层经过四个C=128的卷积来做掩膜和框的头部。分类头部的C=256。除非额外说明,我们都使用ResNet50。

训练中,所有模型都用ImageNet初始化权重,我们使用尺度抖动(scale jitter),将图像短边随机从[640, 800]像素中采样。参考SSD和YOLO,训练时间更长(~65-160epoch),我们使用6倍规则(6x schedule, rethinking imagenet pre-training)(~72epoch)提高效果。batchsize=16*8,基本学习率为0.02,1k次迭代的线性warm-up,其他超参数参考[13](//github.com/facebookresearch/detectron)。

预测

预测和密集滑窗目标检测器相似。我们使用单尺度的800像素作为图像短边。我们的模型为每个窗输出一个掩膜预测,一个类别分数和一个预测框。NMS根据框的IoU筛选最高分数的预测。为了将预测的soft掩膜转换为原图分辨率的二值掩膜,我们使用和Mask R-CNN同样的方法和超参数。

实验

我们提供了COCO实例分割数据集上的结果。所有模型在train2017的118k张图片上训练,在val2017的5k张图片上上测试。最终结果在test-dev集上测试。我们使用COCO掩膜平均精度(AP),当我们具体指代框的AP时,我们会用AP^bb。

5.1 TensorMask表征

首先我们研究了在ResNet-50-FPN主干上V=U=15的不同张量表征。我们提供了定量的结果在表2上,并且提供了定量的比较在图2和9.

简单头部。表1比较了简单头部的自然表征和对齐表征(图6a和6b)两个表征的表现是相似的,有0.2AP的波动范围。自然表征的简单头部可以被看做是特定类别的FPN骨架加focal loss的DeepMask。

放大头部。表2a对比了自然表征和对齐表征在放大头部上的不同。输出尺寸固定在VxU=15x15。对于一个放大系数λ,图6的conv有VU/λ^2个通道,比如9个通道,λ=5(等价于没有放大的225个通道)。对于大的λ准确率上的不同是非常大的:λ=5时对齐比自然头部AP好了15.6个点。

从图9a和9c上就能看出明显的区别。放大对齐头部在λ比较大的时候仍然有较精细的掩膜,这也是归功于tensor bipyramid,输出是(2^k)Vx(2^k)U, λ=2^k。

插值。子张量f7655805ba1a63f93b15b059caf64a742b2.jpg 是一个可以被操作的2D空间实体,表2b对比了放大对齐头部用双线性插值和最近邻插值的不同。We refer to this latter variant as unaligned since quantization breaks pixel-to-pixel alignment. 未对齐变量参考InstanceFCN.

我们观察到表2b,双线性插值相比最近邻有明显的提升,尤其是λ比较大的情况下(ΔAP=3.2)。这些插值方法从直观上也能从物体间的空隙中看出来,图9b和9c。

Tensor bipyramid。用双向张量金字塔代替最好的特征网络模型,取得了4.1个点的提升。这里掩膜尺寸是VxU=15x15,k=0,对应32Vx32U=480x480,k=5,见图7b。更高的分辨率掩膜预测更大的物体(比如k=5),APL提升了7个点。这个提升不是由于(H/32, W/32)分辨率的输出滑窗带来的。

而且,我们注意到一个4802个通道的卷积很难实现,而采用双线性插值的放大对齐头部使双向张量金字塔成为可能。

滑窗多尺寸。在此之前,我们在每一层用的是单一的滑窗尺寸,也就是VxU=15x15。和当前用在RPN的anchors概念类似,我们也把我们的方法扩展为多个滑窗尺寸。我们设置VxU∈{15x15, 11x11},使每层有了两个头部。表2d展示了两个滑窗尺寸带来的效果,提升了1.6个点。更多的窗尺寸和长宽比仍有探索提升的空间。

5.2 和Mask R-CNN对比

精度上。在test-dev上接近Mask R-CNN,意味着dense sliding-sindow方法效果基本达到了“detect-then-segment”方法。

速度上。最好的R-101-FPN TensorMask模型,包含所有后处理过程,在V100上每图0.38s。对应Mask R-CNN为每图0.09s。这是因为密集滑窗>100k个,而Mask R-CNN<=100个。速度本文不做考虑但有更多研究的空间。

转载于:https://my.oschina.net/u/3772643/blog/3030671

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DOTA (Detection in Aerial Images) 数据集是一个面向航空图像目标检测的数据集,其中包含高分辨率的航拍图像、目标类别标签和边界框标注。而 Fair1M 数据集是一个大规模的目标检测数据集,其中包含超过1,000,000个物体实例和7个常见目标类别,包括人、车、动物等。 从数据质量方面来看,DOTA 数据集具有高分辨率、多样性和真实性,而 Fair1M 数据集则具有大规模、多样性和真实性。 从任务难度方面来看,DOTA 数据集由于是面向航空图像的目标检测,因此需要考虑复杂的背景干扰和目标尺度变化等问题,具有一定的难度。而 Fair1M 数据集则是一个大规模数据集,因此可以用于评估模型的泛化能力和对不同场景下的目标识别能力。 从数据分布方面来看,DOTA 数据集中的样本符合实际场景中的分布,因此可以确保模型的鲁棒性和可靠性。而 Fair1M 数据集也具有真实场景的分布,但是由于数据量较大,可能存在一定的偏差。 从数据集规模方面来看,DOTA 数据集包含2806张高分辨率航拍图像和188,282个物体实例,而 Fair1M 数据集包含超过1,000,000个物体实例。 从可重复性方面来看,DOTA 数据集已经成为了目标检测领域的基准数据集之一,并且已经在不同的模型和算法之间进行了广泛的比较和竞争。而 Fair1M 数据集相对较新,还需要更多的实验和验证来证明其可重复性。 从数据集更新方面来看,DOTA 数据集已经在过去几中不断更新和扩展,以适应不同的应用场景和需求。而 Fair1M 数据集也需要不断更新和扩展,以便于模型能够持续学习和适应变化的场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值