PolyFormer: Referring Image Segmentation as Sequential Polygon Generation 论文阅读笔记
- 一、Abstract
- 二、引言
- 三、相关工作
- 3.1 Referring Image Segmentation (RIS)
- 3.2 Referring Expression Comprehension (REC)
- 3.3 Sequence-to-Sequence (seq2seq) Modeling
- 3.4 基于轮廓的实例分割
- 四、PolyFormer
- 4.1 结构总览
- 4.2 目标序列构建
- 4.2.1 多边形表示
- 4.2.2 顶点和特殊的 token
- 4.2.3 带有 bounding boxes 的统一序列
- 4.3 图像和文本特征提取
- 4.3.1 图像编码器
- 4.3.2 文本编码器
- 4.3.3 多模态 Transformer 编码器
- 4.4 基于回归的 Transformer 解码器
- 4.4.1 2D 坐标 embedding
- 4.4.2 Transformer 解码器层
- 4.4.3 预测头
- 4.5 训练
- 4.5.1 多边形增强
- 4.5.2 目标
- 4.5.3 推理
- 五、实验结果
- 5.1 数据集和指标
- 5.1.1 数据集
- 5.1.2 评估指标
- 5.2 实施细节
- 5.2.1 模型设置
- 5.2.2 训练细节
- 5.3 主要结果
- 5.3.1 参考图像分割
- 5.3.2 参考表达式理解
- 5.3.3 Zero-shot 迁移到参考视频目标分割
- 5.4 消融实验
- 5.4.1 坐标分类 vs. 回归
- 5.4.2 目标序列构件时的成分分析
- 5.5 可视化结果
- 5.5.1 交叉注意力图
- 5.5.2 预测可视化
- 六、结论
- 局限性和更加广泛的影响
- 附录
- A、附加的数据集细节
- B、附加的实施细节
- C、附加的实验结果
- D、更多的可视化结果
- D.1 交叉注意力图
- D.2 预测结果可视化
写在前面
该忙的事情忙的差不多了,继续看论文写笔记,把之前两个月落下来的补回来!(还差7篇博文),欢迎关注,持续高产。
- 论文地址:PolyFormer: Referring Image Segmentation as Sequential Polygon Generation
- 代码地址:作者暂未提供
- 预计投稿在 CVPR 2023,昨天还是前天放榜了,不知道啥情况呢。
- Ps:2023 年每周一篇博文阅读笔记,主页 更多干货,欢迎关注呀,期待 5 千粉丝有你的参与呦~
- 23.5.6 第一次更新:
收录于: CVPR 2023
项目/代码地址:https://polyformer.github.io/
一、Abstract
目前的参考图像分割一般不去直接预测目标的 mask,而是作为一个多边形序列生成任务。本文提出来一种能直接预测精确的几何位置坐标的基于回归的解码器,摒弃了之前那种需要将坐标量化到某个固定格子上的做法。不仅在常规的数据集上表现很好,而且泛化到参考视频图像分割上仍然牛皮。
二、引言
按照惯例,讲一下参考图像分割任务的定义,点一下传统实例分割的套路,现在基于轮廓点的套路。
如图 1 所示,本文提出了一种序列-序列模型 Polygon transFormer (PolyFormer) 来解决这一任务。每一个顶点的预测都是基于之前已经预测出来的轮廓顶点,所以总体上预测出的轮廓点彼此之间不再独立。PolyFormer 输入和输出的格式都是固定的,一组长度可变的序列,这就避免了之前多模态融合的操作。对于输出的序列,多个多边形轮廓间采用特定的分割符隔开。本文提出的这一框架也可直接用于预测 bounding boxes,因为相当于预测两个坐标嘛。所以呢本文搭建的网络统一了参考图像分割和理解这两个任务(真是个噱头!)。
最近的 Seq2Seq 模型将精确的坐标量化到一组格子里面,从而将坐标预测任务转化为分类任务。本文指出这种做法不太好,因为再怎么量化都不精确,因为坐标是在连续的空间里面,量化无法避免误差。因此本文将其视为回归任务,因为坐标回归的是浮点数,量化误差可以忽略不计。受到 Mask RCNN 的启发,本文利用双线性插值的方法根据相邻的两个索引 embedding 来插值得到浮点型坐标。
贡献如下:
- 本文提出 PolyFormer 来解决参考图像分割 (RIS)和参考表达式理解(REC)任务,并将其视为序列-序列预测问题。
- 提出一个基于回归的解码器用于精确、直接地预测二维坐标,去除了量化误差。本文是第一个在 Seq2Seq 框架上将坐标定位问题视为回归问题的工作。
- 本文在几个常规数据集上效果很好,而且能够泛化到视频和合成的数据上。
三、相关工作
3.1 Referring Image Segmentation (RIS)
讲一下 RIS 的定义,之前的工作流程。与本文最相近的是 SeqTR,但是它仅能产生 18 个顶点的粗糙 mask,并且不能勾勒出复杂的形状以及遮挡 mask。
3.2 Referring Expression Comprehension (REC)
讲一下 REC 的定义,之前的两阶段和一阶段方法,最近的多任务学习统一框架(效果不好)。而本文提出的方法在多任务上的表现提升了 RIS 和 REC 的性能。
3.3 Sequence-to-Sequence (seq2seq) Modeling
讲一下 seq2seq 框架的由来,点出缺点:量化有误差呀。而本文提出的 PolyFormer 将坐标定位问题视为回归问题从而能够预测连续的坐标。
3.4 基于轮廓的实例分割
讲一下实例分割中基于轮廓的方法,指出缺点:无法解决同一个目标分成多块的情况。
四、PolyFormer
4.1 结构总览
4.2 目标序列构建
4.2.1 多边形表示
一个 mask 可以由一个或多个多边形的组合来勾勒出参考目标。因此将每一个多边形参数转化为一个二维坐标的序列集合: { ( x i , y i ) } i = 1 K , ( x i , y i ) ∈ R 2 \left\{\left(x_{i}, y_{i}\right)\right\}_{i=1}^{K},\left(x_{i}, y_{i}\right) \in \mathbb{R}^{2} {(xi,yi)}i=1K,(xi,yi)∈R2,其中最接近图像左上角的顶点作为序列的起始点。如下图所示:
4.2.2 顶点和特殊的 token
在两个多边形序列间插入 <SEP> 来表示多个多边形,来自同一目标的多个多边形按照它们的顶点和图像原点距离来排序。最后,采用 <BOS> 和 <EOS> 来表示序列的开始和结束。
4.2.3 带有 bounding boxes 的统一序列
一个 bounding box 可以由两个角点来表示,例如左上角点
(
x
1
b
,
y
1
b
)
\left(x_{1}^{b}, y_{1}^{b}\right)
(x1b,y1b) 和 右下角点
(
x
2
b
,
y
2
b
)
\left(x_{2}^{b}, y_{2}^{b}\right)
(x2b,y2b)。然后将多个多边形和 bounding box 拼接到一起构成一个长序列:
[
<
B
O
S
>
,
(
x
1
b
,
y
1
b
)
,
(
x
2
b
,
y
2
b
)
,
(
x
1
1
,
y
1
1
)
(
x
2
1
,
y
2
1
)
,
…
,
<
S
E
P
>
,
(
x
1
n
,
y
1
n
)
,
…
,
<
E
O
S
>
]
\begin{array}{l} {\left[<\ \mathrm{BOS}>,\left(x_{1}^{b}, y_{1}^{b}\right),\left(x_{2}^{b}, y_{2}^{b}\right),\left(x_{1}^{1}, y_{1}^{1}\right)\right.} \left(x_{2}^{1}, y_{2}^{1}\right), \ldots,<\ \mathrm{SEP}>,\left(x_{1}^{n}, y_{1}^{n}\right), \ldots,<\mathrm{EOS}>] \end{array}
[< BOS>,(x1b,y1b),(x2b,y2b),(x11,y11)(x21,y21),…,< SEP>,(x1n,y1n),…,<EOS>]其中
(
x
1
n
,
y
1
n
)
\left(x_{1}^{n}, y_{1}^{n}\right)
(x1n,y1n) 为第
n
n
n 个多边形的起始顶点。而通常 bounding box 角点和多边形顶点都被视为坐标 token,即 <COO>。
4.3 图像和文本特征提取
4.3.1 图像编码器
采用 Swin Transformer 来提取图像 I ∈ R H × W × 3 I \in \mathbb{R}^{H\times W \times 3} I∈RH×W×3 的第四阶段特征 F v ∈ R H 32 × W 32 × C i n F_v \in \mathbb{R}^{\frac{H}{32}\times \frac{W}{32} \times C_{in}} Fv∈R32H×32W×Cin,作为视觉表示。
4.3.2 文本编码器
利用 BERT 来提取输入的带有 L L L 个单词的语言描述 T ∈ R L T\in \mathbb{R}^{L} T∈RL,得到单词特征 F l ∈ R L × C l F_l\in\mathbb{R}^{L\times C_l} Fl∈RL×Cl。
4.3.3 多模态 Transformer 编码器
拉平
F
v
F_v
Fv 得到一组视觉序列特征
F
v
′
∈
R
(
H
32
⋅
W
32
)
×
C
v
F_v^{\prime} \in\mathbb{R}^{\left({\frac{H}{32} \cdot\frac{W}{32}}\right)\times C_{v}}
Fv′∈R(32H⋅32W)×Cv,并利用全连接层将
F
v
′
F_v^{\prime}
Fv′ 和
F
l
F_l
Fl 投影到同一 embedding 空间:
F
v
′
=
F
v
′
W
v
+
b
v
,
F
l
′
=
F
l
W
l
+
b
l
F_{v}^{\prime}=F_{v}^{\prime} W_{v}+b_{v}, F_{l}^{\prime}=F_{l} W_{l}+b_{l}
Fv′=Fv′Wv+bv,Fl′=FlWl+bl
其中
W
v
W_{v}
Wv,
W
l
W_{l}
Wl,
b
v
b_{v}
bv,
b
l
b_{l}
bl 为可学习的权重和偏置。然后拼接
F
v
′
F_v^{\prime}
Fv′ 和
F
l
′
F_{l}^{\prime}
Fl′ 为:
F
M
=
[
F
v
′
,
F
l
′
]
F_M=\left[F_v^{\prime},F_{l}^{\prime}]\right.
FM=[Fv′,Fl′]。
多模态编码器由 N N N 个 Transformer 层组成,输出多模态特征 F M N F_M^{N} FMN。另外,1D 和 2D 相对位置编码也分别加在图像和文本特征上。
4.4 基于回归的 Transformer 解码器
4.4.1 2D 坐标 embedding
建立一组 2D 代码簿
D
∈
R
B
H
×
B
W
×
C
e
\mathcal{D}\in \mathbb{R}^{B_H\times B_W\times C_e}
D∈RBH×BW×Ce,其中
B
H
B_H
BH 和
B
W
B_W
BW 分别为沿着高度和宽度方向的格子数量。然后利用双线性插值的方式就可以得到任意浮点型坐标
(
x
,
y
)
∈
R
2
\left(x,y)\right.\in\mathbb{R}^2
(x,y)∈R2:首先利用
(
x
,
y
)
\left(x,y)\right.
(x,y) 产生四个确切的格子:
(
x
‾
,
y
‾
)
\left(\underline{x},\underline{y})\right.
(x,y),
(
x
ˉ
,
y
‾
)
\left(\bar{x},\underline{y})\right.
(xˉ,y),
(
x
ˉ
,
y
‾
)
\left(\bar{x},\underline{y})\right.
(xˉ,y),
(
x
ˉ
,
y
ˉ
)
\left(\bar{x},\bar{y})\right.
(xˉ,yˉ)
∈
N
2
\in \mathbb{N}^2
∈N2,相应的索引从
D
\mathcal{D}
D 里面取出:
e
(
x
‾
,
y
‾
)
=
D
(
x
‾
,
y
‾
)
e_{\left(\underline{x},\underline{y})\right.}=\mathcal{D}\left(\underline{x},\underline{y})\right.
e(x,y)=D(x,y) ,然后通过双线性插值得到精确的坐标 embedding
e
(
x
,
y
)
e_{\left({x},{y})\right.}
e(x,y):
e
(
x
,
y
)
=
(
x
ˉ
−
x
)
(
y
ˉ
−
y
)
⋅
e
(
x
‾
,
y
‾
)
+
(
x
−
x
‾
)
(
y
ˉ
−
y
)
⋅
e
(
x
ˉ
,
y
‾
)
+
(
x
ˉ
−
x
)
(
y
−
y
‾
)
⋅
e
(
x
‾
,
y
ˉ
)
+
(
x
−
x
‾
)
(
y
−
y
‾
)
⋅
e
(
x
ˉ
,
y
ˉ
)
\begin{aligned} e_{(x, y)}= & (\bar{x}-x)(\bar{y}-y) \cdot e_{(\underline{x}, \underline{y})}+(x-\underline{x})(\bar{y}-y) \cdot e_{(\bar{x}, \underline{y})}+ \\ & (\bar{x}-x)(y-\underline{y}) \cdot e_{(\underline{x}, \bar{y})}+(x-\underline{x})(y-\underline{y}) \cdot e_{(\bar{x}, \bar{y})} \end{aligned}
e(x,y)=(xˉ−x)(yˉ−y)⋅e(x,y)+(x−x)(yˉ−y)⋅e(xˉ,y)+(xˉ−x)(y−y)⋅e(x,yˉ)+(x−x)(y−y)⋅e(xˉ,yˉ)
4.4.2 Transformer 解码器层
同样是 N N N 个 Transformer 解码器层。
4.4.3 预测头
预测头由分类头和坐标头组成,输入为解码器最后一层的输出
Q
N
Q^{N}
QN。分类头是一个单层线性层,输出 token 类型(<SEP>,<COO>,<EOS>):
p
^
=
W
c
Q
N
+
b
c
\hat{p}=W_{c} Q^{N}+b_{c}
p^=WcQN+bc,其中
W
c
W_{c}
Wc 和
b
c
b_{c}
bc 为线性层的参数。
坐标头由 3 层的 FFN 组成,每层之间有 RELU 激活函数。预测 2D 参考目标的 bounding box 和多边形顶点:
(
x
^
,
y
^
)
=
Sigmoid
(
F
F
N
(
Q
N
)
)
(\hat{x}, \hat{y})=\operatorname{Sigmoid}\left(F F N\left(Q^{N}\right)\right)
(x^,y^)=Sigmoid(FFN(QN))。
4.5 训练
4.5.1 多边形增强
一个多边形通常是由一组稠密目标角点组成的稀疏表示。而给定一组稠密角点,生成的稀疏多边形通常不唯一。如下图所示:
首先根据原始的多边形轮廓插值出稠密的角点,然后从一组固定范围内的可迭代样本点中进行均匀下采样来产生稀疏的多边形。这一操作从而创建了不同水平的,从粗糙到细粒度的多边形分布,拿这个来训练能防止模型过拟合到某个固定的多边形表示。
4.5.2 目标
模型来训练并预测下一个 token 及其类型: L t = λ t L c o o ( ( x t , y t ) , ( x ^ t , y ^ t ) ∣ I , T , ( x t , y t ) t = 1 : t − 1 ) ⋅ I [ p t = − < C O ^ > ] + λ c l s L c l s ( p t , p ^ t ∣ I , T , p ^ 1 : t − 1 ) L_t=\lambda_t L_{coo}((x_t,y_t),(\hat{x}_t,\hat{y}_t)|I,T,(x_t,y_t)_{t=1:t-1})\cdot\mathbb{I}[p_t=-<\hat{CO}>]+\lambda_{cls}L_{cls}(p_t,\hat{p}_t|I,T,\hat{p}_{1:t-1}) Lt=λtLcoo((xt,yt),(x^t,y^t)∣I,T,(xt,yt)t=1:t−1)⋅I[pt=−<CO^>]+λclsLcls(pt,p^t∣I,T,p^1:t−1)其中 λ t = { λ b o x , t ≤ 2 , λ p o l y , o t h e r w i s e , \lambda_t=\begin{cases}\lambda_{box},&t\leq2,\\ \lambda_{poly},&otherwise,\end{cases} λt={λbox,λpoly,t≤2,otherwise,, L c o o L_{coo} Lcoo 为 L 1 L_1 L1 回归损失, L c l s L_{cls} Lcls 为 L 1 L_1 L1 标签平滑 cross-entropy 损失, I [ ⋅ ] \mathbb{I}[\cdot] I[⋅] 为索引函数。回归损失 L 1 L_1 L1 仅用于计算坐标 tokens, λ b o x \lambda_{box} λbox 和 λ p o l y \lambda_{poly} λpoly 为相应的 tokens 权重。 L t L_t Lt 为一个序列中所有 tokens 的损失总和。
4.5.3 推理
在推理阶段,通过输入<BOS> token 来产生其它 tokens。首先会从分类头得到 token 类型,如果是坐标 token,则坐标头基于之前预测的 tokens 来获得下一个 2D 坐标预测;如果是分离 token,则代表一个多边形预测结束,所以再将分离 token添加至输出序列。
一旦 <EOS> 开始输出,则表示序列预测停止。在产生的序列上,第一二个 tokens 为 bounding box 的坐标以及多边形顶点坐标。最后分割的 mask 从这些多边形中获得。
五、实验结果
5.1 数据集和指标
5.1.1 数据集
RIS 和 REC:RefCOCO, RefCOCO+, and RefCOCOg。
5.1.2 评估指标
mean IoU、overall IoU、AP@0.5
5.2 实施细节
5.2.1 模型设置
PolyFormer-B:Swin-B + BERT-base
PolyFormer-L:Swin-L + BERT-base
5.2.2 训练细节
在 Visual Genome,RefCOCO,RefCOCO+,RefCOCOg,Flickr30k-entities 组成的数据上执行 REC任务,即预训练。在多任务微调阶段,RefCOCO, RefCOCO+, RefCOCOg 训练集上微调。AdanW、lr=0.00005, 20 epoch pre-training 160batch + 100 epoch fine-tuning 128batch。 λ b o x = 0.1 \lambda_{box}=0.1 λbox=0.1, λ p o l y = 1 \lambda_{poly}=1 λpoly=1, λ c l s = 0.0005 \lambda_{cls}=0.0005 λcls=0.0005。输入的图像尺寸 512 × 512 512\times512 512×512,50% 多边形增强概率,2D 坐标 embedding 代码簿设置为 64 × 64 64\times64 64×64 个格子。
5.3 主要结果
5.3.1 参考图像分割
5.3.2 参考表达式理解
5.3.3 Zero-shot 迁移到参考视频目标分割
5.4 消融实验
在 RefCOCO,RefCOCO+,RefCOCOg 验证集上进行消融实验,采用模型为 PolyFormer-B。
5.4.1 坐标分类 vs. 回归
5.4.2 目标序列构件时的成分分析
5.5 可视化结果
5.5.1 交叉注意力图
5.5.2 预测可视化
六、结论
本文提出了 PolyFormer,针对 RIS 和 REC 的简单而统一的序列框架。此外,设计了一种新颖的解码器来产生没有量化误差的、连续的 2D 坐标,实验效果很好。
局限性和更加广泛的影响
训练 PolyFormer 需要大量精确标注的 bounding box 和多边形顶点标注数据,利用弱监督数据来实现区域水平的理解需要进一步研究。
附录
A、附加的数据集细节
对 Ref-DAVIS17 数据集的介绍。
B、附加的实施细节
PolyFormer-B 中 C v C_v Cv 特征维度为 1024,而 PolyFormer-L 中 C v C_v Cv 特征维度为 1536。语言特征 C l C_l Cl 和坐标 embedding C e C_e Ce 的维度均为768;注意力头 12 个;在 Transformer 各个层采用GELU 激活;对于 F c l s F_{cls} Fcls,标签平滑因子设为 0.1。
C、附加的实验结果
D、更多的可视化结果
D.1 交叉注意力图
D.2 预测结果可视化
写在后面
这篇文章新意还算可以的,善于打破陈规(可能也是资金到位,哈哈),其中的多边形数据增强技巧以及 tokens 拼接技巧值得好好学习。文章来源:https://uudwc.com/A/8dnrn
PS:明天继续!欢迎关注一波~文章来源地址https://uudwc.com/A/8dnrn