目标检测 - End-to-End Object Detection with Transformers

0. 前言

1. 要解决什么问题

  • 当前的目标检测解决方案(比如Faster RCNN/YOLO/CenterNet等)都不够直观
    • 把检测任务分解为获取候选框/anchors/图像中心点、分类两部分。
    • 性能很大程度上取决于postprocessing操作(用于删除多余的结果)

2. 用了什么方法

  • 将检测任务看作是direct set prediction problem

    • set prediction,就是一次预测一波数据,可能相互之间没啥关系,相当于是多个head同时进行预测?可能更类似于序列任务中的一对多任务?
  • DETR结构如下图所示

    • image-20201114195518325
    • image-20201114211125655
  • 新的目标检测解决方案(或者说范式?),就是要解决以下两个问题:

    • 模型一共分几步,每一步获取什么叫结果(从而获得最终的检测结果),以及损失函数如何构建。
      • 对于Faster R-CNN,就是先通过RPN获取候选框,再通过分类网络获取每个候选框的类型,最后通过后处理筛选得到最终结果。损失函数就是RPN与Fast R-CNN分别的分类损失函数与bbox reg损失函数。
    • 模型获得每一步结果的具体结构长什么样子
      • 对于Faster R-CNN,就是RPN的设计以及套用Fast R-CNN模型的分类部分。
  • DETR概述

    • 第一步:利用Transformer构建DETR Architecture,对每张图片预测固定数量的物体。
      • 可能就是所谓的 set prediction
    • 第二步:训练时,需要将固定数量的预测物体与GT进行匹配。DETR的目标,就是找到set prediction结果与GT的匹配关系。
  • 一些损失函数相关细节

    • 假设set prediction有N个预测结果,而GT的数量一般都是小于N,那么,先要对GT执行PAD操作(用no object来进行填充),然后找道预测结果与GT的两两匹配结果。

    • 这里的匹配与之前Faster RCNN/Yolo的匹配其实都是差不多的,不同之处在于,DETR中GT与预测结果是一一匹配的。

    • DETR的损失函数总体结构为:image-20201115140055120

    • 所谓匹配,分开来说,其实就是包括类别匹配与bbox匹配。所以上面同时中的 L m a t c h L_{match} Lmatch也可以分为这两个部分,形式如下image-20201115140107460

    • 上面公式中,box的损失函数其实使用的是l1 loss和GIOU loss的线性组合,即image-20201115141227720

  • Detr网络结构概述

    • 网络分为三个部分:backbone, encoder-decoder transformer, feed forward network
    • backbone:没啥好说的,普通卷积网络,用于提取图像特征。
    • encoder-decoder transformer
      • 第一,Encoder输入构建。对backbone的结果进行降维(1x1卷积,使得channel数量减少),然后flatten为dx(HW)的特征图。感觉就是将d个长度为HW的向量作为encoder的输入。Encoder输入中还融合了positional encodings信息。
      • 第二,Encoder结构。与普通Transformer相同,以上一步的结果作为输入,通过Transformer的multi-head self-attention模块和feed forward network。
      • 第三,Decoder结构,与普通Transformer几乎相同。不同之处在于DETR中对于N个物体是并行预测的,而原始Transformer是一个一个生成的。
      • 第四,FFNs,即Prediction Feed Forward Netkworks,用于预测最终bbox结果。预测的值是 normalized center coordinates, height, width以及基于softmax的分类结果。有两点需要注意:其一,直接预测坐标,而不是那些基于anchor的,预测变化量;其二,类别预测中要有一类为no object
  • 全景分割相关

3. 效果如何

  • 效果自然顶呱呱image-20201115144031287

4. 还存在什么问题&可借鉴之处

  • 论文中提到,在大目标中DETR效果有显著提升,但小目标效果不好。
  • 训练时间非常长……训练300epochs,16V100需要3天……甚至还有训练500epoch的……
  • 要理解这论文,还是要更深刻地理解Transormer,这样position encodeings、encoder、decoder的细节才能搞清楚。
  • 可以考虑下,如何用到视频领域,挺有意思的。不过就算有想法,这训练资源,有点劝退。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
end-to-end object detection with transformers,即使用transformers进行端到端的目标检测。在传统的目标检测算法中,通常需要使用两个步骤:提取特征和应用对象分类器。然而,这种两步骤的方法可能存在一些问题,如信息丢失和局部优化。 为了解决这些问题,最近一些研究人员提出了使用transformers模型进行端到端的目标检测transformers是一种用于自然语言处理任务的强大模型,但其也可以应用于计算机视觉领域。 使用transformers进行端到端的目标检测可以直接输入图像,并通过transformers网络来同时提取特征和进行目标分类。这种方法的主要优势是能够处理全局信息,并且不需要使用传统的手工设计特征提取器。 使用transformers进行目标检测的具体过程通常包括以下几个步骤:首先,将图像输入transformers网络,以获得一些中间特征表示。然后,使用这些特征表示来预测目标的位置和类别。最后,根据预测结果来生成最终的目标检测结果。 与传统的目标检测算法相比,使用transformers进行端到端的目标检测具有一些优点。首先,这种方法可以处理全局信息,因此可以更准确地检测到目标。其次,由于没有使用手工设计的特征提取器,这种方法可以更好地适应不同类型的目标。此外,transformers模型具有许多预训练模型可供使用,这可以节省训练时间并提高检测性能。 总结来说,使用transformers进行端到端的目标检测是一种新的方法,它可以同时处理特征提取和目标分类,并能够更准确地检测目标。随着研究的进展和发展,我们相信这种方法将在目标检测领域有着广阔的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值