YOLO算法改进Backbone系列之:CoaT

在本文中,我们提出了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
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

09、ArrayList

ArrayList 文章目录 ArrayList集合与数组ArrayList集合进阶集合体系结构Collection集合List集合(接口)数据结构ArrayList集合LinkedList集合 Set集合HashSet 双列集合创建不可变集合 集合与数组 自动扩容 无法存储基本数据类型,只能将其变为…

【C++】CC++内存管理

目录 一、C/C内存分布二 、C语言中动态内存管理方式:malloc/calloc/realloc/free三、 C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型3.3 长度域 四、operator new与operator delete函数五、new和delete的实现原理5.1 内置类型5.2 自定义类…

K8S--水平自动扩缩容实战演练

原文网址:K8S--水平自动扩缩容实战演练-CSDN博客 简介 本文用实例来展示K8S的自动扩缩容(水平方向)。 官网网址 HorizontalPodAutoscaler 演练 | Kubernetes 为 Pod 和容器管理资源 | Kubernetes 水平扩缩的原理 水平扩缩容&#xff…

阿里云-零基础入门NLP【基于深度学习的文本分类3-BERT】

文章目录 学习过程赛题理解学习目标赛题数据数据标签评测指标解题思路BERT代码 学习过程 20年当时自身功底是比较零基础(会写些基础的Python[三个科学计算包]数据分析),一开始看这块其实挺懵的,不会就去问百度或其他人,当时遇见困难挺害怕的…

NKCTF2024-Eznative

首先使用blutter解析,拿到如上的output文件 先看看asm 都被混淆了,真的是太可恶了。 查看libapp.so的内容 一点符号都不给,首先我们使用LoadScript File去添加一部分符号 加载之前解析的 恢复了一部分,但是没有什么乱用啊 这个时候…

微服务(基础篇-002-Ribbon)

目录 Ribbon负载均衡(1) 负载均衡的原理(1.1) 负载均衡策略(1.2) Ribbon-IRule(1.2.1) 修改负载均衡的方法(1.2.2) 懒加载(1.3) 饥饿加载(1…

吴恩达2022机器学习专项课程(一) 3.3 成本函数的公式

问题预览 模型的参数(w和b)有什么作用?不同的w和b对线性回归模型有什么影响?训练集里的y和线性回归模型预测的y(y帽)的区别是什么?成本函数的作用是什么?成本函数的公式是什么&…

【PyQt】19-数据操作

数据表 前言一、显示二维表数据(QTableView控件)扩展知识---MVC模式1.1 代码1.2 运行结果 二、显示列数据(QListView控件)2.1 代码2.2 运行结果2.3 扩展---列表控件(QListWidget)运行结果 总结 前言 一、显…

C语言中的联合和枚举

1、联合体 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。因为所有变量公用…

UE5 LiveLink 自动连接数据源,以及打包后不能收到udp消息的解决办法

为什么要自动连接数据源,因为方便打包后接收数据,这里我是写在了Game Instance,也可以写在其他地方,自行替换成Beginplay和Endplay 关于编辑器模式下能收到udp消息,打包后不能收到消息的问题有两点需要排查,启动打包后…

2024年阿里云轻量应用服务器优惠价格_2核2G_2核4G报价

阿里云轻量应用服务器2核2G和2核4G配置优惠价格表,轻量2核2G3M带宽61元一年,轻量2核4G4M带宽165元1年,均不限制月流量,阿里云活动链接 aliyunfuwuqi.com/go/aliyun 活动打开如下图: 阿里云轻量应用服务器价格 61元/年…

Spring Boot:基础配置

Spring Boot 全局配置文件application.propertiesapplication.yml全局配置文件的优先级 从全局配置文件中获取数据的注解从外部属性文件中获取数据的注解全局配置文件的配置项通用配置项数据源配置项JPA 配置项日志配置项配置文件特定配置项Profile 特定配置项 配置类配置文件中…

C++项目——集群聊天服务器项目(三)muduo网络库

今天来介绍集群聊天器项目中网络模块代码的核心模块——muduo网络库,一起来看看吧~ 环境搭建C项目——集群聊天服务器项目(一)项目介绍、环境搭建、Boost库安装、Muduo库安装、Linux与vscode配置-CSDN博客 Json第三方库C项目——集群聊天服务器项目(二)Json第三方库…

mysql 用户管理-账户管理

学习了《mysql 用户管理-权限表》。接着学习更常用的的账户管理。 2,账户管理 MySQL提供许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。MySQL 数据库的安全性,需要通过账户管…

静态、动态代理模式(Spring学习笔记八)

代理模式是SpringAOC的底层 代理模式分为:静态代理模式 动态代理模式 1、静态代理 代码步骤 接口: package com.li.dedmo01;public interface Rent {public void rent(); }真实角色: package com.li.dedmo01;public class Host imple…

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

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

开源流程图表库(01):Mermaid.js生成流程图、时序图、甘特图等

一、Mermaid.js的特点 Mermaid.js是一个用于生成流程图、时序图、甘特图等各种图表的开源库。它使用简洁的文本语法来描述图表结构,并将其转换为可视化的图形。 Mermaid.js的主要特点包括: 简洁易用:Mermaid.js使用简单的文本语法来描述图表…

Introduction to Data Mining 数据挖掘

Why Data Mining? • The Explosive Growth of Data: from terabytes to petabytes — Data collection and data availability ◦ Automated data collection tools, database systems, Web, computerized society — Major sources of abundant data ◦ Business: Web, e-co…

RabbitMQ入门学习【附案例讲解】

文章目录 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比: 2、安装RabbitMQ2.1、下载镜像2.2、单机部署2.3、集群部署 3、基本结构4、RabbitMQ消息模型5、代码示例5.1、导入Demo工程5.2、publisher实现5.3、consumer实现5.4、效果 6、总结 ​…

C++项目——集群聊天服务器项目(四)MySQL数据库

今天来介绍集群聊天器项目中MySQL数据库的相关表结构 集群聊天服务器项目需要进行好友、群组的增删操作以及好友离线状态的判断,需要在数据库中建立相关表进行增删改查操作,因此项目设计了如下五个表,大家可以自己动动小手,使用S…