YOLO算法改进Backbone系列之:HAT-Net

news2024/12/24 2:17:49

本文旨在解决ViT中与多头自我关注(MHSA)相关的高计算/空间复杂性问题。为此,我们提出了分层多头自注意(H-MHSA),这是一种以分层方式计算自注意的新方法。具体来说,我们首先按照通常的方法将输入图像划分为多个斑块,每个斑块被视为一个标记。然后,提议的 H-MHSA 学习局部补丁内的标记关系,作为局部关系建模。然后,将小补丁合并成大补丁,H-MHSA 对合并后的少量标记进行全局依赖关系建模。最后,对局部和全局注意力特征进行汇总,以获得具有强大表征能力的特征。由于我们每一步只计算有限数量标记的注意力,因此计算负荷大大减少。因此,H-MHSA 可以在不牺牲细粒度信息的情况下,有效地模拟标记之间的全局关系。有了 H-MHSA 模块,我们构建了一个基于分层注意力的变换器网络系列,即 HAT-Net。为了证明 HAT-Net 在场景理解方面的优越性,我们在图像分类、语义分割、物体检测和实例分割等基本视觉任务上进行了大量实验。因此,HAT-Net 为视觉转换器提供了一个新的视角。

现有问题及解决方案:Transformer在NLP领域中以成为了处理长距离依赖关系的事实标准,但其依赖于自注意力机制来建模序列数据的全局关系。随着视觉Transformer的代表性工作ViT的出现,基于像素patch构建Transformer模型的方式已经成为了视觉Transformer的主流范式,但是由于视觉数据中patch序列长度依然较长,其所依赖的Self-Attention操作在实际应用中仍然面临着较高的计算量和空间复杂度的问题。

最近的一些工作主要在尝试通过各种手段来压缩序列长度从而提升视觉Transformer的计算效率,主要如下:

  • Local Attention:Swin Transformer中使用固定大小的窗口,并搭配Shift Window并多层堆叠从而模拟全局建模,这种手段仍然次优,因为其仍然延续着CNN的堆叠模拟长距离依赖的思路 Pooling
  • Attention:PVT对特征图下采样,从而缩小了序列长度。但是因为下采样了key和value,也因此丢失了局部细节,而且使用了固定尺寸的下采样比例,这使用的是具有与卷积核大小相同的步长的跨步卷积实现的;另外如果需要调整配置,就得需要重新训练
  • Channel Attention:CoaT计算了通道形式的注意力,这可能没有模拟全局特征依赖那么有效

针对MHSA提出了一种更加有效和灵活的变体—分层多头自注意力(Hierarchical Multi-Head Self-Attention,H-MHSA)。其通过将直接计算全局相似关系的MHSA拆解成了多个步骤,每步中具有不同粒度的短序列之间的相似性建模,从而既保留了细粒度信息,又保留了短序列计算的高效。而且H-MHSA涉及到缩短序列的操作都是无参数的,所以对于下游任务更加灵活,不需要因为调整而重新预训练。具体而言,H-MHSA中包含一下几个步骤:

  • 对于输入的query、key以及value对应的patch token,首先将它们进行分组,分成不重叠的数个grid
  • 在grid内的patch之间计算attention,从而捕获局部关系,产生更具判别性的局部表征。这里是基于残差形式
  • 将这些小patch合并,获得更大层级的patch token。这允许我们直接基于这些数量较少的粗粒度的token来模拟全局依赖关系。这里计算时,对k、v使用平均池化进行进行压缩处理。
  • 最后来自局部和全局层级的特征被集成,从而获得具有更加丰富粒度的特征
    在这里插入图片描述

下表总结了HAT-Net模型的不同配置列表
在这里插入图片描述

在YOLOv5项目中添加模型作为Backbone使用的教程:
(1)将YOLOv5项目的models/yolo.py修改parse_model函数以及BaseModel的_forward_once函数
在这里插入图片描述
在这里插入图片描述

(2)在models/backbone(新建)文件下新建HAT_Net.py,添加如下的代码:
在这里插入图片描述

(3)在models/yolo.py导入模型并在parse_model函数中修改如下(先导入文件):
在这里插入图片描述

(4)在model下面新建配置文件:yolov5_hatnet.yaml
在这里插入图片描述

(5)运行验证:在models/yolo.py文件指定–cfg参数为新建的yolov5_hatnet.yaml
在这里插入图片描述

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

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

相关文章

llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署

文章目录 简介支持的模型列表2. 添加自定义数据集3. lora 微调4. 大模型 lora 权重,部署问题 参考资料 简介 文章列表: llama-factory SFT系列教程 (一),大模型 API 部署与使用llama-factory SFT系列教程 (二),大模型在自定义数…

ClickHouse--18--argMin() 和argMax()函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 argMin() 和argMax()函数业务场景使用案例1.准备表和数据:业务场景一:查看salary 最高和最小的user业务场景二:根据更新时间获取…

一种基于OpenCV的图片倾斜矫正方法

需求描述: 对倾斜的图片进行矫正,返回倾斜角度和矫正后的图片。 解决方法: 1、各种角度点被投影到一个累加器阵列中,其中倾斜角度可以定义为在最大化对齐的搜索间隔内的投影角度。 2、以不同的角度旋转图像,并为每…

Chatgpt掘金之旅—有爱AI商业实战篇|编写代码业务|(十九)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 一、程序员使用 ChatGPT 进行编码搞副业 程序员不仅拥有将抽象概念转化为实际应用的能力,还通常具备强大的逻辑思维和问题解决能力。然而,许多程序员并…

宝塔面板安装软件 提示需要[xxxMB]内存 强制不能安装

解决方法: 第一步: 编辑修改/www/server/panel/class/下的文件panelPlugin.py vi /www/server/panel/class/panelPlugin.py注释以下判断的内容: ## 第二步: 重启宝塔面板,然后安装即可 bash bt 1

ROS 2边学边练(25)-- 将多个节点组合到一个进程

前言 在ROS 2中,将多个节点(Nodes)组合到一个单独的进程(Process)中通常指的是使用“Composable Nodes”的特性。这个特性允许你定义可复用的组件(Components),然后将这些组件加…

如何在MobaXterm上使用rz命令

1、首先输入命令和想下载的文件,如下图: 2、按住ctrl鼠标右键,选择如下选项: 上传命令是rz,选择Receive...... 下载命令是sz,选择Send...... 3、我这里是要把Linux上的文件下载到我的本地window磁盘&…

Django之rest_framework(三)

一、GenericAPIView的使用 rest_framework.generics.GenericAPIView 继承自APIVIew,主要增加了操作序列化器和数据库查询的方法,作用是为下面Mixin扩展类的执行提供方法支持。通常在使用时,可搭配一个或多个Mixin扩展类 1.1、属性 serializer_class 指明视图使用的序列化器…

记录一下买了腾讯云服务器后如何第一次连MobaXterm

首先是你要用SwitchHost把hosts的映射地址改成你新买的服务器的(如果你没这个软件,可以直接在etc/hosts里改 ) 再连MobaXterm 然后,关键的来了 成功!

2024/4/15 网络编程day3

一、TCP机械臂测试 通过w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂 注意:关闭计算机的杀毒软件,电脑管家,防火墙 1&#…

openGauss学习笔记-261 openGauss性能调优-使用Plan Hint进行调优-将部分Error降级为Warning的Hint

文章目录 openGauss学习笔记-261 openGauss性能调优-使用Plan Hint进行调优-将部分Error降级为Warning的Hint261.1 功能描述261.2 语法格式261.3 示例261.3.1 忽略非空约束261.3.2 忽略唯一约束261.3.3 忽略分区表无法匹配到合法分区261.3.4 更新/插入值向目标列类型转换失败 o…

3.MMD快捷键操作及人物绑定配饰

快捷键 1. 模型界面切换 按一下TAB键,就从人物模型切换到照明模型 再按一下TAB键,就能从照明模型切换回人物模型 2. 选中全部模型 当模型界面是人物模型时 而且电脑输入法时英文时 按一下A键,可以把人物骨骼全部选中,方便旋转…

互联网轻量级框架整合之MyBatis配置详解

MyBatis核心配置文件mybatis-config.xml里有诸多配置项&#xff0c;但常用的就无非就如下这么多 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDConfig3.0//EN" "https://mybati…

【爬虫开发】爬虫从0到1全知识md笔记第5篇:Selenium课程概要,selenium的其它使用方法【附代码文档】

爬虫开发从0到1全知识教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;爬虫课程概要&#xff0c;爬虫基础爬虫概述,,http协议复习。requests模块&#xff0c;requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. request…

“成像光谱遥感技术中的AI革命:ChatGPT在遥感领域中的应用“

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

[lesson31]完善的复数类

完善的复数类 完善的复数类 复数类应该具有的操作 运算&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/比较&#xff1a;&#xff0c;!赋值&#xff1a;求模&#xff1a;modulus 利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式 注意事项 C规定赋…

CLI举例:上行连接路由器(业务引流),下行连接交换机(VRRP引流)

CLI举例&#xff1a;上行连接路由器&#xff08;业务引流&#xff09;&#xff0c;下行连接交换机&#xff08;VRRP引流&#xff09; 介绍了设备上行连接路由器&#xff0c;下行连接交换机的集群配置举例。 组网需求 如图1所示&#xff0c;FW与路由器之间运行OSPF协议。 希望…

21、矩阵-搜索二维矩阵

思路&#xff1a; 这道题很有意思 从左到有升序&#xff0c;从上到下升序&#xff0c;斜边从左上到右下也是升序&#xff0c;从右上到做下降序。 如果是从左往右依次遍历&#xff0c;就会面临一个问题向右还是向下&#xff0c;因为都是大于当前值&#xff0c;不好决断&#x…

C#值类型和引用类型、赋值、区别、相同点

C#值类型和引用类型 **前言&#xff1a;**在C#中变量分为以下几种类型&#xff1a;值类型&#xff08;Value Types&#xff09;,引用类型&#xff08;Reference Types&#xff09;,指针类型&#xff08;Pointer Types&#xff09;;指针类型&#xff08;变量存储另一种类型变量…