细粒度图像分类论文研读-2022

news2024/11/16 6:29:46

文章目录

  • TransFG: A Transformer Architecture for Fine-grained Recognition
    • Abstract
    • introduction
    • Method
      • Vision transformer as feature extractor
        • Image Sequentialization
        • Patch Embedding
      • TransFG Architecture
        • Part Selection Module
        • Constrastive feature learning
  • ViT-FOD:A Vision Transformer based Fine-grained Object Discriminator
    • Abstract
    • Introduction
    • Method
      • Complementary Tokens Integration
      • Attention Patch Combination
      • Critical Regions Filter

TransFG: A Transformer Architecture for Fine-grained Recognition

Abstract

目前的工作主要通过关注如何定位最具识别度的区域并依靠它们来提高网络捕捉细微变化的能力来完成FGVC。

这些工作中的大部分是通过RPN模块来提出绑定框并重新使用主干网络来提取所选框的特征。

近年来,ViT在传统分类任务重大放异彩,其自我关注机制将每个patch的token连接到分类token。注意力连接的强度可以被直观地视为表征重要性的指标。

本文中,提出了一个新的、基于transformer的结构TransFG。

本文将所有原始注意力权重聚合为一个注意力图来指导网络有效且准确地选择有区分度的图像块并且计算他们之间的关系。

此外,本文还用对比损失来进一步扩大相似子类的特征表示之间的距离。

introduction

为了避免劳动密集的局部标注问题,目前主要聚焦于仅有图像标签的弱监督FGVC。

现有的方法主要分为两大类,即定位方法与特征编码方法。定位方法的优势在于能够明确捕捉不同子类之间的细微差异,更具有可解释性以及更好的结果。

典型的策略是使用局部特征进行分类并且采用rank loss老保持bbox和输出概率之间的一致性。

然而,这样的方法显然忽视了所选择区域之间的关系,并且鼓励RPN产生一些大的bbox以包含更多的局部从而产生正确的分类结果。甚至,大的bbox会造成背景的混乱。

vision transformer取得巨大成功,这表明将具有固有注意力机制的pure transformer直接应用到图像块序列时能够捕捉重要的区域从而促进分类。

本文提出了TransFG,是一个基于ViT的简单且有效的框架,具体来说:

  1. 通过利用先天的多头自我注意力机制,本文提出了一个局部选择模块来计算有区分度的区域并且去除冗余信息。
  2. 本文将所选的局部token与全局token连接起来,作为i最后一个transformer层的输入序列;
  3. 引入duplicate loss来估计多头注意力模块产生不同的结果。

这样一种策略推动网络聚焦于图像的不同区域。为了进一步增大不同类别样本的特征表示之间的距离,减小同类样本的特征表示之间的距离,本文引入了对比损失来进一步提高性能。

Method

Vision transformer as feature extractor

Image Sequentialization

遵循ViT,首先将输入图像预处理成一系列展平的patches x p x_p xp

然而,这些原始的分割方法将图像裁剪成为一些non-overlapping的patches,严重伤害了local neighboring structures。尤其是有区分度的区域被分开了(因为是简单的分割,可能鸟的一半头是一块,另一半头在另一块)。

为了解决这一问题,本文提出了用滑动窗口生成重叠的patches

具体来说,我们设输入图像的分辨率为 H ∗ W H*W HW,image patch的size为 P P P,滑动窗口的步长为 S S S,于是我们能得到N个patches。

请添加图片描述

于是,两个连接的patches就有了重叠的区域,尺寸为 ( P − S ) ∗ P (P-S)*P (PS)P,帮助保护更好的局部区域信息。

按理来说,步长越小,性能越好,但是随着减小S,也会增大计算代价。

Patch Embedding

本文使用可训练的线性投影将矢量化的patches嵌入一个潜在的D维空间。

一个可学习的位置嵌入被加入到patch embedding中来保持位置信息,其操作如下所示:

请添加图片描述

其中, E ∈ R ( P 2 ⋅ C ) ∗ D E\in R^{(P^2\cdot C)*D} ER(P2C)D E p o s ∈ R N ∗ D E_{pos}\in R^{N*D} EposRND

Transformer encoder包含L个多头自注意力(MSA)和MLP模块。

单层的操作如下所示:

请添加图片描述

其中, L N ( ⋅ ) LN(\cdot) LN()是层归一化。ViT将最后一层的第一个token Z L 0 Z_L^0 ZL0作为全局特征并且把它送入到一个分类器的头部来获得最终的分类结果而没有考虑剩下token中的潜在信息

TransFG Architecture

pure ViT可以直接用于FGVC当中,但是没有很好地捕获FGVC所需的本地信息。为此,本文提出了部分选择模块PSM,并应用对比学习来扩大相似子类别之间的表示距离。

请添加图片描述

Part Selection Module

假设模型有K个自注意力头并且设送入最后一层的隐藏的特征是 z L − 1 = [ z L − 1 0 , z L − 1 1 , . . . , z L − 1 N ] z_{L-1}=[z_{L-1}^0,z_{L-1}^1,...,z_{L-1}^N] zL1=[zL10,zL11,...,zL1N]

其中,前几层的注意力权重可以写为:

请添加图片描述

可见,每个头的注意力都是一个向量。

先前的工作表明,原始的注意力权重不一定对应于输入token的相对重要性,特别是对模型的较高层来说,因为缺乏嵌入token的可识别性。

因此,我们考虑聚合所有先前层的注意力权重。具体来说,我们递归地将矩阵乘法应用于所有层:

请添加图片描述

其捕捉了信息是如何从输入层传播到更高的嵌入层的。

相比于单一层的原始注意力权重 a L − 1 a_{L-1} aL1,这个矩阵扮演了一个更好的选择来选取有区分度的区域。

我们之后选择关于 a f i n a l a_{final} afinal中K个不同的注意力头的最大值 A 1 , A 2 , . . . , A K A_1,A_2,...,A_K A1,A2,...,AK的索引。这些位置被用作我们模型的索引来提取 z L − 1 z_{L-1} zL1中相关的索引。

最终,我们连接这些选择的tokens并标注为:
请添加图片描述

我们不仅保持全局信息,同时也强迫了最后一个Transformer Layer关注微小的不同。

为了估计多头注意力关注不同的有区分度的区域,我们加入了duplicate loss来限制选取相同的区域
请添加图片描述

Constrastive feature learning

我们仍然采用PSM的第一个token来进行分类。一个简单的交叉熵损失不足以完全监督这个特征的学习,因为子类之间的不同是比较小的。

于是,我们采用对比损失以最小化不同标签对应的分类token的相似性并且最大化相同标签对应的分类token之间的相似性。

为了防止损失轻易被简单的负样本支配,我们引入了一个常数间隔 α \alpha α,意味着只有负样本对的相似性比 α \alpha α大时才会对损失有贡献。

请添加图片描述

意思是,样本标签不一样的两个样本往往对应的特征就该是极度不相似的,这样的简单负样本会很大程度上影响模型。

最终的损失函数由三部分组成:

请添加图片描述

ViT-FOD:A Vision Transformer based Fine-grained Object Discriminator

Abstract

目前一些基于ViT的方法被提出,这些方法是明显优于现有的基于CNN的方法的。

然而,将ViT直接应用于FGVC有一些限制:

  1. ViT需要将图像分割为小块并计算每一对的注意力,这可能会导致大量冗余计算,并且在处理具有复杂背景和小对象的细粒度图像时性能不令人满意;
  2. 标准ViT仅仅利用最后一层的类token进行分类,这不足以提取全面的细粒度信息。

为了解决上述两项问题,本文基于细粒度对象鉴别器提出了一种新的ViT,简称为ViT-FOD。

具体来说,出了ViT的主干之外,它还引入了三个新的组件,分别是Attention Patch Combination(APC)、Critical Regions Filter(CRF)以及Complementary Tokens Integration(CTI)。

其中,APC从两幅图像中分割出信息块来生成一幅新图像,减少冗余计算。CRF强调对于具有区分度区域的token,以产生用于细微特征学习的新的类别token。为了提取全面的信息,CTI集成了由不同ViT层中的类别token捕获的补充信息。

Introduction

基于CNN的方法缺乏适当的手段来建立这些区域之间的关系并将它们集成到一个统一的概念中,而自注意力机制是解决这一问题的方法。

目前有这几篇论文做了研究,取得了初步的成功:

  1. Ju He, Jie-Neng Chen, Shuai Liu, Adam Kortylewski, Cheng Yang, Yutong Bai,Changhu Wang, and Alan Yuille. 2022. TransFG: A Transformer Architecturefor Fine-grained Recognition. InProceedings of the AAAI Conference on ArtificialIntelligence
  2. Yunqing Hu, Xuan Jin, Yin Zhang, Haiwen Hong, Jingfeng Zhang, Yuan He,and Hui Xue. 2021. RAMS-Trans: Recurrent Attention Multi-scale Transformerfor Fine-grained Image Recognition. InProceedings of the ACM InternationalConference on Multimedia. 4239–4248.
  3. Xinda Liu, Lili Wang, and Xiaoguang Han. 2021. Transformer with Peak Sup-pression and Knowledge Guidance for Fine-grained Image Recognition.arXivpreprint arXiv:2107.06538(2021).
  4. Jun Wang, Xiaohan Yu, and Yongsheng Gao. 2021. Feature Fusion Vision Trans-former for Fine-grained Visual Categorization.arXiv preprint arXiv:2107.02341(2021).

仍然有一些问题需要考虑:
1)标准的ViT需要将图像分割为小块作为输入,然后每层中的多头自注意力模块(MSA)获得任意两个小块之间的关系。然而,对于精细的图像来说,许多样本包含复杂的背景且一些物体也可能相对较小,于是用ViT进行处理事,不可避免的会产生大量无用的计算,甚至还会引入噪声

请添加图片描述

大量的草地块对ViT进行的分类没有什么帮助。

2)ViT使用预先定义的类token进行预测。在标准的ViT模型中,类token和每个图像块一样在MSA中被处理,只有最后一层是被拿出来分类的。从某种角度看,类token是在自注意力的方式下基于所有图像块获得的,这可能不利于它进一步专注于一些关键的、细微的区域。从另一个角度来看,根据本文的实验,来自不同层次的类标记可以提取针对不同信息的特征,并且它们是互补的。因此,仅仅用最终的类标记不足与充分利用ViT的特征提取能力。

本文给出了三个改进模块:

  1. APC将两幅图像分解成小块,并将其中有信息的图像拼接在一起,生成新图像。这样,它通过用另一幅图像的信息部分替换响应的区域以减少输入图像中背景的影响;
  2. CRF以较低的计算成本,强调了对应有区分度区域对应的token以生成一个新的类token;
  3. CTI基于多隔层的类token队对象进行分类以捕获不同层之间的互补的信息。

Method

请添加图片描述

Complementary Tokens Integration

图像 I I I被分割为 H × W H\times W H×W个patches x i ∈ R P × P × C , i ∈ { 1 , . . . , N } x^i\in R^{P\times P\times C},i\in\{1,...,N\} xiRP×P×C,i{1,...,N},P是每个patch的size,C是图像的通道数, N = H × W N=H\times W N=H×W是patch的数量。

一个线性嵌入层(linear embedding layer)被用来映射每个patch为一个token。此外,一个可学习的class token x c l s x_{cls} xcls被引入来进行分类。

然后,位置编码被引入来维持空间信息。因此,输入第一个Transformer Layer的数据如下所示:
请添加图片描述

之后就是常规的ViT操作:
请添加图片描述

最后一层的class token被送入分类器进行分类以生成标签: y ^ = C L ( z L , c l s ) \hat{y}=C_L(z_{L,cls}) y^=CL(zL,cls)

为了信息互补,CTI将每一层的class token送入分类器,得到类别:

请添加图片描述

最终的决策由所有预测加权得到,相应的损失为:

请添加图片描述

Attention Patch Combination

首先介绍一下Self- Attention的基本运作机制:
请添加图片描述

我们记注意力图为 A l ∈ R ( N + 1 ) × ( N + 1 ) A_l\in R^{(N+1)\times(N+1)} AlR(N+1)×(N+1),对于多头注意力,其size为 R H h e a d ( N + 1 ) × ( N + 1 ) R^{H_{head}(N+1)\times(N+1)} RHhead(N+1)×(N+1)

我们增加一个识别矩阵E到这个注意力当中去,并且平均它们来得到每一层的注意力权重:
请添加图片描述

为了得到最终的注意力图,本文采用了attention rollout algorithm,此方法对所有层的注意力权重通过迭代应用一个矩阵乘法:

请添加图片描述

APC的目标是根据权重图将两幅图像的重要patches进行合并以消除冗余计算。此外,APC还可以作为一种数据扩充的方法来提高模型的泛化能力。

具体来说,我们在得到 w c l s ∈ R N w_{cls}\in R^N wclsRN之后(class token相对于其他tokens的注意力权重,从W中获得),我们将其reshape成一个二维,然后将它池化为pxp以得到 w c l s ′ ∈ R p × p w_{cls}'\in R^{p\times p} wclsRp×p:

请添加图片描述

根据权重图,我们可以得到相应的、以降序排列的序列号 i d x c l s idx_{cls} idxcls

对于两幅图 I A I_A IA I B I_B IB来说,生成掩码 M A M^A MA M B M^B MB按照如下方式:
请添加图片描述

然后我们用下面的操作得到一个新的图像:

请添加图片描述
圈乘表示逐元素相乘,圈加则表示用后面1的部分填充前面0的部分。

我来翻译一下:

  1. 得到一个从原图到final的注意力矩阵的class token部分,体现了每一个token对class token的一个吸引程度,吸引越大表明这部分越重要;
  2. 把这个局部attention vector二维+池化,相当于对原图划分了一手,按照重要程度对图像块标号,越重要号越靠前,其中的一半标为1,另一半标为0;
  3. 最后把A图的1图像块和B图的1图像块拼一起。

请添加图片描述

关于合成图的标签,本文给出了相应的计算方法。

这相当于一个复杂的数据增广。

我觉得这么做的道理是,原来模型会学习背景和背景之间的注意力关系,这是没有用的,所以希望模型能多学学关键部位之间的关系。

Critical Regions Filter

裁剪出有区分度的区域然后再训练模型是一个有意思的想法,这在RAMS-Trans中被采用,但是这种方法会显著增加计算成本。此外,矩形裁剪还有一个很大的限制。

为了解决上述问题,本文提出了一个简单且有效的关键区域过滤模块来选择有区分度的区域的token,并生成一个额外的类token来收集所选token的信息。

首先定义了一个阈值 η \eta η来控制所选择的token数量。

假设token根据 w c l s w_{cls} wcls中的大小降序排序,记第 η N \eta N ηN个token的权重为 w c l s ˉ \bar{w_{cls}} wclsˉ,于是我们选token的方法可以按照下面来:

请添加图片描述

最终,所选择的token和类token被连接作为CRF中的Transformer Layer的输入:

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/71054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从理论走向实战,阿里高工熬夜整理出的 Spring 源码速成笔记太香了

不知道大家面试的时候有没有被问到过 Spring 相关问题(循环依赖、事务、生命周期、传播特性、IOC、AOP、设计模式、源码)?反正我这个小学弟前段时间就来私信我说自己面试挂在了 Spring 这一块。(原谅我不厚道地笑了,如…

毕设选题推荐基于python的django框架的自媒体社推广平台系统

💖🔥作者主页:计算机毕设老哥🔥 💖 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 Java实战项目专栏 Python实…

安卓APP源码和设计报告——运动健身教学

实 验 报 告 课程名称 实验名称 指导教师 专业 班级 学号 姓名 目 录 一、设计背景31. 需求分析32. 课题研究的目的和意义3二、系统需求分析与开发环境31. 系统功能需求32.系统界面需求43.开发环境4三、系统设计4四、系统测试51.脑模拟器测试6五、总结与展望6六、重要…

YoloV7目标检测(Pytorch版)【详解】

文章目录一、网络结构1、总体网络结构(backbone)2、主干网络介绍(backbone)2.1 多分支模块堆叠2.2 下采样网络结构2.3 整个backbone代码3、FPN特征金字塔二、预测结果的解码一、网络结构 1、总体网络结构(backbone&am…

【组件开发实践】云巧流程组件对接实践

1. 用户需求 假设A系统有如下员工请假审批流场景: 员工请假小于等于3天,只需主管直接审批;大于3天需要主管先审批,审批通过后再由二级主管进行审批。当员工请假审批流节后后,需要通知A系统进行业务处理(例…

Tomcat的IO模型

Tomcat支持一下几种IO模型: 支持的IO模型 特点 BIO 同步阻塞式IO,每一个请求都会创建一个线程,对性能开销大,不适合高并发场景。 NIO 同步非阻塞式IO,基于多路复用Selector监测连接状态通知线程处理,…

<C++>多态

文章目录1. 概念2. 多态的定义和实现2.1 多态的构成条件2.2 虚函数2.3 虚函数的重写2.4 虚函数重写的两个例外:2.5 C11 override和final2.6 重载、覆盖(重写)、隐藏(重定义)的对比3. 抽象类3.1 概念3.2 接口继承和实现继承3. 多态的原理3.1 虚函数表3.2 多态的原理3…

S2SH小区物业管理系统计算机专业毕业论文java毕业设计网站

💖💖更多项目资源,最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《S2SH小区物业管理系统》该项目采用技术:jsp struts2springhibernatecssjs等相关技术,项目含有源码、文档、配套开发软件…

java EE初阶 — wait 和 notify

文章目录1.wait 和 notify1.1 wait()方法1.2 notify()方法1.3 notifyAll()方法1.wait 和 notify 线程最大的问题是抢占式指向,随机调度。而写代码的时候,确定的东西会比较好。 于是就有程序猿发明了一些办法,来控制线程之间的执行顺序。 虽…

火山引擎 RTC 助力抖音百万并发“云侃球”

动手点关注干货不迷路1. 背景及技术挑战从电视看直播到手机电脑看直播,直播技术的发展让观众可以随时、随地观看自己喜欢的比赛,并且在看比赛时通过发送表情、发文字进行互动。但表情、文字承载的信息量较小、沟通效率低,我们无法像线下一起看…

一大波节日来袭,App Store节日营销请注意!

11 月已经过去,在过去的 11 月里,我们经历了万圣节、双 11、世界杯、感恩节、黑色星期五等非常重要的营销节点。 在新的 12 月,我们将迎来世界杯闭幕、双12、平安夜、圣诞节等重要营销机遇。在未来,我们还会迎来新春营销的重要机…

图形API学习工程(29):解决在shader文件中使用include的问题

工程GIT地址:https://gitee.com/yaksue/yaksue-graphics 无用的前言 看了下提交记录,这个工程上次更新已经是一年以前了。最近想想,还是应该回来再继续学学,暂且不论是否对工作有帮助,我在这个工程上获得的愉悦感相比…

Excel 是您最容易被忽视的设计工具 设计师对世界排名第一的电子表格工具的看法——如何构建信息图表、仪表板、演示文稿等

人们对 Excel 有很多误解。许多人认为它不过是处理临时预算的电子表格工具。或者它非常适合处理数据,但您需要像 PowerPoint 这样的单独工具才能很好地显示它。 这些误解限制了我们使用 Excel 的方式。 但 Excel 的功能远不止于此,它所需要的只是了解一些鲜为人知的功能。我…

JAVA SCRIPT设计模式--创建型设计模式之工厂方法(3)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能,所以不可能像C,JAVA等面向对象语言一样严谨,大部分程序都附上了JAVA SCRIPT代码,代码只是实现了设计模式的主体功能,不代…

机器学习笔记之配分函数(三)对比散度

机器学习笔记之配分函数——对比散度引言回顾:随机最大似然求解模型参数的过程随机最大似然的缺陷吉布斯采样的缺陷与对比散度思想对比散度名称的由来从KL\mathcal K\mathcal LKL散度的角度描述极大似然估计对比散度的本质引言 上一节介绍了随机最大似然(Stochasti…

第十四届蓝桥杯集训——JavaC组第四篇——ASCII码表与Scanner扫描器

第十四届蓝桥杯集训——JavaC组第四篇——ASCII码表与Scanner扫描器 目录 第十四届蓝桥杯集训——JavaC组第四篇——ASCII码表与Scanner扫描器 ASCII码表 Scanner扫描器 1、Scanner含义 2、使用方法: next和nextLine的区别 next: nextLine&#…

微服务框架 SpringCloud微服务架构 23 搜索结果处理 23.2 分页

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构23 搜索结果处理23.2 分页23.2.1 分页23.2.2 深度分页问题23.2.3 深度分页…

Zookeeper常用命令大全之四字监控命令

文章目录四字监控命令0. 官方文档1. conf命令2. cons命令3. crst命令4. dump命令5. envi命令6. ruok命令7. stat命令8. srst命令9. wchs命令10. wchc命令(一般不用)11. wchp命令(一般不用)12. mntr命令四字监控命令 zookeeper支持某些特定的四字命令与其的交互。它们大多是查询…

自媒体短视频,如何起一个让人一看就记住的昵称?看一眼就知道你的定位

上一篇我们说了头像如何设置更吸引人,今天上午在我赢且力手小禾呈序里聊了一个好听好记的昵称应该是怎样的? 这是文字版,大家可以看一看。 昵称起名的方式无非几种: 职业加昵称,昵称加地点,昵称加领域&a…

全球数据集大全之mavenanalytics学习分析世界杯数据集

mavenanalytics数据集平台介绍 探索和下载由 Maven 讲师精心挑选的示例数据集。练习将您的数据分析和可视化技能应用于现实世界的数据,从航班延误和电影收视率到鲨鱼袭击和不明飞行物目击事件。 平台效果 是否支持下载 可以免费下载 https://www.mavenanalytics.io/data-p…