vit细粒度图像分类(四)BT-Net学习笔记

news2025/4/15 12:24:55

1.摘要

为了改进在细粒度图像分类过程中类别差异难以提取的问题,本文提出了一种基于 Transformer 双线性网络的细粒度网络分类优化方法(BT-Net)。
首先,将输入图像通过不同卷积处理成不同长度的二维向量,然后,构建重复次数不同的编码器,最后,双网络分支将图像表示为来自两个 Transformer 的特征集合,得到更加丰富的互补特征信息,从而提高细粒度分类的精度。
实验结果表明,BT-Net 在 CUB-200-2011、Cars196 和 Stanford Dogs 数据集中,分类准确率分别获得了 89.4%,92.5%,94.8%,优于已有的双线性卷积神经网络。

2.问题

图像分类主要为了分别出不同类别的对象,如人和车。包括场景识别 [1] 、对象识别 [2] 。人脸识别 [3]等。而细粒度图像信噪比很低,区分度信息存在细微局部区域,例如车的品牌,鸟的品种。

2.1发现

细粒度图像分类根据网络训练是否需要人工额外的标注信息,分为强监督图像分类和弱监督图像
分类 [4] ,强监督图像分类算法需要图像类别标签和额 外 的 人 工 标 注 与 位 置 区 域 。 Wei 等 提 出Mask-CNN [5] 模 型 借 助 FCN(Fully ConvolutionalNetworks for Semantic Segmentation)学习部分分割模型,真实标记通过部位标注点得到部分区域的最小外接矩阵,但真实标记矩形框与获取信息存在差异,影响最终结果。
弱监督图像分类仅需要类别标签,舍弃人工标记的信息。Zhu 等人 [6] 提出基于卷积神经网络
(Convolution Neural Networks,CNN)注意力模型,没有强监督信息的指导下,两级注意力在很多情况下无法准确定位到有用区域。Lin 等 [7] 设计了一种双线性 卷 积 网 络 (Bilinear Convolution NeuralNetworks,B-CNN)模型,B-CNN 可看作 A 网络对图像进行局部区域的定位,B 网络对定位到的局部区域进行特征提取。A 和 B 网络之间发挥相互协调,相互互补的作用,模型在整个网络中完成了端到端的训练过程。

2.2发展

从 AlexNet [8] 广泛应用到图像分类,VGG [9] 、ResNet [10] 等卷积神经网络的发展,CNN 开始在计算机视觉等领域占主导地位。基于 CNNs 的框架能增加网络模块形式 [11] 、多种类连接方式 [12] ,复杂多样的卷积操作 [13] ,多种类特征融合 [14] ,基于视觉注意力 [15] 等方法应用于计算机视觉领域。虽然 CNN 的滤波器关注的是图像中部分像素,上述方法能一定程度上弥补 CNN 对图像的全局建模能力的不足,但是仍未获得较好的效果。Transformer 最开始因其强大的学习能力在自然语言处理(Natural Language Processing,NLP)领域被广泛应用 [16] ,研究人员逐渐将其扩展到计算机视觉任务 [17] 中。Wan 等 [18] 将图像进行下采样和像素聚类,将缺失的图像转化为表征序列作为输入补全像素。Carion 等 [17] 将 Transformer 整合为检测 pipeline中心构建块的目标检测框架,利用 Transformer 来进行物体检测和分割。Liu 等 [19] 通过 Transformer 的非局部相互作用以自我注意机制来捕捉更为细长结构和上下文信息进行自动驾驶车道标记检测。VisionTransformer [20] 利用全局注意力应用到全尺寸图像上。

2.3创新

Transformer 相比于 CNN 的优势在于对全局信息的把握更好,能弥补 CNN 对于图像全局依赖性
的不足,针对 CNN 对于细粒度图像局部区分细微差异可能定位不准和有效特征信息不能充分利用的问题,本文结合 B-CNN 信息互补的特点和Transformer 网络能提取全局信息的优势,设计并提出了双线性 Transformer 网络用于细粒度图像分类。本文的主要贡献如下:
1.提出了一种基于Transformer的双线性结构分类网络,利用了 Transformer 获取全局上下文信息
的优势。
2. 将不同分支 Transformer 的特征向量进行拼接,把不同通道的特征进行融合处理,以此来加强
双分支的空间联系,充分表达通道内特征信息,以获取更多的细粒度信息,最终提高识别率。
3.双线性Transformer网络应用到细粒度图像分类领域中,进一步来满足工业界和学术界研究需求与应用场景。
4.BT-Net 网络面对细粒度图像数据集中,在分类结果上均取得了不错的表现。

3.网络

3.1整体结构

本文提出的 BT-Net 使用的双线性 Transformer分支并行结合的组成方式来对细粒度图像进行分类,网络架构图如图 1 所示。

 从网络结构来说,就是并行的两个特征提取,因为两边的编码模块数目不同,则提取的特征会有所差异,编码模块多的提取的较为深层特征,编码模块少的提取较为浅层的特征。
就是两个位置编码的获取,从论文来看是没有差异的,只是因为编码模块数码不同,最后的结果就不同。

 

 对于图像数据格式[H,W,C]而言,输入图像先经过不同的卷积层,然后将其展平为二维图像,其中(H,W)为原始图像分辨率,C 为通道数,(P,P)是每个图像块的分辨率,
S=HW/P^2 是每个图像分成的总块数,再通过线性映射得到编码向量E^{i}\epsilon R^{1},i\epsilon {1,...,S}
 。计算公式为:

将编码向量输入 Transformer Encoder 编码器前,需要分别加入维度不同的位置编码向量 PE(PositionEmbedding) 与之前编码向量进行拼接。即E^{i}+ R^{1},i\epsilon {1,...,S}。P i 为加入的位置
编码。本文假设网络 B 映射后的向量比网络 A 的映射后的向量长度大。之后通过 Transformer Encoder层堆叠不同次数的编码器块 Block 层提取特征向量,将不同网络的特征向量进行融合送入到全连接层,最后得到最终的分类结果。 

3.2 Transformer Encoder

Transformer Encoder 编码器层会分别重复堆叠编码器块 Block 不同的次数以此让模型去关注不同
方面信息。如图 2 所示,Block 编码器块由归一化Layer Norm 层、多头注意力 Multi-Head Attention、正则化 Dropout 层和多层感知块 MLP Block 组成。而 MLP Block 是由全连接层、GELU 激活函数和正则化 Dropout 层组成,在 MLP Block 层中第一个全连接层会把输入节点的个数增加 4 倍,在下一个全连接层还原原节点个数。

BT-Net 的编码器 Encoder分别堆叠了12个Blocks和24个Blocks模块组成,然后把各个注意力的信息综合,有助于网络获得多更加丰富的特征信息,不仅可以减少信息的损失和防止梯度消失,而且能对同一层网络的输出进行一个标准化的处理。Transformer Encoder 层输出的维度与输入的维度保持不变,只需要分别提取出对应插入的用于分类的可训练的参数 class[token],然后在进行向量融合。向量融合是为了达到与不同空间维度特征交互的目的,以此得到图像的不同的更多的有效的特征。最后将得到的向量输入到 Linear全连接层得到最后的分类结果。

4.实验

4.1实验设置

4.1.1 数据集

本文实验部分采用常用的 3 个细粒度图像分类的数据集:CUB-200-2011 鸟类数据集, Cars196 汽
车数据集 [21] , Stanford Dogs 狗类数据集进行实验评估。

4.1.2  实验细节

本文算法 BT-Net 的提出是由基于开源的Pytorch 深 度 学 习 框 架 来 实 现 , 在 处 理 器Intel®Core™ i9-9900K CPU @ 3.60GHz × 16,TITAN RTX/PCIe/SSE2 上进行训练与测试。输入图片的大小归一化为 224×224,本文采用随机梯度下降(SGD)作为整体优化器和反向传播算法实现对整个网络模型的训练。为了防止出现过拟合的现象用增强数据的策略来提高性能,在训练阶段使用随机裁剪与随机翻转。本文初始学习速率设置为 0.001,动量因子为 0.9,权重衰减为 0.00005,最大迭代次数为 100,对所有的数据集设置的批次大小为 16。

4.2对比试验

4.3消融实验

 

 

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

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

相关文章

JVM内存问题排查

本文又名《对JVM一窍不通的我快速开始排查应用内存问题》。主要系统性地整理了排查思路,为大家遇到问题时提供全面的排查流程,不至于漏掉某些可能性误入歧途浪费时间。 基本原则 由于本文的定位是Cookbook,基本原则是让整个流程能够系统化规范化的同时将…

少儿编程:让孩子在数字世界中自由翱翔

在这个信息爆炸的时代,计算机和互联网已经成为我们生活中不可或缺的一部分。从智能手机到智能家居,从网络游戏到在线教育,数字技术已经渗透到我们生活的方方面面。因此,掌握编程技能,就像学习阅读和写作一样&#xff0…

RNN预测下一句文本简单示例

根据句子前半句的内容推理出后半部分的内容,这样的任务可以使用循环的方式来实现。 RNN(Recurrent Neural Network,循环神经网络)是一种用于处理序列数据的强大神经网络模型。与传统的前馈神经网络不同,RNN能够通过其…

深度推荐模型之DeepFM

一、FM 背景:主要解决大规模稀疏数据下的特征组合遇到的问题:1. 二阶特征参数数据呈指数增长 怎么做的:对每个特征引入大小为k的隐向量,两两特征的权重值通过计算对应特征的隐向量内积 而特征之间计算点积的复杂度原本为 实际应…

橘子学ES实战操作01之集群模式如何实现快照备份

我们知道ES中通过副本在一定意义上实现了数据的备份和高可用。但是我们说万一副本数据丢失了,不小心被rm -f了,你就说逆天不逆天吧,此时要实现数据真正意义上的备份就要使用到快照机制,来把数据持久化备份起来,万一数据…

CAD-autolisp(三)——文件、对话框

目录 一、文件操作1.1 写文件1.2 读文件 二、对话框DCL2.1 初识对话框2.2 常用对话框界面2.2.1 复选框、列表框2.2.2 下拉框2.2.3 文字输入框、单选点框 2.3 Lisp对dcl的驱动2.4 对话框按钮实现拾取2.5 对话框加载图片2.5.1 幻灯片图片制作2.5.1 代码部分 一、文件操作 1.1 写…

TCP 三次握手 四次挥手以及滑动窗口

TCP 三次握手 简介: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的 “ 连接” ,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。 TCP 可以…

CDSP认证:引领数据安全领域的权威之巅!

随着数据安全法和个人信息保护的施行,数据安全领域越来越受到重视。市场上涌现出众多数据安全相关的证书,而数据安全相关职位也成为了2023年最热门的职业之一。 💡对于想要入门数据安全领域的小伙伴,我强烈推荐CDSP认证&#xff0…

【笔试常见编程题02】字符串中找出连续最长的数字串、数组中出现次数超过一半的数字、计算糖果、进制转换

1. 字符串中找出连续最长的数字串 读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述 个测试输入包含1个测试用例,一个字符串str,长度不超过255。 输出描述 在一行内输出str中里连续最长的数字串。 示例 1 输入 abcd12345ed125s…

【前端】尚硅谷Node.js零基础视频教程笔记

文章目录 1.基础1.1. 基础命令1.2. 注意事项 2. Buffer(缓冲器)介绍与创建2.1 概念2.2 特点2.3 使用 3. fs模块(file system)3.1 文件写入3.2 文件读取 【前端目录贴】 参考视频: 尚硅谷Node.js零基础视频教程,nodejs新手到高手 1.基础 1.1.…

【MATLAB第92期】基于MATLAB的集成聚合多输入单输出回归预测方法(LSBoost、Bag)含自动优化超参数和特征敏感性分析功能

【MATLAB第92期】基于MATLAB的集成聚合多输入单输出回归预测方法(LSBoost、Bag)含自动优化超参数和特征敏感性分析功能 本文展示多种非常用多输入单输出回归预测模型效果。 注:每次运行数据训练集测试集为随机,故对比不严谨&…

搜维尔科技:【简报】元宇宙数字人赛道,《救食有道》!

在这个快速发展的数位时代里,本组相信透过制作融合虚拟人物 与 AI 智慧的创新宣传影片,定能为食物银行提高曝光率并让更多人 投身参与并落实减少食物浪费的行动,并与本组共同在生活中宣传食 物银行的理念 学校: 桃园市立中场商业高…

BTC的数据结构Merkle Tree和Hash pointer

比特币是一种基于区块链技术的加密数字货币,其底层数据结构被设计为分布式,去中心化的。它的核心数据结构是一个链式的区块,每个区块都包含了多笔交易记录和一个散列值。 比特币的底层数据结构使用了两个关键概念:hash pointer和…

【计算机网络】IP协议及动态路由算法

对应代码包传送门 IP协议及动态路由算法代码包及思科模拟器资料说明 相关文章 【计算机网络】中小型校园网构建与配置 【计算机网络】Socket通信编程与传输协议分析 【计算机网络】网络应用通信基本原理 目的: 1、掌握IP协议,IP分片,DH…

JCEF学习

JCEF重要概念 CEF CEF,全称Chromium Embedded Framework ,它是基于Google Chromium的开源项目,它的目标是能够向第三方程序添加WEB浏览器功能,以及可以使用HTML、CSS和JS渲染界面。 CEF框架是由Marshall Greenblatt 在 2008 年创…

vue项目如何实现运行完项目就跳转到浏览器

在package.json中的启动命令中添加--open参数可以实现在Vue项目编译后自动打开浏览器的功能。 通过这样的设置,在运行npm run dev时,Vue项目编译完成后会自动打开默认浏览器并加载应用程序。

【问题解决】java-word转pdf踩坑

问题情境: 项目中采用word转pdf,最开始使用的pdf相关的apache的pdfbox和itextpdf,后面发现对于有图片背景的word转pdf的情景,word中的背景图会直接占用位置,导致正文不会正确落在背景图上。 解决方案: 采…

计算机网络——虚拟局域网+交换机基本配置实验

1.实验题目 虚拟局域网交换机基本配置实验 2.实验目的 1.了解交换机的作用 2.熟悉交换机的基本配置方法 3.熟悉Packet Tracer 7.0交换机模拟软件的使用 4.掌握在交换机上划分局域网,并且使用局域网与端口连接,检测信号传输 3.实验任务 1.了解交换…

C 变量

目录 1. C变量 2. C变量定义 2.1 变量初始化 2.2 C中的变量声明 3. C中的左值(Lvalues)和右值(Rvalues) 1. C变量 在C语言中,变量可以根据其类型分为以下几种基本类型: 整型变量:用…

蓝桥小白赛4 乘飞机 抽屉原理 枚举

👨‍🏫 乘飞机 🐷 抽屉原理 import java.util.Scanner;public class Main {static int N 100010;static int[] a new int[N];public static void main(String[] args){Scanner sc new Scanner(System.in);int n sc.nextInt();int q s…