【第二十八周】文献阅读:基于Transformer的端到端目标检测

摘要

本周主要阅读了 DETR 算法的原始论文。DETR 是将 Transformer 应用到计算机视觉领域的代表性算法,其不需要传统目标检测的 NMS 或 anchor 机制,而是直接将目标检测任务视为一个集合预测任务去输出预测集合。DETR 首先将输入图像通过一个 CNN 来提取特征并进行序列化,序列化之后的向量再输入到 encoder 中进行编码并产生包含上下文信息的向量。接下来初始化一系列包含位置信息的 object queries 向量,再将这些向量和之前编码得到的向量进行查询,最后将得到的向量通过前馈神经网络生成预测集合。实验表明了 DETR 在 COCO 数据集上的性能于 Faster R-CNN 相当,但是作为首次将 Transformer 运用到计算机视觉领域的算法,DETR 在未来的改进及研究仍然大有可为。

Abstract

This week, I primarily focused on reading the original paper of the DETR algorithm. DETR is a representative algorithm that applies Transformer to the field of computer vision. Unlike traditional object detection algorithms that require Non-Maximum Suppression (NMS) or anchor mechanisms, DETR directly treats the task of object detection as a set prediction problem, outputting a set of predictions. DETR first processes the input image through a CNN to extract features and then serializes these features into a sequence of vectors. These serialized vectors are fed into an encoder to encode them and produce vectors enriched with context information. Subsequently, a series of object queries vectors initialized with positional information are introduced. These object query vectors interact with the previously encoded vectors through a process akin to querying, and finally, the resulting vectors pass through a feed-forward neural network to generate the prediction set.Experiments have shown that DETR performs comparably to Faster R-CNN on the COCO dataset. However, as the pioneering algorithm to apply Transformer in the domain of computer vision, there is still great potential for future improvements and research on DETR.


基于Transformer的端到端目标检测

Title: End-to-End Object Detection with Transformers
Author: N Carion,F Massa,G Synnaeve,N Usunier,A Kirillov,S Zagoruyko
Source: Computer Vision – ECCV 2020
Arxiv:https://arxiv.org/abs/2005.12872?file=2005.12872


研究动机

目标检测的任务就是为每一个感兴趣的对象预测一组边界框和类别标签。当今的目标检测模型都是用一种间接的方式来完成这个目标 ,比如说生成大量的region proposals、锚框(anchor)或者利用网格中心点来解决一个回归和分类问题。

这种处理办法的坏处就是性能会受到中间步骤的显著影响。例如使用 selective search 的模型的性能会显著降低,采用大量重复的后处理(NMS)步骤以及生成锚框的模型的性能也会被这些过程严重拖累。

因此,作者提出了一种基于 Transformer 的办法来绕过这些多余的中间步骤,直接对目标进行定位并分类。这种端到端的思想已经在机器翻译和语音识别领域取得了重大的进展,而将 Transformer 运用到计算机视觉领域也是一次伟大的尝试。DETR 的出现,让研究者们意识到,Transformer 不仅能做特征提取,还可以实现一些具体的下游任务。

创新点

  1. 完全端到端的学习框架:没有复杂的预处理步骤或手工设计的组件,DETR 可以作为一个完整的端到端系统进行训练,所有参数都可以通过反向传播自动调整,使得整个模型更加简洁和易于维护。
  2. 消除手工设计的组件:传统的单阶段和两阶段检测器通常依赖于预定义的锚点框来生成候选区域,而 DETR
    完全摒弃了这种做法。同时,大多数检测算法需要使用 NMS 来去除冗余的检测结果。而 DETR 的输出是独立的预测,因此理论上不需要 NMS。
  3. 基于 Transformer 的架构:DETR 首次将 Transformer
    编码器-解码器结构应用于目标检测任务中。与传统的目标检测模型不同,DETR 不依赖于卷积网络中的局部特征提取,而是通过自注意力机制对整个图像进行全局建模,从而更好地捕捉对象之间的关系。

局限性

DETR 在小物体上的训练、优化和性能方面表现不好,需要结合一些多尺度方案来解决整个问题。

DETR 算法

在这里插入图片描述
在DETR中,输入图像首先通过一个卷积神经网络(CNN),这个过程可以被视为一种特征提取步骤。CNN的作用是将原始图像转换为一组更低维的特征表示,即所谓的“patch”。

因为原始图像的数据量通常很大,直接对高分辨率图像应用Transformer计算成本极高。因此,使用CNN来生成较小的特征图(patch),可以显著减少数据量,使Transformer能够更有效地工作。并且由于 Transformer 只能输入序列数据,因此将图像转换为一个个 patch 实际上也是讲图像进行序列化。

主要流程如下:

  1. 图像输入CNN中提取特征并进行序列化
  2. 将序列信息输入 Transformer 得到预测边界框集合
  3. 丢弃不存在物体的边界框

具体架构

在这里插入图片描述
DETR 的具体架构由四部分组成,分别是 backboneencoderdecoderprediction heads

  1. backbone:主要负责从输入图像中提取特征并进行序列化,将图像转化为低维特征表示。
  2. encoder:这部分实际上和原始的 Transformer 的 encoder 没什么不同,采取的是多层自注意力机制获取不同位置 patch 之间的全局上下文关系并产生一组特征向量。
  3. decoder:在这个部分中 object queries 是核心,目的是为了让它学会怎么从原始特征找到物体的位置及类别。这部分和原始的 Transformer 中的 decoder 有很大的不同,首先去掉了 mask 机制,并且 object queries 是并行出入 decoder 中进行处理的。object queries 是用0进行初始化的向量,目的是为了学习如何从 encoder 编码之后的特征中找到边界框位置和类别。
  4. prediction heads:将通过 Transformer 之后的向量通过前馈神经网络进行回归和分类得到最终预测结果。

在这里插入图片描述
从上图我们可以更加清晰地看到数据流动的过程,首先图像会分别产生Q、K和V三个矩阵,然后这三个矩阵会经过一个多头自注意力层进行互相查询得到包含上下文信息的向量,然后再经过 ADD&Norm层经过相应的处理,整个过程进行N次。而在另一部分,Object queries 向量首先用0进行初始化,然后加上位置编码作为一个查询矩阵Q,去和图像中的V和K矩阵进行注意力计算。同样,整个过程要经过M次。最后得到的向量拿去分别通过两个前馈传播网络得到分类和边界框坐标。

在这里插入图片描述
为什么要使用 encoder呢?

正如图上所示,使用 encoder 实际上是为了让机器关注图像中更值得注意的部分。encoder 可以使图像上的不同位置的 patch 进行“互相交流”得到注意力信息,可以让机器理解自己更应该关注的区域。

损失函数

σ ^ = arg ⁡ min ⁡ σ ∈ S N ∑ i = 1 N L match ( y i , y ^ σ ( i ) ) \hat{\sigma} = \arg \min_{\sigma \in \mathfrak{S}_N} \sum_{i=1}^{N} \mathcal{L}_{\text{match}}(y_i, \hat{y}_{\sigma(i)}) σ^=argσSNmini=1NLmatch(yi,y^σ(i))

  • y = { y i } i = 1 N y = \{y_i\}_{i=1}^{N} y={ yi}i=1N: 表示 N N N 个 ground truth 的集合,其中 y i y_i yi 表示第 i i i个 ground truth。由于集合 y y y中的数量肯定是远远小于 y ^ \hat y y^,为了让两个集合大小一直,因此会在集合 y y y中使用 ∅ \varnothing 来对集合进行填充。
  • y ^ = { y ^ i } i = 1 N \hat{y} = \{\hat{y}_i\}_{i=1}^{N} y^={ y^i}i=1N: 表示 N N N 个预测的集合,其中 y ^ i \hat{y}_i y^i表示第 i 个预测。
  • σ \sigma σ:是一种预测值 y ^ \hat{y} y^ 的排列方式。因为集合 y y y要与集合 y ^ \hat y y^进行一一匹配,所以只需要固定 y y y的顺序,调整 y ^ \hat y y^的排列即可。
  • S N \mathfrak{S}_N S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值