0%

语义分割中 CRF 的运用

图像语义分割的深度学习方法发展到现在,一个通用的框架基本确定了,即如下图所示:

通用框架图

其中, FCN 表示各种全卷积网络,CRF 为条件随机场,MRF 为马尔科夫随机场

前端使用 FCN 进行特征粗提取,后端使用 CRF/MRF 优化前端的输出,最后得到分割图。在前一篇关于语义分割的总结中,我已经把前端的不同架构大致总结了,这篇主要介绍后端优化方法。

全连接条件随机场 (DenseCRF)

Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials

对于每个像素 $i$ 具有类别标签 $x_i$ 还有对应的观测值 $y_i$,这样每个像素点作为节点,像素与像素间的关系作为边,即构成了一个条件随机场。而且我们通过观测变量 $y_i$ 来推测像素 $i$ 对应的类别标签 $x_i$。条件随机场如下:

CRF

条件随机场符合吉布斯分布:(此处的 x 即上面说的观测值)

其中的 $E(\mathbf{x|I})$ 是能量函数,为了简便,以下省略全局观测 $\mathbf{I}$:

其中的一元势函数 $\sum_i{\Psi_u(x_i)}$ 即来自于前端 FCN 的输出。而二元势函数如下:

二元势函数就是描述像素点与像素点之间的关系,鼓励相似像素分配相同的标签,而相差较大的像素分配不同标签,而这个“距离”的定义与颜色值和实际相对距离有关。所以这样 CRF 能够使图片尽量在边界处分割。

而全连接条件随机场的不同就在于,二元势函数描述的是每一个像素与其他所有像素的关系,所以叫“全连接”。

CRFasRNN

Conditional Random Fields as Recurrent Neural Networks

最开始使用 DenseCRF 是直接加在 FCN 的输出后面,可想这样是比较粗糙的。而且在深度学习中,我们都追求 end-to-end 的系统,所以 CRFasRNN 这篇文章将 DenseCRF 真正结合进了 FCN 中。

这篇文章也使用了平均场近似的方法,因为分解的每一步都是一些相乘相加的计算,和普通的加减(具体公式还是看论文吧),所以可以方便的把每一步描述成一层类似卷积的计算。这样即可结合进神经网络中,并且前后向传播也不存在问题。

当然,这里作者还将它进行了迭代,不同次数的迭代得到的结果优化程度也不同(一般取 10 以内的迭代次数),所以文章才说是 as RNN。优化结果如下:

CRFasRNN

马尔科夫随机场 (MRF)

Semantic Image Segmentation via Deep Parsing Network

在 Deep Parsing Network 中使用的是 MRF,它的公式具体的定义和 CRF 类似,只不过作者对二元势函数进行了修改:

其中,作者加入的 $\lambda_k$ 为 label context,因为 $u_k$ 只是定义了两个像素同时出现的频率,而 $\lambda_k$ 可以对一些情况进行惩罚,比如,人可能在桌子旁边,但是在桌子下面的可能性就更小一些。所以这个量可以学习不同情况出现的概率。而原来的距离 $d(i,j)$ 只定义了两个像素间的关系,作者在这儿加入了个 triple penalty,即还引入了 $j$ 附近的 $z$,这样描述三方关系便于得到更充足的局部上下文。具体结构如下:

MRF

这个结构的优点在于:

  • 将平均场构造成了 CNN
  • 联合训练并且可以 one-pass inference,而不用迭代

高斯条件随机场(G-CRF)

Fast, Exact and Multi-Scale Inference for Semantic Image Segmentation with Deep Gaussian CRFs

这个结构使用 CNN 分别来学习一元势函数和二元势函数。这样的结构是我们更喜欢的:
G-CRF
而此中的能量函数又不同于之前:

而当 $(\mathbf{A+\lambda I)}$ 是对称正定时,求 $E(\mathbf{x})$ 的最小值等于求解:

而 G-CRF 的优点在于:

  • 二次能量有明确全局
  • 解线性简便很多

感悟

  • 深度学习+概率图模型(PGM)是一种趋势。其实 DL 说白了就是进行特征提取,而 PGM 能够从数学理论很好的解释事物本质间的联系。
  • 概率图模型的网络化。因为 PGM 通常不太方便加入 DL 的模型中,将 PGM 网络化后能够使 PGM 参数自学习,同时构成 end-to-end 的系统。

参考文章:
【总结】图像语义分割之FCN和CRF