基于随机场的图像语义分割

图像的语义分割无非就是像素级的操作,在像素上去学习监督/非监督的模型,然后去预测每一个像素的类别从而实现图像的语义分割。事实上,图像的高层语义信息是很难获取的,但是这个任务的目标是很明确的,就是给每个像素打上label。目前,深度学习技术在计算机视觉领域取得了很大成功;而图像的语义分割也借助深度学习技术实现了准确率的大幅提升。比如全卷积神经网络(FCN,Fully Convolutional Networks),网络结构如下图:
这里写图片描述
FCN在图像的语义分割领域算得上是一个开创性的工作(end to end)。由于是像素级的分割,它丢弃了全连接层,取而代之的是反卷积操作;得到跟输入图像同样size的输出;与ground truth构造损失函数,反向传播训练各层的参数。从网络结构图可以看出,不断的卷积池化操作等,使得后续像素点的感受野不断增大;最后得到一个较粗的分割图也不难理解。当然,后续的语义分割模型都是在FCN的基础上进行改进;比如,改善网络层级结构(SegNet, DeconvNet);改进卷积核(DeepLab)等等;其中最重要的一个分支便是在得到的粗分割图的基础上融入马尔科夫随机场进一步精细化。该文将重点探讨怎么结合深度卷积网络和全连接条件随机场去做图像的语义分割。
条件随机场(Conditinal random field, CRF)是给定一组随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔科夫随机场。即输出变量之间存在成对马尔科夫性,局部马尔可夫性和全局马尔可夫性。说白了,就是没有边连接的节点满足条件独立性。而在全连接条件随机场中,假设其中一个节点与其余所有节点都有边的连接。这里,我们考虑全连接条件随机场。在图像分割领域,图像数据 I 为可观测变量集,而待推断的隐变量集 X = { x i } i = 1 N ,也即要预测的每一个像素的label,构成马尔科夫随机场。根据Hammersley-Clifford定理,其联合概率形式如下:

P ( X | I ) = 1 Z e x p { E ( X ) }

E ( X ) 称为势函数,一般在2D图像空间中包含两项:一元势函数(unary potential)和成对势函数(Pairwise potential),定义如下:

E ( X ) = i ψ u ( x i ) + i < j ψ p ( x i , x j )

这里为了方便,省略了观测数据 I ;这就是全连接条件随机场的定义。在一元势函数中,它定义了标签 x i 在给定数据 I i 下的概率分布。一般而言,这一项我们可以用传统的比如SVM,SoftMax,随机森林等去监督学习;或者用混合高斯模型去非监督学习。随着深度卷积神经网络在计算机视觉领域的成功应用,最近的文献一般都用CNN网络结构,并接上SoftMax输出概率分布。比如,如果我们只考虑随机场中的第一项,并且使用卷积神经网络,那么这个工作就类似于前面讲述的FCN,SegNet等。但是这些网络结构得到的结果图比较粗糙,所以我们考虑第二项-成对势函数。成对势函数的定义形式多种多样,这里我们采用Nips11上的Efficient inference in fully connected crfs with gaussian edge potentials中的定义,

ψ p ( x i , x j ) = u ( x i , x j ) m = 1 M ω m K G m ( f i , f j )

其中 u ( x i , x j ) 为类别标签的兼容性; K G m 为第 m 个滤波卷积核, ω m 为其权重系数; M 为滤波卷积核的总个数,比如可以采用高斯核,双边滤波核等等; f 为特征向量,比如颜色值和空间位置。该项实质刻画的是图像数据的平滑性,鼓励具有相同属性的数据具有相同的标签。
最小化该势函数 E ( X ) ,便能得到最有可能的标签集合。然而这类问题很难精确的优化求解,可采用的是近似求解技术,比如采样技术变分推断。这里将详细介绍变分推断在这类问题的求解。变分推断的实质就是使用已知简单分布来逼近需要推断的复杂分布,并通过限制近似分布的类型,从而得到一种局部最优,但具有确定解的近似后验分布。因此,我们使用隐变量集的简单且独立的分布 Q ( X ) = i Q ( x i ) 来近似 P ( X ) 。那么根据变分推断-平均场的结论,子变量的分布 Q ( x i ) 的对数形式具有确定解,且等于联合似然函数lnp(X)在变量 x i 之外的隐变量集分布上的期望:

ln Q ( x i ) = E j i ln P ( X | I ) + c o n s t

进一步整理可得

Q ( x i ) = 1 Z e x p { E j i ln P ( X | I ) }

Z 为归一化因子,即L1归一化,使得概率分布和值为1。下面要做的便是将 P ( X | I ) 的表达式代入上式,得到 Q ( x i ) 的表达式。注意,在求期望时,我们只需要求关于 x i 的像的期望,因为其它不包含 x i 的项在对应的概率分布下求出的期望是一个常数。而这个常数,在最后归一化时可以省略。因此,我们只需要把上式中的关于 x i 的项提取出来即可,最后计算关于其它变量的期望。期望的求解形式如下:

E j i P ( X | I ) = ψ u ( x i ) l L u ( l , l ) m ω m { j i K G m ( f i , f j ) Q ( x j = l ) }

然后再对求得的期望 E j i ln P ( X | I ) 取指数 e x p { E j i } ,并L1归一化得到概率分布 Q ( x i ) 。完整的算法流程如下图:
这里写图片描述
该图为论文中的算法流程,将上述的求解形式进行拆分,包含了Message Passing,Weighting Filter Outputs,Compatibility Transform,Adding Unary Potentials 和 Normalizing。由于 Q i 的分布依赖于其他变量子集的分布,因此平均场是一个不断迭代的方法以保证各子集分布收敛到局部最优解(下界相对各子集分布是凸函数)。
那么随机场怎么与卷积神经网络进行结合呢?我们能想到的最常规的思路即是利用CNN得到一个粗分割图,即Unary Potentials这一项;然后再根据上述的算法流程不断迭代使得分割图更加精细化。这一思路便是DeepLab等网络结构的思路。但是不得不提到的是,在深度学习模型中,设计一种端到端的模型往往能得到更好的效果。下面就介绍一篇paper,Conditional Random Fields as Recurrent Neural Networks,它将上述的算法流程完全转化为卷积操作,且将迭代的过程当作RNN的实现。其带来的优点不言而喻,转换的卷积操作借助目前的GPU,大大的提升了CRF中推断的效率;并且同样减小了模型的训练难度。 (我们都知道CRF的训练以及推断都比较耗时,而这里利用目前成熟的深度学习方法-前向推断后向训练,使得CRF更容易操作。)下面根据算法流程一步一步解释文中做出的转换:

  1. 初始化阶段:这一步直接利用FCN,输出概率图。值得注意的是,我们推断的隐变量是离散的随机变量,取值为类别标签 { 1 , 2 , , L } 。因此FCN的输出便是一个 L 通道的矩阵,其中每一个通道代表隐变量集 X 属于该类别的概率。
  2. Message Passing:这一步存在的运算为相乘再累加,这是一个典型的卷积运算。注意是除了当前点 x i 外的所有节点与之做运算,那么这个卷积核的大小就是整个图像的大小。卷积核的参数就是 { k m ( f i , f j ) } j i ,个数为M。
  3. Weighting Filter Outputs:这一步是上一步不同的卷积核输出的带权累加。即可以理解为对某一个通道的输入做了不同卷积核以后,再使用一个 1 × 1 的卷积核做卷积。卷积核的参数就是 { ω m } m = 1 M ,个数为1。
  4. Compatibility Transform:这样每一个通道的输入经过2,3步骤都会有一个输出;也就是这一步的输入是L通道的概率分布图。这一步可理解为对每一个通道再用一个 1 × 1 的卷积核做卷积。这里尤其注意, u ( 1 , 2 ) u ( 2 , 1 ) 是不同的;也就是说,这一步我们的输出同样是L通道的输出。比如,针对1通道的输出,我们使用卷积 { u ( 1 , l ) } l L 得到其对应的输出。针对2通道的输出,我们使用卷积 { u ( 2 , l ) } l L 得到其对应的输出。。。一直输出L通道的概率分布。卷积核参数为 { u ( l , l ) } l L ,卷积核个数为L。
  5. Adding Unary Potentials:在对应通道上加入FCN输出的概率分布图。
  6. Normalizing:归一化,可理解为SoftMax层。

可以看出,上述的CRF推断就转换为了常规的卷积等操作,那么训练其中的参数也可以用CNN中的后向传播算法;还有一点,CRF的推断是一个不断迭代的过程,因此作者把它当作了RNN的实现,如下图:
这里写图片描述
这里写图片描述
目前最近新出了一篇论文Convolutional CRFs for Semantic Segmentation,提出将条件独立性这一强假设添加到现有的全连接条件随机场(FullCRF)框架中,即如果两个像素 i,j 的曼哈顿距离 d 可以保持 d ( i , j ) > k 的关系,那么我们认为他们的标签分布是条件独立的。其中我们把超参数 k 称为滤波器尺寸。局部性假设是一个非常有力的假设,它暗示所有距离超过 k 的像素,成对相关性为零。这极大地降低了潜在成对性的复杂性。这使得我们可以将大部分推断重新表达为可以在 GPU 上高效实现的卷积操作,我们称之为卷积条件随机场(ConvCRF)。那么有了这个假设,实质上在上述算法流程中的Message Passing中滤波器卷积核的尺寸就不是整个图像的大小,而是以k为大小的局部窗口。这就变成成了卷积神经网络中更常规的局部卷积操作。其中论文得出了一个很重要的结论,反向传播可用于训练 ConvCRF 的所有参数,ConvCRF 中的推断可以在不到 10ms 的时间内完成。与 FullCRF 相比,可以获得一到两个数量级的速度提升。

猜你喜欢

转载自blog.csdn.net/step_forward_ml/article/details/80519698