【论文笔记】CRFasRNN

xiaoxiao2022-06-24  6

主页:http://www.robots.ox.ac.uk/~szheng/crfasrnndemo

论文:http://www.robots.ox.ac.uk/~szheng/papers/CRFasRNN.pdf

源码:https://github.com/torrvision/crfasrnn

文章目录

1. 概览2. 方法说明2.1 条件随机场(CRF)2.2 将平均场迭代作为CNN layer1. 初始化2. 消息传递

1. 概览

1)像素级标注任务存在的问题:

在像素级标注任务(比如说分割)中,为每个像素分配标签时应当考虑图像边缘、外观一致性和空间一致性,这样才能获得更准确的分割结果。

【外观一致性就是说,外观看起来相似的像素更可能属于同一类,而外观差异很大的像素更可能属于不同类;空间一致性就是位置上相邻的像素更可能属于同一类,距离比较远的像素更可能属于不同类,考虑这些信息相当于将先验知识加入到分割任务中】

像素级的标注任务需要一个好的特征表示,而获得特征表示最关键的是要能够 用端到端的学习方法 去代替手工特征。

FCN 将 CNN 应用到分割任务中来,但是它存在几个问题:

首先,传统的 CNN 具有较大的感受野,导致在输出像素级的标签时,结果比较粗糙;另外 CNN 还有池化层,又进一步降低了图像的分辨率。这样导致的后果就是分割结果的边缘模糊,且形状不规则。其次,CNN 缺少平滑约束。平滑约束其实就是鼓励外形相似、空间位置相近的像素具有相同的标签。比如说我们希望在有边缘处(梯度大的地方)分割开的概率大一些,如果能把这些已有的先验约束信息加入其中,那么算法应该会有进一步提升。

2)针对以上问题的解决方法:

在 DeepLab 中提出,先用 FCN 做粗分割,再利用条件随机场 CRF 做精细分割。

概率图模型是一种有效提升像素级标注任务准确性的办法,其中马尔可夫随机场 (MRFs) 和其特例条件随机场 (CRFs) 是应用最广泛的概率图模型。

CRF 的核心思想 是 将标签分配问题看作了概率推理问题,概率问题就包含了相似像素间的约束。

CRF 能够对粗糙的分割结果进行修正,产生清晰的边界和更精细的分割结果。所以,CRF 可以解决上面提到的使用 CNN 做像素级标记任务的缺陷。

3)解决方法是好方法,但是还有缺点:

一般用 CRF 提升分割结果,是将它作为后处理(post-processing step),也就是说 CRF 并没有和 CNN 相连接,粗分割和细分割过程实际上是完全分离的,CRF 只不过是利用了 FCN 的结果作为一元势函数,那么这样做就并未提升分割网络,因为 CNN 无法根据 CRF 来调整它的权重。

4)本文的目的:

解决 CRF 与 CNN 训练分离的问题

主要解决方法:

提出一个端到端的统一网络模型,其结合了 CNNs 和基于 CRF 的概率图模型。

提出将具有高斯二元势(Gaussian pairwise potentials)和 平均场估计(mean-field approximate inference)的 CRF 看作 RNN 网络,该 RNN 网络起名为 CRF-RNN,并将其放进 CNN 中作为 CNN 的一部分,使得网络同时具有 CNN 和 CRF 的特性。在前向传播过程中,该 RNN 网络可以调整来自 CNN 的分割结果;在反向传播过程中,传播误差的梯度。

最重要的是,本文提出的网络将 CRF 与 CNN 完全融合,可以通过传统的反向传播来实现端到端的训练,免去了训练之后还要进行独立的后处理。

5)实验结论: 在 PASCAL VOC 2012 上的语义分割任务效果最好 只要训练得当,CRF-RNN 的试验结果比将 CRF 作为独立的后处理得到的结果要好

而且将 CRF 与 CNN 进行联合训练得到的分割结果要比 CRF 单独作为后处理得到的结果好。

2. 方法说明

将 dense CRF 看作 RNN,一个可端到端训练的网络,结合 CNN 和 概率图模型的优势。

2.1 条件随机场(CRF)

CRF 使用在像素级的标记任务上,将像素标签看作随机变量,在给定全局观测下,所有的随机变量形成一个马尔可夫随机场。

【 全局观测就是整幅图片 】

X i X_i Xi 是随机变量,为分配给像素 i i i 的标签,取值为预定义的标签集合 L = { l 1 , l 2 , . . . , l L } L = \{ l_1,l_2,...,l_L \} L={l1,l2,...,lL}

N N N 为图像中的像素个数

X X X 为向量,由 X 1 , X 2 , . . . X N X_1,X_2,...X_N X1X2,...XN 组成

G = ( V , E ) G = (V,E) G=(V,E) V V V为节点, V = { X 1 , X 2 , . . . , X N } V = \{X_1, X_2,...,X_N\} V={X1,X2,...,XN},全局观测为 I I I(即整幅图片), ( I , X ) (I,X) (I,X) 可以利用 CRF 进行建模,采用 Gibbs distribution(吉布斯分布): P ( X = x ∣ I ) = 1 Z ( I ) e x p ( − E ( x ∣ I ) ) P(X=x|I) = \frac{1}{Z(I)}exp(-E(x|I)) P(X=xI)=Z(I)1exp(E(xI))

E ( x ) E(x) E(x) x ∈ L N x \in L^N xLN 状态下的 energy,也就是在 X 在某种分配方案下的能量 Z ( I ) Z(I) Z(I) 为 partition function,参考:

定义 CRF 对于标签分配方案 X 的能量函数为: E ( x ) = ∑ i ψ u ( x i ) + ∑ i < j ψ p ( x i , x j ) E(x) = \sum_i \psi_u(x_i) + \sum_{i<j} \psi_p(x_i,x_j) E(x)=iψu(xi)+i<jψp(xi,xj)

一元势函数 ψ u ( x i ) \psi_u(x_i) ψu(xi) 衡量了给像素 i i i 分配标签 x i x_i xi 的逆可能性(不可能性),也就是 cost,其逆可能性越大,cost 就越大。一元势函数来可以直接通过 CNN 计算出来,它并未考虑平滑性和标签一致性;二元势函数 ψ p ( x i , x j ) \psi_p(x_i,x_j) ψp(xi,xj) 衡量了给像素 i i i j j j 同时分配标签 x i x_i xi x j x_j xj 的逆可能性。二元势函数提供了基于图像数据的平滑项,它鼓励为相似的像素点分配相同的标签。

本文将二元势函数定义为 加权的高斯函数: ψ p ( x i , x j ) = μ ( x i , x j ) ∑ m = 1 M w ( m ) k G ( m ) ( f i , f j ) \psi_p(x_i,x_j) = \mu(x_i,x_j)\sum_{m=1}^{M}w^{(m)}k_G^{(m)}(f_i,f_j) ψp(xi,xj)=μ(xi,xj)m=1Mw(m)kG(m)(fi,fj)

f i f_i fi 为像素 i i i 的特征向量,其来自图像特征(比如空间位置和RGB值) k G ( m ) k_G^{(m)} kG(m) 为高斯核,是用于度量像素 i 和 j 的特征向量相似度的一个高斯权重,m = 1,…,M,M 为像素对的个数 μ ( x i , x j ) \mu(x_i,x_j) μ(xi,xj) 为标签一致性函数,表示不同标签对之间的一致性(兼容性),其应当是一个二维矩阵

最小化 CRF 的能量函数 E ( x ) E(x) E(x),将会产生图像 I I I 最有可能的标签分布 X X X

但是精确地最小化能量函数比较难,所以用 CRF 的平均场估计 (mean-field approximation) 来近似最大后验边缘推断

用一个简单的分布 Q ( X ) Q(X) Q(X) 来近似表示 CRF 的分布 P ( X ) P(X) P(X),且 Q ( X ) Q(X) Q(X) 可以写成多个独立边缘分布的乘积: Q ( X ) = ∏ i Q i ( X i ) Q(X) = \prod_i Q_i(X_i) Q(X)=iQi(Xi)

上面这些是已有的工作,作者下面就要将平均场推断的迭代过程转换为 RNN 网络。

2.2 将平均场迭代作为CNN layer

(1)《Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials》,NIPS 2011 (2)《Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs》 (3)FCN

本文的一个关键贡献是证明了 平均场CRF推理 可以表示为 递归神经网络 RNN。

对于 dense CRFs,基于滤波器的近似平均场推理方法依赖于每次迭代时在平均场近似中使用 Gaussian spatial 和 bilateral filter

与 CNN 中的标准卷积层(训练后卷积是固定的)不同,这里使用 edge-preserving (保留边缘) 的高斯滤波器,其系数依赖于图像的原始空间和外观信息。 尽管这些卷积核的大小可能和原图像一样大,但是优势在于只需要很小的一组参数。

在将推理步骤重新定义为 CNN layer 时,必须能够计算出每一层的误差微分。 如何计算误差微分,每层的参数要通过反向传播进行优化。

因此,CRF 的参数:高斯核的权重 以及 标签一致性函数 都可以通过网络的训练过程自动优化。

算法的各个部分被分解为 CNN 层,那么整个算法就可以看作是一个 RNN。

U i ( l ) U_i(l) Ui(l) 为一元势函数的相反数,即: U i ( l ) = − ψ u ( X i = l ) U_i(l) = -\psi_u(X_i = l) Ui(l)=ψu(Xi=l) 在传统的 CRF 里,平均场算法的输入 U i ( l ) U_i(l) Ui(l) 是由一个独立的分类器得出的。

1. 初始化

Q i ( l ) = 1 Z i e x p ( U i ( l ) ) , Z i = ∑ l e x p ( U i ( l ) ) Q_i(l) = \frac{1}{Z_i}exp(U_i(l)),Z_i = \sum_lexp(U_i(l)) Qi(l)=Zi1exp(Ui(l))Zi=lexp(Ui(l)) 该等式相当于在每个像素的所有标签上,将 softmax 应用在一元势函数 U U U

softmax 操作不包括任何参数,在反向传播过程中输出的误差微分将会在反向传播完成后传递给一元势函数。

2. 消息传递

在 dense CRF 中,通过在 Q Q Q 值上应用 M M M Gaussian filter 来实现 Message passing(消息传递)

高斯滤波参数 是根据图像特征(比如像素位置 和 RGB值)得出的,它反映了某一像素和其他像素之间的关联有多强。

由于 CRF 可能是全连接的,每个滤波器的接收域覆盖整个图像,所以要强行实现这些滤波器不可行。 但是有一些近似的方法可以加快高维高斯滤波的计算速度

使用置换点阵实现,它可以在 O(N) 时间内计算滤波响应,其中 N 是图像的像素数。