目标检测-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://www.niftyadmin.cn/n/5389321.html

相关文章

v-html有什么问题

使用 v-html 指令可以将一个字符串作为 HTML 动态渲染到 Vue 模板中的某个元素上。虽然 v-html 提供了将动态 HTML 插入到模板的便利性,但过度使用 v-html 可能导致一些问题: 安全性问题:使用 v-html 可能存在安全风险,特别是当插…

持续集成,持续交付和持续部署的概念,以及GitLab CI / CD的介绍

引言:上一期我们部署好了gitlab极狐网页版,今天我们介绍一下GitLabCI / CD 目录 一、为什么要 CI / CD 方法 1、持续集成 2、持续交付 3、持续部署 二、GitLab CI / CD简介 三、GitLab CI / CD 的工作原理 4、基本CI / CD工作流程 5、首次设置 …

Kafka:kafka的技术架构? ①

一、Kafka的优势 Apache Kafka是一个开放源代码的分布式事件流平台,成千上万的公司使用它来实现高性 能数据管道,流分析,数据集成和关键任务等相关的应用程序。 二、技术架构 0)partition分区可以设置备份数,也可以设…

按身高和体重排队,运动会(C 语言)

题目 某学校举行运动会,学生们按编号(1、2、3.....n)进行标识, 现需要按照身高由低到高排列, 对身高相同的人,按体重由轻到重排列, 对于身高体重都相同的人,维持原有的编号顺序关系。 请输出排列后的学生编号 输入 两个序列&am…

NLP主要研究哪些方向?

当前AI炽手可热,NLP是AI的一个重要方向。NLP(Natural Language Processing,自然语言处理),致力于让计算机能够理解、解释和处理人类语言。NLP 的目标是使计算机能够像人类一样处理和理解自然语言的文本和语音数据。NLP…

台式电脑无法进桌面问题

楼主家里的台式电脑有一段时间进不了桌面,一度很困扰。 最开始发现有一个存储盘没有显示,拆开主机盖,把显卡、内存、硬盘都重新往紧压了下。重新开机后,显示器还是黑的。 表现为主机启动的声音正常,显示器没有信号接…

设计模式-工厂方法模式(C++)

工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但将实际的对象创建过程延迟到子类中。这种模式解耦了具体产品的创建过程,使得系统更加灵活和可扩展。 下面是一个使用 C…

如何通过Jenkins进行自动化构建项目

1. 介绍 Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,旨在自动化软件开发过程中的构建、测试和部署。它是一个基于 Java 编写的自动化服务器,在软件开发生命周期的各个阶段提供自动化支持。 官方…