crfasrcnn

原文 https://blog.csdn.net/taigw/article/details/51794283

CRF(Conditional Random Field)是图像分割中很常用的后处理算法。在《全卷积网络(FCN)与图像分割 》这篇博文中提到,FCN可以得到较好的分割结果,Chen, Liang-Chieh, et al. 2014在其基础上使用fully connected CRF得到了更好的效果,但是FCN的步骤和CRF的步骤是分开的。Zheng et al 2015将fully connected CRF表示成RNN的结构,与FCN连接在一起,可以同时训练FCN和CRF,使分割的准确率有了更多提高。

CRF as RNN的原理

CRF的能量函数包括一个数据项和平滑项。数据项是基于每个像素属于各个类别的概率,平滑项是基于像素之间的灰度值差异和空间距离。传统的CRF的平滑项只考虑相邻像素间的关联,而Fully connected CRF考虑了图像中任意两个像素之间的关联性。

E(x)=iψu(xi)+ijψp(xi,xj)

公式(1)

其中ψu(xi)

是数据项, ψp(xi,xj)

是能量项, 即像素对之间的能量,其定义为若干个高斯函数的和:

ψp(xi,xj)=μ(xi,xj)Km=1ω(m)k(m)(fi,fj)

公式(2)

高斯函数的定义为:

k(fi,fj)=ω(1)exp(|pipj|22θ2α|IiIj|22θ2β)+ω(2)exp(|pipj|22θ2γ)

公式(3)

k(fi,fj)

由两部分组成,第一部分是Bilateral Filter, 其想法是空间上离得近并且灰度值接近的像素很有可能是属于同一个物体。第二部分是Spatial Kernel,起到空间平滑作用,可以去除掉分割结果中一些孤立的小区域。

条件随机场的概率函数为P(X=x|I)=1Zexp(E(x|I))

。对公式(1)中的E(x)最小化对应着对后验概率P(X=x | I)的最大化,从而得到最优分割结果。

由于直接计算概率函数P(X)比较麻烦,可以通过一个比较方便计算的概率函数Q(X)来近似得到P(X)。 Q(X)=iQi(Xi)

。为了让Q(X)最大限度接近P(X),可通过对它们的KL-divergence最小化得到。这个最小化过程的迭代步骤如下:
这里写图片描述 公式(4)

将该步骤中的各个操作拆分,可以得到如下的算法:
这里写图片描述

该算法的输入为: 初始势能Ui(l)

,对应公式(1)的第一项; m个滤波器 k(m)(fi,fj); 各滤波器的权重 ω(m), 不同类别之间的兼容性矩阵 μ(l,l)

。输出为Q_i即更新后的概率分布。

该算法的每一次迭代分为5个步骤:
1, 信息传递。即使用m个滤波器分别对每一个类别l的概率图Qi(l)

进行滤波的过程。
2, 滤波结果加权相加。对每一个类别l的m个滤波结果根据权重 ω(m)相加。
3,类别兼容性转换。对每一个类别l的概率图根据不同类别之间的兼容性矩阵 μ(l,l)

进行更新。
4, 加上数据项(一元项 Unary Potential)。
5, 归一化。对各像素所属不同类别l的概率归一化,这实际上是一个Softmax的过程。

Caffe实现

GitHub上可以找到CRF as RNN的源代码。主要有两个类:MultiStageMeanfieldLayer和MeanfieldIteration。其中MultiStageMeanfieldLayer将CRF的所有迭代步骤组装在一起形成一个Caffe层,迭代的每一步作为一个子层在MeanfieldIteration中实现。目前是基于cpu代码的实现,还没有在cuda上实现。

该实现中考虑了Bilateral filter 和Spatial filter两种滤波器,分别对应公式(3)中的两项。由于Fully connected CRF中的滤波操作要考虑整个图像的信息, 滤波器核的大小为整个图像的尺寸,因此滤波过程比较耗时,为了提高效率,Zheng et al使用了Andrew Adams et al所提出的基于Perutohedral Lttice的滤波实现: 实现Bilateral filter 的bilateral_lattices_和实现Spatial filter的spatial_lattice。


增加

三、全连接条件随机场—概述

1、全连接条件随机场与稀疏条件随机场的区别

学习本部分,默认你已经学过条件随机场的图像处理相关算法,这边只做简单的概述。在以前我们所接触到的条件随机场基本上都是稀疏条件随机场,你所看到的教程也大部分指的是稀疏条件随机场。

这里我们先回顾一下条件随机场图像分割能量函数的构造:定义隐变量Xi为像素点i的分类标签,它的取值范围是就是我们要分类的语义标签L={l1,l2,l3……}Yi为每个随机变量Xi的观测值,也就是每个像素点的颜色值。条件随机场的图像语义分割的目标就是:通过观测变量Yi,推理出潜变量Xi的对应类别标签。

 

对于一张图像来说,我们把它看成图模型G=(V,E),图模型的每个顶点对应一个像素点,即V={X1X2,……Xn}。对于边来说,

(1)如果是稀疏条件随机场,那么我们构造图模型的边集合E就是:每对相邻的像素点间可以构造一条边。当然除了4邻域构造边之外,你也可以用8邻域模型。

(2)全连接条件随机场与稀疏条件随机场的最大差别在于:每个像素点都与所有的像素点相连接构成连接边。这就恐怖了,如果一张图像是100*100,那么就相当于有10000个像素点,因此如果采用全连接条件随机场的话,那么就会构造出约10000*10000条边。如果图像大小再大一些,那么就会变得非常恐怖,普通条件随机场推理算法,根本行不通。好在文献Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials》给出了快速推理算法。接着我们就简单讲解具体的求解算法。

2条件随机场的目标函数是


E表示边集合。

(1)能量方程的第一项Ψu(xi),称之为一元势函数,用于衡量当像素点i的颜色值为yi时,该像素点属于类别标签xi的概率。这个从直观上可以这么理解:假如一个像素点的颜色值yi是绿色,那么它属于草地的概率应该比较大;假如一个像素点颜色值是蓝色,那么它属于天空的概率应该比较大,这就是这个能量项的作用。在深度还未杀入这个领域之前,以前的算法第一项一元函数势能一般是通过SVM等分类器训练得到的,或者通过构建每个类别的高斯混合模型(构建每个类别的高斯混合模型,这样当一个像素点的值为yi的时候,我们就可以计算出此像素点属于每个类别的概率值,类似图像分割Grab cut算法)。

不过现在有了CNN了,这一个能量项我们可以直接通过CNN计算出来,因为CNN训练完毕后,可以输出每个像素点,属于每个类别的概率值。DeepLab这篇文献的算法就是用CNN输出,作为CRF的一元势能量。

(2)能量方程的第二项成对势函数Ψp(xi,xj)。用于衡量两事件同时发生的概率p(xi,xj),或者说的简单一点就是:我们希望两个相邻的像素点,如果颜色值yiyj非常接近,那么这两个像素点xixj属于同一个类别的概率应该比较大才对;反之如果颜色差异比较大,那么我们分割的结果从这两个像素点裂开的概率应该比较大才对。这一个能量项正是为了让我们的分割结果,尽量的从图像边缘的地方裂开,也就是为了弥补前面所说的FCN分割的不足之处。

这个我们可以用如下公式计算:


其中Kg是一个高斯核,用于度量像素点ij的特征向量相似度的一个高斯权重项。特征向量fi我们可以用(x,y,R,G,B)表示,也就是以像素点的像素值和坐标位置作为特征向量。然后u(xi,xj)就表示两个标签之间的一个兼容性度量。通过最小化上面的CRF能量函数,我们就可以实现CRF的隐变量X的推理。接着我们就来说说怎么稠密条件随机场怎么推理,求解能量函数。

3、求解方法

成对势函数Ψp(xi,xj),也就是相当于图模型的每一条边的能力值,上面我们说到对于一个稠密条件随机场来说,边数数目是非常多的:

四、CRF as RNN

OK,言归正传,我们接着就来讲讲怎么把CRF的推理过程看成是、卷积层、SoftMax层等神经网络层的组合,同时又和RNN有什么样的渊源。下面公式中的下标i表示第i张特征图。

4.1  

Zi是归一化因子。其实这个计算公式就是softmax函数,所以这一步的计算我们可以把它看成是神经网络的softmax层,所以我们用神经网络softmax层替代这个步骤。

4.2

 Q(l)是一张概率图片,对应着原始图像每个像素点属于类别l的概率,这个就像引导滤波一样。如果我们语义分割有21个类别,那么CNN softmax层输出就是21张这样的概率图,每一张对应一个分类类别的概率图。

OK,这一步操作又是什么意思呢?K(fi,fj)是一个高斯核权重,或者说白了上面的公式就是要对图像Q(l)进行高斯模糊,这就相当于神经网络的卷积运算一样。

具体K(fi,fj)一般包含:位置、颜色度量等作为特征。比如我们就是用了这两种特征(见文献《Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials》)

颜色特征:

位置特征:

 

这样我们可以每一张概率图Q(l),我们经过不同的特征滤波器之后,都可以得到两张滤波结果。这两张之间用加权组合在一起:

 

4.3

这一步可以看成是采用1*1的卷积层,对多个特征图进行卷积层运算。经过运算完后,每两张特征图又输出一张新的概率图


版权声明:本文为博主原创文章,欢迎转载,转载请注明原文地址、作者信息。 https://blog.csdn.net/hjimce/article/details/50888915

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值