YOLO算法改进Backbone系列之:FocalNet

摘要:本文提出焦调制网络(FocalNets),其中自注意(SA)完全被焦调制模块取代,用于建模视觉中的令牌交互。焦点调制包括三个组成部分:(1)焦点上下文化,使用深度卷积层堆栈实现,从短范围到长范围对视觉上下文进行编码;(2)门控聚合,选择性地将上下文收集到每个查询令牌的调制器中;(3)元素智能仿射变换,将调制器注入查询中。大量的实验表明,FocalNets具有非凡的可解释性,并且在图像分类、目标检测和分割任务上,以相似的计算成本优于SoTA 的自注意力同类(例如Swin和Focal Transformers)。具体来说,小尺寸和基本尺寸的FocalNets在ImageNet-1K上可以达到82.3%和83.9%的top-1精度。在224224分辨率的ImageNet-22K上进行预训练后,以224224和384*384分辨率进行微调时,top-1准确率分别达到86.5%和87.3%。对于Mask R-CNN的目标检测,使用1倍调度训练的FocalNet基比Swin基高出2.1点,并且已经超过使用3倍调度训练的Swin (49.0 vs 48.5)。对于使用UPerNet进行语义分割[90],FocalNet基础在单尺度上的性能比Swin高出2.4,在多尺度上(50.5 v.s 49.7)优于Swin。使用大型FocalNet和Mask2former,我们实现了ADE20K语义分割的58.5 mIoU和COCO全光分割的57.9 PQ。使用巨大的FocalNet和DINO,我们分别在COCO minival和test-dev上实现了64.3和64.4 mAP,在更大的基于注意力的模型(如Swinv2-G和BEIT-3)上建立了新的SoTA。

本文介绍了使用Focal Modulation替代自注意力(self-attention)的FocalNet(Focal Modulation Network)网络,新模块具有更好的token交互效果。给定查询令牌和目标令牌,SA首先执行查询键交互以计算注意分数,然后执行查询值聚合以从其他令牌中捕获上下文。相比之下,Focal Modulation首先将不同粒度级别的空间上下文编码为调制器,然后以查询相关的方式自适应地注入查询令牌。显然,SA需要大量的交互和聚合操作,而Focal Modulation颠倒了它们的顺序,使它们都变得轻量级。
在这里插入图片描述

自注意力中,key和query是密集的矩阵相乘,Attention也是和value的密集矩阵乘积。而FocalNet中分别采用Depth-Wise Conv和Point-Wise Conv,计算更轻量化
在这里插入图片描述

FocalNet模型的变体配置信息如下表:
在这里插入图片描述

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

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

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

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

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

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

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

相关文章

Python实现ETS指标平滑模型(ETSModel算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 ETS模型(Error-Trend-Seasonality Model),是一种广泛应用于时间序列…

哈希表|242.有效的字母异位词

力扣题目链接 bool isAnagram(char* s, char* t) {int len_s strlen(s), len_t strlen(t);if(len_s ! len_t) {return false;}int table[26];memset(table, 0, sizeof(table));for(int i 0; i < len_s; i) {table[s[i] - a];}for(int i 0; i < len_t; i) {table[t[i…

什么是ElasticSearch的深度分页问题?如何解决?

在ElasticSearch中进行分页查询通常使用from和size参数。当我们对ElasticSearch发起一个带有分页参数的查询(如使用from和size参数)时,ElasticSearch需要遍历所以匹配的文档直到达到指定的起始点(from),然后返回从这一点开始的size个文档 在这个例子中: 1.from 参数定义…

[100个Linux常用指令]-吐血推荐,收藏关注

ls - 列出目录cd - 切换目录pwd - 打印工作目录mkdir - 创建目录rmdir - 删除目录touch - 创建空文件rm - 删除文件cp - 复制文件或目录mv - 移动或重命名文件或目录cat - 连接文件并打印到标准输出设备上more - 分页显示文件内容less - 类似于 more&#xff0c;但支持文件内容…

面向对象的编程语言是什么意思?——跟老吕学Python编程

面向对象的编程语言是什么意思&#xff1f;——跟老吕学Python编程 面向对象是什么意思&#xff1f;面向对象的定义面向对象的早期发展面向对象的背景1.审视问题域的视角2.抽象级别3.封装体4.可重用性 面向对象的特征面向对象的开发方法面向对象程序设计基本思想实现 面向对象的…

R语言读取大型NetCDF文件

失踪人口回归&#xff0c;本篇来介绍下R语言读取大型NetCDF文件的一些实践。 1 NetCDF数据简介 先给一段Wiki上关于NetCDF的定义。 NetCDF (Network Common Data Form) is a set of software libraries and self-describing, machine-independent data formats that support…

sql-mysql可视化工具Workbench导入sql文件

mysql可视化工具Workbench导入sql文件 1、打开workbench2、导入sql文件3、第一行加上库名4、开始运行 1、打开workbench 2、导入sql文件 3、第一行加上库名 4、开始运行

for、while、do While、for in、forEach、map、reduce、every、some、filter的使用

for、while、do While、for in、forEach、map、reduce、every、some、filter的使用 for let arr [2, 4, 6, 56, 7, 88];//for for (let i 0; i < arr.length; i) {console.log(i : arr[i]) //0:2 1:4 2:6 3:56 4:7 5:88 }普通的for循环可以用数组的索引来访问或者修改…

【Prometheus】DataModel

数据模型 DataModel 指标 Metric metric 包含 metric name 和 metric label 格式&#xff1a; <metric name>{<label name><label value>, ...}例如&#xff1a;服务器 HTTP 接口 /messages 的总请求数 api_http_requests_total{method"POST",…

Vue3 快速上手从0到1,两小时学会【附源码】

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 以下内容为vue3的学习笔记 项目需要使用到的依赖 npm install axios npm install nanoid vue-router npm install pinia npm install mitt 源码&#xff1a;Gitee 运行 npm install npm run dev需要运…

前端面试练习24.3.8

防抖和节流 防抖&#xff08;Debouncing&#xff09;&#xff1a; 防抖是指在短时间内连续触发同一事件时&#xff0c;只执行最后一次触发的事件处理函数。 在实际应用中&#xff0c;常常用于处理用户输入的搜索框或者滚动事件。例如&#xff0c;当用户连续输入搜索关键词时&am…

靶场:sql-less-18(HTTP头注入)

本文操作环境&#xff1a;Kali-Linux 靶场链接&#xff1a;Less-18 Header Injection- Error Based- string 输入用户名和密码以后&#xff0c;我们发现屏幕上回显了我们的IP地址和我们的User Agent 用hackbar抓取POST包&#xff0c;在用户名和密码的位置判断注入点&#xff0…