End-to-End Object Detection with Transformers解读

paper:https://arxiv.org/abs/2005.12872

Github开源地址:facebookresearch/detr

一、创新点

将目标检测任务转化为一个序列预测(set prediction)的任务,使用transformer编码-解码器结构和双边匹配的方法,由输入图像直接得到预测结果序列。和SOTA的检测方法不同,没有proposal(Faster R-CNN),没有anchor(YOLO),没有center(CenterNet),也没有繁琐的NMS,直接预测检测框和类别,利用二分图匹配的匈牙利算法,将CNN和transformer巧妙的结合,实现目标检测的任务。

DETR整体结构

在本文的检测框架中,有两个至关重要的因素:①使预测框和ground truth之间一对一匹配的序列预测loss;②预测一组目标序列,并对它们之间关系进行建模的网络结构。接下来依次介绍这两个因素的设计方法。

1、模型的整体结构

Backbone + transformer + Prediction

CNN + encoder+decoder + FFN

(1)backbone

利用传统的CNN网络,将输入的图像 [公式] 变成尺度为 [公式] 的特征图f

(2)Transformer

Transformer encoder部分首先将输入的特征图降维并flatten,然后送入下图左半部分所示的结构中,和空间位置编码一起并行经过多个自注意力分支、正则化和FFN,得到一组长度为N的预测目标序列。其中,每个自注意力分支的工作原理为可参考刘岩:详解Transformer (Attention Is All You Need),也可以参照论文:papers.nips.cc/paper/71

接着,将Transformer encoder得到的预测目标序列经过上图右半部分所示的Transformer decoder,并行的解码得到输出序列(而不是像机器翻译那样逐个元素输出)。和传统的autogreesive机制不同,每个层可以解码N个目标,由于解码器的位置不变性,即调换输入顺序结果不变,除了每个像素本身的信息,位置信息也很重要,所以这N个输入嵌入必须不同以产生不同的结果,所以学习NLP里面的方法,加入positional encoding并且每层都加,作者非常用力的在处理position的问题,在使用 transformer 处理图片类的输入的时候,一定要注意position的问题。

(3)预测头部(FFN)

使用共享参数的FFNs(由一个具有ReLU激活函数和d维隐藏层的3层感知器和一个线性投影层构成)独立解码为包含类别得分和预测框坐标的最终检测结果(N个),FFN预测框的标准化中心坐标,高度和宽度w.r.t. 输入图像,然后线性层使用softmax函数预测类标签。

2、模型的损失函数

基于序列预测的思想,作者将网络的预测结果看作一个长度为N的固定顺序序列 [公式][公式] ,(其中N值固定,且远大于图中ground truth目标的数量) [公式] ,同时将ground truth也看作一个序列 [公式] (长度一定不足N,所以用 [公式] (表示无对象)对该序列进行填充,可理解为背景类别,使其长度等于N),其中 [公式] 表示该目标所属真实类别, [公式] 表示为一个四元组(含目标框的中心点坐标和宽高,且均为相对图像的比例坐标)。

那么预测任务就可以看作是 [公式] 之间的二分图匹配问题,采用匈牙利算法[1]作为二分匹配算法的求解方法,定义最小匹配的策略如下:

求出最小损失时的匹配策略 [公式] ,对于 [公式] 同时考虑了类别预测损失即真实框之间的相似度预测。

对于 [公式] , [公式] 的预测类别置信度为 [公式] ,边界框预测为 [公式] ,对于非空的匹配,定于 [公式] 为:

进而得出整体的损失:

考虑到尺度的问题,将L1损失和iou损失线性组合,得出[公式]如下所示:

[公式] 采用的是Generalized intersection over union论文提出的GIOU[2],关于GIOU后面会大致介绍。

为了展示DETR的扩展应用能力,作者还简单设计了一个基于DETR的全景分割框架,结构如下:

4、实验对比

本文中,作者主要和目标检测经典框架faster rcnn进行了对比,结果如下(其中带有后缀DC5的方法表示在主干网络的最后一个阶段加入一个dilation,并从这个阶段的第一个卷积中去除一个stride来增加特征分辨率):

由上图可知,DETR框架虽然简洁,但效果与经典方法faster rcnn不相上下,其中DETR对于大目标的检测效果有所提升,但在小目标的检测中表现较差。该文提出的方法十分新颖,使用类似机器翻译的序列预测思想,打破了目标检测的传统思想,减少检测器对先验性息和后处理的依赖,使目标检测框架更加简洁的同时获得了与faster rcnn相媲美的效果。

该方法的不足表现在训练阶段,需要的时间和硬件资源需求较大,因此训练的难度还是挺大的

附录:GIOU

  • 与IoU相似,GIoU也是一种距离度量,作为损失函数的话,满足损失函数的基本要求
  • GIoU对scale不敏感
  • GIoU是IoU的下界,在两个框无线重合的情况下,IoU=GIoU
  • IoU取值[0,1],但GIoU有对称区间,取值范围[-1,1]。在两者重合的时候取最大值1,在两者无交集且无限远的时候取最小值-1,因此GIoU是一个非常好的距离度量指标。
  • 与IoU只关注重叠区域不同,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。

参考

  1. ^匈牙利算法 https://baike.baidu.com/item/%E5%8C%88%E7%89%99%E5%88%A9%E7%AE%97%E6%B3%95/9089246?fr=aladdin
  2. ^Generalized intersection over union http://openaccess.thecvf.com/content_CVPR_2019/html/Rezatofighi_Generalized_Intersection_Over_Union_A_Metric_and_a_Loss_for_CVPR_2019_paper.html
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值