图像分割(九)—— Mask Transfiner for High-Quality Instance Segmentation

Mask Transfiner for High-Quality Instance Segmentation

  • Abstract
  • 1. Intrudouction
  • 3. Mask Transfiner
    • 3.1. Incoherent Regions
    • 3.2. Quadtree for Mask Refinement
      • Detection of Incoherent Regions
      • 四叉树的定义与构建
      • 四叉树的细化
      • 四叉树的传播
    • 3.3. Mask Transfiner Architecture
      • 细化网络的架构
      • RoI特征金字塔
      • 输入节点序列
      • 节点编码器
      • 序列编码器和像素解码器
      • 训练和推理
      • 实现细节

Abstract

两阶段和基于查询的实例分割方法取得了显著的效果。然而,它们的分割掩模仍然非常粗糙。在本文中,我们提出了掩模转换器的高质量和高效的实例分割。我们的掩模变换器不是在规则的密集张量上工作,而是分解并将图像区域表示为四叉树。我们的基于转换器的方法只处理检测到容易出错的树节点,并并行地自纠正它们的错误。虽然这些稀疏像素只占总数的一小部分,但它们对最终的掩模质量至关重要。这使得掩码转换器能够以较低的计算成本预测高度准确的实例掩码。大量的实验表明,掩码转换器在三个流行的基准测试上优于当前的实例分割方法,显著改善了两阶段和基于查询的框架,在COCO和BDD100K上的+3.0掩码AP,以及在城市景观上的+6.6边界AP。

1. Intrudouction

实例分割是计算机视觉中的一个基础任务,需要预测图像中每个像素点的实例标签,并区分不同的物体。然而,实例分割的效果提升很大程度上是由物体检测器的发展推动的,基于 Mask R-CNN 和 DETR 的方法在 COCO Challenge中取得了领先性能。尽管这些方法在物体的检测方面表现出色,分割物体的mask在高频区域仍过度地粗糙和平滑,并有大量的边缘像素点被错分。准确且高质量的实例分割不仅需要考虑图像的高层语义,也需要大分辨率的深度特征图以保留物体细节,与此同时,大尺寸会带来高计算量和内存消耗。因此,高效及非常准确的实例分割是极具挑战的。

为了解决以上问题,本文提出基于Transformer的高质量实例分割算法Mask Transfiner。如图 1 ,不同于常规方法,Transfiner首先识别容易出错并需要优化的像素区域(黄色标识),并把这些像素点按四叉树结构表示。这些像素点是根据下采样物体mask的信息损失而计算得到,主要分布在物体边界或高频区域中,空间上不连续。我们把这些区域称为信息损失区域(Incoherent Regions)。它们位置稀疏,仅占总像素的一小部分。然而,通过实验分析,我们发现这一区域对最终分割性能非常重要。这允许Transfiner在预测物体mask的过程中只处理在高分辨率特征图上的少部分区间。
在这里插入图片描述
结合信息损失区域的离散分布特点,Transfiner通过构建四叉树结构来表示多层级上不同的离散点。为了预测每个树节点实例标签,由于点分布在不连续的空间上,Transfiner没有采用卷积网络,而设计了基于Transformer的分割网络。Transfiner将这些离散的节点转为无序的像素序列。它包含三个模块:节点编码器 (Node Encoder)、序列编码器 (Sequence Encoder)和像素解码器 (Pixel Decoder)。节点编码器首先丰富每个点的特征表示,例如补充点的位置编码和临近点局部细节信息。然后,序列编码器将节点序列作为Query输入基于Transformer的序列编码器中。最后,像素解码器预测每个点对应的实例标签。与PointRend中使用的MLP相比,特征点的序列化输入和多头注意力使得Transfiner能够灵活地将多个尺度的稀疏特征点同时建模,并对每个特征点的关系进行长距离比较和跨层级地进行关联。


3. Mask Transfiner

3.1. Incoherent Regions

现有实例分割方法[15, 21]产生的许多分割错误是由于空间分辨率的损失,例如掩码下采样操作、小的RoI池化大小和系数压缩[15, 23],在这些情况下,掩码预测本身是在粗糙的特征尺度上进行的。尽管效率很高,但低空间分辨率使得准确预测对象边界变得具有挑战性,因为高频细节的损失。在本节中,我们首先定义不连贯区域(incoherent regions),即由于空间分辨率降低而导致掩码信息丢失的区域。然后,通过分析它们的属性,我们观察到很大一部分错误确实位于这些区域中。

不连贯区域的定义 为了识别不连贯区域,我们通过对掩码本身进行下采样来模拟网络中由于下采样导致的信息损失。具体而言,在掩码无法通过随后的上采样步骤正确重构的区域内会丢失信息,如图4所示。形式上,设 M l M_l Ml 为某一尺度级别 l l l 上物体的二进制真实实例掩码。每个尺度级别的分辨率相差一个因子2,其中 l = 0 l=0 l=0 为最细的尺度,而 l = L l=L l=L 为最粗的尺度。我们分别用 S ↓ S↓ S S ↑ S↑ S 表示 2 倍最近邻下采样和上采样。则在尺度 l l l 上的不连贯区域是通过以下方式获得的二进制掩码:
D l = O ↓ ( M l − 1 ⊕ S ↑ ( S ↓ ( M l − 1 ) ) ) . (1) D_l = \mathcal {O}_\downarrow (M_{l-1} \oplus \mathcal {S}_\uparrow (\mathcal {S}_\downarrow (M_{l-1}))). \tag{1} Dl=O(Ml1S(S(Ml1))).(1)

这里,⊕表示逻辑“异或”操作, O ↓ \mathcal O↓ O 是通过在每个2×2邻域内执行逻辑“或”操作进行2倍下采样。因此,如果原始掩码值 M l − 1 M_{l-1} Ml1 在较细尺度级别的至少一个像素中与其重构值不同,则像素 ( x , y ) (x, y) (x,y) 为不连贯的,即 D l ( x , y ) = 1 D_l(x, y) = 1 Dl(x,y)=1。直观上,不连贯区域大多散布在对象实例的边界或高频区域,包含由于粗糙掩码而缺失或多余的错误预测标签的点。我们在图6和补充文件中提供了这些区域的可视化,它们在典型图像上稀疏且不连续分布。

在这里插入图片描述

Figure 4. Illustration on incoherent regions definition by simulating mask information loss.
通过模拟掩模信息损失来说明非相干区域的定义。

Properties of Incoherent Regions
在表1中,我们提供了对上述不连贯区域的分析。结果显示,大部分预测错误集中在这些不连贯区域,占所有错误预测像素的43%,而对应的边界框区域仅占14%。在不连贯区域中,粗糙掩码预测的准确率为56%。通过固定边界框检测器,我们进行了一项“oracle”研究,为每个对象填充所有不连贯区域的真实标签,同时将其余部分保留为初始掩码预测。与在不连贯区域使用初始掩码预测相比,性能从35.5 AP跃升至51.0 AP,确实证明它们对于提高最终性能至关重要。

1

3.2. Quadtree for Mask Refinement

在这一部分,我们描述了用于检测和细化图像中不连贯区域的方法。我们的方法基于逐步检测和划分每个特征尺度中不连贯区域的理念。通过仅拆分已识别的不连贯像素进行进一步细化,我们的方法有效地处理高分辨率特征,只关注重要区域。为了形式化我们的方法,我们采用四叉树结构首先识别不同尺度上的不连贯区域。然后,我们使用在第3.3节中详细描述的网络,为四叉树中的所有不连贯节点预测细化的分割标签。最后,我们利用四叉树通过将更正的掩码概率从粗尺度传播到细尺度,融合来自多个尺度的新预测。

tu5

Figure 5. The framework of Mask Transfiner. On the point quadtree, yellow point grids denote detected incoherent regions requiring further subdivision to four quadrants. The incoherent query sequence is composed of points across three levels of the quadtree for joint refinement. The encoder of Transfiner consists of node encoder and sequence encoder, while the pixel decoder is on top of each self-attended query pixel and output their final labels. The incoherence detector is detailed in the right part of the figure with detections on multi-level incoherent regions (Yellow). The higher-resolution detection is under the guidance of the predicted incoherent mask up-sampled from lower level.

Detection of Incoherent Regions

图5的右侧部分描绘了我们的轻量级模块的设计,用于高效地在多尺度特征金字塔上检测不连贯区域。遵循级联设计,我们首先将最小特征与粗略的目标掩码预测连接在一起作为输入,然后使用简单的全卷积网络(四个3×3卷积层)以及一个二元分类器来预测最粗糙的不连贯掩码。接着,检测到的低分辨率掩码被上采样并与相邻尺度中的较大分辨率特征融合,以指导更细的非连贯预测,其中只使用单个1×1卷积层。在训练过程中,我们强制在低级生成的真实不连贯点(由公式1 产生)中,覆盖其在较高级特征图中的父点。

四叉树的定义与构建

我们定义了一个点四叉树,用于分解检测到的不连贯区域。我们的结构如图5 所示,其中一个位于高层FPN特征(如特征分辨率28×28)的黄色点在其相邻的低层FPN特征图(如分辨率56×56)中具有四个象限点。这些都是特征点,但粒度不同,因为它们位于不同的金字塔层次。与计算机图形学中使用的传统四叉树“单元”不同,四叉树“单元”可以包含多个点,我们的点四叉树的细分单元始终是单个点,点的划分由检测到的不连贯值和二元分类器的阈值决定。

基于检测到的不连贯点,我们构建了一个多级层次四叉树,从使用最高级特征图中的检测点作为根节点开始。这些根节点被选择用于在低层特征图上细分为四个象限,具有更大的分辨率和更多的局部细节。请注意,在细层次上,只有被检测为不连贯的象限点才能进一步细分,并且不连贯树节点的扩展在与之前粗糙层次的不连贯预测相对应的区域内受到限制。

四叉树的细化

我们使用基于变换器的架构来细化四叉树中不连贯节点的掩码预测。我们的设计在第3.3节中描述。它直接在四叉树的节点上操作,共同提供每个不连贯节点的细化掩码概率。

四叉树的传播

鉴于细化的掩码预测,我们设计了一种利用四叉树结构的分层掩码传播方案。给定低分辨率中的初始粗掩码预测,Mask Transfiner首先修正四叉树根层的点标签,然后通过最近邻插值将这些修正的点标签传播到相应的四个象限的较细层级中。标签修正的过程在不连贯节点上以分层方式高效进行,直到达到最细的四叉树层级。与仅修正四叉树中最细叶节点的标签相比,这种方法通过将修正标签传播到中间树层的叶节点,扩大了细化区域,而成本几乎可以忽略不计。

3.3. Mask Transfiner Architecture

细化网络的架构

在这一部分,我们描述了细化网络的架构,该网络以构建的四叉树上的不连贯点作为输入(第3.2节),进行最终的分割细化。这些点沿高频区域稀疏分布,且在空间上不连续。因此,标准的卷积网络在均匀网格上操作并不合适。相反,我们设计了一个细化变换器,称为Mask Transfiner,能够并行修正所有不连贯四叉树节点的预测。

准确地对模糊点进行分割需要细粒度的深层特征和粗语义信息。因此,网络需要强大的建模能力,以充分关联点及其周围的上下文,包括空间和跨层的邻近点。因此,变换器(transformer)能够处理序列输入,并通过多头注意力层进行强大的局部和非局部推理,是我们Mask Transfiner设计的自然选择。与[28]中的多层感知器(MLP)相比,变换器强大的全局处理能力与我们的四叉树结构非常契合,有助于有效融合具有不同粒度的多层特征点信息,并显式建模点对点关系。

图5展示了我们的Mask Transfiner的整体架构。基于分层特征金字塔网络(FPN)[32],实例分割以多层和粗到细的方式进行。Mask Transfiner不再为每个目标使用单层FPN特征[21],而是将稀疏检测到的不连贯图像区域中的特征点序列作为输入,并输出相应的分割标签。

RoI特征金字塔

给定一张输入图像,配备特征金字塔网络(FPN)的CNN骨干网络首先提取用于下游处理的层次特征图,其中我们利用P2到P5的特征层。基础目标检测器[15, 21]预测边界框作为实例提案。然后,通过在FPN的三个不同层级 P i , P i − 1 , P i − 2 {P_i, P_{i−1}, P_{i−2}} Pi,Pi1,Pi2中提取RoI特征,构建RoI特征金字塔,方形尺寸逐渐增大为 28 , 56 , 112 {28, 56, 112} 28,56,112 。起始层级 i i i 计算为 i = ⌊ i 0 + log ⁡ 2 ( W H / 224 ) ⌋ i = \lfloor i_0 + \log_2(\sqrt{WH}/224)\rfloor i=i0+log2(WH /224)⌋,其中 i 0 = 4 i_0 = 4 i0=4 W W W H H H 分别是RoI的宽度和高度。最粗的层级特征包含更多的上下文和语义信息,而更精细的层级则解析更多的局部细节。

输入节点序列

根据第3.2节讨论的四叉树以及每个节点的相关FPN特征,我们为基于变换器的架构构建输入序列。该序列由来自四叉树所有三个层级的不连贯节点组成。因此,结果序列的大小为 C × N C \times N C×N,其中N是节点的总数,C是特征通道维度。值得注意的是,由于高度稀疏性, N ≪ H W N \ll HW NHW。此外,由于变换器的置换不变性,序列的顺序并不重要。与标准的变换器编码器相比,Mask Transfiner的编码器有两个部分:节点编码器和序列编码器。

节点编码器

为了丰富不连贯点的特征,Mask Transfiner的节点编码器使用以下四种不同的信息线索对每个四叉树节点进行编码:

  1. 从FPN金字塔的相应位置和层级提取的细粒度特征。
  2. 基础检测器的初始粗糙掩膜预测提供区域特定和语义信息。
  3. 每个RoI中的相对位置编码封装了节点之间的空间距离和关系,捕捉重要的局部依赖和相关性。
  4. 每个节点的周围上下文捕捉局部细节以丰富信息。对于每个节点,我们使用从 3 × 3 3×3 3×3 邻域提取的特征,并通过全连接层进行压缩。直观地说,这有助于定位边缘和边界,同时捕捉物体的局部形状。如图5所示,细粒度特征、粗糙分割线索和上下文特征首先被连接并通过全连接层融合为原始特征维度。然后,将位置嵌入添加到结果特征向量中。

序列编码器和像素解码器

接下来,Transfiner的序列变换器编码器共同处理来自四叉树所有层级的编码节点。变换器因此执行全局空间和跨尺度推理。每个序列编码器层具有标准的变换器结构,由多头自注意力模块和全连接前馈网络(FFN)构成。为了为不连贯点序列提供足够的正负参考,我们还使用来自最粗FPN层级的小尺寸 14 × 14 14×14 14×14 的所有特征点。不同于具有深度注意力层的标准变换器解码器[4],Mask Transfiner中的像素解码器是一个小型的两层多层感知器(MLP),它解码树中每个节点的输出查询,以预测最终的掩膜标签。

训练和推理

基于构建的四叉树,我们为Mask Transfiner开发灵活和自适应的训练与推理方案,其中所有检测到的不连贯节点跨四叉树层级形成一个序列以进行并行预测。在推理过程中,为了获得最终的物体掩膜,Mask Transfiner在获得不连贯节点的细化标签后,遵循四叉树传播方案(第3.2节)。在训练过程中,整个Mask Transfiner框架可以以端到端的方式进行训练。我们采用了一个多任务损失函数:
L = λ 1 L Detect + λ 2 L Coarse + λ 3 L Refine + λ 4 L Inc . (2) \mathcal {L} = \lambda _1\mathcal {L}_{\text {Detect}} + \lambda _2\mathcal {L}_{\text {Coarse}} + \lambda _3\mathcal {L}_{\text {Refine}} + \lambda _4\mathcal {L}_{\text {Inc}} \tag{2}. L=λ1LDetect+λ2LCoarse+λ3LRefine+λ4LInc.(2)
其中, L Refine L_{\text{Refine}} LRefine表示不连贯节点的预测标签与其真实标签之间的L1损失。二元交叉熵损失 L Inc L_{\text{Inc}} LInc用于检测不连贯区域。检测损失 L Detect L_{\text{Detect}} LDetect包括来自基础检测器的定位和分类损失,例如Faster R-CNN [35]或DETR检测器。最后, L Coarse L_{\text{Coarse}} LCoarse代表基础粗糙分割预测的损失[21]。超参数权重 λ 1 , 2 , 3 , 4 \lambda_{1,2,3,4} λ1,2,3,4的值为 1.0 , 1.0 , 1.0 , 0.5 {1.0, 1.0, 1.0, 0.5} 1.0,1.0,1.0,0.5

实现细节

Mask Transfiner在两阶段检测器Faster R-CNN [35]和基于查询的检测器[4]上实现。我们设计了一个3级的四叉树,并使用Detectron2 [43]中实现的Mask R-CNN的超参数和训练计划作为骨干网络和粗糙掩膜头。Mask Transfiner编码器由三个标准变换器层组成。每层有四个注意力头,特征维度为256。在我们的消融研究中,采用了R-50-FPN [22]和Faster R-CNN,学习计划为1×。为了与COCO排行榜进行比较,我们采用了缩放抖动,图像短边随机从[640, 800]中抽取,并遵循[26, 30]中的训练计划。更多细节请参见补充文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/433384.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GreenPlum与PostgreSQL数据库

*** Greenplum*** 是一款开源数据仓库。基于开源的PostgreSQL改造,主要用来处理大规模数据分析任务,相比Hadoop,Greenplum更适合做大数据的存储、计算和分析引擎 它本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数…

【数据结构中的哈希】

泛黄的春联还残留在墙上.......................................................................................................... 文章目录 前言 一、【哈希结构的介绍】 1.1【哈希结构的概念】 1.2【哈希冲突】 1.3【哈希函数的设计】 1.4【应对哈希冲突的办法】 一、…

神经网络(一):神经网络入门

文章目录 一、神经网络1.1神经元结构1.2单层神经网络:单层感知机1.3两层神经网络:多层感知机1.4多层神经网络 二、全连接神经网络2.1基本结构2.2激活函数、前向传播、反向传播、损失函数2.2.1激活函数的意义2.2.2前向传播2.2.3损失函数、反向传播2.2.4梯…

数据工程师岗位常见面试问题-1(附回答)

数据工程师已成为科技行业最重要的角色之一,是组织构建数据基础设施的骨干。随着企业越来越依赖数据驱动的决策,对成熟数据工程师的需求会不断上升。如果您正在准备数据工程师面试,那么应该掌握常见的数据工程师面试问题:包括工作…

Spring Cloud Gateway接入WebSocket:实现实时通信

在现代的微服务架构中,实时通信变得越来越重要。Spring Cloud Gateway作为Spring Cloud生态中的API网关,提供了动态路由、监控、弹性、安全等功能。本文将介绍如何通过Spring Cloud Gateway接入WebSocket,实现服务之间的实时通信。 为什么需…

Spring异常处理-@ExceptionHandler-@ControllerAdvice-全局异常处理

文章目录 ResponseBodyControllerAdvice最终的异常处理方式 异常的处理分两类 编程式处理:也就是我们的try-catch 声明式处理:使用注解处理 ResponseBody /*** 测试声明式异常处理*/ RestController public class HelloController {//编程式的异常处理&a…

Mitsuba 渲染基础

Mitsuba 渲染基础 0. Abstract1. 安装 Mitsuba21.1 下载 Mitsuba2 源码1.2 选择后端 (variants)1.3 编译 2. [Mitsuba2PointCloudRenderer](https://github.com/tolgabirdal/Mitsuba2PointCloudRenderer)2.1 Mitsuba2 渲染 XML2.2 Scene 场景的 XML 文件格式2.2.1 chair.npy to…

设计模式之装饰模式(Decorator)

前言 这个模式带给我们有关组合跟继承非常多的思考 定义 “单一职责” 模式。动态(组合)的给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少…

JavaWeb招聘信息管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…

利用Langchain开发框架研发智能体Agent的过程,以及相关应用场景

大家好,我是微学AI,今天给大家介绍一下本文主要介绍了利用langchain开发智能体agent的过程。文章首先阐述了项目背景,随后通过给出样例代码,详细展示了执行过程。此外,本文还探讨了该智能体agent在实际应用场景中的运用…

Excel根据一个值匹配一行数据

根据一个值从一个表中匹配一行数据,例如从左边的表中找到指定姓名的所有行数据 使用VLOOKUP函数,参数: Lookup_value:需要搜索的值,单个值 Table_array:被搜索的区域,是个表 Col_index_num&…

【Python基础(一)】

学习分享 一、基本语法1、输出print语句2、常量的写法3、运算符 (/) 与(//)4、字符串5、列表5.1、列表查询元素是否存在5.2、列表查询元素是否存在5.3、身份运算符5.4、列表的增删改查 6、元组6.1、tuple() 7、字典8、函数8.1、值传递8.2、引用传递8.3、函数的传参 二、文件的操…

AWS Network Firewall -NAT网关配置只应许白名单域名出入站

1. 创建防火墙 选择防火墙的归属子网(选择公有子网) 2. 创建规则白名单域名放行 3. 绑定相关规则

Spring JDBC及声明式事务

目录 Spring JDBC基础概念 Spring声明式事务 事务传播方式 Spring JDBC基础概念 Spring JDBC 封装了原生的JDBC API,使得处理关系型数据库更加简单。Spring JDBC的核心是JdbcTemplate,里面封装了大量数据库CRUD的操作。使用Spring JDBC…

[uni-app]小兔鲜-02项目首页

轮播图 轮播图组件需要在首页和分类页使用, 封装成通用组件 准备轮播图组件 <script setup lang"ts"> import type { BannerItem } from /types/home import { ref } from vue // 父组件的数据 defineProps<{list: BannerItem[] }>()// 高亮下标 const…

影响6个时序Baselines模型的代码Bug

前言 我是从去年年底开始入门时间序列研究&#xff0c;但直到最近我读FITS这篇文章的代码时&#xff0c;才发现从去年12月25号就有人发现了数个时间序列Baseline的代码Bug。如果你已经知道这个Bug了&#xff0c;那可以忽略本文&#xff5e; 这个错误最初在Informer&#xff0…

安科瑞Acrel-1000DP分布式光伏监控系统在鄂尔多斯市鄂托克旗巴音乌苏六保煤矿5MW分布式光伏项目中的应用

安科瑞 华楠 摘 要&#xff1a;分布式光伏发电就是将太阳能光伏板分散布置在各个区域&#xff0c;通过小规模、模块化的方式实现电能的并网或独立使用&#xff0c;这种发电方式具有就近发电、就近并网、就近转换、就近使用的特点。近年来&#xff0c;技术进步和政策支持推动了光…

Python在AI中的应用--使用决策树进行文本分类

Python在AI中的应用--使用决策树进行文本分类 文本分类决策树什么是决策树 scikit算法 使用scikit的决策树进行文章分类一个文本分类的Python代码使用的scikit APIs说明装入数据集决策树算法类类构造器&#xff1a; 构造决策树分类器产生输出评估输出结果分类准确度分类文字评估…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-22 引言: 全球最热销的国产游戏-《黑神话: 悟空》不仅给世界各地玩家们带来愉悦&#xff0c;而且对计算机人工智能研究也带来新的思考。在本期的论文速读中&#xff0c;我们带来一篇关于视觉语言模型&#xff0…

漫步者头戴式耳机好用吗?漫步者、西圣、万魔顶级机型测评对比

现在市面上有很多头戴式耳机&#xff0c;它们都基本精进主动降噪功能&#xff0c;以让大家在生活中能更少受到噪音的干扰&#xff0c;所以对于有降噪需求的人来说&#xff0c;头戴式耳机就是很适合他们的一种耳机。作为一名数码测评博主&#xff0c;也有很多人问我漫步者头戴式…