目标检测-Transformer-ViT和DETR

news2024/11/18 10:30:34

文章目录

  • 前言
  • 一、ViT
    • 应用和结论
    • 结构及创新点
  • 二、DETR
    • 应用和结论
    • 结构及创新点
  • 总结


前言

随着Transformer爆火以来,NLP领域迎来了大模型时代,成为AI目前最先进和火爆的领域,介于Transformer的先进性,基于Transformer架构的CV模型也开始涌现。本文介绍一下最先得到可靠应用的简单模型:ViT(Vision Transformer)、DETR(Detection Transformer)。


一、ViT

应用和结论

ViT是2020年Google团队提出的将Transformer应用在图像分类的模型,但是因为其模型“简单”且效果好,可扩展性强(scalable,模型越大效果越好),成为了Transformer在CV领域通用的backbone。

ViT原论文中最核心的结论是,当拥有足够多的数据进行预训练的时候,ViT的表现就会超过CNN,突破transformer缺少归纳偏置的限制,可以在下游任务中获得较好的迁移效果。但是当训练数据集不够大的时候,ViT的表现通常比同等大小的ResNets要差一些,这是因为Transformer和CNN相比缺少归纳偏置(inductive bias),即一种先验知识,提前做好的假设。

CNN具有两种归纳偏置:一种是局部性,即图片上相邻的区域具有相似的特征;一种是平移不变形,先卷积还是先平移结果都是一样

结构及创新点

ViT的结构:

  • 相比于NLP领域的词嵌入(Word Embedding),ViT采用了(Patch Embedding)
  • ViT将输入图片分为16x16大小的多个Patch,再将每个Patch投影为固定长度的向量,通过sum方式进行位置编码后送入Transformer Encoder,Transformer Encoder的操作和原始Transformer中完全相同。但是因为对图片分类,因此在输入序列中加入一个特殊的token,该token对应的输出即为最后的类别预测。
  • ViT block:224x224x3 -> Patch Embedding(197 * 768) -> Positional Encoding(197 * 768) -> Transformer Encoder(197 * 768) -> MLP放大再缩小(197 * 768)

模型结构图如下:
![[Pasted image 20231214171422.png]]

二、DETR

应用和结论

Detection Transformer(DETR)是Facebook AI的研究者提出的Transformer的视觉版本,用于目标检测和全景分割。这是第一个将Transformer成功整合为检测pipeline中心构建块的目标检测框架。

DETR找目标类似于地图中找目标一样,先全局范围内粗略搜,然后用放大镜精确锁定目标,因此其对小物体的检测效果不是很好;

结构及创新点

DETR之前,深度学习领域中的目标检测,大致可以分为:一阶段检测与二阶段检测。这些检测方法基本上将目标检测分为分类+框回归任务,无法直接获取到检测结果,并由于重复的大量预测框产生的NMS等操作会大大影响检测的性能。

DETR将目标检测当作一个集合预测问题,一次预测N个对象,然后通过基于集合的loss(匈牙利算法)找出预测集N个类别的排序序列与真值集相匹配的最小的序列来保证真实对象和预测对象之间的匹配,然后通过边框loss保证每个预测对象的边框精度

DETR有两个创新点:

  • 一是新的目标函数,通过二分图匹配(匈牙利算法和HK(Hopcroft-Karp)算法等)的方式,强制模型对每个物体生只生成一个预测框
  • 二是使用Transformer的编码器-解码器架构
  1. 使用可学习的object query替代了生成anchor的机制。DETR可以将learned object query和全局图像信息结合起来,通过不停的做注意力操作,从而使得模型直接输出最后的预测框。
  2. 并行预测框。因为图像中目标没有依赖关系,并行输出使得速度更快。

模型结构图如下:
在这里插入图片描述


总结

在COCO数据集上的性能,DETR和一个训练好的Faster R-CNN baseline是差不多的,无论从内存、速度还是精度来说。

DETR具有两大缺点:

(1)收敛速度慢:因为全局像素之间计算注意力要收敛到几个稀疏的像素点需要消耗很长的时间。

(2)小目标检测差:目标检测基本都是在大分辨率的特征图上进行小目标的检测,但是Transformer中的Self Attention的计算复杂度是平方级别的,所以只能利用到最后一层特征图。

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

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

相关文章

QGIS编译(跨平台编译)之七十:【Windows编译错误处理】找不到vector_tile.pb.h、vector_tile.pb.cc

文章目录 一、错误描述二、错误原因分析三、错误处理一、错误描述 ①无法打开源文件“vector_tile.pb.h” ②无法打开包含文件:“vector_tile.pb.h”:No Such file or directory ③无法打开源文件:“vector_tile.pb.cc”:No Such file or directory 二、错误原因分析 qgis\…

MFC 配置Halcon

1.新建一个MFC 工程,Halcon 为64位,所以先将工程改为x64 > VC 目录设置包含目录和库目录 包含目录 库目录 c/c ->常规 链接器 ->常规 > 链接器输入 在窗口中添加头文件 #include "HalconCpp.h" #include "Halcon.h"…

Oracle迁移到mysql-表结构的坑

1.mysql中id自增字段必须是整数类型 id BIGINT AUTO_INCREMENT not null, 2.VARCHAR2改为VARCHAR 3.NUMBER(16)改为decimal(16,0) 4.date改为datetime 5.mysql范围分区必须int格式,不能list类型 ERROR 1697 (HY000): VALUES value for partition …

应急响应实战笔记03权限维持篇(3)

0x00 前言 攻击者在获取服务器权限后,会通过一些技巧来隐藏自己的踪迹和后门文件,本文介绍Linux下的几种隐藏技术。 0x01 隐藏文件 Linux 下创建一个隐藏文件:touch .test.txt touch 命令可以创建一个文件,文件名前面加一个 点…

使用pygame 编写俄罗斯方块游戏

项目地址:https://gitee.com/wyu_001/mypygame/tree/master/game 可执行程序 这个游戏主要使用pygame库编写俄罗斯方块游戏,demo主要演示了pygame开发游戏的主要设计方法和实现代码 下面是游戏界面截图 游戏主界面: 直接上代码&#xff1a…

RabbitMQ 部署方式选择

部署模式 RabbitMQ支持多种部署模式,可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式: 单节点模式: 最简单的部署方式,所有的RabbitMQ组件(消息存储、交换机、队列等)都运行在…

Redis可视化工具——RedisInsight

文章目录 1. 下载2. 安装3. RedisInsight 添加 Redis 数据库4. RedisInsight 使用 RedisInsight 是 Redis 官方出品的可视化管理工具,支持 String、Hash、Set、List、JSON 等多种数据类型的管理,同时集成了 RedisCli,可进行终端交互。 1. 下载…

数组与指针相关

二级指针与指针数组 #include <stdio.h> #include <stdlib.h> int main() { // 定义一个指针数组&#xff0c;每个元素都是一个指向int的指针 int *ptr_array[3]; // 为指针数组的每个元素分配内存 ptr_array[0] malloc(2*sizeof(int)); ptr_array[1] m…

转运机器人,AGV底盘小车:打造高效、精准的汽车电子生产线

为了满足日益增长的市场需求&#xff0c;保持行业领先地位&#xff0c;某汽车行业电子产品企业引入富唯智能AMR智能搬运机器人及其智能物流解决方案&#xff0c;采用自动化运输措施优化生产节拍和搬运效率&#xff0c;企业生产效率得到显著提升。 项目背景&#xff1a; 1、工厂…

PyTorch概述(二)---MNIST

NIST Special Database3 具体指的是一个更大的特殊数据库3&#xff1b;该数据库的内容为手写数字黑白图片&#xff1b;该数据库由美国人口普查局的雇员手写 NIST Special Database1 特殊数据库1&#xff1b;该数据库的内容为手写数字黑白图片&#xff1b;该数据库的图片由高…

GitCode配置ssh

下载SSH windows设置里选“应用” 选“可选功能” 添加功能 安装这个 坐等安装&#xff0c;安装好后可以关闭设置。 运行 打开cmd 执行如下指令&#xff0c;启动SSH服务。 net start sshd设置开机自启动 把OpenSSH服务添加到Windows自启动服务中&#xff0c;可避免每…

mysql的日志文件在哪?

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; MySQL的日志文件通常包括错误日志、查询日志、慢查询日志和二进制日志等。这些日志文件的位置取决于MySQL的安装和配置。以下是一些常见的日志文件位置和如何找到它们&#xff…

【kubernetes】二进制部署k8s集群之,多master节点负载均衡以及高可用(下)

↑↑↑↑接上一篇继续部署↑↑↑↑ 之前已经完成了单master节点的部署&#xff0c;现在需要完成多master节点以及实现k8s集群的高可用 一、完成master02节点的初始化操作 二、在master01节点基础上&#xff0c;完成master02节点部署 步骤一&#xff1a;准备好master节点所需…

调用 Python 函数遗漏括号 ( )

调用 Python 函数遗漏括号 1. Example - error2. Example - correctionReferences 1. Example - error name "Forever Strong" print(name.upper()) print(name.lower)FOREVER STRONG <built-in method lower of str object at 0x0000000002310670>---------…

【ArcGIS】利用高程进行坡度分析:区域面/河道坡度

在ArcGIS中利用高程进行坡度分析 坡度ArcGIS实操案例1&#xff1a;流域面上坡度计算案例2&#xff1a;河道坡度计算2.1 案例数据2.2 操作步骤 参考 坡度 坡度是地表单元陡缓的程度&#xff0c;通常把坡面的垂直高度和水平距离的比值称为坡度。 坡度的表示方法有百分比法、度数…

单片机04__基本定时器__毫秒微秒延时

基本定时器__毫秒微秒延时 基本定时器介绍&#xff08;STM32F40x&#xff09; STM32F40X芯片一共包含14个定时器&#xff0c;这14个定时器分为3大类&#xff1a; 通用定时器 10个 TIM9-TIM1和TIM2-TIM5 具有基本定时器功能&#xff0c; 还具有输入捕获&#xff0c;输出比较功…

yarn install:unable to get local issuer certificate

一、问题描述 今天在Jenkins上发布项目时&#xff0c;遇到一个报错&#xff1a; error Error: unable to get local issuer certificateat TLSSocket.onConnectSecure (node:_tls_wrap:1535:34)at TLSSocket.emit (node:events:513:28)at TLSSocket._finishInit (node:_tls_w…

PLC_博图系列☞基本指令“取反RLO”

PLC_博图系列☞基本指令“取反RLO” 文章目录 PLC_博图系列☞基本指令“取反RLO”背景介绍取反RLO说明示例 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 取反RLO 背景介绍 这是一篇关于PLC编程的文章&#xff0c;特别是关于西门子的博图软件。我并不是专业的PLC…

谷歌Gemma开源了

1、Gemma的表现 自从大模型横空出世之后&#xff0c;大部分大模型都是闭源的&#xff0c;只有少部分模型选择开源。谷歌推出了全新的开源模型系列Gemma&#xff0c;相比谷歌之前的 Gemini模型&#xff0c;Gemma 更加轻量&#xff0c;可以免费使用&#xff0c;模型权重也一并开…

详解编译和链接!

目录 1. 翻译环境和运行环境 2. 翻译环境 2.1 预处理 2.2 编译 2.3 汇编 2.4 链接 3. 运行环境 4.完结散花 悟已往之不谏&#xff0c;知来者犹可追 创作不易&#xff0c;宝子们&#xff01;如果这篇文章对你们…