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个坐标框
预测的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 模型进行预测。不同物体的注意力分数用不同颜色表示。解码器通常会关注物体的四肢,如腿部和头部。最佳彩色视图