目标检测-Transformer-ViT和DETR

文章目录

  • 前言
  • 一、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://xiahunao.cn/news/2803594.html

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

相关文章

Devvortex

目标靶机 攻击机IP地址为10.10.16.2 信息收集 # nmap -sT --min-rate 10000 -p- 10.10.11.242 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-21 10:32 CST Warning: 10.10.11.242 giving up on port because retransmission cap hit (10). Nma…

第三方支付机构最新“POS”机刷卡费用公式

多家支付机构发布了最新的刷卡费用公示。 《非银行支付机构监督管理条例》(简称《条例》)由国务院发布,明确规定非银行支付机构须按照相关价格法律、行政法规的规定,合理确定并公开支付业务的收费项目和收费标准,以明码标价。 支付行业在春节…

Shell的运行原理以及Linux当中的权限问题

本专栏内容为:Linux学习专栏,分为系统和网络两部分。 通过本专栏的深入学习,你可以了解并掌握Linux。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:Liunx从入门到精通 🚚代码仓库:小…

k8s(2)

目录 一.二进制部署k8s 常见的K8S安装部署方式: k8s部署 二进制与高可用的区别 二.部署k8s 初始化操作: 每台node安装docker: 在 master01 节点上操作; 准备cfssl证书生成工具:: 执行脚本文件: 拉入etcd压缩包…

国产大模型,不会开启“烧钱游戏”

最近,OpenAI的Sora又在科技圈投入一枚深水炸弹。全球对于大模型的关注,又一次达到高峰。 聚焦到国内,百度、科大讯飞、商汤、华为等大型企业,以及海量的创业小公司都在布局大模型。以往每一次风口吹来的时候,资本总会…

springboot网站开发02-接入持久层框架mybatisPlus

springboot网站开发02-接入持久层框架mybatisPlus!经过上一小节内容分享,我们的项目嵌套模式框架搭建好了,下面就是开始编辑具体的业务代码了,我们使用到了持久层框架是mybatisPlus插件。下面是一些具体的植入框架的操作步骤。 第…

C# cass10 宗地初始化-根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层

运行环境Visual Studio 2022 c# cad2016 cass10 根据 “预编号” “权利人”图层对应信息 批量添加到宗地图层 一、主要步骤 zdimport 方法:这个方法用于导入宗地信息。首先通过调用 AutoCAD API 获取当前活动文档、数据库和编辑器对象。然后根据 CreatePalette.Se…

[OpenAI]继ChatGPT后发布的Sora模型原理与体验通道

前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言OpenAI体验通道Spacetime Latent Patches 潜变量时空碎片, 建构视觉语言系统…

day11_内部类代码块枚举课后练习 - 参考答案

文章目录 day11_课后练习代码阅读题第1题第2题第3题第4题第5题第6题第7题第8题第9题第10题第11题第12题 代码编程题第13题 day11_课后练习 代码阅读题 第1题 知识点:实例初始化 案例:判断运行结果 package com.atguigu.test01;class HelloA{public …

稳定运行矿山鸿蒙系统——飞凌嵌入式的这2款核心板获得「矿鸿资质证书」

飞凌嵌入式FETMX6ULL-S核心板和FETA40i-C核心板近期通过了“矿鸿兼容性测试认证”,这两款嵌入式核心板与矿鸿OS的结合将进一步推动煤矿行业的智能化进程。 矿鸿(MineHarmony)操作系统是由国家能源集团基于鸿蒙系统推出的一款专为煤矿行业设计…

网页403错误(Spring Security报异常 Encoded password does not look like BCrypt)

这个错误通常表现为"403 Forbidden"或"HTTP Status 403",它指的是访问资源被服务器理解但拒绝授权。换句话说,服务器可以理解你请求看到的页面,但它拒绝给你权限。 也就是说很可能测试给定的参数有问题,后端…

C++力扣题目 392--判断子序列 115--不同的子序列 583--两个字符串的删除操作 72--编辑操作

392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,&quo…

小说阅读软件书架界面和历史记录界面

1、引言 终于修改到书架界面和历史阅读记录界面了,修改完这两个界面就算完成一大半了,这两个界面其实都差不多,代码逻辑都一样,因此后面也会只展示书架界面的代码,历史阅读记录界面就展示效果图就行了。 2、实现代码 …

无线听觉新体验:南卡、韶音、墨觉骨传导耳机综合评测

作为一个资深的跑步爱好者,我几乎离不开音乐的陪伴。不知道大家有没有同感,有时候一首歌曲就是我坚持下去的动力,尤其是在那段艰难的跑步时刻。但是找到一款既能让我在运动中自由呼吸、又能提供优质音乐体验的耳机,并不是一件容易…

Redis(十五)Bitmap、Hyperloglog、GEO案例、布隆过滤器

文章目录 面试题常见统计类型聚合统计排序统计二值统计基数统计 Hyperloglog专有名词UV(Unique Visitor)独立访客PV(Page View)页面浏览量DAU(Daily Active User)日活跃用户量MAU(Monthly Activ…

人工智能 — 数字图像

目录 一、图像1、像素2、图像分辨率3、RGB 模型4、灰度5、通道6、对比度7、RGB 转化为 Gray8、RGB 值转化为浮点数9、二值化10、常用视觉库11、频率12、幅值 二、图像的取样与量化1、数字图像2、取样3、量化 三、上采样与下采样1、上采样(upsampling)2、…

Encoder-decoder 与Decoder-only 模型之间的使用区别

承接上文:Transformer Encoder-Decoer 结构回顾 笔者以huggingface T5 transformer 对encoder-decoder 模型进行了简单的回顾。 由于笔者最近使用decoder-only模型时发现,其使用细节和encoder-decoder有着非常大的区别;而huggingface的接口为…

解决SpringAMQP工作队列模型程序报错:WARN 48068:Failed to declare queue: simple.queue

这里写目录标题 1.运行环境2.报错信息3.解决方案4.查看解决之后的效果 1.运行环境 使用docker运行了RabbitMQ的服务器: 在idea中导入springAMQP的jar包,分别编写了子模块生产者publisher,消费者consumer: 1.在publisher中运行测试…

Excel Ctrl + E快捷键 批量合并提取数据

目录 一. 合并数据二. 提取数据 Ctrl L 只是快捷键,在数据面板中有快速填充的按钮。 一. 合并数据 🤔有如图所示的数据,现在想批量的把姓名和电话合在一起 🧐先把要处理的数据手动复制到一起,然后按下 Ctrl E 就可以…

Element table 实现表格行、列拖拽功能

安装包 npm install sortablejs --save <template><div class"draggable" style"padding: 20px"><el-table row-key"id" :data"tableData" style"width: 100%" border><el-table-columnv-for"(it…