Learning Statistical Texture for Semantic Segmentation
本文是2021 CVPR的一篇关于图像语义分割的文章。在图像处理领域,传统数字图像处理方法有着很好的可解释性,并且每一个方法的目的都很明确;而深度模型通常可以取得更好的效果,然而缺乏可解释性。本文的有趣之处在于,本文通过神经网络对图像特征提取,并将提取的特征用于传统数字图像处理技术,是一种新的深度与传统的结合方式。
本文的出发点
首先本文提出,相比于高级图像特征,低级图像问题,特别是类似于语义分割这种像素级的问题其实是更看重低级图像特征的,以往在处理这类问题时的做法是简单的将浅层的局部特征与深层特征想结合,然而这种做法并不能很好的利用浅层特征。这里就涉及到两个经验知识:1、在数字图像处理中:图像的纹理信息局部是无规律的,但是整体是有规律的(通常称之为全局统计信息),而传统的数字图像处理方法就可以很好的来量化这种全局规律。2、浅层的CNN滤波器具有很好的纹理特征提取能力。因此,本文作者希望将浅层CNN提取的纹理特征用于传统数字图像处理技术。
本文的方法流程
要想对纹理信息进行传统数字图像处理,那么首先就要对纹理信息进行量化和统计(Quantization and Counting Operator)。首先,作者提出了两种量化和统计的方法QCO-1d和QCO-2d,分别对应一维和二维图像特征的量化与统计。
QCO-1d:对于一个浅层特征图
A
∈
R
C
×
H
×
W
A \in R^{C \times H \times W}
A∈RC×H×W,首先对其进行GAP获得
[
C
,
1
,
1
]
[C,1,1]
[C,1,1]的特征向量
g
g
g(我个人将其称之为自适应基准向量),然后通过将
g
g
g和
A
A
A计算cosine相似度,获得相似度矩阵
S
S
S,公式如下:
此时
S
S
S的维度是
[
H
,
W
]
[H,W]
[H,W]的,将其reshape成
[
H
W
]
[HW]
[HW]的,之后就是将其从大到小分成N份,
L
=
[
L
1
,
L
2
,
.
.
.
,
L
N
]
L = [L_1, L_2,...,L_N]
L=[L1,L2,...,LN],对于
L
n
L_n
Ln的起点值公式如下:
那么对于每一个
S
i
S_i
Si,我们就可以根据其大小对应到相应的
L
n
L_n
Ln区间中。之后,我们根据对应的区间以及对应程度可以得到
[
1
,
n
]
[1,n]
[1,n]的向量
E
i
E_i
Ei,公式如下:
E
i
E_i
Ei是一个soft one-hot形式的向量,代表了
S
i
S_i
Si对应的纹理特征范围以及对应程度,当然在训练时soft one-hot还有防止梯度消失的优势。
到此,我们获得了
[
N
,
H
W
]
[N, HW]
[N,HW]的纹理特征一维量化矩阵
E
E
E,接下来就是对其统计。首先计算每一类纹理特征的计数:
然后将其与之前的纹理特征分类标准
L
L
L concat在一起:
由此获得了
[
N
,
2
]
[N, 2]
[N,2]的计数矩阵
C
C
C。接下来我们将其与开始的GAP特征
g
g
g进行聚合:
在聚合之前,
g
g
g被upsample成了
[
N
,
C
]
[N,C]
[N,C]的维度,而
C
C
C被MLP映射成了
[
N
,
C
]
[N, C]
[N,C]的维度。
到现在为止,我们获得了一个矩阵
E
E
E,其代表了图像纹理特征的量化值;一个矩阵D,其代表了图像纹理特征的统计值。
接下来是QCO2-d的获得:其实2-d就是在1-d的基础上扩充了纹理特征的空间位置信息。将1-d中得到的
E
E
E reshape 成
[
N
,
1
,
H
,
W
]
[N,1,H,W]
[N,1,H,W]的矩阵,那么对于每一个像素点
(
i
,
j
)
(i,j)
(i,j)就有一个
[
1
,
N
]
[1,N]
[1,N]的对应的
E
i
,
j
E_{i,j}
Ei,j,将第
(
i
,
j
)
(i,j)
(i,j)和
(
i
,
j
+
1
)
(i,j+1)
(i,j+1)像素对应的
E
E
E相乘,可以获得一个
[
N
,
N
]
[N,N]
[N,N]的矩阵
E
^
\hat{E}
E^:
那么在
E
^
\hat{E}
E^中只有一个元素不为0,这个元素的位置和大小反映了两个相邻特征的类别和相似度。接下来也是对2-d特征进行统计:
获得统计矩阵
C
C
C;以及与
g
g
g进行特征聚合:
到此位置,我们有了1-d的纹理特征统计信息和2-d的纹理特征统计信息,接下来就是如何应用了。这里作者分别将1-d信息用于了直方图,将2-d信息用于了灰度共生矩阵。
先看1-d的:直方图中有一个非常重要的技术是均衡化(参考https://blog.csdn.net/schwein_van/article/details/84336633)。对于像素级别的统计值,通过直方图均衡化后图像对比度增加,那么对于纹理特征级别的统计值,通过均衡化后就是纹理特征之间对比度增加。具体的,将QCO-1d中的
D
D
D作为直方图,对原始的
L
L
L进行均衡化获得
L
′
L'
L′,之后通过
R
=
L
′
E
R = L' E
R=L′E获得特征均衡化后的特征图。
如上图,特征重建的效果。
对于2-d特征,则是将其看成是灰度共生矩阵来用,通过求和来计算每种关系的量,这里就不再展开来说了。
个人感受
本文通过一种新的角度将传统数字图像处理方法用到了深度学习中,并且可以看到由于新模块使用的是传统数字图像处理方法,因此几乎没有引入额外训练参数(唯一的一点参数就是在几次特征维度变换上)。此外,不同的数字图像处理方法针对于不同的图像变换角度,因此对于其他图像处理任务(如超分/去噪等)也完全可以选择其他的数字图像处理方法来提升网络性能。