我是靠谱客的博主 魁梧绿茶,最近开发中收集的这篇文章主要介绍Multi-Attention Multi-Class Constraint for Fine-grained Image Recognition论文解读,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简介

这篇论文是2018 ECCV的一篇论文,提出了一种半监督的细粒度图像识别的网络。

细粒度图像识别(Fine-Grained Image Recognition)

对于细粒度图像识别,简单的解释就是对于同一个大的类别中,不同子类之间的识别。以狗来进行举例就是,狗是大类,它包含很多的品种,每个品种就可以看做是一个子类。
由于受到多种干扰因素的影响,包括物体姿态、视角、光照、遮挡等,通常会使子类之间的物体差异偏小,而类别之间的物体差异偏大。
基于深度学习的物体分类可以大致分为强监督和弱监督两大类。强监督指图片标注中将物体某些显著特征(即discriminative判别性,可以区分类别的部位信息)给出,弱监督则没有此类信息。
现有的基于深度学习的弱监督方法,主要思路是定位出判别性部位,取得判别性特征做辅助来分类。这属于mid-level学习。加强mid-level学习能力是当前工作的重点。其实这很符合人类辨别细粒度物体的流程。先看全局信息知道大类,然后根据经验把注意力放在一些关键部位来做出判断,这些部位就是网络要找的discriminative parts.

解决的问题?
  1. 现在的注意力方法,主要是定位出识别区域,而忽视了识别区域之间的联系。
  2. 很多都是multi-stage,效率比较低。
  3. 需要大量的初始化操作,工作量比较大。
解决方法
  • 提出了一个端到端的网络
  • one-squeeze multi-excitation(OSME),能够学习输入图像的多个注意力区域特征。
  • multi-attention multi-class constraint(MAMC),加强注意力之间的联系。
网络架构

在这里插入图片描述
两个注意力分支的网络架构如上图所示。

OSME(one-squeeze multi-excitation)

是一种在弱监督下的,基于注意力机制的部件定位的方法,之前的工作包括两种情况:

  1. 部件检测,往往将部件检测和特征提取分开,这样的话会增大计算开销
  2. 来源于相应可视化的软注意力。

如上图所示,整个的框架结构,以ResNet50作为backline,然后借用SEnet的思想,通过压缩-扩展操作对输出的特征图进行再校准,为了产生P个特征注意力的特征图,对SEnet进行扩展,将一次扩展操作转换为多次扩展操作。
在压缩操作中,我们聚合特征图空间产生通道级的描述符,其维度和通道数一致。采用全局平均池化作为通道统计特征的描述方法。
在扩展操作中,对通道描述符施加多个独立门机制,产生多个注意力图。门机制是FC+Relu+FC+Sigmoid,由于Sigmoid的特性,器输出对通道间的非互斥关系进行编码,我们利用其输出对起初的ResNet50的输出进行再次的加权操作,进而得到特定注意力图。为了对每个特定注意力图进行特征提取,将这些特定注意力图展平成向量之后再输入到FC层。

简单点来说的话就是,本文通过对baseline输出全剧平均池化之后进行多次门操作获得P个特征向量。并认为这些特征向量是对不同非互斥部件/特征的聚类(这里还不能称为判别性特征)。

另外,关于SEnet,简单点理解的话是关注于channel之间的关系,希望模型能够自动的学习到不同channel特征的重要程度,关于SEnet的详细介绍参考 最后一届ImageNet冠军模型:SENet

MAMC (multi-attention multi-class constraint)

这个模块要解决的一个问题就是,如何将OSME产生的注意力特征指向类别,产生判别性注意力特征。
对于之前的工作,有两种方式来进行相关的操作,

  1. 把以上的注意力特征合并进行softmax loss(指交叉熵损失函数),缺陷:不能够掌握两两注意力特征之间的关系。
  2. 递归搜索机制,缺陷:通过迭代的方法,会将初代的误差放大,其次它还需要使用强化学习以及一些复杂的初始化的方法。

本文提出了一个更好的方法,就是多注意力多类别机制,能够在训练中增强两两部件之间的关系。
训练集组织: 每个batch中有N对图片,每对两张图片来自同一个子类,取一个图片为锚点(anchor),另一个为此anchor的正样本,然后给出他们所属类别。那么经过OSME模块,假设有P个excitation,那么每个样本就各自产生P个注意力特征向量。(参考度量学习
在这里插入图片描述
每个batch就有2N个样本, 经过OMSE产生2N*P个特征向量,我们想对这些向量进行聚类。举例来说。我们选一个第i类的样本经过OSME模块的第P个分支,则其与第i类第P个特征区域有关。按照关系远近,我们可以把剩余特征向量分成4组:

  • 同注意力门同类别:sasc,就是其正样本同一个注意力门的特征向量
  • 同注意力门异类别;sadc
  • 不同注意力门同类别;dasc
  • 不同注意力门异类别;dadc

我们通过度量学习框架探寻4组间关系。

sasc(same attention same class)

这是与所选anchor最为相似的特征向量,其负样本就是sadc并dasc并dadc.
在这里插入图片描述

sadc

取自与anchor同意注意力门的不同各类特征,对应于不同子类的相同部位。负样本是dadc.
在这里插入图片描述

dasc

取自anchor不同注意力门的同类,对应样本同一子类的不同部位。负样本是dadc.
在这里插入图片描述
我们就得到了三种正样本集合和三种负样本集合。我们希望锚点在嵌入空间中与正样本距离比负样本距离小一个阈值。以下是度量学习损失函数,m是阈值。就anchor与正样本的距离要比距负样本距离小至少一个m.
在这里插入图片描述
以上三个约束作用过程如下图。
首先把sasc推向锚点,满足第一个约束;然后sadc、dasc与dadc相比应该与锚点更近,把这二者推近,第2,3两种约束漫漫满足。
在这里插入图片描述
本文方法结合近期度量学习成果( Improved deep metric learning with multi-class n-pair loss objective),使用N-pair loss 做loss

在这里插入图片描述

总的loss是softmax loss 和 n-pair loss:
在这里插入图片描述

最后

以上就是魁梧绿茶为你收集整理的Multi-Attention Multi-Class Constraint for Fine-grained Image Recognition论文解读的全部内容,希望文章能够帮你解决Multi-Attention Multi-Class Constraint for Fine-grained Image Recognition论文解读所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部