admin管理员组

文章数量:1130349

Learning to Promote Saliency Detectors论文阅读

旧文重发

https://github/lartpang/Machine-Deep-Learning

缩写标注:

  • SD: Saliency Detection
  • ZSL: Zero-Shot Learning

关键内容:

  • 没有训练直接将图像映射到标签中的 DNN。相反,将 DNN 拟合为一个嵌入函数,以将像素和显著/背景区域的属性映射到度量空间。显着/背景区域的属性被映射为度量空间中的锚点。然后,在该空间中构造最近邻(NN)分类器,将最近的锚点的标签分配给对应的像素.
  • 保持分辨率的手段:
    1. 移除了最后两个卷积块的池化层, 使用扩张卷积来维持卷积滤波器的感受野
    2. 添加亚像素卷积层到每个 VGG 特征提取器的卷积块后, 来上采样每个卷积块的特征图到输入图像大小.
  • 使用了迭代训练/测试的策略.
    1. 这里没有提到训练迭代次数如何确定
    2. 测试的迭代次数是人工给定的

一些想法:

类似于 R3Net, 最后的添加的结构都是反复迭代测试后才确定使用多少次, 而且按照相关的测试可以看出来, 一定次数后, 提升的效果就趋于饱和了, 只能说这里的提到的方法对于现有网络的提升具有一定的助益.

对于这里提到的, 这是类似于一种 ZSL 的方法, 也就是利用现有的 SD 算法产生的结果(“过去的知识”), 添加的新结构, 不断利用过去的知识迭代, 实现对于最终"后处理"后结果的一个促进(“来对现有的 SD 算法进行推广”).

一些疑惑:

如何将这个方法应用到现有的架构呢? 如何改造现有架构? 这个结构是用来直接对现有架构的预测输出进一步细化使用, 使用现有网络的输出作为这个结构的输入, 原始图片也输入进来, 细化后输出.

改造后的结构, 训练的时候也要按照文中那样, 随机翻转真值中的像素标签么? 这里用作对于现有网络的输出的进一步处理.

这里的第 6 层是前面的 5C 通道的特征输出汇总来的? 是的.

Abstract

The categories and appearance of salient objects varyfrom image to image, therefore, saliency detection is animage-specific task. Due to lack of large-scale saliency training data, using deep neural networks (DNNs) with pre-training is difficult to precisely capture the image-specific saliency cues. To solve this issue, we formulate a zero-shot learning problem to promote existing saliency detectors.

Concretely, a DNN is trained as an embedding function to map pixels and the attributes of the salient/background regions of an image into the same metric space, in which an image-specific classifier is learned to classify the pixels.

Since the image-specific task is performed by the classifier, the DNN embedding effectively plays the role of a general feature extractor.

Compared with transferring the learning to a new recognition task using limited data, this formulation makes the DNN learn more effectively from small data.

Extensive experiments on five data sets showthat our method significantly improves accuracy of existing methods and compares favorably against state-of-the-art approaches.

显着对象的类别和外观因图像而异,因此,显着性检测是特定于图像的任务。由于缺乏大规模显着性训练数据,使用具有预训练的深度神经网络(DNN)难以精确捕获图像特定显着性线索。为了解决这个问题,我们制定了一个零次学习问题来推广现有的显着性检测器。

具体地,DNN 被训练为一个嵌入函数,以将像素和图像的显着/背景区域的属性映射到相同的度量空间,其中, 图像特定的分类器被学习来对像素进行分类。

由于图像特定任务由分类器执行,因此 DNN 嵌入有效地扮演一般特征提取器的角色。

与使用有限数据将学习转移到新的识别任务相比,该设定使 DNN 从小数据中更有效地学习。

对五个数据集进行的大量实验表明,我们的方法显着提高了现有方法的准确性,并且与最先进的方法相比具有优势。


这里提到了一点, 使用 ZSL 问题来推广现有的 SD 器. 怎么推广?

补充内容 ZSL[零次学习(Zero-Shot Learning)]

假设小暗(纯粹因为不想用小明)和爸爸,到了动物园,看到了马,然后爸爸告诉他,这就是马;之后,又看到了老虎,告诉他:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”然后,爸爸给小暗安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小暗有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小暗根据爸爸的提示,在动物园里找到了斑马(意料之中的结局。。。)。

上述例子中包含了一个人类的推理过程,就是利用过去的知识(马,老虎,熊猫和斑马的描述),在脑海中推理出新对象的具体形态,从而能对新对象进行辨认

ZSL 就是希望能够模仿人类的这个推理过程,使得计算机具有识别新事物的能力。

结合起来看, 也就是说可以利用过去的知识, 来对现有的 SD 器进行推广.

Introduction

传统的显着性检测方法通常是利用低级别的特征和启发式先验,它们不能在复杂的场景中发现显着的对象,也就不能够捕获语义对象。随着 DNN 的流行, 可以学习来自训练样本的更为高层的语义特征, 因此对于定位语义显著性区域更为有效, 在复杂场景下也会更为有效.

使用 DNN 就要考虑一个问题, 数据. DNN 通常在大量数据的基础上来训练, 而 SD 的数据是比较有限的, 这个问题通常用在其他任务的大数据集(如分类任务)上预训练的手段来解决, 然而这很容易导致其他问题:

从图上可以看出来, 分类任务训练出来的模型, 最后的特征图中关注的重点对于 SD 任务而言, 在两列的特征图中不加区分地突出显示符号和人的区域。

哪个图"不加区分地突出显示符号和人的区域"?

  1. 预训练任务与 SD 的差异: 由预先训练的特征提取器产生的特征假定用于所有图像。例如,标志和人是图 1 第一列中的显着对象,而它们属于第二列中的背景。然而,在两列的特征图中不加区分地突出了标志和人的区域。使用这种特征提取器,可以强制预测模型学习将相似特征映射到相反标签,这对于小训练数据集来说是困难的。
  2. 显着对象的类别和外观因图像而异,而小的训练数据不足以捕捉多样性. 例如,图 1 中所示的六个显着对象来自六个不同的类别,并且它们的外观差别很大。因此,可能很难学习统一的检测器来处理各种显着对象。

考虑到显着对象的多样性,我们没有训练直接将图像映射到标签中的深度神经网络(DNN)。相反,我们将 DNN 训练为一个嵌入函数,以将像素和显著/背景区域的属性映射到度量空间。显着/背景区域的属性被映射为度量空间中的锚点。然后,在该空间中构造最近邻(NN)分类器,将最近的锚点的标签分配给对应的像素。

作为非参数模型,NN 分类器可以很好地适应新数据并处理显着对象的多样性。另外,由于分类任务是由 NN 分类器执行的,因此 DNN 的目标转向学习从显着/背景区域的属性到嵌入空间中的锚点的一般映射。与直接学习检测不同的显着对象相比,网络更容易学习有限的数据.

补充内容: 嵌入(Embedding)

嵌入意味着将数据转换为特征表示,其中某些属性可以用距离的概念表示。

例如,针对用于说话者识别的语音信号训练的模型可以允许您将语音片段转换为数字向量,使得来自相同说话者的另一片段与原始向量具有小的距离(例如,欧几里德距离)。或者,不同的嵌入函数可能允许您根据信号中所说的单词转换语音信号。因此,如果在这些片段中使用相同的单词,则在两个语音信号的编码表示之间将获得小的欧几里德距离。另外, 你可能只想学习一种嵌入,它代表语音信号的“情绪”,例如:“快乐”与“悲伤”与“愤怒”等。两个语音信号的编码表示之间的小距离将意味着相似的情绪,反之亦然。

或者例如,word2vec embeddings, 在一个空间中“映射”一个单词,其中这些单词之间的欧几里德距离代表语义相似性(同样, embedding ~ 为您提供给定单词的数字向量)。因此,如果你使用“德国”的 word2vec 表示,从中减去“柏林”,并将结果添加到“法国”,你会得到一个矢量, 在欧几里德空间非常接近“巴黎”的嵌入(the embedding for “Paris”)!

同样,在需要分类成数十万或数百万个类的应用程序中,例如面部识别,一种常见的方法是使用“度量学习”技术(通常是具有所谓的对比或三重丢失的连体 CNN(Siamese CNNs with so-called contrastive or triplet loss)),这在测试时允许您在面部的矢量表示上使用最近邻技术!

另一个介绍:

Embedding 在数学上表示一个 maping, f: X -> Y, 也就是一个 function,其中该函数是 injective(就是我们所说的单射函数,每个 Y 只有唯一的 X 对应,反之亦然)和 structure-preserving (结构保存,比如在 X 所属的空间上 X1 < X2,那么映射后在 Y 所属空间上同理 Y1 < Y2)。那么对于 word embedding,就是将单词 word 映射到另外一个空间,其中这个映射具有 injective 和 structure-preserving 的特点。

具体地说,我们在图 2 中显示了我们提出的方法的流程。

在训练期间,DNN 具有真实的显着区域和背景区域,其中几个随机选择的像素的标签被翻转,以产生锚点。NN 分类器的输出构成了 saliency map。DNN 可以通过此显着性图和真值之间的损失进行端到端的监督训练。

当在图像上进行测试时,每个图像的显着性图像按照训练的流程来获得,使用的是现有方法来检测的近似的显著性/背景区域。尽管近似显着/背景区域不完全正确,但是它通常与真实的显著性/背景区域有着相似的属性。因此,对应的嵌入向量(即锚点)将接近真实的显着/背景区域的向量。

此外,为了产生更好的结果,我们提出了一个迭代测试的方案。NN 分类器的结果用于修改锚点,从而产生越来越精确的结果。

迭代测试的想法, 如何实现? 在测试的时候, 你的迭代只能使用测试集的图片数据和你预测出来的结果, 不可以在真实值上进行迭代, 那这里的迭代如何片定效果, 如何学习? 这里的进一步迭代测试的操作就是一种后处理手段, 但是如何迭代那? 何时终止迭代?

这里的方法可以看作是一个 ZSL 问题,其中由现有方法检测到的近似显着/背景区域为未看到的显著性对象提供属性,并且模型从训练数据中学习去从属性中学习一个特定于图像的分类器来分类此图像的像素

对五个数据集的大量实验表明,该方法可以显着提高现有方法的准确性,并且与现有技术方法相比具有优势。

Related works

Generally, saliency detection methods can be categorized into two streams: top-down and bottom-up saliency. Since our work addresses bottom-up saliency, here we mainly review recent works on bottom-up saliency, meanwhile shortly mention top-down saliency. We also explore the relation between our proposed method and top-down saliency.

BU

Bottom-up (BU) saliency is stimuli-driven(刺激驱动), where saliency is derived from contrast among visual stimuli(视觉刺激).

Conventional bottom-up saliency detection methods often utilize low-level features and heuristic priors(启发式).

  • Jiang et al. [12] formulate saliency detection via an absorbing Markov chain(吸收马尔可夫链http://www.vartang/2013/02/吸收马尔可夫链/) on an image graph model, where saliency of each region is defined as its abso

Learning to Promote Saliency Detectors论文阅读

旧文重发

https://github/lartpang/Machine-Deep-Learning

缩写标注:

  • SD: Saliency Detection
  • ZSL: Zero-Shot Learning

关键内容:

  • 没有训练直接将图像映射到标签中的 DNN。相反,将 DNN 拟合为一个嵌入函数,以将像素和显著/背景区域的属性映射到度量空间。显着/背景区域的属性被映射为度量空间中的锚点。然后,在该空间中构造最近邻(NN)分类器,将最近的锚点的标签分配给对应的像素.
  • 保持分辨率的手段:
    1. 移除了最后两个卷积块的池化层, 使用扩张卷积来维持卷积滤波器的感受野
    2. 添加亚像素卷积层到每个 VGG 特征提取器的卷积块后, 来上采样每个卷积块的特征图到输入图像大小.
  • 使用了迭代训练/测试的策略.
    1. 这里没有提到训练迭代次数如何确定
    2. 测试的迭代次数是人工给定的

一些想法:

类似于 R3Net, 最后的添加的结构都是反复迭代测试后才确定使用多少次, 而且按照相关的测试可以看出来, 一定次数后, 提升的效果就趋于饱和了, 只能说这里的提到的方法对于现有网络的提升具有一定的助益.

对于这里提到的, 这是类似于一种 ZSL 的方法, 也就是利用现有的 SD 算法产生的结果(“过去的知识”), 添加的新结构, 不断利用过去的知识迭代, 实现对于最终"后处理"后结果的一个促进(“来对现有的 SD 算法进行推广”).

一些疑惑:

如何将这个方法应用到现有的架构呢? 如何改造现有架构? 这个结构是用来直接对现有架构的预测输出进一步细化使用, 使用现有网络的输出作为这个结构的输入, 原始图片也输入进来, 细化后输出.

改造后的结构, 训练的时候也要按照文中那样, 随机翻转真值中的像素标签么? 这里用作对于现有网络的输出的进一步处理.

这里的第 6 层是前面的 5C 通道的特征输出汇总来的? 是的.

Abstract

The categories and appearance of salient objects varyfrom image to image, therefore, saliency detection is animage-specific task. Due to lack of large-scale saliency training data, using deep neural networks (DNNs) with pre-training is difficult to precisely capture the image-specific saliency cues. To solve this issue, we formulate a zero-shot learning problem to promote existing saliency detectors.

Concretely, a DNN is trained as an embedding function to map pixels and the attributes of the salient/background regions of an image into the same metric space, in which an image-specific classifier is learned to classify the pixels.

Since the image-specific task is performed by the classifier, the DNN embedding effectively plays the role of a general feature extractor.

Compared with transferring the learning to a new recognition task using limited data, this formulation makes the DNN learn more effectively from small data.

Extensive experiments on five data sets showthat our method significantly improves accuracy of existing methods and compares favorably against state-of-the-art approaches.

显着对象的类别和外观因图像而异,因此,显着性检测是特定于图像的任务。由于缺乏大规模显着性训练数据,使用具有预训练的深度神经网络(DNN)难以精确捕获图像特定显着性线索。为了解决这个问题,我们制定了一个零次学习问题来推广现有的显着性检测器。

具体地,DNN 被训练为一个嵌入函数,以将像素和图像的显着/背景区域的属性映射到相同的度量空间,其中, 图像特定的分类器被学习来对像素进行分类。

由于图像特定任务由分类器执行,因此 DNN 嵌入有效地扮演一般特征提取器的角色。

与使用有限数据将学习转移到新的识别任务相比,该设定使 DNN 从小数据中更有效地学习。

对五个数据集进行的大量实验表明,我们的方法显着提高了现有方法的准确性,并且与最先进的方法相比具有优势。


这里提到了一点, 使用 ZSL 问题来推广现有的 SD 器. 怎么推广?

补充内容 ZSL[零次学习(Zero-Shot Learning)]

假设小暗(纯粹因为不想用小明)和爸爸,到了动物园,看到了马,然后爸爸告诉他,这就是马;之后,又看到了老虎,告诉他:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”然后,爸爸给小暗安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小暗有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小暗根据爸爸的提示,在动物园里找到了斑马(意料之中的结局。。。)。

上述例子中包含了一个人类的推理过程,就是利用过去的知识(马,老虎,熊猫和斑马的描述),在脑海中推理出新对象的具体形态,从而能对新对象进行辨认

ZSL 就是希望能够模仿人类的这个推理过程,使得计算机具有识别新事物的能力。

结合起来看, 也就是说可以利用过去的知识, 来对现有的 SD 器进行推广.

Introduction

传统的显着性检测方法通常是利用低级别的特征和启发式先验,它们不能在复杂的场景中发现显着的对象,也就不能够捕获语义对象。随着 DNN 的流行, 可以学习来自训练样本的更为高层的语义特征, 因此对于定位语义显著性区域更为有效, 在复杂场景下也会更为有效.

使用 DNN 就要考虑一个问题, 数据. DNN 通常在大量数据的基础上来训练, 而 SD 的数据是比较有限的, 这个问题通常用在其他任务的大数据集(如分类任务)上预训练的手段来解决, 然而这很容易导致其他问题:

从图上可以看出来, 分类任务训练出来的模型, 最后的特征图中关注的重点对于 SD 任务而言, 在两列的特征图中不加区分地突出显示符号和人的区域。

哪个图"不加区分地突出显示符号和人的区域"?

  1. 预训练任务与 SD 的差异: 由预先训练的特征提取器产生的特征假定用于所有图像。例如,标志和人是图 1 第一列中的显着对象,而它们属于第二列中的背景。然而,在两列的特征图中不加区分地突出了标志和人的区域。使用这种特征提取器,可以强制预测模型学习将相似特征映射到相反标签,这对于小训练数据集来说是困难的。
  2. 显着对象的类别和外观因图像而异,而小的训练数据不足以捕捉多样性. 例如,图 1 中所示的六个显着对象来自六个不同的类别,并且它们的外观差别很大。因此,可能很难学习统一的检测器来处理各种显着对象。

考虑到显着对象的多样性,我们没有训练直接将图像映射到标签中的深度神经网络(DNN)。相反,我们将 DNN 训练为一个嵌入函数,以将像素和显著/背景区域的属性映射到度量空间。显着/背景区域的属性被映射为度量空间中的锚点。然后,在该空间中构造最近邻(NN)分类器,将最近的锚点的标签分配给对应的像素。

作为非参数模型,NN 分类器可以很好地适应新数据并处理显着对象的多样性。另外,由于分类任务是由 NN 分类器执行的,因此 DNN 的目标转向学习从显着/背景区域的属性到嵌入空间中的锚点的一般映射。与直接学习检测不同的显着对象相比,网络更容易学习有限的数据.

补充内容: 嵌入(Embedding)

嵌入意味着将数据转换为特征表示,其中某些属性可以用距离的概念表示。

例如,针对用于说话者识别的语音信号训练的模型可以允许您将语音片段转换为数字向量,使得来自相同说话者的另一片段与原始向量具有小的距离(例如,欧几里德距离)。或者,不同的嵌入函数可能允许您根据信号中所说的单词转换语音信号。因此,如果在这些片段中使用相同的单词,则在两个语音信号的编码表示之间将获得小的欧几里德距离。另外, 你可能只想学习一种嵌入,它代表语音信号的“情绪”,例如:“快乐”与“悲伤”与“愤怒”等。两个语音信号的编码表示之间的小距离将意味着相似的情绪,反之亦然。

或者例如,word2vec embeddings, 在一个空间中“映射”一个单词,其中这些单词之间的欧几里德距离代表语义相似性(同样, embedding ~ 为您提供给定单词的数字向量)。因此,如果你使用“德国”的 word2vec 表示,从中减去“柏林”,并将结果添加到“法国”,你会得到一个矢量, 在欧几里德空间非常接近“巴黎”的嵌入(the embedding for “Paris”)!

同样,在需要分类成数十万或数百万个类的应用程序中,例如面部识别,一种常见的方法是使用“度量学习”技术(通常是具有所谓的对比或三重丢失的连体 CNN(Siamese CNNs with so-called contrastive or triplet loss)),这在测试时允许您在面部的矢量表示上使用最近邻技术!

另一个介绍:

Embedding 在数学上表示一个 maping, f: X -> Y, 也就是一个 function,其中该函数是 injective(就是我们所说的单射函数,每个 Y 只有唯一的 X 对应,反之亦然)和 structure-preserving (结构保存,比如在 X 所属的空间上 X1 < X2,那么映射后在 Y 所属空间上同理 Y1 < Y2)。那么对于 word embedding,就是将单词 word 映射到另外一个空间,其中这个映射具有 injective 和 structure-preserving 的特点。

具体地说,我们在图 2 中显示了我们提出的方法的流程。

在训练期间,DNN 具有真实的显着区域和背景区域,其中几个随机选择的像素的标签被翻转,以产生锚点。NN 分类器的输出构成了 saliency map。DNN 可以通过此显着性图和真值之间的损失进行端到端的监督训练。

当在图像上进行测试时,每个图像的显着性图像按照训练的流程来获得,使用的是现有方法来检测的近似的显著性/背景区域。尽管近似显着/背景区域不完全正确,但是它通常与真实的显著性/背景区域有着相似的属性。因此,对应的嵌入向量(即锚点)将接近真实的显着/背景区域的向量。

此外,为了产生更好的结果,我们提出了一个迭代测试的方案。NN 分类器的结果用于修改锚点,从而产生越来越精确的结果。

迭代测试的想法, 如何实现? 在测试的时候, 你的迭代只能使用测试集的图片数据和你预测出来的结果, 不可以在真实值上进行迭代, 那这里的迭代如何片定效果, 如何学习? 这里的进一步迭代测试的操作就是一种后处理手段, 但是如何迭代那? 何时终止迭代?

这里的方法可以看作是一个 ZSL 问题,其中由现有方法检测到的近似显着/背景区域为未看到的显著性对象提供属性,并且模型从训练数据中学习去从属性中学习一个特定于图像的分类器来分类此图像的像素

对五个数据集的大量实验表明,该方法可以显着提高现有方法的准确性,并且与现有技术方法相比具有优势。

Related works

Generally, saliency detection methods can be categorized into two streams: top-down and bottom-up saliency. Since our work addresses bottom-up saliency, here we mainly review recent works on bottom-up saliency, meanwhile shortly mention top-down saliency. We also explore the relation between our proposed method and top-down saliency.

BU

Bottom-up (BU) saliency is stimuli-driven(刺激驱动), where saliency is derived from contrast among visual stimuli(视觉刺激).

Conventional bottom-up saliency detection methods often utilize low-level features and heuristic priors(启发式).

  • Jiang et al. [12] formulate saliency detection via an absorbing Markov chain(吸收马尔可夫链http://www.vartang/2013/02/吸收马尔可夫链/) on an image graph model, where saliency of each region is defined as its abso

本文标签: 目标learningpromoteSaliencyDetectors