文章采用了多实例学习(MIL)机制构建图像标签同像素语义的关联 。 该方法的训练样本包含了70 万张来自ImageNet的图片,但其语义分割的性能很大程度上依赖于复杂的后处理过程,主要包括图像级语义的预测信息、超像素平滑策略、物体候选框平滑策略和 MCG分割区域平滑策略。

下图是论文所用方法的一般性说明:

(1)使用来自Imagenet的弱注释数据(仅图像级别的类别信息)对模型进行训练。
(2)CNN生成特征平面。
(3)这些平面通过一个聚合层来约束模型,把更多的权重放在正确的像素上。
(4)通过分类正确的图像级标签来训练系统。

底部:在测试期间,聚合层被去除,并且CNN密集地将图像的每个像素进行分类(仅考虑少数分割先验)。

这个框架分为训练和测试两个部分,是不一样的结构。
训练:通过CNN提取的feature map,然后进行聚合,把Pixel level 整合到image level,整合的过程:使得属于相应类的像素的分数高。这也是本文的创新点
测试:测试集采用POSCAL,测试过程的结构没有整合层,但是增加了先验层,提高TP,降低FP。

训练的过程中,首先利用已有的overfeat结构作为feature extractor,计算出feature planes之后,再经过四层的segmentation net,这四个seg net均采用了ReLU激活函数,并且采用了dropout策略防止过拟合。输出是C+1个h*w的score image;经过聚合层,映射到image level,输出是C+1维的向量,每个元素是该类别的条件概率。
上面的过程可以看出来,aggreg层是本论文的创新点,这个层到底是如何把像素和image转换的呢?
请看下图(聚合层的详细流程):

从K个类里面算出来K个图片,图片中每一个像素都是在当前点的位置的像素属于第K类的分数,用什么函数把图像转化为一个值呢,这个函数要满足:当这个图象属于第I个类的时候,能够使得这个值最大。
首先想到的是,把图像的值都加起来,存在的问题是,平均化,没有差异。
然后想到了聚合层实际上是相当于一般cnn的mini-batch的max pooling层,max pooling层的像素点都与input image的sub patch相关,于是想到了把最大的score加起来。这个函数存在的问题是,需要很长时间才能收敛。
作者不知道为何想到了convex 优化中的平滑函数,这个函数有很好的性质,能够让分数高的像素权重也高。
关于这一层的参数确定,用的是softmax回归。
训练好相应的模型之后,就要用测试数据测试了
测试过程如下图:
首先输入要测试的数据,经过overfeat6层卷积,形成上图中的pi.j(K)的图像,然后与IPL相乘,得到后面的y',最后,与
smooth prior卷积,形成最终结果,输出,smooth prior能够输出平滑的分割结果。
测试过程增加了两种先验经验的约束层,来达到高的准确率。
global:image level prior:从训练的图像中,初步分割结果的每个点,属于哪类概率乘以该类在训练过程中出现的概率。
smooth:用了三种方式增加TP,降低FP,分别是,超像素初步分割,bing计算box,累加出现在bounding Box中的次数。
这两种方式的好处是,强制使低概率的被标记为背景,保证局部一致性。
 
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
(部分译文)

3 Architecture

正如我们在第1节中指出的,CNN是一个非常灵活的模型,可以应用于各种图像处理任务,因为它们减轻了任务特定功能的需求。 CNN学习过滤器的层次结构,当层次结构“更深入”时,过滤器提取更高层次的表示。 他们学习的功能类型也是非常普遍的,CNN使转移学习(到另一个任务)非常容易。 但是,这些模型的主要缺点是在训练过程中需要大量的数据。

由于图像级对象标签的数量比像素级分割标签大得多,因此利用图像分类数据集来执行分割是理所当然的。 接下来,我们考虑一个类C的分割问题。我们假设分类数据集至少包含相同的类。
在分类时可用的额外类,不在分割数据集中的,映射到“背景”类。 这个背景类对于在分割过程中限制假阳性的数量是必不可少的。

我们的架构是CNN,它是通过Imagenet的一个子集进行训练的,从图像级标签生成像素级标签。 如图2所示,我们的CNN是相当标准的,有10级卷积和(可选)池化。输入一个400×400的RGB补丁I,并输出对应于12倍下采样图像像素标签分数的| C | +1个平面(每个类一个,加上背景类)。在训练过程中,第3.1节中介绍的一个额外图层将像素级标签聚合为图像级标签。 出于计算能力的原因,我们“冻结”了CNN的第一层,以及一些已经训练有素(通过Imagenet分类数据)的CNN模型。

我们选择训练以用于对ILSVRC13进行对象分类的Overfeat。Overfeat模型生成尺寸为1024×hi×wi的特征图,其中hi和wi是RGB输入图像大小,卷积核大小,卷积步长和最大池大小的函数。只保留前6个卷积层和2个Overfeat层,我们的RGB 400×400图像块I被转换成1024×29×29的特征表示。

我们增加了四个额外的卷积层(我们用H6来表示来自OverFeat的特征面)。 每一个(除了最后的Y)之后是逐点校正非线性(ReLU)单元。

(W p,b p)表示第p层的参数。 在这一步,我们不使用任何最大池化。 一个dropout正规化策略被用于所有层(以防止过拟合)。 网络输出| C | + 1个维度为h o×w o的特征平面,训练中考虑为每个类别加上背景。

3.1 Multiple Instance Learning

网络从二次采样图像I为每个像素位置(i,j)产生一个分数和对于每个k∈C的类。假定在训练期间,我们只能访问图像类别标签,我们需要一种方法来聚合这些像素级分数,将其合并为一个单一的图像级别的分数,然后将最大化正确的类标签k*。 假设聚合过程aggreg()已经被选择,我们通过应用下面的softmax函数将图像级别的分数解释为类别条件概率:

其中θ= {W p,b p∀p}表示我们框架下的所有可训练参数。 然后,我们在所有训练数据对(I,k*)上最大化对数似然(关于θ):

训练是通过随机梯度来实现的,通过softmax,聚合过程进行反向传播,并且直到我们网络的第一个非冻结层。(原文勘误:应为up to the而不是“up the to”)

Figure 2:完整的RGB图像通过网络(由Overfeat和四个额外的卷积特征组成)向前传送,生成维度(| C | + 1)×h o×w o的输出平面。 这些输出平面可以看作是输入图像的子采样版本的像素级标签。 然后,输出通过Log-Sum-Exp图层将像素级标签聚合成图像级标签。 误差通过层C10-C7反向传播。

Aggregation

聚合应该促使网络走向正确的像素级分配,这样它可以在分割任务上正常执行。 一个明显的聚合将是所有像素位置的总和:

然而,这将在训练过程中对图像的所有像素赋予相同的权重,甚至对该图像上不属于类别标签的像素分配权重(even to the ones which do not belong to the class label assigned to the image)。注意,该聚合方法与通过mini-batch应用传统的全连接分类CNN等同。 实际上,输出平面中的每个值对应于以输入平面中的对应像素为中心的 sub-patch的CNN的输出。 另一方面,可以应用一个最大池化来汇总:

这将促使该模型增加被认为是图像级分类最重要的像素的分数。 根据我们的经验,这种方法训练得不好。 请注意,在训练开始时,所有像素可能具有相同(错误)的分数,但是只有一个(由max选择)将在训练过程的每一步都增加其分数。 因此,模型需要大量的时间才能收敛也不奇怪。

我们选择了最大函数的平滑版本和凸近似,称为Log-Sum-Exp(LSE):

超参数r控制近似值的平滑程度:高r值意味着具有类似于最大值的效果,非常低的值将具有类似于得分平均的效果。 这种聚合的优点是在训练过程中具有相似分数的像素将具有相似的权重,参数r控制这种“相似性”。

 

论文笔记(1):From Image-level to Pixel-level Labeling with Convolutional Networks的更多相关文章

  1. 论文笔记:《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks DeepLearning 》

    一.Abstract综述 训练出一个CNN可以同时实现分类,定位和检测..,三个任务共用同一个CNN网络,只是在pool5之后有所不同 二.分类 这里CNN的结构是对ALEXNET做了一些改进,具体的 ...

  2. 论文笔记:ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks

    ReNet: A Recurrent Neural Network Based Alternative to Convolutional Networks2018-03-05  11:13:05   ...

  3. 论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks

    论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks 2018年07月11日 14 ...

  4. SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...

  5. 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)

    论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...

  6. 【论文笔记】张航和李沐等提出:ResNeSt: Split-Attention Networks(ResNet改进版本)

    github地址:https://github.com/zhanghang1989/ResNeSt 论文地址:https://hangzhang.org/files/resnest.pdf 核心就是: ...

  7. 论文笔记:SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks

    SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks 2019-04-02 12:44:36 Paper:ht ...

  8. Video Frame Synthesis using Deep Voxel Flow 论文笔记

    Video Frame Synthesis using Deep Voxel Flow 论文笔记 arXiv 摘要:本文解决了模拟新的视频帧的问题,要么是现有视频帧之间的插值,要么是紧跟着他们的探索. ...

  9. 论文笔记《Feedforward semantic segmentation with zoom-out features》

    [论文信息] <Feedforward semantic segmentation with zoom-out features> CVPR 2015 superpixel-level,f ...

随机推荐

  1. nginx/php-fpm 访问php文件直接下载而不运行

    遇到这种问题,首先确认你web服务器配置中的.PHP是不是被指定给FastCGI server处理: location ~ .php$ { fastcgi_pass ; } 如已配置,那么可能是由于f ...

  2. Python逻辑运算符

    逻辑运算符主要用来做逻辑判断,逻辑运算符和比较运算符放一起的,同样用于条件选择和循环. 以下假设变量 a 为 10, b为 20: 示例1: #and是并且,所有的条件都是True,结果才是True: ...

  3. Tomcat输出保存JVM GC日志文件

    当系统出现问题时,分析java虚拟机GC日志可以帮助我们定位问题,一般来说, 我们可以通过制定JVM参数使tomcat保存GC日志文件,具体实现如下: Windows下: 找到tomcat的解压目录, ...

  4. 函数重载overload

    与void show(int a, char b, double c){}构成重载的有: a) void show(int x, char y, double z){} //no b) int sho ...

  5. 隐藏文件的查看(Win/Linux/macOS)

    Windows(10): 点查看->点选项,弹出文件夹选项,点查看,高级设置里找到隐藏文件和文件夹这个选项,按需求选显示或者隐藏即可. Linux: Linux下,类似于.ssh开头的文件或者文 ...

  6. php 快排

    <?php $arr =array(3,1,5,67,8,7,9,9); function qsort(&$arr,$head,$tail){ if($head>=$tail){ ...

  7. ES6的介绍和常用语法

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 前言 ECMAScript 是 JS 的语言标准.而 ES6 是新的 J ...

  8. Docker系列一:Docker基本概念及指令介绍

    1. Docker是什么? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用 ...

  9. 用线性单元(LinearUnit)实现工资预测的Python3代码

    功能:通过样本进行训练,让线性单元自己找到(这就是所谓机器学习)工资计算的规律,然后用两组数据进行测试机器是否真的get到了其中的规律. 原文链接在文尾,文章中的代码为了演示起见,仅根据工作年限来预测 ...

  10. Phpstrom操作git

    1.PHPstrom操作git[上传] 2.提交代码到仓库 2. 3.使用git bash上传代码仓库的代码到远程服务器 代开git bash进入到项目所在的目录,输入命令$  git push .上 ...