《HOP-Matting:Hierarchical Opacity Propagation for Image Matting》论文笔记
参考代码:HOP-Matting
1. 概述
导读:现有的一些深度学习的matting方法是基于propagation的,这篇文章对此提出了多层次不透明度propagation(hierarchical opacity propagation,HOP)的方法,用于像素之间的不透明度传导。文章的HOP结构具有一个global和多个local的propagationmo模块,从而使得高分辨特征图下的每对像素点可以根据输入图像的外表特征连接起来。此外文章还提出了一种尺度不敏感的编码方式用于解决非固定尺度的图片输入,并且引入随机插值的方式进行数据增广。
这篇文章的核心是提出了一个HOP网络结构,使得需要预测的alpha在不同的特征层级上使用这个结构进行优化。HOP结构在文章中按照感受野的不同可以将其划分为global HOP和local HOP,HOP模块中借用了attention与aggregation机制完成信息的迁移,因而这里处理的是matting目标的外表特征与对应的不透明度。
文章中global HOP与local HOP在网络中扮演着不同的角色,global HOP用于在低分辨率但具有较强语义信息特征下通过上下文信息预测不同明度,之后local HOP去优化网络中细节的模糊部分。另外通过尺度不敏感的编码器与随机插值缩放算法从而适应不同尺寸的图像输入,并且数据数据增广。文章的结果与之前的一些工作进行对比,见下图所示:
2. 方法设计
2.1 网络结构
文章提出的网络结构见下图所示:
在a图中展示的是这篇文章的网络结构,其主要由两个编码器(不透明度信息编码器和图像外观编码器)加一个解码器组成。b图展示的是在文章的不同模块上进行不透明度传递的示意图。
non-local和transformer可以在全局上完成信息的传导,但是文章需要的信息传递与之有些不同:
- 1)non-local首先会消耗较多的内存与计算资源,并且它并不适合在大分辨率的特征图上进行信息传递,但这确是对matting比较重要的;
- 2)non-local是单独作用在输入数据上的,而在matting任务中更为重要的是不透明度信息,而不是像分类/分割/inpainting中,这些任务中更加侧重网络的语义表达,这与matting任务并不相兼容;
2.2 HOP模块
global HOP:
这里定义从不透明度编码器和图像外观编码器输出的特征图是:
F
O
∈
R
H
W
∗
C
,
F
A
∈
R
H
W
∗
C
F^O\in R^{HW*C},F^A\in R^{HW*C}
FO∈RHW∗C,FA∈RHW∗C,其中特征在每个特征点在位置
(
i
,
j
)
(i,j)
(i,j)处其点特征描述为:
f
(
i
,
j
)
O
∈
R
C
,
f
(
i
,
j
)
A
∈
R
C
f_{(i,j)}^O\in R^C,f_{(i,j)}^A\in R^C
f(i,j)O∈RC,f(i,j)A∈RC,因而在global HOP模块中其运算过程描述为:
q
(
i
,
j
)
=
W
Q
K
f
(
i
,
j
)
A
q_{(i,j)}=W_{QK}f_{(i,j)}^A
q(i,j)=WQKf(i,j)A
k
(
x
,
y
)
=
W
Q
K
f
(
x
,
y
)
A
k_{(x,y)}=W_{QK}f_{(x,y)}^A
k(x,y)=WQKf(x,y)A
a
(
i
,
j
)
,
(
x
,
y
)
=
s
o
f
t
m
a
x
(
x
,
y
)
(
q
(
i
,
j
)
T
k
(
x
,
y
)
∣
∣
q
(
i
,
j
)
∣
∣
∣
∣
k
(
x
,
y
)
∣
∣
)
a_{(i,j),(x,y)}=softmax_{(x,y)}(\frac{q_{(i,j)}^Tk_{(x,y)}}{||q_{(i,j)}||\ ||k_{(x,y)}||})
a(i,j),(x,y)=softmax(x,y)(∣∣q(i,j)∣∣ ∣∣k(x,y)∣∣q(i,j)Tk(x,y))
g
i
,
j
=
W
o
u
t
(
∑
(
x
,
y
)
a
(
i
,
j
)
,
(
x
,
y
)
f
(
x
,
y
)
O
)
+
f
(
i
,
j
)
O
g_{i,j}=W_{out}(\sum_{(x,y)}a_{(i,j),(x,y)}f_{(x,y)}^O)+f_{(i,j)}^O
gi,j=Wout((x,y)∑a(i,j),(x,y)f(x,y)O)+f(i,j)O
其中, W Q K W_{QK} WQK是生成key和query的线性矩阵, W o u t W_{out} Wout输出线性映射。这里的结构与传统的attention不同是其key和query共享一个输入,而不是直接源自于一个输入。
local HOP:
文章的HOP local版本是在当前点的领域里面进行attention运算,其运算过程可以描述为:
a
(
i
,
j
)
,
(
x
,
y
)
=
s
o
f
t
m
a
x
(
x
,
y
)
∈
N
(
(
i
,
j
)
,
s
)
(
q
(
i
,
j
)
T
k
(
x
,
y
)
∣
∣
q
(
i
,
j
)
∣
∣
∣
∣
k
(
x
,
y
)
∣
∣
)
a_{(i,j),(x,y)}=softmax_{(x,y)\in N((i,j),s)}(\frac{q_{(i,j)}^Tk_{(x,y)}}{||q_{(i,j)}||\ ||k_{(x,y)}||})
a(i,j),(x,y)=softmax(x,y)∈N((i,j),s)(∣∣q(i,j)∣∣ ∣∣k(x,y)∣∣q(i,j)Tk(x,y))
g
i
,
j
=
W
o
u
t
(
∑
(
x
,
y
)
∈
N
(
(
i
,
j
)
,
s
)
a
(
i
,
j
)
,
(
x
,
y
)
f
(
x
,
y
)
O
)
+
f
(
i
,
j
)
O
g_{i,j}=W_{out}(\sum_{(x,y)\in N((i,j),s)}a_{(i,j),(x,y)}f_{(x,y)}^O)+f_{(i,j)}^O
gi,j=Wout((x,y)∈N((i,j),s)∑a(i,j),(x,y)f(x,y)O)+f(i,j)O
文章中是按照一个global HOP多个Local HOP的形式构成的,global用于传导高层次的不透明度信息,之后local将更多的低层次纹理信息融入,在更高的分辨率下获取不透明度传导结果。
下图是文章的HOP块和self-attention的区别:
这部分对于性能的影响:
Positional encoding:
在前面的一些文章中证实了positional encoding对于self-attention机制的作用,对此文章针对global/local HOP分别提出了scale-insensitive/local relative position encoding。文章对此采用的方法见下图所示:
为了应对输入尺寸的变化文章按照输入图像的尺寸对半径
s
=
7
s=7
s=7范围内的像素使用
r
d
r_d
rd编码,使其与尺度相关,因而网络就可以适应不同的尺度,因而这里的self-attention过程可以描述为:
此外,还可以利用三色图中的不同区域设置不同的权值,只需要将
(
e
∣
i
−
x
∣
+
e
∣
j
−
y
∣
)
(e_{|i-x|}+e_{|j-y|})
(e∣i−x∣+e∣j−y∣)变换为
(
e
∣
i
−
x
∣
+
e
∣
j
−
y
∣
W
T
t
(
x
,
y
)
)
(e_{|i-x|}+e_{|j-y|}W_Tt_{(x,y)})
(e∣i−x∣+e∣j−y∣WTt(x,y))。而在local的情况下就没有了scale-insensitive相关的工作,只需要将对应的值设置为固定的就好了。
2.3 损失函数
文章的损失函数也是针对于未知区域进行损失计算的,表述为:
L
=
1
∣
T
u
∣
∑
i
∈
T
u
∣
α
i
−
α
i
g
t
∣
L=\frac{1}{|T_u|}\sum_{i\in T_u}|\alpha_i-\alpha_i^{gt}|
L=∣Tu∣1i∈Tu∑∣αi−αigt∣
3. 实验结果
Composition-1k:
alphamatting.com: