解析:Adaptive Affinity Field for Semantic Segmentation
Adaptive Affinity Field for Semantic Segmentation
最近在阅读目标分割的一系列论文,今天读到伯克利大学的Adaptive Affinity Field for Semantic Segmentation 文章,觉得应该记点什么与大家一同分享。
背景介绍
目标分割 对应的是像素级别的前景背景分析,本篇文章针对前景背景混合,前景信息弱(本文点出譬如:玻璃窗这类透明前景,如下图所示)无法有效分离的问题,提出了不同于CRF(条件随机场)和GANs(生成对抗网络)的方式。AAF方法捕捉和匹配空间像素点之间的关联,描述每个像素点语义标签如何彼此相互关联。
其中描述到 affinity idea 的时候提到了文献【26】1,文献是1985年的描述了一个关于early vision 的 ill-posed 的问题, 这个问题是什么, Ill-Posed Problems in Early Vision 此文献里有详细的描述以及证明,并阐述如何从数学方面解决此类问题,简单的说 Ill-Posed Problems 是一个不可逆问题,譬如遮挡的边界恢复问题。文献【26】提出了一个新型解决方案,从物理电学以及化学的局部相关性解决问题,也就是说从构造硬件去解决一个数学非线性方程。本文应该是借助这种局部场去描述内在结构,可能那么理解有些牵强吧。
接着阅读了【23】2,文献中详细描述了Complex affinities for grouping , 通过 Angular Embedding:
A Robust Quadratic Criterion 文献中的 angular embedding (AE)方法解决了群体中的异常值,对于修整细节以及边缘特性有效。原始图如下其中 least squares(LS)。
与上述方法不同的为,本文强调了两个边界性,从 loss function 中也可以看出来, 具有一个最大最小值,在范围内都 OK 。
其中比较吸引人的几点如下:
1.提出了KL分布表示空间结构信息。
2. 训练方式比GAN容易,inference易于CRF。
3.关注与几何结构而不是像素(应该是loss中的取极大极小的极值效应)
相关工作介绍
语义分割是像素级别的分类任务,同样相关模型结构分析对正确率有一定提升。
Semantic Segmentation :自从全卷积神经网络,更深,更广泛的卷积网络架构的生成,极大提高了VOC测试标准,特别是 ResNet 代替了主干网络以及空洞卷积对于网络细节修整。但这些方法无法避免前景背景混合时造成的判断失误。譬如: DeepLabV3+(结合DCNN中的空洞卷积以及编码解码的方式,抛弃了比较困难的CRF的迭代方式3)。
Structure Modeling :图片像素点之间有较高的空间关联特性,如果将其定义成一个像素级别的分类工作,会造成不必要的困难以及空间不一致的特性。从而提出了CRF+DCNN的方法,但是这个方法会造成迭代时间过长,inference 相对来说费时。
方法介绍: Adaptive Affinity Fields
分为两个部分首先1.回顾了对于语义分割中像素级别的交叉熵函数 2.面对其缺陷,提出了通过 affinity fields 进行区域级别的监督,介绍了对抗的过程学习每一类适应亲和卷积核的大小。整个具体流程图如下:图中分为两个部分,a)多核亲和场的损失,b)对应对抗类别的权值。其中注意AAF的方法只用作训练对于 inference 没有影响。(以此表明了比 GANs 好训练,inference 比 CRF 容易)
像素级到区域级的过程
像素级的一元监督形式,是一种比较常用的语义分析的手段。像素之间的关联可以通过有效表示域来挖掘,那么随着网络的加深有效感受域随之也就越大。其中
y
i
^
(
l
)
\hat{y_i}(l)
yi^(l) 预测对应类别的概率,对应在像素
i
i
i 的类别为
l
l
l (
g
r
o
u
n
d
t
r
u
t
h
ground truth
groundtruth.)
L
u
n
a
r
y
i
(
l
)
=
L
c
r
o
s
s
−
e
n
t
r
o
p
y
i
(
l
)
=
−
l
o
g
y
i
^
(
l
)
L_{unary}^i(l) =L_{cross-entropy}^i(l) =-log\hat{y_i}(l)
Lunaryi(l)=Lcross−entropyi(l)=−logyi^(l) 一元标签没有描述语义之间的相关性以及场景结构的信息。包含不同类别之间的相互作用。譬如:某个东西伴随某个东西产生可能性会比较大,某个东西为什么样的形状可能性更大。这一类我们称之为类间以及类内之间的相互关联。从而提出了一个区域级的损失,来惩罚不一致的特性,鼓励像素之间的内在因素。
从而创建了region-wise的
L
r
e
g
i
o
n
i
(
l
)
L_{region}^i(l)
Lregioni(l)损失函数,
ℵ
(
y
i
^
(
l
)
)
\aleph(\hat{y_i}(l))
ℵ(yi^(l)) 为预测的结果,
ℵ
(
y
i
(
l
)
)
\aleph({y_i}(l))
ℵ(yi(l)) 为标准的结果。最后函数为两个相加:
S
∗
=
a
r
g
m
i
n
S
L
=
a
r
g
m
i
n
S
1
n
∑
i
(
L
u
n
a
r
y
i
(
y
i
^
(
l
)
,
y
i
(
l
)
)
+
γ
L
r
e
g
i
o
n
i
(
ℵ
(
y
i
^
(
l
)
)
,
ℵ
(
y
i
(
l
)
)
)
S^*=\underset{S}{argmin}L=\underset{S}{argmin} \frac 1 n \sum_i (L_{unary}^i(\hat{y_i}(l),{y_i}(l)) + \gamma L_{region}^i(\aleph(\hat{y_i}(l)),\aleph({y_i}(l)))
S∗=SargminL=Sargminn1i∑(Lunaryi(yi^(l),yi(l))+γLregioni(ℵ(yi^(l)),ℵ(yi(l))) n为总得像素个数
Affinity Field 损失函数
亲和场采用了灵活地方式定义region-wise 损失,优化方便。主旨在于描述像素点和点之间联系,一个加权的边表示点与点相似度。一共存有两类标签:一类为相似一类为不相似,相似的像素之间具有亲和力,不相似的之间具有斥力。如下图所示:
图中描述的正是文章中两类方法:左边的正是提出的这种亲和力的方式
L
a
f
f
i
n
i
t
y
i
c
L_{affinity}^{ic}
Laffinityic,最右边的定义如上所述的
L
r
e
g
i
o
n
i
(
ℵ
(
y
i
^
(
l
)
)
,
ℵ
(
y
i
(
l
)
)
L_{region}^i(\aleph(\hat{y_i}(l)),\aleph({y_i}(l))
Lregioni(ℵ(yi^(l)),ℵ(yi(l)),损失函数是基于KL散度的二分类的概率分布,公式具体的意思就是如果是同一类就保持一直,不同类之间具有一个最近距离
m
m
m 。对于像素
i
i
i,领域像素
j
j
j,对于相同类别
c
c
c在于ground truth
y
i
(
c
)
y_i(c)
yi(c)下的损失函数,分开算边界
L
a
f
f
i
n
i
t
y
i
b
‾
c
L_{affinity}^{i\overline bc}
Laffinityibc以及非边界的损失
L
a
f
f
i
n
i
t
y
i
b
c
L_{affinity}^{ibc}
Laffinityibc,当然最后算的是
L
a
f
f
i
n
i
t
y
i
c
L_{affinity}^{ic}
Laffinityic 平均值
L
a
f
f
i
n
i
t
y
i
c
=
{
L
a
f
f
i
n
i
t
y
i
b
‾
c
=
D
K
L
(
y
^
j
(
c
)
∣
∣
y
^
i
(
c
)
)
if
y
j
(
c
)
=
y
i
(
c
)
L
a
f
f
i
n
i
t
y
i
b
c
=
m
a
x
(
0
,
m
−
D
K
L
(
y
^
j
(
c
)
∣
∣
y
^
i
(
c
)
)
)
if
o
t
h
e
r
w
i
s
e
L_{affinity}^{ic} = \begin{cases} L_{affinity}^{i\overline bc}=D_{KL}(\hat y_j(c)||\hat y_i(c)) &\text{if } y_j(c)=y_i(c) \\ L_{affinity}^{ibc}=max(0,m-{D_{KL}(\hat y_j(c)||\hat y_i(c))}) &\text{if } otherwise \end {cases}
Laffinityic={Laffinityibc=DKL(y^j(c)∣∣y^i(c))Laffinityibc=max(0,m−DKL(y^j(c)∣∣y^i(c)))if yj(c)=yi(c)if otherwise 对于以上的公式做出以下两点讨论:
1.这种配对学习的方式,不论类别,两个像素只限制与同一类或不同类,对于给出边界具有较好的帮助。
2.这样的学习方式类似于CRF,限制领域像素对于像素点的影响,但是这样的方式不需要牺牲inference时间,通过连续迭代的方式完成。
当然公式可以统一:(若同一类为1,反之为0)
L
a
f
f
i
n
i
t
y
i
c
=
y
L
a
f
f
i
n
i
t
y
i
b
‾
c
+
(
1
−
y
)
L
a
f
f
i
n
i
t
y
i
b
c
=
y
D
K
L
(
y
^
j
(
c
)
∣
∣
y
^
i
(
c
)
)
+
(
1
−
y
)
m
a
x
(
0
,
m
−
D
K
L
(
y
^
j
(
c
)
∣
∣
y
^
i
(
c
)
)
)
L_{affinity}^{ic} =y L_{affinity}^{i\overline bc} + (1-y) L_{affinity}^{ibc} =y D_{KL}(\hat y_j(c)||\hat y_i(c))+(1-y) max(0,m-{D_{KL}(\hat y_j(c)||\hat y_i(c))})
Laffinityic=yLaffinityibc+(1−y)Laffinityibc=yDKL(y^j(c)∣∣y^i(c))+(1−y)max(0,m−DKL(y^j(c)∣∣y^i(c)))
Adaptive Kernel Sizes from Adversarial Learning
在训练的过程中有一个内核的大小,但是对于不同的类别我们会有一个不一样的大小,所以我们不能去统一规定。从而提出了自适应的方法对于大小以及权值进行学习。
L
m
u
l
t
i
s
c
a
l
e
=
∑
c
∑
k
w
c
k
L
r
e
g
i
o
n
c
k
s
.
t
.
∑
k
w
c
k
=
1
a
n
d
w
c
k
⩾
0
L_{multiscale}=\sum _c \sum _k w_{ck}L_{region}^{ck} \ \ \ \ \ \ \ s.t. \sum _k w_{ck}=1\ \ and\ \ w_{ck} \geqslant 0
Lmultiscale=c∑k∑wckLregionck s.t.k∑wck=1 and wck⩾0 对应于类别
c
c
c 的
k
∗
k
k*k
k∗k 大小核对应权值
w
c
k
w_{ck}
wck。其中前文给出
L
r
e
g
i
o
n
c
k
L_{region}^{ck}
Lregionck 。具体文章没有给出特别详细公式,我怀疑就是交叉熵函数,细节还要看代码。(看代码之后再公布细节)
正因如此,为了让损失函数
L
m
u
l
t
i
s
c
a
l
e
L_{multiscale}
Lmultiscale最小,会自动让无边界的地方具有较小的核,而有边界的地方具有较大核。因为现实生活中越近出现边界的概率越小。
最后我们的训练方式选取了博弈的方法,和 GANs 类似,分别去取最大最小的值去进行对抗,一方面我们需要让分割越漂亮越好,另一方面选择核以及权值需要让损失越大越容易去训练到较好状态,所以 the affinity loss 公式如下:
S
∗
=
a
r
g
m
i
n
S
m
a
x
w
L
u
n
a
r
y
+
L
m
u
l
t
i
s
c
a
l
e
S^*=arg \underset{S}{min}\underset{w}{max}L_{unary}+L_{multiscale}
S∗=argSminwmaxLunary+Lmultiscale
分离边界以边界情况
L
a
f
f
i
n
i
t
y
b
‾
c
k
L_{affinity}^{\overline bck}
Laffinitybck以及非边界
L
a
f
f
i
n
i
t
y
b
c
k
L_{affinity}^{bck}
Laffinitybck,AAF公式如下
S
∗
=
a
r
g
m
i
n
S
m
a
x
w
L
u
n
a
r
y
+
L
A
A
F
L
A
A
F
=
∑
c
∑
k
(
w
b
‾
c
k
L
a
f
f
i
n
i
t
y
b
‾
c
k
+
w
b
c
k
L
a
f
f
i
n
i
t
y
b
c
k
)
s
.
t
.
∑
k
w
b
c
k
=
1
∑
k
w
b
‾
c
k
=
1
a
n
d
w
b
c
k
⩾
0
w
b
‾
c
k
⩾
0
S^*=arg \underset{S}{min}\underset{w}{max}L_{unary}+L_{AAF} \\ L_{AAF}=\sum _c \sum _k (w_{\overline bck}L_{affinity}^{\overline bck}+w_{bck}L_{affinity}^{bck}) \ \ \ \ \ \ \ \\ s.t. \sum _k w_{bck}=1\ \sum _k w_{\overline bck}=1\ \ and\ \ w_{bck}\geqslant 0\ \ w_{\overline bck}\geqslant 0
S∗=argSminwmaxLunary+LAAFLAAF=c∑k∑(wbckLaffinitybck+wbckLaffinitybck) s.t.k∑wbck=1 k∑wbck=1 and wbck⩾0 wbck⩾0
损失函数的关系的一个序列图:
[Poggio, T.: Early vision: From computational structure to algorithms and parallel hardware.
Computer Vision, Graphics, and Image Processing 31(2), 139–155 (1985)] ↩︎[Maire, M., Narihira, T., Yu, S.X.: Affinity cnn: Learning pixel-centric pairwise relations for
figure/ground embedding. In: CVPR (2016)] ↩︎Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation ↩︎