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. P2587 [ZJOI2008]泡泡堂 神仙贪心

    思路:贪心 提交:1次(看了题解$QwQ$) 题解: 若我方最弱可以干掉对方最弱,则干: 否则若我方最强可以干掉对方最强,则干: 否则若我方最弱与对方最强平手,则平: 其实貌似一二条是可以互换的,主要 ...

  2. v-for为什么要加key,能用index作为key么

    前言 在vue中使用v-for时,一直有几个疑问: v-for为什么要加key 为什么有时候用index作为key会出错 带着这个疑问,结合各种博客和源码,终于有了点眉目. virtual dom 要 ...

  3. sublime 3 text 中运行Java

    1.首先确保JDK安装和配置完成 2.在JDK的bin目录下添加runJava.bat文件 @echo offcd %~dp1echo Compiling %~nx1...if exist %~n1. ...

  4. jar包中的依赖jar版本冲突

    背景,项目中之前引入了一个 图片上传的jar <groupId>commons-fileupload</groupId> <artifactId>commons-f ...

  5. Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect)

    Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect v2) 一.在.bag数据集上跑RGBDSLAMv2 RGBDSLAMv2指的是Felix Endres大神在 ...

  6. 20175313 张黎仙《Java程序设计》第十一周学习总结

    目录 一.教材学习内容总结 二.教材学习中的问题和解决过程 三.代码托管 四.心得体会 五.学习进度条 六.参考资料 一.教材学习内容总结 第十三章内容 主要内容 URL类 InetAdress类 套 ...

  7. electron之环境安装、启动程序

    1.安装node.js 2.安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org 3.安装全局electron n ...

  8. web前端——实例中学习css,javascript

    最近闲暇时候在研究前端的样式和js,以前都是从w3school上看看那些选择器和DOM操作方法很少去实际做demo来研究,做的过程当中才真切感觉到纸上得来终觉浅,看得懂跟能做出东西完全两码事,尤其在定 ...

  9. setInterval、clearInterval的回调函数,实现函数间调用的先后顺序

    定义: var waitUnitil=function (untillCallBack, nextStepCallBack, count) { if (count == null) { count = ...

  10. Java实现ModbusTCP通信

    一个项目,需要用Java实现使用ModbusTCP和硬件设备通信 资料 代码下载 本文的代码和仿真软件:蓝奏云下载 官网资料 Modbus官网 Modbus协议 Modbus技术资源 MODBUS T ...