YOLO算法改进Backbone系列之:CoaT

news2024/11/17 1:58:39

在本文中,我们提出了co-scale conv-attention image transformer(CoaT),这是一种基于Transformer的图像分类器,配备了co-scale和conv-attention机制。首先,co-scale机制在各个尺度上保持Transformer编码器支路的完整性,同时允许在不同尺度上学习到的特征能相互有效通信;我们设计了一系列串行和并行块来实现co-scale机制。其次,我们通过在因子化注意模块中实现相对位置嵌入公式,并采用高效的卷积实现,设计了一种conv-attention机制。CoaT使图像转换器具有丰富的多尺度和上下文建模功能。在ImageNet上,与类似大小的卷积神经网络和图像/视觉Transformer相比,相对较小的CoaT模型可以获得更好的分类结果。CoaT主干在目标检测和实例分割方面的有效性也得到了验证,证明了其适用于下游计算机视觉任务。
在这里插入图片描述

Conv-Attentional Mechanism 对来自输入的图像embeding应用第一个卷积位置编码。然后我们将其输入ConvAtt,包括因子分解的注意力和卷积相对位置编码,所得到的特征图将送入后续的前馈网络中。
在这里插入图片描述

CoaT Serial Block:以一个降低的分辨率建模图像表示。在一个典型的串行块中,首先使用patch embeding层按一定比例对输入特征映射进行下采样,然后将简化后的特征映射平化为一系列图像token序列。然后,将图像token与一个额外的分类token连接起来,并应用多个注意模块来学习图像token和CLS token之间的内部关系。最后,将分类token从图像token中分离出来,并将图像token重塑为下一个串行块的二维特征映射。
CoaT Parallel Block:作者实现了每个并行组中并行块之间的共尺度机制。在一个典型的并行组中,有来自具有不同尺度的串行块的输入特征序列。为了在平行组中实现精细到粗、粗到细和跨尺度的交互,作者开发了两种策略: (1)直接的跨层注意力;(2)具有特征插值的注意力。在本文中,采用特征插值法来提高更好的经验性能。
Direct cross-layer attention:在直接的跨层注意中,从每个尺度的输入特征中形成query、key和value向量。对于在同一层内的注意力机制,使用连续注意来处理来自当前规模的成query、key和value向量。对于不同层的注意力机制,对keys和value向量进行下采样或上采样,以匹配其他尺度的分辨率,从而实现细到粗和粗到细的交互。然后执行cross-attention,这扩展了从当前尺度的query与来自另一个尺度的keys和values。最后将conv attention和cross-attention的输出求和,并应用共享前馈层。在直接的跨层注意下,跨尺度信息以cross-attention的方式融合。
Attention with feature interpolation:不是直接进行跨层注意,而是用特征插值来表示注意力。首先对不同的尺度输入图像特征进行处理。然后使用双线性插值法对每个尺度的图像特征进行降采样或上采样,以匹配其他尺度的维度,或对其自身的尺度保持不变。将属于相同尺度的特征汇总为并行组,并将它们进一步传递到共享前馈层。这样下一步的注意模块可以基于当前步骤中的特征插值学习跨尺度信息。

CoaT模型变体信息如下表:
在这里插入图片描述

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

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

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

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

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

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

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

相关文章

SpringBoot Starter解析

conditional注解解析 介绍 基于条件的注解作用: 根据是否满足某一个特定条件决定是否创建某个特定的bean意义: Springboot实现自动配置的关键基础能力 常见的conditional注解 ConditionalOnBean: 当容器中存在某个Bean才会生效ConditionalOnMissingBean: 不存在某个Bean才会…

day3-QT

1>使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函。将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是…

[BT]BUUCTF刷题第6天(3.24)

第6天 Web [极客大挑战 2019]PHP Payload: O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}这道题考点是网站源码备份文件泄露和PHP反序列化,有篇介…

机器学习——AdaBoost算法

机器学习——AdaBoost算法 在机器学习领域,AdaBoost算法是一种非常流行的集成学习方法,旨在提高分类器的性能。本篇博客将介绍AdaBoost算法的原理、算法流程、算法参数,对比AdaBoost和随机森林的区别,并使用Python实现AdaBoost算…

不可变集合及Stream流

若希望某个数据是不可修改的,就可以考虑使用不可变集合,以提高安全性;(JKD9之后才有) List不可变集合: public static void main(String[] args) {/*创建不可变的List集合"张三", "李四&q…

基于SSM+Jsp+ sqlserver的学校访客登记系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:sqlserver数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9 系统展示 系统…

Python 潮流周刊#43:在开源与家庭之间,他选择了家庭

△△请给“Python猫”加星标 ,以免错过文章推送 你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。本周刊开源,欢迎投稿[1]。另有电报频道[2]作为副刊,补充发布更加丰富的资讯,…

29-5 webshell 流量分析 - 菜刀

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、上传木马到靶场然后使用菜刀连接抓取流量 1)上传木马到upload-labs靶场 自己创建一个php文件作为木马 <?php eval($_POST["pass"]);2)然后开启 Wireshark …

nodejs+vue超市在线销售系统的设计与实现pythonflask-django-php

当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#xff0c;国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统超市在线销售采取了人工的管理方法&#xff0c;…

【Hive】HIVE运行卡死没反应

Hive运行卡死 再次强调 hive&#xff1a;小兄弟&#xff0c;没想到吧&#xff0c;咱可不是随便的人。&#x1f604; 那么&#xff0c;这次又遇见了hadoop问题&#xff0c;问题描述是这样的。 hive> insert into test values(1, nucty, 男); Query ID atguigu_202403241754…

Apache HTTP服务器(Linux离线编译安装)

Apache HTTP服务器&#xff08;Linux离线编译安装&#xff09; Apache是普通服务器&#xff0c;本身只支持html即普通网页。可以通过插件支持PHP,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问Tomcat资源。反之不然)。 Apache和Tomcat都可以做为独立的w…

nodejs+vue电影院订票信息管理系统pythonflask-django-php

当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#xff0c;国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统电影院订票采取了人工的管理方法&#xff0c;但…

最短路-虚拟节点

思路&#xff1a;我们可以开虚拟节点来连接两个结点权值二进制1的个数相同的两个结点&#xff0c;由于1e9内1的个数不超过30&#xff0c;所以开30个虚拟节点&#xff0c;第i个结点连向二进制1的个数为i的点&#xff0c;然后跑dij即可。 代码&#xff1a; int n, m; struct d …

深入理解栈和队列(二):队列

个人主页&#xff1a;17_Kevin-CSDN博客 专栏&#xff1a;《数据结构》 一、队列的概念和结构 队列是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列&#xff1a;进行插入操作的…

中间件设置静态资源目录

文章目录 为什么要设置静态资源目录设置静态资源代码示例 为什么要设置静态资源目录 服务器中的代码&#xff0c;对于外部来说都是不可见的&#xff0c; 所以我们写的html页面&#xff0c;浏览器无法直接访问 如果希望浏览器可以访问&#xff0c;则需要将页面所在的目录设置静…

C语言——sizeof与strlen的对比

一.sizeof 我们在学习操作符的时候&#xff0c;就了解到了sizeof操作符&#xff0c;它的作用是求参数所占内存空间的大小&#xff0c;单位是字节。如果参数是一个类型&#xff0c;那就返回参数所占的字节数。 #include <stdio.h>int main() {int a 10;size_t b sizeo…

surface go 2简单的配置

1.基本的配置信息 cpu 4425Y 感觉还是比较的弱 但是处理基本的网页浏览或收发电子邮件还是很不错的 2. C:\Users\win>systeminfo 主机名: DESKTOP-F5TT6HJ OS 名称: Microsoft Windows 10 专业版 OS 版本: 10.0.19045 暂缺 Build 19045 …

机器学习——贝叶斯分类器(基础理论+编程)

目录 一、理论 1、初步引入 2、做简化 3、拉普拉斯修正 二、实战 1、计算P(c) 2、计算P(x|c) 3、实战结果 1、数据集展示 2、相关信息打印 一、理论 1、初步引入 在所有相关概率都已知的理想情形下&#xff0c;贝叶斯决策论考虑如何基于这些概率和误判损失来选择最…

STM32通过串口发送指令控制LED灯亮灭OLED并显示命令

先来看看程序运行的结果吧&#xff1a; 接下来就不说废话了&#xff0c;自己看源代码吧&#xff01;每一行我都做了注释&#xff1a; 首先是主函数main.c文件&#xff1a; #include "stm32f10x.h" // Device header #include "OLED.h" …

学习SpringBoot笔记--知识点(1)

目录 SpringBoot介绍 创建一个最基础的springbooot项目 使用Spring Initializr创建springboot项目 Spring Boot 自动配置机制 SpringBoot常用注解 1.组件注册 2.条件注解 3.属性绑定 SpringBoot自动配置流程​编辑 学习SpringBoot的方法 ​编辑 SpringBoot日志配置…