论文阅读:一种通过降低噪声和增强判别信息实现细粒度分类的视觉转换器

news2024/11/25 20:31:16

论文标题: A vision transformer for fine-grained classification by reducing noise and enhancing discriminative information
翻译: 一种通过降低噪声和增强判别信息实现细粒度分类的视觉转换器

摘要

最近,已经提出了几种基于Vision Transformer(ViT)的方法用于细粒度视觉分类(FGVC)。这些方法明显超过了现有的基于卷积神经网络(CNN)的方法,展示了ViT在FGVC任务中的有效性。然而,在将ViT直接应用于FGVC时存在一些限制。首先,ViT需要将图像分割成补丁并计算每对补丁的注意力,这可能导致在训练阶段产生大量噪音计算,并且在处理具有复杂背景和小物体的细粒度图像时性能不理想。其次,对于FGVC,补充信息很重要,但标准的ViT通过在最后一层使用类别标记进行分类,这不足以在不同层次提取全面的细粒度信息。第三,类别标记以相同的方式融合所有补丁的信息,换句话说,类别标记平等地对待每个补丁。然而,判别性部分应该更为关键。

为了解决这些问题,我们提出了ACC-ViT,包括三个新颖的组件,即Attention Patch Combination(APC)、Critical Regions Filter(CRF)和Complementary Tokens Integration(CTI)。其中,APC从两个图像中提取信息丰富的补丁以生成新图像,以减轻噪音计算并加强图像之间的差异。CRF强调与判别性区域相对应的标记,以生成用于微妙特征学习的新类别标记。为了提取全面的信息,CTI集成了由不同ViT层中的类别标记捕获的互补信息。我们在四个广泛使用的数据集上进行了全面的实验证明,结果表明ACC-ViT可以取得竞争性的性能。源代码可在https://github.com/Hector0426/fine-grained-image-classification-with-vit 上找到。

介绍

细粒度视觉分类(Fine-Grained Visual Classification, FGVC)旨在识别从属类别,如鸟类类别[1,2]和犬种[3]。

由于类内变化大,类间变化小,FGVC更具挑战性。现有的方法大多采用基于位置的特征提取范式,重点关注细微但具有区别性的部分。特别是随着深度卷积神经网络(CNN)的发展,取得了重大进展。

然而,这些基于cnn的方法正逐渐进入停滞期。
其中一个主要原因可能是基于CNN的模型自然适合于发现空间上的判别区域,但缺乏适当的方法来建立这些区域之间的关系并将它们整合成一个统一的概念。自我注意机制是一种解决这个问题。受此启发,视觉转换器(Vision Transformer, ViT)从自然语言处理引入计算机视觉,引起了广泛关注。最近,一些研究尝试将ViT应用于FGVC并取得突破。

这些主要的基于ViT的尝试大大超过了现有的基于卷积的方法,证明了ViT在FGVC中的优越性。然而,在将ViT应用于此任务时,仍有一些问题需要进一步考虑。
(1)标准的ViT模型需要将图像分割成小块作为输入,然后得到每两个小块之间的关系。然而,对于细粒度的图像,许多样本包含复杂的背景,并且一些对象也可能相对较小。如图1所示,少数补丁包含目标,大部分补丁为背景。之间的计算背景补丁对于分类对象所属的类别是无用的。在对此类图像进行处理时,不可避免地会产生大量无用的计算,同时也会引入噪声。虽然这些噪声对差异显著的一般类别影响不大,但由于不同类别的背景相似,同一类别之间的背景差异较大,背景和噪声的计算会加剧细粒度类别之间的混淆。从这个角度来看,对于细粒度图像,可以改进标准ViT中输入图像的处理。
(2)作为一个独特的特征,ViT利用预定义的类令牌进行预测。在标准的ViT模型中,类令牌的处理与所有层的每个图像patch相同,并且只使用最后一层的类令牌进行分类。一方面,在自关注方式下,类令牌是基于所有patch获得的,不利于关注对细粒度类别识别很重要的关键微妙区域。从另一个角度来看,不同层的类令牌可以提取出针对不同信息的特征,它们之间也是互补的。例如,中间层的类令牌侧重于对象的更多补丁,而深层的类令牌则侧重于具有最多判别信息的令牌。因此,仅取最终的类令牌不足以充分利用ViT的特征提取能力。受上述分析的启发,我们提出了一种用于FGVC任务的新型ACC-ViT。除了ViT主干,它还包含三个模块,即注意补丁组合(APC)、互补令牌集成(CTI)和关键区域过滤(CRF)。具体来说,APC将两幅图像分解成小块,并将信息丰富的图像拼接在一起生成新图像。这样,它通过用另一图像的信息部分替换相应的区域来减少输入图像中背景的影响。同时,ViT可以从图像对之间的差异中强化学习能力。在某种程度上,APC可以看作是一种更适合于变压器的数据增强方法,因为变压器不像cnn那样对对象的全局结构敏感。CTI根据来自多个层的类令牌对对象进行分类,而不是只对最后一个层进行分类,以整合从不同层捕获的互补信息。CRF强调与区别区域对应的令牌,生成新的类令牌。实验表明,所提出的ACC-ViT在多个广泛使用的细粒度图像数据集上都能取得具有竞争力的分类精度。

本文的主要贡献总结如下:

  1. 我们分析了直接将ViT应用于FGVC的局限性,并提出了一个新的框架,该框架可以仅使用图像标签进行端到端训练。
  2. 我们提出了一种新颖的细心贴片组合模块,它可以被视为一种更适合于ViT的新颖的数据增强方法。它减少了训练阶段噪声计算的影响,并通过增强图像对之间的差异显著提高了性能。
  3. 为了利用判别性和综合性信息,我们提出了一个关键区域过滤模块来显式增强模型对判别性部分的学习,并提出了一个互补令牌集成模块来集成来自不同层的类令牌以进行互补细粒度特征提取。
  4. 我们对四种广泛使用的细粒度图像数据集进行了广泛的实验,并进行了全面的分析。结果表明,所提出的方法能够达到具有竞争力的性能

相关工作

方法

ACC-ViT的总体框架如图所示。除了ViT主干,ACC-ViT还有三个主要模块,即注意力补丁组合(APC)、互补令牌集成(CTI)和关键区域过滤(CRF)。其中,APC选择信息区域形成新图像。CTI集成来自不同层的类令牌,以获得互补的信息。此外,将高度关注的令牌发送给CRF模块,以生成强调临界区域的新类令牌。
在这里插入图片描述
ACC-ViT的整体框架。除了以Vision Transformer为主干之外,整个框架由三个模块组成,即APC、CTI和CRF。在主干之后,图像通过CTI在几个层次上进行分类,CRF选择了用于分类的判别性标记。然后,APC基于注意力组合输入图像以生成新图像,这些新图像参与接下来的训练过程。整个框架的主要流程如下:
主干(Backbone):
使用Vision Transformer作为主干网络。该主干网络负责对输入图像进行特征提取。
Attention Patch Combination(APC)模块:
APC模块基于注意力机制,选择了信息丰富的图像补丁并将它们组合,生成新的输入图像。这些新图像将参与后续的训练。
Complementary Tokens Integration(CTI)模块:
CTI模块在主干网络之后,负责在多个层次上对图像进行分类。它整合来自不同层的类别标记,以获取互补信息。
Critical Regions Filter(CRF)模块:
CRF模块在CTI之后,用于选择具有判别性的标记以进行分类。它引入了一个额外的类别标记,用于捕获所选标记的信息。
整体训练流程:
输入图像首先通过主干进行特征提取。
然后,CTI模块在不同层次上对图像进行分类。
CRF模块选择判别性标记进行分类,引入额外的类别标记。
最后,APC模块基于注意力机制生成新的输入图像,这些图像将参与下一轮的训练。
整个框架通过这三个模块的协同工作,旨在提高模型对输入图像的特征提取、分类和判别性区域选择的能力。

关于这些模块的详细信息将在以下章节中描述

CTI 互补标记整合

  • 一个图像𝐼首先分为大小为 𝑃×𝑃×𝐶 的补丁𝑥𝑖,其中 𝑖 ∈ {1, …, 𝑁},𝑃 是每个补丁的大小,𝐶 是图像的通道数,𝑁 是补丁的数量。

  • 对每个补丁应用线性嵌入层,将其映射到一个令牌。引入一个可学习的类别令牌 𝑥𝑐𝑙𝑠 用于分类,同时添加位置嵌入以保留空间信息。因此,第一个Transformer层的输入如下:
    在这里插入图片描述

  • 其中,E为patch嵌入投影,𝐷为令牌维数,E𝑝𝑜𝑠为位置嵌入。

  • 假设有 𝐿 个Transformer层,每一层由一个多头自注意力(MSA)障碍和多层感知(MLP)障碍。每一层的输入是前一层的输出。

  • CTI的核心思想

    • 在标准的ViT模型中,将最后一层的类令牌输入到分类器中生成预测。
    • 但是,上述方案忽略了在先前层中学到的类别标记,而它们也是具有辨别力并包含一些最终类别标记丢失的信息。这意味着不同层可以相互补充,这在我们的实验证明中也得到了验证。受此启发,我们提出利用 𝑘 层,而不仅仅是最后一层,以获得更全面的细粒度信息。
    • 换句话说,每个所选层的类别标记被发送到一个分类器,生成一个预测的标签向量。

APC 注意力补丁组合

Attention Patch Combination (APC) 模块是 ACC-ViT 框架中的一个关键模块,旨在通过选择信息丰富的补丁并根据权重图进行组合,以减少无关计算和强化模型的学习能力。以下是对 APC 模块的详细说明:

  • Self-Attention计算:

    • Transformer 使用多头自注意力来计算每对补丁之间的关系。然而,对于分类对象属于哪个类别的任务,计算背景补丁之间的关系是不必要的,因为这会引入很多噪音计算。为了减少这种噪音,APC 模块被设计为从两个图像中选择信息丰富的补丁并将它们组合成一个新的输入。
  • 自注意力权重的处理

    • 对于一个 Transformer 层的输入 z,自注意力计算如下:
    • 𝑄=𝑧𝑊𝑄,𝐾=𝑧𝑊𝐾,𝑉=𝑧𝑊𝑉 𝑊𝑄,𝑊𝐾,和𝑊𝑉权重矩阵
    • 然后,获得注意力,通过将单位矩阵添加到注意力中,并取平均,得到每个层的注意力权重。
  • 权重图的生成

    • 采用注意力展开算法,该算法递归地将所有层的注意力权重应用到一个权重图中,得到最终权重图。
  • APC 模块的操作:

    • APC 模块的目标是根据权重图组合两个图像的重要补丁,以消除噪音计算。
    • 此外,APC 还可以通过处理图像对之间的差异来增强模型的学习能力。
    • 在获得了类别标记的注意力权重 Wcls(类别标记对其他令牌的注意力)后,将其重塑为 2D,并通过平均池化得到W’cls
    • 根据权重图,可以获取相应的按降序排列的序列号idx
    • 对于具有标签 yA和yB的两个图像IA和IB,生成掩码MA和MB
    • 然后生成新的图像I和标签y
    • 将这两个掩模放大到与原始图像相同的大小,然后乘以原始图像。
    • 然后,按照权重顺序将𝐼B中各个变量的变量变量填充到𝐼A中。
    • 至于标签,通过对补丁的权重求和来计算相应的权重。

CRF 关键区域筛选器

在ViT模型中,类别标记对图像中的每个标记都平等地对待,并整合图像的整体信息。然而,对于细粒度图像,图像中物体的判别区域更为关键,应该得到强调。因此,裁剪出判别性区域并进行重新训练是强调细粒度图像中微妙信息的有效方法。然而,矩形裁剪存在明显的限制问题。裁剪的矩形仍然会有背景,因为很明显物体(如鸟或狗)不会呈现为完美的矩形。

为了解决这个问题,提出了一个简单但有效的Critical Regions Filter(CRF)模块,以选择判别性区域的标记并生成额外的类别标记,以从所选标记中收集信息。与裁剪方案相比,CRF允许更灵活地选择补丁,而不受限于矩形裁剪。

具体而言,为了聚焦于判别性区域,定义一个阈值 𝜂(0 < 𝜂 ≤ 1)来控制要选择的标记数量,即选择 𝜂 ∗ 𝑁 个标记。假设根据 𝑤𝑐𝑙𝑠 中的权重按降序排列的标记,并且第 𝜂 ∗ 𝑁 个标记的权重为 𝑤̄𝑐𝑙𝑠,可以使用以下操作得到所选标记的掩码 𝑀𝑐𝑟𝑖:
在这里插入图片描述
其中𝑤𝑐𝑙𝑠,𝑖是𝑤𝑐𝑙𝑠中的第𝑖个注意力值。
最后,所选标记和类别标记被连接成为CRF中Transformer层的输入,即:
在这里插入图片描述
其中⊙表示相应位置的乘法,⊖是元素删除操作。此后,将𝑧𝑐𝑟𝑖送入额外的Transformer层,并将输出的类别标记进一步送入分类器进行预测,即得到预测结果。

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

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

相关文章

Linux 中用户与权限

1.添加用户 useradd 1&#xff09;创建用户 useradd 用户名 2&#xff09;设置用户密码 passwd 用户名 设置密码是便于连接用户时使用到&#xff0c;如我使用物理机链接该用户 ssh 用户名 ip 用户需要更改密码的话&#xff0c;使用 passwd 指令即可 3)查看用户信息 id 用…

【数据结构(六)】希尔排序、快速排序、归并排序、基数排序的代码实现(3)

文章目录 1. 希尔排序1.1. 简单插入排序存在的问题1.2. 相关概念1.3. 应用实例1.3.1. 交换法1.3.1.1. 逐步推导实现方式1.3.1.2. 通用实现方式1.3.1.3. 计算时间复杂度 1.3.2. 移动法 2. 快速排序2.1. 相关概念2.2. 实例应用2.2.1. 思路分析2.2.2. 代码实现 2.3. 计算快速排序的…

Spatial Data Analysis(三):点模式分析

Spatial Data Analysis&#xff08;三&#xff09;&#xff1a;点模式分析 ---- 1853年伦敦霍乱爆发 在此示例中&#xff0c;我将演示如何使用 John Snow 博士的经典霍乱地图在 Python 中执行 KDE 分析和距离函数。 感谢 Robin Wilson 将所有数据数字化并将其转换为友好的 G…

(04730)电路分析基础之电阻、电容及电感元件

04730电子技术基础 语雀&#xff08;完全笔记&#xff09; 电阻元件、电感元件和电容元件的概念、伏安关系&#xff0c;以及功率分析是我们以后分析电 路的基础知识。 电阻元件 电阻及其与温度的关系 电阻 电阻元件是对电流呈现阻碍作用的耗能元件&#xff0c;例如灯泡、…

基于STM32驱动的压力传感器实时监测系统

本文介绍了如何使用STM32驱动压力传感器进行实时监测。首先&#xff0c;我们会介绍压力传感器的工作原理和常见类型。然后&#xff0c;我们将介绍如何选择合适的STM32单片机和压力传感器组合。接下来&#xff0c;我们会详细讲解如何使用STM32驱动压力传感器进行数据采集和实时监…

根文件系统软件运行测试

一. 简介 前面几篇文章学习了制作一个可以在开发板上运行的&#xff0c;简单的根文件系统。 本文在上一篇文章学习的基础上进行的&#xff0c;文章地址如下&#xff1a; 完善根文件系统-CSDN博客 本文对根文件系统软件运行进行测试。 我们使用 Linux 的目的就是运行我们自…

vue3 setup语法糖 多条件搜索(带时间范围)

目录 前言&#xff1a; setup介绍&#xff1a; setup用法&#xff1a; 介绍&#xff1a; 前言&#xff1a; 不管哪个后台管理中都会用到对条件搜索带有时间范围的也不少见接下来就跟着我步入vue的多条件搜索&#xff08;带时间范围&#xff09; 在 Vue 3 中&#xff0c;你…

[JavaScript前端开发及实例教程]计算器井字棋游戏的实现

计算器&#xff08;网页内实现效果&#xff09; HTML部分 <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>My Calculator&l…

Unity3D对CSV文件操作(创建、读取、写入、修改)

系列文章目录 Unity工具 文章目录 系列文章目录前言一、Csv是什么&#xff1f;二、创建csv文件2-1、构建表数据2-2、创建表方法2-3、完整的脚本&#xff08;第一种方式&#xff09;2-4、运行结果2-5、完整的脚本&#xff08;第二种方式&#xff09;2-6、运行结果2-7、想用哪种…

基于STM32 HAL库的光电传感器驱动程序实例

本文将使用STM32 HAL库编写一个光电传感器的驱动程序示例。首先&#xff0c;我们会介绍光电传感器的工作原理和应用场景。然后&#xff0c;我们将讲解如何选择合适的STM32芯片和光电传感器组合。接下来&#xff0c;我们会详细介绍使用STM32 HAL库编写光电传感器驱动程序的基本步…

AVFormatContext封装层:理论与实战

文章目录 前言一、封装格式简介1、FFmpeg 中的封装格式2、查看 FFmpeg 支持的封装格式 二、API 介绍三、 实战 1&#xff1a;解封装1、原理讲解2、示例源码 13、运行结果 14、示例源码 25、运行结果 2 三、 实战 2&#xff1a;转封装1、原理讲解2、示例源码3、运行结果 前言 A…

Docker中部署ElasticSearch 和Kibana,用脚本实现对数据库资源的未授权访问

图未保存&#xff0c;不过文章当中的某一步骤可能会帮助到您&#xff0c;那么&#xff1a;感恩&#xff01; 1、docker中拉取镜像 #拉取镜像 docker pull elasticsearch:7.7.0#启动镜像 docker run --name elasticsearch -d -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -e…

删除误提交的 git commit

背景描述 某次的意外 commit 中误将密码写到代码中并且 push 到了 remote repo 里面, 本文将围绕这个场景讨论如何弥补. 模拟误提交操作 在 Gitee 创建一个新的 Repo, clone 到本地 git clone https://gitee.com/lpwm/myrepo.git创建两个文件, commit 后 push 到 remote 作…

JSON 语法详解:轻松掌握数据结构(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

CSS中 设置文字下划线 的几种方法

在网页设计和开发中&#xff0c;我们经常需要对文字进行样式设置&#xff0c;包括字体,颜色&#xff0c;大小等&#xff0c;其中&#xff0c;设置文字下划线是一种常见需求 一 、CSS种使用 text-decoration 属性来设置文字的装饰效果&#xff0c;包括下划线。 常用的取值&…

JFrog----基于Docker方式部署JFrog

文章目录 1 下载镜像2 创建数据挂载目录3 启动 JFrog服务4 浏览器登录5 重置密码6 设置 license7 设置 Base URL8 设置代理9 选择仓库类型10 预览11 查看结果 1 下载镜像 免费版 docker pull docker.bintray.io/jfrog/artifactory-oss体验版&#xff1a; docker pull releas…

【网络奇缘】- 如何自己动手做一个五类|以太网|RJ45|网络电缆

​ ​ &#x1f308;个人主页: Aileen_0v0&#x1f525;系列专栏: 一见倾心,再见倾城 --- 计算机网络~&#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 本篇文章关于计算机网络的动手小实验---如何自己动手做一个网线&#xff0c; 也是为后面的物理层学习进…

在cmd下查看当前python的版本

在cmd窗口下运行python --version或者py --version&#xff0c;可以查看当前python的版本。例如&#xff1a;

OpenAI在中国,申请GPT-6、GPT-7商标

根据最新商标信息显示&#xff0c;OpenAI已经在中国提交了GPT-6和GPT-7的商标注册信息&#xff0c;分类是科学仪器和网站服务两大类。申请日期是今年的11月2日&#xff0c;目前处于审核状态。 该申请由知识产权代理公司完成&#xff0c;但申请人的地址正是OpenAI在美国公司的地…

LeetCode437.路径总和III

看完题目我就拿直接用递归写了如下代码&#xff1a; class Solution {private int ans;public int pathSum(TreeNode root, int targetSum) {ans 0;dfs(root, targetSum, 0);return ans;}public void dfs(TreeNode root, int targetSum, int sum){if(root null)return;sum r…