Conditional Random Fields as Recurrent Neural Networks

ICCV2015    cite237

1摘要:

像素级标注的重要性(语义分割 图像理解)-- 现在开始利用DL----但DL无法描述visual objects----本文引入新型的CNN,将CNN与CRF概率图模型结合---用高斯pairwise势函数定义的CRF作为RNN,记为CRF-RNN----将其作为CNN的一部分,使得深度模型同时具有CNN和CRF的特性,同时本文算法完美结合了CRF和CNN,弄成了一个端对端的系统,可以由反向传播训练,避免了物体描述的问题。----在语义分割问题上测试,在Pascal VOC2012上取得最高结果。

2 Introduction

像素标注应用场景:底层视觉中的语义分割、图片深度估计,之前是特征表示来做,会考虑其他因子比如边、视觉连续性、空间连续性等。

找出合适的特征表示很重要,很多人做:随机森林等。最近CNN成功应用在high-level的视觉问题上,如识别、检测等----->研究CNN在像素标注上的应用。都在研究用深度模型学出一个更深层更有效的特征,替代之前的手工特征。FCN,DeepLab等证实有效。

CNN从highlevel视觉问题转化为像素标注有挑战:1)CNN的卷积层,滤波器有大的感受野,当产生像素级的标签时会使结果非常粗。而maxpooling更加剧了这一现状。2)CNN不考虑平滑约束,相似像素并不被鼓励相同的标签,失去了空间和外观的连续性。这将导致对物体的理解不够,且会产生假的区域。

概率图模型走的与DL不一样的路,用来对像素进行标注。MRF和其变体CRF在视觉领域取得成功。CRF在语义标注问题上的关键idea是将标签分配问题转化为概率推理问题,基于一些假设,比如相似像素标签一致等。CRF推理可以精细化弱的、粗糙的像素标签预测问题,从而得到sharp的边界以及精细的分割。所以,可以用来克服CNN的不足。

一种方式使把CRF接在CNN后边,改善CNN的标签输出。但这并不能充分利用CRF,因为没有整合进DL模型中,深度模型做的时候并不知道CRF这回事(这理由,,?)。

本文:端对端的模型解决像素级标注,结合CNN和CRF。提出mean-field 近似推理,以带有高斯pairwise的势函数的密集CRF作为RNN,在前向过程中对CNN粗糙的输出精细化,同时在训练时将误差返回给CNN。结合了CNN与RNN的模型可以正常的利用反向传播来端对端的训练。

经过适当的训练,我们的模型会好于那种将CRF独立的作为CNN的后处理部分的模型。在Pascal VOC上取得了74.7%的正确率。

3 相关工作

将深度学习与CNN应用到low-level的视觉任务中,尤其是图像语义分割。---方法分为两类:

1)将其作为独立的特征提取的方法,分割方法去寻找图中的边。---找出超像素块,继而找出图中的结构模式,但一开始的proposal要是错了,对后边影响很大。又提出了RNN模型用于对空间依赖性建模。图模型与CNN结合可以达到更好的效果。

2)直接学习出一个将图像映射到标签的非线性模型。17中,将最后的全连接层替换为卷积层,以保留空间信息。37中,FCN,顶层包含了物体识别的特征,底层包含了图像基本结构特征,如边。这些层之间的连接联系了这些特征。10,41利用CRF调整CNN得到的分割结果。还有通过物体识别来分割的等。我们的模型同时学习CNN与CRF两者的参数,在统一的网络中。

用神经网络来预测结构化的输出:14将深度神经网络与马尔科夫网结合,用于序列数据的标注。26说明CNN可以在图像恢复中与MRF或CRF表现同样好。手写数字识别也对CNN结合的挺好,在NLP,60说明基于RNN的词语标注可以通过整合CRF来提高效率,6中作者便结合了CNN与HMM,最近,45用了CRF的变体。25中,CNN和CRF用于语句识别,57同时训练CNN与MRF用于人脸姿势估计,11用相同的方法做图像分类。21用一种MRF作为神经网络的一层。我们用另一种图模型(CRF)作为神经网络的层。

自动学习图模型的参数,同时训练分类器与图模型。4在其Active随机场方法中同时训练MRF或CRF与一种推理算法。15提倡在图模型中使用反向传播算法,当一种近似推断方式如mean-field及信念传播等被使用的时候。28使用了这一想法,二值化的密集CRF被用于人脸姿势估计。47,54与之相似,说明了信念传播可以优化模型参数。。。。

我们方法说明了将密集CRF作为RNN是可行的,这样可以建立一个整合了深度学习与图模型的端对端的系统用于图像语义分割。

4 CRF

CRF用于像素级别的标签预测,将像素标签视为随机变量,构建一个以全局为条件的马尔科夫随机场,这个全局条件一般取为对应的图片。

本文中X相关的是对于像素的标注,是随机变量,是预先定义好的共L个。图G=(V,E),V便是N个像素的标注X,图片,也即全局条件,记为I。I和X的关系可以由CRF来建模,定义为一个Gibbs分布:P(X=x | I)=。E(x)是x取某个值的能量,Z(I)是配分函数。

在全连接的pairwise的CRF(29工作)中,,其中,一元的前半部分衡量像素标注为x的cost;二元的后半部分衡量两个像素同时取这两个标注的cost。本文中,一元的损失由CNN计算而来,可以说是不考虑平滑与连续性的预测值。后半部分二元的则给出了依赖于具体图像的平滑项,使得相似的像素更有可能标注一样。这个二元的势函数被定义为混合高斯(赋予不同的权重):.选用M个高斯核作用于特征向量f上,f一般由位置或RGB直接得来。μ为标签兼容性函数,定义各标签对之间的兼容性(未给具体形式?应该各个对对应的值早就知道作为先验吗)。

最小化CRF的势函数E(x)可以得出标注结果,但这个过程很复杂,所以有了mean-field近似方法,近似最大后验的边缘分布进行推理。他用简单化的Q(X)近似CRF的P(X),Q可被写为各个独立的边缘分布的积。

5 Mean-field 迭代作为一堆CNN层

本文的主要贡献就是说明了Mean-field CRF推理可以被公式化为RNN。为此,我们先由算法1给出Mean-field算法的单步运行情况,并且将他们描述维CNN的层。

(先初始化各个标签的边缘分布,然后将高斯核应用在各个i和j像素上,得出二元的势函数,然后,将M个势函数加权求和,然后考虑标签对的相容性,算出这个标签最终的二元情况下的边缘分布,接着,加上一元的势函数的影响(为何变为减去?),最后用配分函数归一化)。这样一层一个任务,便将CRF变为RNN。

本文的贡献在与我们观察到密集CRF中基于滤波的mean-field推理方法依赖于在每一个迭代中将高斯空间及双边滤波器应用于mean-field近似中。CNN中的滤波器在训练后就固定了,而我们使用的是保留边的高斯滤波器,其参数依赖于图像原始的空间及外观信息。

由于将推理过程改成了CNN的层,因此需要能够计算每一层相对于其输入的误差,从而可以在反向传播时传给其前一层。于是,我们模型中CRF的参数如高斯核的参数、标签相容性函数(原来是网络学的)等可以在训练网络时自行决定。

介绍算法1:U表示负的一元能量函数(所以算法中会出现负号),,在传统的CRF中,这些U一般由独立的分类器得到。

5.1 初始化

(对各个步骤的解释)

6 端对端的可训练的网络

为了介绍我们的端对端的用于语义分割的系统,我们先解释重复的mean-field迭代过程是如何被重写为RNN的。

6.1 CRF as RNN

在之前已经介绍了算法的一次迭代是可以被表示为多个CNN层的,图1。我们用f_\theta 来表示一次迭代所带来的转化:有图片I,像素级别的一元势函数U和边缘分布的估计Q,则mean-field一次mean-field迭代之后的下一步的边缘分布的估计便是f_\theta(U,Q,I)。向量\theta为参数w(M个)和\mu。

多层mean-field迭代可以通过重复上述过程实现,每一次迭代的Q的估计来自于之前的一次迭代过程的结果,一元的势函数还是保留原先的形式。这等价于将mean-field推理视为图2所示的RNN。网络的表现由下边的式子表示,T是迭代次数:

(门函数是固定的,H1开始是由softmax作用于U上得来,后边取H2上一时刻的值,,两个G均无作为。)

我们称此为CRF-RNN。模型的参数可以在RNN中由标准的反向传播学得。29说明了密集CRF 的mean-field算法可以在少于10次的迭代内收敛。另外,实际使用时5次以上再增加就不会怎么变化了。因此,他不受RNN固有的梯度消失和梯度爆炸的影响。这也允许我们使用一些较简单的(plain)RNN模型而不是复杂如LSTM的算法。

6.2 完成图片标注

我们的模型包含一个全卷积网络,不考虑图片结构直接预测像素标注,然后跟着一个CRF-RNN模型,以基于CRF的概率图模型来考虑结构的建模。所以这个模型结合了CNN和CRF的特性,可通过反向传播BP和随机梯度下降SGD等端对端的训练。训练时,整个图像被用作mini-batch,网络对每个像素输出的值关于真实分割的误差可以由一个适合的loss函数如softmax计算出来。我们用FCN-8s结构作为模型的第一部分,为CRF提供一元的势函数。基于改变后的VGG-16,可以用来进行像素级别的预测。

在前向传播时,一旦完成了CNN部分,转到CRF-RNN中计算,数据会进行T次迭代才会离开RNN的循环。提供U的CNN以及CRF-RNN后边的部分如loss层在此期间均不需要计算,因为调整,精细化过程只发生在RNN循环内部。一旦输出Y离开了循环,softmax损失层便执行计算并作为网络的终止。

在反向传播中,一旦误差传到了CRF-RNN的输出Y上,在传到输入U之前也是会进行T次迭代。在每次RNN内部的迭代中,误差均会在各个部分之间计算,如算法1。

7 实现细节

8 实验

9 总结

论文翻译:Conditional Random Fields as Recurrent Neural Networks的更多相关文章

  1. AlexNet论文翻译-ImageNet Classification with Deep Convolutional Neural Networks

    ImageNet Classification with Deep Convolutional Neural Networks 深度卷积神经网络的ImageNet分类 Alex Krizhevsky ...

  2. 论文翻译:2018_Source localization using deep neural networks in a shallow water environment

    论文地址:https://asa.scitation.org/doi/abs/10.1121/1.5036725 深度神经网络在浅水环境中的源定位 摘要: 深度神经网络(DNNs)在表征复杂的非线性关 ...

  3. 论文翻译:2020_Lightweight Online Noise Reduction on Embedded Devices using Hierarchical Recurrent Neural Networks

    论文地址:基于分层递归神经网络的嵌入式设备轻量化在线降噪 引用格式:Schröter H, Rosenkranz T, Zobel P, et al. Lightweight Online Noise ...

  4. (转)Image Segmentation with Tensorflow using CNNs and Conditional Random Fields

    Daniil's blog Machine Learning and Computer Vision artisan. About/ Blog/ Image Segmentation with Ten ...

  5. Conditional Random Fields (CRF) 初理解

    1,Conditional Random Fields

  6. Pixel Recurrent Neural Networks翻译

    Pixel Recurrent Neural Networks 目前主要在用的文档存放: https://www.yuque.com/lart/papers/prnn github存档: https: ...

  7. [C5W1] Sequence Models - Recurrent Neural Networks

    第一周 循环序列模型(Recurrent Neural Networks) 为什么选择序列模型?(Why Sequence Models?) 在本课程中你将学会序列模型,它是深度学习中最令人激动的内容 ...

  8. 第十四章——循环神经网络(Recurrent Neural Networks)(第一部分)

    由于本章过长,分为两个部分,这是第一部分. 这几年提到RNN,一般指Recurrent Neural Networks,至于翻译成循环神经网络还是递归神经网络都可以.wiki上面把Recurrent ...

  9. 第十四章——循环神经网络(Recurrent Neural Networks)(第二部分)

    本章共两部分,这是第二部分: 第十四章--循环神经网络(Recurrent Neural Networks)(第一部分) 第十四章--循环神经网络(Recurrent Neural Networks) ...

随机推荐

  1. 让JPA的Query查询接口返回Map对象

    在JPA 2.0 中我们可以使用entityManager.createNativeQuery()来执行原生的SQL语句. 但当我们查询结果没有对应实体类时,query.getResultList() ...

  2. 014_编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文件

    #!/bin/bash#执行脚本时,需要给脚本添加位置参数 带参for i in "ls *.$1"do     #去尾     mv $i ${i%.*}.$2done

  3. bzoj3508: 开灯

    题目链接 题解 设\(b[i]=a[i]\ xor\ a[i+1]\) 我们可以发现,修改只会改变\(b[l-1]\)和\(b[r]\) 然后发现\(b[i]=1\)的点最多\(2*k\)个 状压\( ...

  4. svn 外部引用别的项目文件

    建立了一个文件目录E:\My\myproject 想在该目录下有一个文件夹引用别的工程的文件. 1.在E:\My\myproject 空白处右键属性. 2.点击Properties,弹出 3.点击ne ...

  5. openstack 本地导入镜像.

    网络很慢,直接本地传. openstack image create "Fedora30" --file Fedora-Cloud-Base-30-1.2.x86_64.qcow2 ...

  6. Print工具类

    这篇文章已经废弃. 实际开发中,打印信息只会用日志框架(Log4j2). 受到Thinking in Java中静态引入(import static)的启发, Deolin也打算写一个方便自己的工具类 ...

  7. WPF中,Grid与Table的区别(英文)-转载

    原文地址:http://blog.csdn.net/johnsuna/article/details/1742799 How is Grid Different from Table?Table an ...

  8. tar遇到error:"Error exit delayed from previous errors"的几种可能原因

    1.使用root用户解压压缩包 2.赋予权限,sudo chmod 777 xxx.tar.gz 参考: https://blog.csdn.net/iamwrr/article/details/49 ...

  9. 二十五、grub (Boot Loader) 以及修复grub

    双系统安装(先Windows后Linux,以免windows NTloader会覆盖Linux loader) GRUB Grand Uniform Bootloader CentOS5,6 grub ...

  10. 程序猿必备的Git教程

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 版权声明:本文为博主原创文章,未经 ...