YOLOS

news2025/8/3 5:13:34

太多了 yolo v x 现在又s了

Transformer能否从纯序列到序列的角度执行2D目标级识别,而对2D空间结构知之甚少?为了回答这个问题,今天就展示了“You Only Look at One Sequence” (YOLOS),这是一系列基于朴素视觉变换器的目标检测模型,具有尽可能少的修改和inductive biases。

论文地址:https://arxiv.org/pdf/2106.00666.pdf

源代码地址:https://github.com/hustvl/YOLOS

YOLOS-S, 200 epochs pre-trained, COCO AP = 36.1

我们发现仅在中等大小的ImageNet-1k数据集上预训练的YOLOS已经可以在COCO上实现具有竞争力的目标检测性能,例如直接从BERT-Base中采用的YOLOS-Base可以实现42.0 box AP。研究者还通过目标检测讨论了当前预训练方案和模型缩放策略对Transformer在视觉中的影响和局限性。

Transformer为迁移而生。在自然语言处理 (NLP) 中,主要方法是首先在大型通用语料库上预训练Transformer以进行通用语言表示学习,然后针对特定目标任务对模型进行微调。最近,Vision Transformer(ViT)表明,直接从NLP继承的典型Transformer编码器架构可以使用现代视觉迁移学习配方在大规模图像识别上表现出奇的好。将图像补丁嵌入序列作为输入,ViT可以从纯序列到序列的角度成功地将预训练的通用视觉表示从足够的规模转移到更具体的图像分类任务,数据点更少。

ViT-FRCNN是第一个使用预训练的ViT作为R-CNN目标检测器的主干。然而,这种设计无法摆脱对卷积神经网络(CNN)和强2D归纳偏差的依赖,因为ViT-FRCNN将ViT的输出序列重新解释为2D空间特征图,并依赖于区域池化操作(即RoIPool或RoIAlign)以及基于区域的CNN架构来解码ViT特征以实现目标级感知。受现代CNN设计的启发,最近的一些工作将金字塔特征层次结构和局部性引入Vision Transformer设计,这在很大程度上提高了包括目标检测在内的密集预测任务的性能。然而,这些架构是面向性能的。另一系列工作,DEtection TRansformer(DETR)系列,使用随机初始化的Transformer对CNN特征进行编码和解码,这并未揭示预训练Transformer在目标检测中的可迁移性。

ViT-FRCNN

为了解决上面涉及的问题,有研究者展示了You Only Look at One Sequence (YOLOS),这是一系列基于规范ViT架构的目标检测模型,具有尽可能少的修改以及注入的归纳偏置。从ViT到YOLOS检测器的变化很简单:

我们有目的地选择随机初始化的[DET]标记作为目标表示的代理,以避免2D结构的归纳偏差和在标签分配期间注入的任务的先验知识。在对COCO进行微调时,对于每次前向传递,在[DET]tokens生成的预测与真实对象之间建立最佳二分匹配。该过程与标签分配的作用相同,但不知道输入的2D结构,即YOLOS不需要将ViT的输出序列重新解释为用于标签分配的2D特征图。理论上,YOLOS在不知道确切的空间结构和几何形状的情况下执行任何维度的物体检测是可行的,只要每次通过输入总是以相同的方式展平为一个序列。

Detection Token

YOLOS-S, 300 epochs pre-trained, COCO AP = 36.1

Fine-tuning at Higher Resolution

在COCO上进行微调时,除用于分类和边界框回归的MLP头以及随机初始化的100个[DET]标记外,所有参数均从ImageNet-1k预训练权重初始化。分类和边界框回归头均由MLP实现,具有两个使用单独参数的隐藏层。 

  • YOLOS在ViT中删除[CLS]标记,并将一百个可学习的[DET]标记附加到输入序列以进行目标检测;

  • YOLOS将ViT中的图像分类损失替换为bipartite matching loss,以遵循Carion等人【End-to-end object detection with transformers】的一套预测方式进行目标检测。这可以避免将ViT的输出序列重新解释为2D特征图,并防止在标签分配期间手动注入启发式和对象2D空间结构的先验知识。

  • YOLOS删除用于图像分类的[CLS]标记,并将一百个随机初始化的检测标记([DET] 标记)附加到输入补丁嵌入序列以进行目标检测。

  • 在训练过程中,YOLOS将ViT中的图像分类损失替换为bipartite matching loss,这里重点介绍YOLOS的设计方法论。

在微调期间,图像具有比预训练高得多的分辨率,为了保持补丁大小相同(16 × 16),这导致更大的有效序列长度。虽然ViT可以处理任意序列长度,但位置嵌入需要适应更长的输入序列。我们以相同的方式对预训练的位置嵌入进行2D插值。

实验分析及可视化

Self-attention Maps of YOLOS

检验与YOLOS-S最后一层头部预测相关的[DET]tokens的自注意力。可视化pipeline遵循【 Emerging properties in self-supervised vision transformers】。可视化结果如下图所示。

  • 对于给定的YOLOS模型,不同的自注意力头关注不同的模式和不同的位置。一些可视化是可解释的,而另一些则不是。

  • 我们研究了两个YOLOS模型的注意力图差异,即200 epochs ImageNet-1k预训练YOLOS-S和300 epochs ImageNet-1k预训练YOLOS-S。注意这两个模型的AP是一样的(AP=36.1)。从可视化中,我们得出结论,对于给定的预测对象,相应的[DET]标记以及注意力图模式通常对于不同的模型是不同的。

  • whaosoft aiot http://143ai.com

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

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

相关文章

磨金石教育摄影技能干货分享|古风人像修图与调色技巧

上一篇文章我们介绍了古风人像的拍摄技巧,这期我们再来了解一下后期修图与调色的技巧。 一、修 饰 皮 肤 首先我们把拍好的照片拖到PS里。 1、ctrlj复制一个图层。然后选择污点修复画笔把脸部瑕疵去掉,嘴巴部位使用的是修复画笔。这样我们可以看到人像…

pyenv的安装与简单使用

一、pyenv是什么? pyenv 是 python 的 多环境管理 工具,可以安装多个版本的 python,并为 全局 或 单个应用 设置指定版本 二、pyenv的安装 2.1 下载 pyenv 压缩包 压缩包下载地址:https://github.com/pyenv-win/pyenv-win#rea…

测开 - 自动化测试selenium(WebDriver API) - 细节狂魔

文章目录回顾什么是驱动?驱动的工作原理是什么?一个简单的 Web自动化 演示1、定位元素的方法 - 只介绍两种最常使用的2、元素的操作3、等待3.1、强制等待强制等待的优点 && 缺点3.2、隐式等待隐式等待的优缺点3.3、显示等待显示等待的优缺点&…

五种方法帮你解决电脑内存占用大的问题

有用户反映自己的电脑什么都没开,但是运行内存显示占用90%以上,这是什么情况?运行内存占用大,直接影响了用户的使用体验,下面小编就给大家分享五个解决电脑内存占用大的办法吧。 方法一: 1、右键【我的电脑…

C++ —— 模拟实现vector和迭代器失效

目录 1.成员变量的设计 2.迭代器以及接口设计 3.容量接口 4.reserve的设计 5.resize的设计 6.尾插尾删的设计 7.构造、析构函数 8.运算符重载 9.insert接口设计与迭代器失效 10.erase的设计和迭代器失效 11.双层深拷贝问题 12.完整代码 1.成员变量的设计 成员变量…

Stream流、FiLe和IO流、

package com.streamdemo; import java.util.ArrayList; import java.util.List; /*** 体验Stream流** 创建一个集合,存储多个字符串元素* "张三丰","张无忌","张翠山","王二麻子","张良","谢广坤"** 把…

【Java八股文总结】之面试题(一)

文章目录面试题1、说一下ArrayList和LinkedList区别2、说一下HashMap的Put方法3、ThreadLocal4、说一下JVM中,哪些是共享区,哪些可以作为gc root?5、如何排查项目中遇到的JVM问题?6、如何查看线程死锁?7、线程之间如何进行通讯的?8、介绍一下Spring&…

分布式全局唯一 ID生成器(百度UidGenerator)

文章目录为什么要使用全局ID生成器?使用UUID作为主键?使用数据库主键自增?UidGenerator简介雪花算法snowflakeSpringBoot整合百度UidGenerator为什么要使用全局ID生成器? 在分库分表中必定会面临着一个问题, 就是如何…

steam搬砖项目怎么样

大家好,我是阿阳 Steam搬砖就是利用一些技巧和经验去Steam购买一些低价格商品,我们低价拿到道具,再以低于国内市场价的价格销售,保持了发货的稳定性和速度,赚取了利润。 如果是以前有人给我安利这种看着就不靠谱的赚…

scrapy 使用FilesPipeline和ImagesPipeline

除了爬取文本,我们可能还需要下载文件、视频、图片、压缩包等,这也是一些常见的需求。scrapy提供了FilesPipeline和ImagesPipeline,专门用于下载普通文件及图片。两者的使用方法也十分简单,首先看下FilesPipeline的使用方式。 Fi…

基于Netty的高性能RPC框架(分布式缓存、雪花算法、幂等性)

文章目录前言介绍1. 服务提供2. 安全策略3. 设计模式亮点1. 信息摘要算法的应用2. 心跳机制3. SPI 机制4. IO 异步非阻塞5. RNF 协议快速开始1.依赖1.1 直接引入1.2 maven引入2. 启动 Nacos3. 提供接口4. 启动服务5. 启动客户端5. 额外配置5.1 配置文件5.2 日志配置6. 场景应用…

AxGlyph矢量绘图软件 | 绘图软件

文章目录AxGlyph矢量绘图软件安装教程所见即所得滚动式符号面板,多底色、面板符号定制和分页顺序调整格式化图形,通过节点控制可获取丰富的变形支持自由矢量画笔、混合矢量路径和矢量漫水填充整合精简版的AxMath*,可方便的在图形中嵌入数学公…

Python的PyQt框架的使用-构建环境篇

Python的PyQt框架的使用-构建环境篇一、前言二、安装PyQt三、使用第三方开发工具一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习Python的PyQt框架的使用。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) Python起初是一…

SpringBoot-Eureka-xstream-rce漏洞复现

SpringBoot-Eureka-xstream-rce actuator 是 springboot 提供的用来对应用系统进行自省和监控的功能模块。其提供的执行器端点分为两类:原生端点和用户自定义扩展端点,原生端点主要有: 漏洞利用 1.利用trace,获取认证信息&#…

虚拟内存初探CSAPP

VM as a tool for caching CMU213-CSAPP-Virtual-Memory-Concepts | GreenHatHGのBlog 理解这个概念,就是说,VM是看作是独立与CPU和主存之外的disk,然后主存看成是这个虚拟地址数列的cache (DRAM就是物理的主存) 重新用自己的…

大规模异构图召回在美团到店推荐广告的应用

总第530篇2022年 第047篇美团到店推荐广告团队在图神经网络的长期落地实践中,思考分析了场景的特点与挑战,针对性地进行了模型设计,并通过大规模训练工具及线上部署优化多次成功落地,带来了线上收入提升。本文主要介绍了大规模图召…

nginx--源码分析 array(实现动态数组)

1.基本数据结构 typedef struct {void *elts;ngx_uint_t nelts;size_t size;ngx_uint_t nalloc;ngx_pool_t *pool; } ngx_array_t;结构成员定义 1.void* elts :数组的内存位置, 即数组首地址 采用void* 近似使用模板技术,可以通过类…

npm配置taobao镜像及nrm快速换源工具介绍

文章目录npm配置淘宝镜像1 为什么默认源下载很慢?2 淘宝npm镜像服务器3 切换npm的下包镜像源4 nrmnpm配置淘宝镜像 1 为什么默认源下载很慢? 在使用npm下包的时候,默认从国外的https://registry.npmjs.orgl服务器进行下载,此时&…

linux的重定向与xshell原理

文章目录一、重定向1.输出重定向&#xff1a;>1.写入指定文件2. 覆盖写2.追加重定向 &#xff1a;>>3.输出重定向&#xff1a;<1.键盘显示2.文件显示4.重定向的一些认知误区1. test.c只显示错误的2. msg.c只显示正确的3.分析4.显示出正确的二 、xshell命令及原理1.…

【Python】环境搭建详细过程

前言 要想能够进行 Python 开发, 就需要搭建好 Python 的环境。 需要安装的环境主要是两个部分: 运行环境: Python开发环境: PyCharm 安装Python 1、找到官方网站 2、找到下载页面 点击后开始下载&#xff0c;下载完成后会出现exe的安装程序 3、双击安装包 注意&#xff1a…