文章采用了多实例学习(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. 阿里云CentOS使用iptables禁止某IP访问

    在CentOS下封停IP,有封杀网段和封杀单个IP两种形式.一般来说,现在的攻击者不会使用一个网段的IP来攻击(太招摇了),IP一般都是散列的.于是下面就详细说明一下封杀单个IP的命令,和解封单个IP ...

  2. 【应知应会】15个常用的JavaScript字符串操作方法

    1 初始化 //常用初始化方法 var stringVal = "hello iFat3"; //构造函数创建方法 var stringObj = new String(" ...

  3. C语言学习之插入排序

    此前的一些博文分别写了C语言中经典的排序方式,选择排序 冒泡排序 桶排序,此文就写 插入排序吧. 相对于冒泡排序,插入排序就比较方便快捷了.和冒泡 选择排序一样,插入排序也需要比较大小.可以这样理解插 ...

  4. 使用Netbeans内置的Git工具

    在 NetBeans IDE 中使用 Git 支持 NetBeans IDE 为 Git 版本控制客户端提供支持.通过利用 IDE 的 Git 支持,您可以从 IDE 内的项目中直接执行版本控制任务. ...

  5. JS Cookie丢失问题

    JS Cookie丢失问题 前些天有人问我vue中使用proxy发送请求,为什么请求时cookie丢失,首先说一下我对cookie的理解: 1.cookie在正常情况下是会在每次请求时自动携带, 2. ...

  6. Node.js,commonjs,require

    环境: Node应用由模块组成,采用CommonJS模块规范. node的全局对象是global,没有window这个对象. process表示当前执行的进程,挂在global之下. CommonJS ...

  7. 记录一个 spring cloud 配置中心的坑,命令行端口参数无效,被覆盖,编码集问题无法读取文件等.

    spring cloud 配置中心 结合GIT , 可以运行时更新配置文件.发送指令让应用重新读取配置文件. 最近在测试服务器实现了一套,结果CPU 实用率暴增,使用docker compose启动 ...

  8. Luogu P1092 虫食算

    题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...

  9. Android热修复技术选型——三大流派解析

    声明,本文转载自微信公众号文章 2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker,它们 ...

  10. 3.3 与Cache相关的PCI总线事务

    PCI总线规范定义了一系列与Cache相关的总线事务,以提高PCI设备与主存储器进行数据交换的效率,即DMA读写的效率.当PCI设备使用DMA方式向存储器进行读写操作时,一定需要经过HOST主桥,而H ...