论文翻译:Conditional Random Fields as Recurrent Neural Networks
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的更多相关文章
- AlexNet论文翻译-ImageNet Classification with Deep Convolutional Neural Networks
ImageNet Classification with Deep Convolutional Neural Networks 深度卷积神经网络的ImageNet分类 Alex Krizhevsky ...
- 论文翻译:2018_Source localization using deep neural networks in a shallow water environment
论文地址:https://asa.scitation.org/doi/abs/10.1121/1.5036725 深度神经网络在浅水环境中的源定位 摘要: 深度神经网络(DNNs)在表征复杂的非线性关 ...
- 论文翻译: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 ...
- (转)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 ...
- Conditional Random Fields (CRF) 初理解
1,Conditional Random Fields
- Pixel Recurrent Neural Networks翻译
Pixel Recurrent Neural Networks 目前主要在用的文档存放: https://www.yuque.com/lart/papers/prnn github存档: https: ...
- [C5W1] Sequence Models - Recurrent Neural Networks
第一周 循环序列模型(Recurrent Neural Networks) 为什么选择序列模型?(Why Sequence Models?) 在本课程中你将学会序列模型,它是深度学习中最令人激动的内容 ...
- 第十四章——循环神经网络(Recurrent Neural Networks)(第一部分)
由于本章过长,分为两个部分,这是第一部分. 这几年提到RNN,一般指Recurrent Neural Networks,至于翻译成循环神经网络还是递归神经网络都可以.wiki上面把Recurrent ...
- 第十四章——循环神经网络(Recurrent Neural Networks)(第二部分)
本章共两部分,这是第二部分: 第十四章--循环神经网络(Recurrent Neural Networks)(第一部分) 第十四章--循环神经网络(Recurrent Neural Networks) ...
随机推荐
- 004_STM32程序移植之_SHTXX
1. 测试环境:STM32C8T6 2. 测试模块:DS1302时钟模块 3. 测试接口: SHTXX土壤温湿度: VCC------------------3.3V GND------------- ...
- Codeforces 1220 E Tourism
题面 可以发现一个边双必然是可以随意走的,所以我们就把原图求割边然后把边双缩成一个点,然后就是一个树上dp了. #include<bits/stdc++.h> #define ll lon ...
- redis系列(一):安装配置
1.下载安装 下载可到redis官网下载(可根据自己的操作系统下载,我的是Ubuntu) 目前redis最新版本是5.0.2:下载地址为:http://download.redis.io/releas ...
- Java面向对象4(P~U)
P 3-1 Point类的构造函数 (SDUT 2670) import java.util.Arrays; import java.util.Scanner; public class Mai ...
- Selenium处理授权框,登录框,握手框
在Web自动化中,常常遇到三种弹框: JavaScript警告框,如alert,confirm,prompt等,如下图: 处理方法为driver.switch_to.alert().dismiss() ...
- 虚拟机安装WIN7教程
1.去下载win7原装镜像,推荐去官方网站下载:https://msdn.itellyou.cn/ 也可以直接使用Win7系统和激活工具链接:https://pan.baidu.com/s/1SJSE ...
- JMeter压力测试及并发量计算-2
一个每天1000万PV的网站需要什么样的性能去支撑呢?继续上一篇,下面我们就来计算一下,前面我们已经搞到了一票数据,但是这些数据的意义还没有说.技术是为业务服务的,下面就来说说怎么让些数据变得有意义. ...
- websocket原理、为何能实现持久连接?
WebSocket 是 HTML5 一种新的协议.它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯,它建立在 TCP 之上,同 HTTP 一样通过 TCP 来传输数据,但是 ...
- 以太坊geth区块链私链建立
以太坊geth区块链私链建立 geth的github https://github.com/ethereum/go-ethereum 下载最新(1.8)的geth,windows下安装很简单 关于 ...
- OpenCL多次循环执行内核的一个简单样例
最近有不少朋友在多次循环执行OpenCL内核程序的时候碰到一些问题.由于对OpenCL初学者而言可能比较普遍,因此我这里给出一个清晰简单的demo来掩饰如何简单又高效地执行循环执行OpenCL内核. ...