2023 Mask R-CNN 改进:DynaMask: Dynamic Mask Selection for Instance Segmentation 论文笔记

2023 Mask R-CNN 改进:DynaMask: Dynamic Mask Selection for Instance Segmentation 论文笔记

  • 一、Abstract
  • 二、引言
  • 三、相关工作
    • 实例分割
    • 动态网络
  • 四、动态 Mask 选择
    • 4.1 双层 FPN
      • 区域水平的 FPN
      • 特征聚合模块 FAM
    • 4.2 Mask Switch Module (MSM)
      • 最优的 Mask 赋值
      • 采用 Gumbel-Softmax 的重参数化
    • 4.3 目标函数
      • Mask 损失
      • 边缘损失
      • 预算限制
  • 五、实验
    • 5.1 实施细节
    • 5.2 主要结果
      • 与 Mask R-CNN 的比较
      • 与 SOTA 的方法比较
      • 分割结果的可视化
    • 5.3 消融实验
      • Mask 分辨率预测
      • 预算限制的影响
      • 不同方法的速度比较
      • Mask 尺寸的影响
      • 基于尺寸的 Mask 选择方法
  • 六、结论
  • 七、补充材料
    • 7.1 关于 Mask 分辨率预测的分析
      • mask 分辨率和类别之间的关联
      • Mask 选择的结果
    • 7.2 预测的 Mask 分辨率分布
    • 7.3 在 LVIS 数据集上的结果
    • 7.4 与其他 FPN 变体的比较
    • 7.5 定性结果

写在前面

  本周更新的第二篇论文阅读,2023年每周一篇博文,还剩5篇未补,继续加油~

  • 论文地址:DynaMask: Dynamic Mask Selection for Instance Segmentation
  • 代码地址:https://github.com/lslrh/DynaMask
  • 收录于:CVPR 2023
  • 欢迎关注,主页更多干货,持续输出中~

一、Abstract

  一般的实例分割通常采用固定分辨率大小的 mask,例如

28

×

28

28\times28

28×28 的网格来划分不同的目标。然而,低分辨率的 mask 经常会丢失丰富的细节信息,而高分辨率的 mask 会使得计算量成平方增长。本文针对不同的目标 proposal 提出一种动态选择合适尺寸的 mask 方法。首先:一个自适应特征聚合的双端 FPN 用来逐渐地增加 mask 网格分辨率。具体来说,一个区域级别的自上而下路径被引入来整合不同阶段的图像 FPN 层的上下文和细节信息。之后提出一种 Mask Switch Module(MSM) 从每个实例中选择选择最合适的 mask 分辨率。提出的 DynaMask 效果很好。

二、引言

  实例分割 Instance segmentation (IS) 的目的,进展。目前的方法大致分为双阶段的和单阶段的。双阶段精度高但是成本也高。

  聊一下双阶段的方法,即先检测后分割。先对于所有的 proposal,例如

28

×

28

28\times28

28×28 来预测一个统一分辨率的二值网格 mask,然而上采样到原始尺寸。接下来举出 Mask R-CNN 的例子,指出缺点:低分辨率的 mask 很难捕捉细节的信息,导致预测结果不满意,特别是对于过大的目标边界,而大的 mask 会使得计算量成本上升。

在这里插入图片描述

  如上图所示,难样本 “人” 需要更细粒度的 mask 来预测。而像简单的、规则的、少信息的目标,例如 “frisbee” 则只需粗糙的 mask 就能预测。于是提出一种针对每个实例来自适应地调整 mask 分辨率的策略。具体来说,分配给难样本以高分辨率的 mask,而对简单的样本赋予低分辨的 mask。于是对于简单样本的计算量可以减少,而对难样本的精度可以提高。但不能直接通过 Mask R-CNN 来预测高分辨率的 mask,这会降低 mask AP。原因:从高层金字塔层提取的大尺寸目标的 RoI 特征,由于下采样使得 mask 特别粗糙,因此简单地增加 RoI 的 mask 尺寸不会带来有用的信息;其次 Mask R-CNN 的 mask 头过于简单,因此随着网格尺寸的增加很难做出精确的预测。

  于是提出一种双层 FPN 框架来逐渐地扩大 mask 网格。具体来说,在图像水平的 FPN 层(i-FPN)之外增加一个区域水平的 FPN(r-FPN),其中构建一个从 i-FPN 到 r-FPN 不同金字塔层的信息流动。在这一双水平的 FPN 中,提出一种数据独立的 Switch Module (MSM) 来自适应地选择每个实例的mask。提出的网络模型名为 DynaMask,在主流数据集上评估效果很好。

在这里插入图片描述

  主要贡献如下:

  • 提出 DynaMask 来自适应地赋值给不同的实例以合适的 mask:赋值低分辨率给简单样本,而赋值高分辨率给难样本;
  • 提出一种双端 FPN 框架用于 IS,构建从 i-FPN 到 r-FPN 多层的信息流动,用于促进信息互补和聚合;
  • 实验结果表明 DynaMask 性能和效率很好。

三、相关工作

实例分割

  目前大多数方法沿着 Mask R-CNN 的套路,接下来对 Mask Scoring R-CNN、BMask RCNN、DCT-Mask、PANet 进行简单介绍。一些工作提出通过粗糙-细腻化的精炼来提升 mask 的质量,例如 HTC、PointRend、RefineMask,缺点是增加推理时间和内存负担。本文提出动态地为每个实例选择合适的 mask,使得简单样本被赋值小的 mask(更少的精炼阶段),更难的样本被赋值大的 mask(更多的精炼阶段)。

动态网络

  动态网络方法要么扔掉一些 blocks 或者修剪通道数,例如 SkipNet、DRNet 等。而在不同的分辨率采用动态 mask 来分割不同的实例还未被探索过。传统方法先预测一个固定尺寸的 mask,这一措施对简单样本很管用,但过于简化难样本的细粒度水平细节。根据分割难易,本文设计一种动态 mask 选择框架来自适应地给不同的目标分配合适尺寸的 mask。

四、动态 Mask 选择

在这里插入图片描述

4.1 双层 FPN

  原始图像层 FPN (i-FPN) 引入自上而下的路径,将高层的上下文的语义信息投影到低层中。本文提出一个区域水平的 r-FPN,将 i-FPN 中的低层整合更多的信息到区域特征层级上。从 i-FPN 到 r-FPN 的信息流动上图所示。

区域水平的 FPN

  依据原始的 i-FPN

{

P

2

,

P

3

,

P

4

,

P

5

}

\{P_2,P_3,P_4,P_5\}

{P2​,P3​,P4​,P5​} 来定义层的概念,从而产生对应于原始特征图相同分辨率的层。r-FPN 起始于 RoI-Aligned 的区域特征,通过逐渐地融合

{

P

2

,

P

3

,

P

4

}

\{P_2,P_3,P_4\}

{P2​,P3​,P4​} 的互补信息来增强,得到一组自上而下的基于区域的特征层次,表示为

{

L

t

i

n

y

,

L

s

m

a

l

l

,

L

m

e

d

i

u

m

,

L

l

a

r

g

e

}

\{L_{tiny},L_{small},L_{medium},L_{large}\}

{Ltiny​,Lsmall​,Lmedium​,Llarge​}。从

L

t

i

n

y

L_{tiny}

Ltiny​ 到

L

l

a

r

g

e

L_{large}

Llarge​,空间分辨率通过逐步地扩大两个尺寸因子来增加。本文设计一个特征聚合模块 Feature Aggregation Module (FAM) 来整合 r-FPN 的特征

L

r

L_r

Lr​ 和 i-FPN 特征

P

i

P_i

Pi​。

特征聚合模块 FAM

  由于上采样和 RoI 池化操作,使得现有的

L

r

L_r

Lr​ 和

P

i

P_i

Pi​ 之间存在空间误对齐,这会降低对于边界区域的分割性能。本文提出 FAM 来自适应地聚合多尺度的特征,如下图所示:

在这里插入图片描述](https://img-blog.csdnimg.cn/682f789219fa43ea8879fd5bb7fd6074.png

  FAM 包含两个不同的可变形卷积:第一个

D

e

f

o

r

m

C

o

n

v

1

Deform Conv1

DeformConv1 动态调整

L

r

L_r

Lr​ 的位置,使其能更好地对齐

P

i

P_i

Pi​。之后拼接

L

r

L_r

Lr​ 和

P

i

P_i

Pi​,然后通过一个

3

×

3

3\times3

3×3 卷积得到 offset 图,记为

Δ

o

\Delta_o

Δo​。最后,利用

Δ

o

\Delta_o

Δo​ 将

L

r

L_r

Lr​ 对齐到

P

i

P_i

Pi​,第二个

D

e

f

o

r

m

C

o

n

v

2

Deform Conv2

DeformConv2 类似一个注意力机制,能够关注目标上的显著部分。提出的 FAM 可以插入到不同的 r-FPN 阶段上从而提升 mask 的预测。

4.2 Mask Switch Module (MSM)

  不同的实例需要不同的 mask 网格来实现准确的分割,遂提出一种自适应地根据不同实例来调整 mask 网格的分辨率。确切来说,一个 MSM 用来在预算计算的假设下执行 mask 分辨率预测,从而在性能和分割准确度之间权衡。

最优的 Mask 赋值

  MSM 实际上是一个轻量化的分类器,记为

f

M

S

M

(

)

f_{\text MSM}(\cdot)

fMSM​(⋅),如下图所示:

在这里插入图片描述

  MSM 包含一个逐通道注意力模块,后面跟着一些卷积层和全连接层。分类器旨在从一堆

K

K

K 个候选,如

[

r

1

,

r

1

,


,

r

k

]

[r^1,r^1,\cdots,r^k]

[r1,r1,⋯,rk] 中找到最优的 mask 分辨率。具体来说,MSM 将裁剪后的逐区域 RoI 特征作为输入,通过 softmax 输出一组概率向量

P

=

[

p

1

,

p

1

,


,

p

k

]

P=[p^1,p^1,\cdots,p^k]

P=[p1,p1,⋯,pk]。向量中每个元素表示相应的被选择到的候选分辨率概率:

p

k

=

exp

(

f

M

S

M

k

(

x

)

)

k

exp

(

f

M

S

M

k

(

x

)

)

,

k

{

1

,


,

K

}

p^k=\dfrac{\exp(f_{MSM}^k(x))}{\sum_{k’}\exp(f_{MSM}^k(x))},\quad k\in\{1,\cdots,K\}

pk=∑k′​exp(fMSMk​(x))exp(fMSMk​(x))​,k∈{1,⋯,K}

其中

x

x

x 为输入到 MSM 的 RoI 特征,最大的候选分辨率概率从中选出作为 switching state,从而决定目标的分割 mask 分辨率。

采用 Gumbel-Softmax 的重参数化

  将 MSM 的软输出

P

P

P 转化为独热预测

Y

=

[

y

1

,

y

1

,


,

y

k

]

Y= [y^1,y^1,\cdots,y^k]

Y=[y1,y1,⋯,yk],

y

k

{

0

,

1

}

y^k\in\{0,1\}

yk∈{0,1},这一过程可以用分离采样来表示,然而不能微分,因此不支持端到端训练。

  为了使得 MSM 的梯度得以更新,引入一种重参数化方法,Gumbel-Softmax。给定一个类别分布概率

P

=

[

p

1

,

p

1

,


,

p

k

]

P=[p^1,p^1,\cdots,p^k]

P=[p1,p1,⋯,pk],通过规则:

y

=

one_hot

(

a

r

g

m

a

x

k

(

l

o

g

p

k

+

g

k

)

)

y=\text{one\_hot}\left(argmax_k\left(logp^k+g^k\right)\right)

y=one_hot(argmaxk​(logpk+gk))

其中

{

g

k

}

i

=

k

K

\{g^k\}^K_{i=k}

{gk}i=kK​ 为

G

u

m

b

e

l

(

0

;

1

)

Gumbel(0; 1)

Gumbel(0;1) 分布的样本,定义为:

g

=

l

o

g

(

l

o

g

(

u

)

)

,

u

U

n

i

f

o

r

m

(

0

,

1

)

g=-log\left(-log\left(u\right)\right),u\sim Uniform\left(0,1\right)

g=−log(−log(u)),u∼Uniform(0,1)

之后采用 Gumbel-Softmax 函数作为一个连续的、可微分的原始

softmax

\text{softmax}

softmax 函数的近似:

y

k

=

exp

(

(

l

o

g

p

k

+

g

k

)

/

τ

)

k

exp

(

(

l

o

g

p

k

+

g

k

)

/

τ

)

y^k=\dfrac{\exp\left((log p^k+g^k)/\tau\right)}{\sum_{k’}\exp\left((log p^{k’}+g^{k’})/\tau\right)}

yk=∑k′​exp((logpk′+gk′)/τ)exp((logpk+gk)/τ)​其中

τ

\tau

τ 表示温度参数,当

τ

\tau

τ 接近

0

0

0 时,Gumbel-softmax 接近于独热状态。

4.3 目标函数

Mask 损失

  给定正的样本实例

x

i

x_i

xi​,首先通过 MSM 来预测 mask 的 switching state:

Y

=

[

y

1

,

y

2

,


,

y

k

]

Y= [y^1,y^2,\cdots,y^k]

Y=[y1,y2,⋯,yk],并将其穿过 r-FPN 的不同阶段来获得

K

K

K 个不同分辨率

{

m

^

i

1

,


,

m

^

i

K

}

\{\hat{m}_i^1,\cdots,\hat{m}_i^K\}

{m^i1​,⋯,m^iK​} 下的 mask 预测图,定义损失函数如下:

L

m

a

s

k

=

i

=

1

N

k

=

1

K

y

k

(

m

^

i

k

,

m

i

)

\mathcal{L}_{mask}=\sum_{i=1}^N\sum_{k=1}^K y^k\ell(\hat{m}_i^k,m_i)

Lmask​=i=1∑N​k=1∑K​ykℓ(m^ik​,mi​)其中

m

^

i

K

\hat{m}_i^K

m^iK​ 表示

x

i

x_i

xi​ 的第

k

k

k 个 mask 预测,

m

i

{m}_i

mi​ 表示相应的 GT mask 网格。

y

k

y^k

yk 为是否第

k

k

k 个 mask 分辨率被选择作为输出分辨率的索引。

l

l

l 为 cross-entropy 损失。

边缘损失

   Mask 损失中,假设 mask 产生非常小的损失应该有着很高的质量。因此通过最小化 mask 损失可以得到准确的 mask,然而实验结果表明 mask 损失在不同的 mask 上非常接近,很难区分 mask 质量。相比之下,由不同分辨率产生的 mask 在边缘损失上变化巨大,这能很好的揭示 mask 质量。

在这里插入图片描述

对于 MSM 的输出

Y

=

[

y

1

,

y

2

,


,

y

k

]

Y= [y^1,y^2,\cdots,y^k]

Y=[y1,y2,⋯,yk] 及不同分辨率的边缘图

{

e

^

i

1

,


,

e

^

i

K

}

\{\hat{e}_i^1,\cdots,\hat{e}_i^K\}

{e^i1​,⋯,e^iK​},边缘损失定义如下:

L

e

d

g

e

=

i

=

1

N

k

=

1

K

y

k

(

e

^

i

k

,

e

i

)

\mathcal{L}_{edge}=\sum_{i=1}^N\sum_{k=1}^K y^k\ell(\hat{e}_i^k,e_i)

Ledge​=i=1∑N​k=1∑K​ykℓ(e^ik​,ei​)其中

e

i

e_i

ei​ 为 GT 边缘。

  首先应用拉普拉斯算子在 GT mask 上获得一个软边缘图

m

i

m_i

mi​,然后通过阈值将其转化为二值化边缘图。上图所示的边缘损失能够更好地揭示 mask 质量,即高分辨率的 mask 参数更接近于 GT 的边缘(小损失),而低分辨率的 mask 与 GT 有着更大的差异(大损失)。

预算限制

   通过优化边缘损失,模型倾向于收敛到次优的结果:所有的实例都采用最大的 mask 来分割,即

112

×

112

112\times112

112×112,这整合了更多的细节信息且拥有最小的预测损失。而实际上,并不是所有的样本都需要最大的 mask,对于简单样本能够节省冗余的计算量。为了降本增效,提出带有预算限制的 MSM。令

C

\mathcal{C}

C 表示对应于选择的 mask 分辨率损失,当前 batch 数据所产生的期望 FLOPs 记为

E

(

C

)

\mathbb{E}(\mathcal{C})

E(C),而超出目标 FLOPs 的部分记为

C

t

\mathcal{C}_t

Ct​,预算限制定义为:

L

b

u

d

g

e

t

=

max

(

E

(

C

)

C

t

1

,

0

)

\mathcal{L}_{budget}=\max(\dfrac{\mathbb{E}(\mathcal{C})}{\mathcal{C}_t}-1,0)

Lbudget​=max(Ct​E(C)​−1,0)

  进一步引入信息 entropy 损失来平衡 MSM 的分辨率预测。给定一组输出概率向量

P

1

,

P

2

,


,

P

N

P_1,P_2,\cdots,P_N

P1​,P2​,⋯,PN​,其中

N

N

N 为当前 batch 内的实例数量,第

k

k

k 个分辨率的频率计算为:

f

k

=

1

N

i

p

i

k

f^k=\frac{1}{N}\sum_i p_i^k

fk=N1​∑i​pik​。

  信息 entropy 损失定义如下:

L

e

n

t

r

o

p

y

=

1

K

k

f

k

l

o

g

f

k

\mathcal{L}_{entropy}=\dfrac{1}{K}\sum_k f^klog f^k

Lentropy​=K1​k∑​fklogfk上面的 entropy 损失将每个元素

f

k

f^k

fk 推向

1

K

\frac{1}{K}

K1​,以使 MSM 能够从相似概率中选择不同的分辨率。

  最后,mask 分支的总体目标函数:

L

t

o

t

a

l

=

L

m

a

s

k

+

λ

1

L

e

d

g

e

+

λ

2

L

r

e

g

\mathcal L_{total}=\mathcal L_{mask}+\lambda_1\mathcal L_{edge}+\lambda_2\mathcal L_{reg}

Ltotal​=Lmask​+λ1​Ledge​+λ2​Lreg​其中

λ

1

\lambda_1

λ1​、

λ

2

\lambda_2

λ2​ 为平衡超参数,

L

r

e

g

\mathcal L_{reg}

Lreg​ 表示结合了预算限制的正则项,即

L

r

e

g

=

L

b

u

d

g

e

+

L

e

n

t

r

o

p

y

\mathcal L_{reg}=\mathcal L_{budge}+\mathcal L_{entropy}

Lreg​=Lbudge​+Lentropy​。

五、实验

  数据集:COCO、Cityscapes,评估指标:标准的 mask AP。

5.1 实施细节

  Backbone:Mask R-CNN,预训练在 ImageNet 上。部署在 MMDetection 上。MSM 有四个 switching states,对应于四组分辨率

[

14

×

14

,

28

×

28

,

56

×

56

,

112

×

112

]

[14\times14,28\times28,56\times56,112\times112]

[14×14,28×28,56×56,112×112],

λ

1

=

0.1

\lambda_1=0.1

λ1​=0.1。首先使用 mask 损失在所有分辨率下训练没有 MSM 的网络一个 epoch。初始学习率

0.02

0.02

0.02,batch_size 16,8 GPUs,之后训练所有模块 12 个 epochs,SGD,相同的初始学习率及 batch_size,在第 8 和 11 个 epochs 时分别

×

0.1

\times0.1

×0.1,多尺度训练策略,短边随机从

[

640

,

800

]

[640,800]

[640,800] 中采样,而在推理时,短边调整至 800。消融实验中采用

1

×

1\times

1× 训练计划,数据增强采用 MMDetection 定义的方式。

5.2 主要结果

与 Mask R-CNN 的比较

在这里插入图片描述

与 SOTA 的方法比较

在这里插入图片描述

在这里插入图片描述

分割结果的可视化

在这里插入图片描述

5.3 消融实验

Mask 分辨率预测

在这里插入图片描述

预算限制的影响

在这里插入图片描述

不同方法的速度比较

在这里插入图片描述

Mask 尺寸的影响

在这里插入图片描述

基于尺寸的 Mask 选择方法

  基于尺寸的方法表示根据目标尺寸来赋值 mask,具体来说,采用下列规则赋值给宽

w

w

w、高

h

h

h 的实例一个 mask:

k

=

k

0

+

l

o

g

2

(

w

h

/

w

0

h

0

)

k=\left\lfloor k_0+log_2(\sqrt{wh}/\sqrt{w_0h_0})\right\rfloor

k=⌊k0​+log2​(wh
​/w0​h0​
​)⌋其中

w

0

w_0

w0​、

h

0

h_0

h0​ 分别表示输入图像的宽、高。

k

0

k_0

k0​ 表示最大的 mask 分辨率,例如

k

0

=

4

k_0=4

k0​=4。这一式子意味着更大的目标将会赋值更大分辨率的 mask。实验结果如下表所示:

在这里插入图片描述

六、结论

  设计了一种双层 FPN 结构来充分利用金字塔的多层中互补的上下文细节信息。具体来说,除一般的图像水平金字塔 i-FPN 外,利用一组区域水平的自上而下的路径来逐渐扩大 mask 的尺寸并整合更多的 i-FPN 细节。此外,引入了 Mask Switch Module (MSM) 来自适应地为每个 proposal 选择合适的 mask,从而减小简单样本的冗余计算量。大量的实验表明本文提出的方法很有用。

七、补充材料

7.1 关于 Mask 分辨率预测的分析

mask 分辨率和类别之间的关联

在这里插入图片描述

Mask 选择的结果

在这里插入图片描述

7.2 预测的 Mask 分辨率分布

在这里插入图片描述

7.3 在 LVIS 数据集上的结果

在这里插入图片描述

7.4 与其他 FPN 变体的比较

在这里插入图片描述

7.5 定性结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

写在后面

  本文框架以及写作手法都值得借鉴,在当今 Mask R-CNN 都快被挖的啥都没有的情况下,还能有如此创新性想法的文章属实难得一见了。

  愉快的周末就要过去啦,下一周继续加油哇~

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/e4ab6d1795.html