论文阅读——DETR

1. Motivation

  • 现有的目标检测器往往通过间接的方式来完成检测任务——anchor、proposals、window center等。这些检测器的性能受后处理影响大。

2.Contribution

  • 提出将目标检测视为一个直接集合预测问题(end-to-end Object Detection)。
  • 基于Transformer编码器-解码器架构,其自注意力机制可以有效去除重复检测。
  • 基于集合的全局损失函数,通过二分匹配以及transformer编码器-解码器体系结构强制进行唯一预测。

在这里插入图片描述

3. Related Work

3.1 Set Prediction

集合预测:输入一副图像,网络的输出就是最终的预测的集合(也不需要任何后处理)能够直接得到预测的集合就已经达到了检测的目的了。

在目标检测任务上,集合预测往往存在一定困难,比如:近乎相似的box。传统的目标检测器依赖于后处理,比如NMS。但是集合预测是不需要后处理的。它需要全局推理方案,对所有预测的元素之间的相互作用进行建模,以避免冗余。对于恒定大小的集合预测,密集的全连接网络是足够的,但成本很高。

一般的做法就是在匈牙利算法的基础上设计一个损失函数,用来match ground-truth和预测值。

3.2 Transformers and Parallel Decoding

Transformer:引入自注意力机制,对整个序列进行信息聚合。其主要优势在于它的全局计算以及记忆能力。十分适合处理长序列数据。
具体可以阅读论文:https://arxiv.org/abs/1706.03762
参考博客:论文阅读——Attention is all you need

4. Method

4.1 Object detection set prediction loss

step1. 预测值和GT值之间产生一个最佳匹配,然后优化特定对象的bbox的损失。
在这里插入图片描述

  • L m a t c h ( y i , y ^ σ ( i ) ) L_{match}(y_i,\hat{y}_{\sigma(i)}) Lmatch(yi,y^σ(i)):表示的是GT值 y i y_i yi和预测值 y ^ σ ( i ) \hat{y}_{\sigma(i)} y^σ(i)之间的匹配损失。 σ \sigma σ是N个预测值的排列组合。N远大于真实目标数量,GT值集合y的size也是N,用 ϕ \phi ϕ(no object)填充。
  • 上式是为了找出一组排列组合使得损失值最小。
  • L m a t c h ( y i , y ^ σ ( i ) ) L_{match}(y_i,\hat{y}_{\sigma(i)}) Lmatch(yi,y^σ(i))可以定义成:
    在这里插入图片描述

GT值 y i = ( c i , b i ) y_i = (c_i,b_i) yi=(ci,bi),其中 c i c_i ci是目标类别信息, b i b_i bi是bbox信息(x, y, w, h)。我们用 p ^ σ ( i ) ( c i ) \hat{p}_{\sigma(i)}(c_i) p^σ(i)(ci)来表示预测类别为 c i c_i ci的概率。 σ ( i ) \sigma(i) σ(i)是某个排列组合中ground truth的第i个元素对应的predictions的index。 1{}是花括号内为真时取1

step2. 计算损失(优化),即上一步中匹配的所有配对的匈牙利损失。
损失函数可以定义为:

在这里插入图片描述

σ ^ \hat{\sigma} σ^是第一步中的最佳分配。

关于bbox损失:
常用的L1loss,对于不同尺寸的bbox会有不同的尺度,尽管他们的相对误差相似。为了缓解这个问题,采取L1loss和IOU loss的线性组合:
在这里插入图片描述

4.2 Structure

  • CNN backbone:用于特征提取。输入 3 × H 0 × W 0 3 \times H_0 \times W_0 3×H0×W0输出特征图 f ∈ R C × W 0 32 × H 0 32 , C = 2048 f \in R^{C \times \frac{W_0}{32} \times \frac{H_0}{32}}, C = 2048 fRC×32W0×32H0,C=2048
  • Transformer Encoder:首先,一个1x1的卷积将高层激活图f的通道维度从C减少到一个较小的维度d,输入一个 d × H W d \times HW d×HW的特征图。并且额外增加一个positional encoding,将其加入到注意力层输入中。
  • Transformer Decoder:输入embedding是学习到的位置编码,这里称之为object query。N个object query被转化为一个输出embedding然后它们被独立解码为bbox坐标和类别标签。模型在每个解码层平行解码N个对象。最终产生N个预测结果。
  • FFN(Feed Forward Network):预测的是一个固定大小的N个边界框(中心坐标以及高度宽度),其中N通常比图像中感兴趣的物体的实际数量大得多,因此,一个额外的特殊类label ϕ \phi ϕ被用来表示在一个slot内没有检测到物体。
  • 辅助损失:在解码层后面添加FFN和匈牙利损失,使用一个额外的共享层规范来规范来自不同解码层的预测FFN的输入

5. Experiment

  • 在COCO数据集上和Faster RCNN做比较:在这里插入图片描述
  • backbone使用的是ResNet50(DETR)和ResNet100(DETR-R101)
  • 在backbone的最后一个阶stage增加一个扩张,并从这个stage的第一个卷积中去除一个stride=2来提高特征分辨率。相应的模型被称为DETR-DC5和DETR-DC5-R101(扩张C5 stage)。输出分辨率提高了2倍,提升小目标检测。但是也增加了计算代价。
  • 第一个session是Faster RCNN在Detectron2上的结果,训练策略是3x schedule(1x 策略表示:在总batch size为16时,初始学习率为0.02,在6万轮和8万轮后学习率分别下降10倍,最终训练9万轮。3x 策略为1x策略的三倍,同时学习率调整位置也为1x的三倍。)。
  • 第二个session是Faster RCNN使用GIoU并且增加了训练epoch的结果。
  • 第三个session,展示了多个DETR模型结果(一个具有6个transformer和6个解码器层的模型,宽度为256,有8个注意头。以保证参数量上有可比性)。
  • AP:AP在变量为IoU的threshold∈(0.50:0.95:0.05)时的积分;AP50,AP75:IoU的threshold为0.5和0.75时的AP;APS,M,L:小对象的AP,中等大小的AP,大对象AP。
  • DETR for panoptic segmentation
    DETR也可以用于实例全景分割。可以通过在解码器输出上添加mask头,从而实现全景分割。全局分割头说明:
    在这里插入图片描述
    实验结果(on COCO val Dataset):
    在这里插入图片描述
  • RQ(recognition quality)识别质量
  • SQ(segmentation quality)分割质量
  • PQ(Panoptic quality)全景质量
  • 上标th和st分别表示thing和stuff的分类
    • 人,车等有固定形状的物体属于 things 类别,可数名词通常属于 thing
    • 天空,草地等没有固定形状的物体属于 stuff 类别,不可数名词属于 stuff

为了预测最终的全景分割,我们只需在每个像素的掩码分数上使用argmax,并将相应的类别分配给得到的掩码。
报告了全景质量(PQ)和物品(PQth)和材料(PQst)的细分。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值