YOLO算法改进Backbone系列之:Conformer

CNN难以捕捉全局表征,这通常对高级计算机视觉任务至关重要。一个直观的解决方案是扩大感受野,但这可能需要更密集但具有破坏性的池化操作。由于自注意力机制和多层感知器(MLP)结构,transformer反映了复杂的空间变换和长距离特征依赖性,构成了全局表示。不幸的是,观察到视觉transformer忽略了局部特征细节,这降低了背景和前景之间的可辨别性。一些改进的视觉转换器提出了一个标记化模块或利用 CNN 特征图作为输入标记来捕获特征相邻信息。然而关于如何将局部特征和全局表示精确地相互嵌入的问题仍然存在。在Conformer中,我们连续将transformer分支的全局上下文馈送到卷积特征图,以加强CNN分支的全局感知能力。 类似地来自CNN分支的局部特征逐渐反馈到patch embedding中,以丰富transformer分支的局部细节,这样的过程构成了相互作用。

Conformer 由一个主干模块、双分支、桥接双分支的 FCU 和用于双分支的两个分类器(一个 fc 层)组成。
在这里插入图片描述

主干模块:主干模块是一个 7×7 卷积,步长为 2,然后是一个 3×3最大池化,步长为 2,用于提取初始局部特征
双分支:CNN 分支和transformer分支分别由N个重复的卷积块和transformer 块组成,这样的并发结构意味着CNN和transformer分支可以分别最大程度地保留局部特征和全局表示。
FCU: FCU 作为桥接模块,将 CNN 分支中的局部特征与transformer分支中的全局表示融合,FCU 从第二个块开始应用,因为两个分支的初始化特征是相同的。沿着分支,FCU 以交互方式逐步融合特征图和patch embedding。
分类:最后对于CNN分支,所有特征都被汇集并馈送到一个分类器。对于transformer 分支,类token 被取出并馈送到另一个分类器。在训练过程中,使用两个交叉熵损失来分别监督两个分类器。
CNN分支: CNN分支采用特征金字塔结构,特征图的分辨率随着网络深度的增加而降低,而通道数增加。我们将整个分支分为 4 个阶段,每个stage由多个卷积块组成,每个卷积块包含n个bottlenecks。遵循ResNet,bottlenecks包含 1×1 卷积、3×3 空间卷积、1×1 卷积以及输入和输出之间的残差连接。
transformer 通过一步将图像patch投影到向量中,导致局部细节丢失。而在CNN 中,卷积核滑动重叠的过特征图,这提供了保留精细局部特征的可能性。因此CNN 分支能够为transformer分支连续提供局部特征细节。
Transformer Branch: 类似ViT ,该分支包含N个重复的Transformer块,每个 Transformer 块由一个多头自注意力模块和一个 MLP 块组成。在每一层之前应用layernorm,并且在自注意力层和 MLP 块这两个层中都有残差连接。我们将主干模块生成的特征图压缩成14×14的patch embedding,而没有重叠,通过线性投影层,这是一个步长为4的4×4卷积
FCU:给定CNN分支中的特征图和transformer分支中的patch embedding,如何消除它们之间的错位是一个重要问题。为了解决这个问题,我们提出FCU以交互方式将局部特征与全局表示连续耦合。
一方面CNN和transformer的特征维度不一致,CNN特征图的维度为C×H×W,而patch embeddings的形状为(K+1)×E,其中K、1和E分别表示图像块的数量、类别 token和embedding维度。当馈送到transformer分支时,特征图首先需要通过 1×1 卷积来对齐patch embedding的通道数。然后使用下采样模块完成空间维度对齐。最后特征图添加patch embedding。 当从transformer branch 反馈到CNN 分支时,patch embedding需要上采样以对齐空间尺度,然后通过1×1卷积将通道维度与 CNN 特征图的维度对齐,并添加到特征图中。同时,LayerNorm 和 BatchNorm 模块用于对特征进行正则化。
另一方面,特征图和patch embedding之间存在显着的语义差距,即特征图是从局部卷积算子中收集的,而patch embedding与全局自我聚合。因此在每个块(除了第一个块)中应用 FCU 以逐步填补语义空白。

Conformer-s模型配置信息:
在这里插入图片描述

Conformer-Ti、Conformer-B模型配置信息:
在这里插入图片描述

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

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

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

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

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

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

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

相关文章

Vue3 + vite + Ts 组件间通信

Vue3 vite Ts 组件间通信 1、props2、自定义事件3、mitt4、$attrs 1、props 概述:props 是使用频率最高的一种通信方式,常用与:父 和 子 互相传递 若 父传子 :属性值是非函数。若 子传父 :属性值是函数。 简单例子&…

【C++】this关键字和new关键字

一、this关键字 在 C 中&#xff0c; this 关键字是一个 指向调用对象的指针 。它在成员函数内部使用&#xff0c;用于引用调用该函数的对象。使用 this 可以明确指出成员函数正在操作的是哪个对象的数据成员。 示例&#xff1a; #include <iostream>using namespa…

网红电商主播培养体系招聘管理制度孵化方案

【干货资料持续更新&#xff0c;以防走丢】 网红电商主播培养体系招聘管理制度孵化方案 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 共120页可编辑&#xff08;完整资料包含以下内容&#xff09; 目录 主播团队组建方案 让好主播主动留下 1. 好主播选拔标准…

【Flink】Flink 处理函数之基本处理函数(一)

1. 处理函数介绍 流处理API&#xff0c;无论是基本的转换、聚合、还是复杂的窗口操作&#xff0c;都是基于DataStream进行转换的&#xff0c;所以统称为DataStreamAPI&#xff0c;这是Flink编程的核心。 但其实Flink为了更强大的表现力和易用性&#xff0c;Flink本身提供了多…

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

目录 数据访问 基础特性 自定义banner Profiles Profiles组件 Profiles配置文件 外部化配置 单元测试 数据访问 整合SSM场景 SpringBoot 整合 Spring&#xff0c;SpringMVC&#xff0c;MyBatis 进行数据访问场景开发 需要的依赖&#xff1a; <!-- web启动…

leetcode 518.零钱兑换 II

思路&#xff1a;和第一道是一样的问题&#xff0c;也就是完全背包问题。 我们首先可以看到&#xff0c;每一个数都是可以重复使用的&#xff0c;而且&#xff0c;数的选择上有两种&#xff0c;一种就是选&#xff0c;一种就是不选。所以会想到完全背包问题。 上一个题的零钱…

如何从其他平台复制商品上传到自己店铺?官方授权接口,一键复制爆款同款

很多做一件代发的卖家在上新时会从其他平台选品铺货&#xff0c;看到某个商品卖得不错&#xff0c;直接复制到自己店铺去卖&#xff0c;可以节省测款成本。 现在平台严查无货源&#xff0c;直接从别人店铺搬运商品属于违规违规行为&#xff0c;想要复制这个爆款的话&#xff0…

鸿蒙HarmonyOS应用开发—AbilityStage组件容器

AbilityStage是一个Module级别的组件容器&#xff0c;应用的HAP在首次加载时会创建一个AbilityStage实例&#xff0c;可以对该Module进行初始化等操作。 AbilityStage与Module一一对应&#xff0c;即一个Module拥有一个AbilityStage。 DevEco Studio默认工程中未自动生成Abil…

ArcGIS二次开发(一)——搭建开发环境以及第一个简单的ArcGIS Engine 程序

Arcgis10.2、Arcgis Engine10.2与Microsoft Visual Studio 2012的版本进行安装 1、推荐教程与安装包2、安装顺序3、安装成功测试VS新建项目可以创建ArcGIS项目&#xff0c;并且在VS中拖拽ArcGIS工具 4、搭建第一个简单的ArcGIS Engine 程序 ArcEngine和VS版本是有对应的&#x…

东方 - 分支(1)

目录 解析部分&#xff1a;双分支1303. 冷饮的价格&#xff08;1&#xff09;问题描述解题思路代码实现代码解析 1033. 判断奇偶数问题描述解题思路代码实现代码解析 1302. 是否适合晨练&#xff1f;问题描述解题思路代码实现代码解析 1632. 需要几辆车问题描述解题思路代码实现…

Leetcode 453. 最小操作次数使数组元素相等

原题链接&#xff1a;Leetcode 453. minimum moves to equal array elements Given an integer array nums of size n, return the minimum number of moves required to make all array elements equal. In one move, you can increment n - 1 elements of the array by 1. …

【Python】enumerate函数的使用方法,小白一看就懂

enumerate函数的使用方法&#xff1a; season[‘a’,‘b’,‘c’,‘d’] for i in enumerate(season): print(i) season[‘a’,‘b’,‘c’,‘d’] for i,eliment in enumerate(season): print(i,eliment) 输出结果为&#xff1a; 练习题&#xff1a; 2.给出10个学生姓名…

5. C++ 局部静态变量在什么时候分配内存和初始化?

C局部静态变量在什么时候分配内存和初始化&#xff1f; 对于C语言的全局和静态变量&#xff0c;不管是否被初始化&#xff0c;其内存空间都是全局的&#xff1b;如果初始化&#xff0c;那么初始化发生在任何代码执行之前&#xff0c;属于编译期初始化。由于内置变量无须资源释…

从0到1:校园生活圈小程序开发笔记(一)

可行性研究 校园生活圈小程序是一种面向大学或学院校园的社交平台&#xff0c;旨在为校园内的师生提供交流、分享、互助和信息发布等功能。 为校园内的师生提供一个便捷的平台&#xff0c;帮助他们更好地了解校园生活、参与校园活动、交流学习和共享资源。 功能分解 公告资讯…

力扣HOT100 - 42. 接雨水

解题思路&#xff1a; 动态规划 感觉不是很好想 class Solution {public int trap(int[] height) {int n height.length;if (n 0) return 0;int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i…

JS加密解密之应用如何保存到桌面书签

前言 事情起因是这样的&#xff0c;有个客户解密了一个js&#xff0c;然后又看不懂里边的一些逻辑&#xff0c;想知道它是如何自动拉起谷歌浏览器和如何保存应用到书签的&#xff0c;以及如何下载应用的。继而诞生了这篇文章&#xff0c;讲解一下他的基本原理。 渐进式Web应用…

docker使用教程

寒假用了docker 2个月没用 结果还重新安装docker 忘了怎么用 为了免得以后忘写下下面内容 # If you dont have a docker installed, youll need to install docker curl -s https://get.docker.com/ | sh # Use pip to install docker-compose pip install docker-compose…

【力扣hot100】207 课程表(c++、python)解析

相关题目&#xff1a; 210 课程表2 【力扣hot100】207 课程表&#xff08;c、python&#xff09;解析 1.官方题解&#xff1a;1.1深搜c版本python版本 1.2广搜c版本 1.官方题解&#xff1a; 这是一题经典的「拓扑排序」问题 给定一个包含 n 个节点的有向图 G&#xff0c;我们…

网络七层模型:理解网络通信的架构(〇)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

idea-创建java8的springboot项目

现在使用IDEA创建 Spring Boot 项目&#xff0c;jdk 版本最低要求为 17。Spring Boot 官方在全力维护 3.x 版本&#xff0c;而 Spring Boot 3.x 对 jdk 版本的最低要求为17。 如果需要继续使用 jdk8&#xff0c;则需要修改 Server URL &#xff0c;改成&#xff1a;https://st…