双边滤波思想在CNN中的应用--Pixel Adaptive Convolutional Neural Networks
1. Pixel Adaptive CNN主要内容
这篇文章[1]来自CVPR2019, 主要提出了文中所称的“Pixel Adaptive Convolution(PAC)”模块,本质上是采用双边滤波的思想来扩展CNN中的标准卷积操作,而不仅仅只是考虑空间域卷积。下面简要介绍原文[1]的主要部分(即PAC模块),为了跟原文内容的一致性,下面的公式符号尽量与原文一致。令
v
l
=
(
v
1
l
,
v
2
l
,
.
.
.
,
v
n
l
)
,
v
i
l
∈
R
c
~~~~~~~~~~~~~~~~v^l=(v^l_1,v^l_2,...,v^l_n),v^l_i\in R^c
vl=(v1l,v2l,...,vnl),vil∈Rc,表示来自CNN中第
l
l
l层的feature maps,具有
c
c
c个通道;
W
l
∈
R
c
′
×
c
×
s
×
s
~~~~~~~~~~~~~~~~W^l\in R^{c\prime\times c\times s\times s}
Wl∈Rc′×c×s×s,表示CNN的第
l
l
l层与
l
+
1
l+1
l+1层之间的卷积核,
c
′
c\prime
c′表示第
l
+
1
l+1
l+1层的通道数,
s
s
s表示卷积核尺寸;
p
i
=
(
u
i
,
v
i
)
T
~~~~~~~~~~~~~~~~p_i=(u_i,v_i)^{T}
pi=(ui,vi)T表示像素坐标,
b
l
b^l
bl表示偏置项;
Ω
(
i
)
~~~~~~~~~~~~~~~~\Omega(i)
Ω(i)表示像素
i
i
i周围
s
×
s
s\times s
s×s的卷积窗口尺寸;
f
i
∈
R
d
~~~~~~~~~~~~~~~~f_i\in R^d
fi∈Rd表示像素
i
i
i的某种特征,例如在RGB图像中取
f
i
=
(
u
i
,
v
i
,
r
i
,
g
i
,
b
i
)
f_i=(u_i,v_i,r_i,g_i,b_i)
fi=(ui,vi,ri,gi,bi)。
则CNN中的标准空间卷积操作,可以表示为:
(1)
v
i
l
+
1
=
∑
j
∈
Ω
(
i
)
W
l
[
p
i
−
p
j
]
v
j
l
+
b
l
∈
R
c
′
v^{l+1}_i=\sum_{j\in\Omega(i)}W^l[p_i-p_j]v^l_j+b^l\in R^{c\prime}\tag{1}
vil+1=j∈Ω(i)∑Wl[pi−pj]vjl+bl∈Rc′(1)
为了融合像素的其他特征信息先验(可以来自网络学习的其他特征或者预先设定的特征),一种直接的方式就是使得卷积操作不仅仅是在空间上考虑,如下:
v
i
l
+
1
=
∑
j
∈
Ω
(
i
)
W
~
(
f
i
−
f
j
)
v
j
l
+
b
l
v^{l+1}_i=\sum_{j\in \Omega(i)}\tilde{W}(f_i-f_j)v^l_j+b^l
vil+1=j∈Ω(i)∑W~(fi−fj)vjl+bl理想的类双边滤波的过程(不仅仅只是考虑空间域的滤波,例如同时考虑将该特征作为函数时,其值域空间的相邻关系),如果要对特征
v
j
l
v^l_j
vjl进行类双边滤波,一般会把
v
j
l
v^l_j
vjl投到高维空间中,如
v
i
l
↦
(
u
i
,
v
i
,
f
i
,
v
i
l
)
∈
R
1
×
1
×
dim
f
i
×
dim
v
i
l
v^l_i\mapsto(u_i,v_i,f_i,v^l_i)\in R^{1\times 1 \times \dim{f_i}\times\dim{v^l_i}}
vil↦(ui,vi,fi,vil)∈R1×1×dimfi×dimvil 因为在高维空间中更加容易把特征点集
{
v
i
l
}
i
\{v^l_i\}_i
{vil}i,但是把
v
j
l
v^l_j
vjl投射到高维空间中,会使得点集
{
v
i
l
}
i
\{v^l_i\}_i
{vil}i在高维空间中非常稀疏和不规则,使得标准的卷积操作不太容易实现,也即使得
W
~
(
f
i
−
f
j
)
\tilde{W}(f_i-f_j)
W~(fi−fj)的计算相当困难。(关于双边滤波原理的分析,可以参考前一篇博客图像滤波原理之双边滤波)
因此文章[1]为了使得高维空间中的滤波(空间域和值域),能够利用现有的CNN中标准卷积操作,使用了如下的卷积方式(即文中所称的PAC),来近似模拟类双边滤波过程,
(2)
v
i
l
+
1
=
∑
j
∈
Ω
(
i
)
K
(
f
i
,
f
j
)
W
[
p
i
−
p
j
]
v
j
l
+
b
l
v^{l+1}_i = \sum_{j\in \Omega(i)}K(f_i,f_j)W[p_i-p_j]v^l_j+b^l\tag{2}
vil+1=j∈Ω(i)∑K(fi,fj)W[pi−pj]vjl+bl(2)
其中
K
∈
R
c
′
×
c
×
s
×
s
K\in R^{c\prime \times c \times s\times s}
K∈Rc′×c×s×s是一个固定的函数,例如
K
(
f
i
,
f
j
)
=
e
x
p
(
−
1
2
(
f
i
−
f
j
)
T
(
f
i
−
f
j
)
)
K(f_i,f_j)=exp(-\frac{1}{2}(f_i-f_j)^T(f_i-f_j))
K(fi,fj)=exp(−21(fi−fj)T(fi−fj))。为了说明这个过程,引用原文[1]中的图片:
2. Pixel Adaptive Convolution与双边滤波的联系
下面分析PAC与双边滤波的联系,为了叙述的方便,首先回顾下一下双边滤波:
I
i
~
=
1
∑
w
(
p
i
,
p
j
)
∑
p
j
∈
Ω
(
p
i
)
w
(
p
i
,
p
j
)
I
j
,
\tilde{I_i}=\frac{1}{\sum w(p_i,p_j)}\sum_{p_j\in \Omega{(p_i)}}w(p_i,p_j)I_j,
Ii~=∑w(pi,pj)1pj∈Ω(pi)∑w(pi,pj)Ij,
(3)
w
(
p
i
,
p
j
)
=
e
−
(
u
i
−
u
j
)
2
+
(
v
i
−
v
j
)
2
2
σ
s
2
−
∣
I
i
−
I
j
∣
2
2
σ
r
2
w(p_i,p_j)=e^{-\frac{(u_i - u_j)^2+(v_i-v_j)^2}{2\sigma_{s}^{2}}-\frac{|I_i-I_j|^2}{2\sigma_{r}^2}}\tag{3}
w(pi,pj)=e−2σs2(ui−uj)2+(vi−vj)2−2σr2∣Ii−Ij∣2(3)
其中
(
u
i
,
v
i
)
,
I
i
(u_i,v_i), I_i
(ui,vi),Ii分别表示像素
p
i
p_i
pi的像素坐标和像素值。主要通过分析PAC表达式(2)中的
K
(
f
i
,
f
j
)
,
W
[
p
i
−
p
j
]
K(f_i,f_j), W[p_i-p_j]
K(fi,fj),W[pi−pj]来说明它们之间的联系:
I) 与CNN中标准卷积的关系: 当
K
(
f
i
,
f
j
)
≡
1
K(f_i,f_j)\equiv 1
K(fi,fj)≡1时,PAC退化为标准的空间卷积;
II) 与双边滤波(bilateral filtering)的关系:当公式(2)中的
f
i
=
I
i
σ
r
f_i=\frac{I_i}{\sigma_r}
fi=σrIi,且
W
[
p
i
−
p
j
]
W[p_i - p_j]
W[pi−pj]取为通常的2D高斯卷积核, 这就是双边滤波的权重系数(3)。(注意:本质上CNN的卷积只在空间上进行滤波,即公式(2)中的
W
[
p
i
−
p
j
]
W[p_i-p_j]
W[pi−pj]仅与空间关系,这与固定模板的高斯卷积本质上是一样的,只不过通常CNN中的卷积通过学习过程得到的,但是在一次前传中,由于共享参数,这就是一个以学习到的权重模板进行卷积滤波的过程)
结束语:注意到类双边滤波的思想,提供了一种的refine特征的方式,特别是当我们对分析的具体问题,有一组较好的先验特征信息时,就可以通过这种类双边滤波的过程嵌入到CNN中进行特征refine, 同时也使得特征refine也有了更好的解释性; 同时,在多个相关任务学习中,通过一个任务的特征按照类双边滤波的思想,去过滤其他任务的特征 (也即joint bilateral filtering),也是一种加强多种任务之间联系的方式。
[1] Pixel Adaptive Convolutional Neural Networks.