End-to-End Object Detection with Transformers

DERT 目标检测

基于卷积神经网络的目标检测回顾

双阶段代表检测算法:faster rcnn

单阶段代表算法:yolo

上述单双阶段都是基于anchor

目标检测广泛的使用NMS(非极大值抑制算法)

DETR抛弃了上述算法思路。基于编码器和解码器来进行目标检测

DETR对比Swin Transformer

之前的Swin TransformerSwin Transformer 主要用于目标检测的编码器部分,而不是解码器部分。

在目标检测中,通常会使用两个主要组件:编码器和解码器。编码器负责提取输入图像的特征,而解码器则负责将这些特征转换为目标检测结果。Swin Transformer 主要用作编码器,它通过多层的 Transformer 模块来提取图像特征。

至于解码器部分,可以采用其他的方法来完成目标检测任务。常见的解码器包括使用卷积神经网络 (CNN) 或者其他的传统机器学习算法。具体选择哪种解码器取决于具体的任务和需求。

总结起来,Swin Transformer 在目标检测中主要用作编码器部分,而解码器部分可以根据需求选择其他方法来完成。

摘要

我们提出的新方法将物体检测视为一个直接的集合预测问题。我们的方法简化了检测流水线,有效地消除了对许多手工设计组件的需求,如非最大抑制程序或锚点生成,这些组件明确地编码了我们对任务的先验知识。新框架被称为 DEtection TRansformer 或 DETR,其主要成分是基于集合的全局损失(通过两端匹配强制进行唯一预测)和变换器编码器-解码器架构。DETR 给定了一小组固定的已学对象查询,通过推理对象之间的关系和全局图像上下文,直接并行输出最终的预测结果。与许多其他现代检测器不同,新模型概念简单,不需要专门的库。在极具挑战性的 COCO 物体检测数据集上,DETR 的准确性和运行时间性能与成熟且高度优化的 Faster RCNN 基准相当。此外,DETR 可以很容易地通用于以统一的方式进行全视角分割。我们的研究表明,DETR 的性能明显优于竞争基线。训练代码和预训练模型见 https://github.com/facebookresearch/detr。

检测网络流程

先使用CNN得到各个Patch作为输入,在套用Transformer做编码解码结构

编码和Vision Transformer一致,重点在于解码,直接预测100个坐标框

Vision Transformer

预测的100个框当中,包括物体和非物体。

我们的 DEtection TRansformer(DETR,见图 1)可一次性预测所有物体,并使用集合损失函数进行端到端训练,在预测物体和地面实况物体之间进行双向匹配。DETR 通过放弃多个手工设计的、编码先验知识(如空间锚点或非最大抑制)的组件来简化检测管道。与现有的大多数检测方法不同,DETR 不需要任何定制层,因此可以在任何包含标准 CNN 和转换器类的框架中轻松复制1。

大致思路就是:在编码器部分输入的100个向量,通过解码器输出,完成100个检测框的预测

较NLP的区别是:词语之间是有前后的对应关系的,检测是100个向量同时输入

DERT网络架构


DETR 使用传统的 CNN 骨干来学习输入图像的二维表示。该模型将其扁平化,并辅以位置编码,然后将其传递给变换器编码器。然后,变换解码器将少量固定数量的已学位置嵌入(我们称之为对象查询)作为输入,并额外关注编码器的输出。我们将解码器的每个输出嵌入信息传递给一个共享前馈网络(FFN),该网络可以预测检测结果(类别和边界框)或 "无对象 "类别。

其实就是和VIT一模一样的

编码器概述


编码器对一组参考点的自我关注。编码器能够分离单个实例。使用基准 DETR 模型对验证集图像进行预测。

得到各个目标的注意力结果,准备好特征,等解码器来匹配

解码器概述

解码器阶段首先初始化100个向量 (object queries)

可以把encoder看成生产者,decoder看成消费者

encoder提供 k 和 v

decoder提供 q, 并使用q去查询匹配 k 和 v

在解码器中,所有的object queries同时去查询匹配编码器中每个位置的k和v

解码器输出的结果经过全连接层得到检测框的位置和目标得分

object queries是核心,让他学会从原始特征数据中找到物体的位置

整体结构

object queries的初始化

输出层就是100个 object queries 预测

编码器和Vision Transformer一样(减去了cls)
解码器首先随机初始化100个object queries (以0+位置编码进行的初始化的) 相当于就是用位置编码进行的初始化

直接使用位置编码作为初始化的目的:使得不同的object queries 关注图像的不同区域。
通过多层让其学习如何利用输入特征

Decoder中的Muiti-Head Self-Attention

100个 object queries分别使用q,k,v完成自注意力机制

Decoder中的Muiti-Head Attention

由Encoder提供k和v,由Muiti-Head Self-Attention提供q

损失函数

匈牙利匹配

是地面实况 yi 与索引为 σ(i)的预测之间的成对匹配成本。根据之前的工作,匈牙利算法可以高效地计算出这一最优分配

匈牙利匹配:按照最小的loss进行匹配,使得选择的预测框和真实框的loss最小,其余剩下的预测框就是背景


匹配成本既要考虑类别预测,也要考虑预测框和地面实况框的相似性
类别概率
检测框位置

这种寻找匹配的过程与现代检测器中用于将建议[37]或锚点[22]与地面实况对象相匹配的启发式分配规则的作用相同。主要区别在于,我们需要找到一对一的匹配,以实现无重复的直接集合预测。第二步是计算损失函数,即上一步中所有匹配对的匈牙利损失。我们对损失的定义与常见物体检测器的损失类似,即类预测的负对数似然和稍后定义的盒损失的线性组合:

解决的问题

注意力起到的作用:可以识别出遮挡区域

可视化解码器对每个预测对象的注意力(图像来自 COCO val set)。使用 DETR-DC5 模型进行预测。不同物体的注意力分数用不同颜色表示。解码器通常会关注物体的四肢,如腿部和头部。最佳彩色视图

相关推荐
车载诊断技术1 小时前
电子电气架构 --- 什么是EPS?
网络·人工智能·安全·架构·汽车·需求分析
KevinRay_1 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
跃跃欲试-迪之1 小时前
animatediff 模型网盘分享
人工智能·stable diffusion
Captain823Jack1 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
被制作时长两年半的个人练习生1 小时前
【AscendC】ReduceSum中指定workLocal大小时如何计算
人工智能·算子开发·ascendc
Captain823Jack2 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
Black_mario2 小时前
链原生 Web3 AI 网络 Chainbase 推出 AVS 主网, 拓展 EigenLayer AVS 应用场景
网络·人工智能·web3
Aileen_0v03 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
数信云 DCloud3 小时前
实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域
人工智能
itwangyang5203 小时前
AIDD - 从机器学习到深度学习:蛋白质-配体对接评分函数的进展
人工智能·深度学习·机器学习