FightingCV

V1

2022/09/25阅读:49主题:默认主题

ICLR22|将Anchor box重新引入DETR,提供query可解释性并加速收敛

ICLR22 | 将Anchor box重新引入DETR,提供query可解释性并加速收敛

来源:https://zhuanlan.zhihu.com/p/567496850

文章链接

arxiv链接: DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR

readpaper链接:DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR-ReadPaper论文阅读平台

DAB-DETR提出了一种新的建模DETR中query的方式,使用4维的anchor box,这一建模方式不仅使得DETR query有了可解释性,同时作为位置先验可以加速模型收敛,以及利用box的尺度信息调制注意力图。

这一建模方式也将DETR类模型和传统的two-stage模型如Faster RCNN联系了起来。decoder中cross-attention的作用类似于ROI pooling或者ROI align,我们称之为soft-ROI pooling。

模型性能:

模型 mAP(原始 repo) mAP(detrex)
DAB-DETR-R50 42.2 43.3
DAB-Deformable-DETR-R50 48.7 48.9

我们的formulation可以使用在原始DETR或者Deformable DETR上,都能相比于原始模型带来增益。基于detrex 的模型带来了更好的结果。

文章内容简述

动机和分析

DETR作为首个使用Transformer做目标检测的模型,非常具有创新性。他将目标检测建模成集合预测的任务,即输入一组(如100个)learnable的query,然后输入对应数量(如100个)的物体预测结果。在训练过程中,使用二分图匹配预测和标签进行训练,而测试时不需要后处理(如nms)即可产生所有结果。

尽管很简单、优雅,但是DETR存在两个问题,一是query含义并不清楚,不可解释,二是模型收敛慢。我们在这篇文章里主要希望解决两个问题。本来这应该是两个独立问题,不过后来我们发现,DETR收敛慢很大程度上来自于query含义的不明。

DETR中的query

在原始的DETR文章中的object query画的比较简单,可能会让人觉得query就是一组向量:

原始DETR中的框图

然而实际上object query应该有两部分组成,我们称之为content querypositional query(这里感谢conditional detr,这两个名字由他们提出。)我们这里画出来了encoder和decoder中的attention的组成部分。

encoder和decoder的attention部分

可以看到,encoder和decoder里attention和query和key都是由两部分组成的,比如encoder里的query分别来自于图像特征(包含语义信息)和位置编码(包含位置信息),因此这两部分分别称为content query(对应图像特征)和positional query(对应位置编码)。key和query完全相同。value只有图像特征这一语义部分。

再看decoder,decoder的key和value与encoder的组成完全相同,但是query则不同。query的语义部分来自于decoder embeddings,对应上层的输入,是由图像特征组合来的。而位置部分则来自于learnable queries,这是与我们看DETR的框架图后的第一反应不同的。因此decoder的learnable query实际指代的是位置信息。

Cross-attention的作用与soft-ROI pooling

接下来我们想来说明一下cross-attention在做什么,以及与传统的Faster RCNN之间的关系。

attention & soft ROI pooling

我们看到,在attention模块中,query和key计算相似度,同时考虑了content信息和positional 信息,计算出一个注意力图,然后使用这个注意力图从原始图片特征中提取特征。

这个步骤非常类似于传统两阶段检测器中的ROI pooling(或者ROI align)。但是由于注意力图是有query和key共同决定的,并不局限于物体框内信息,我们称之为Soft ROI pooling

将query建模成anchor box

learnable query 不够好

既然了解了attention及decoder的作用,下面我们看原始的detr中query问题在哪。

我们发现,原始的learnable query学习到的特征并不够好,即不能提供soft roi pooling中所需的roi信息。

训练前后的位置注意力图

如图,训练前后的learnable query产生的位置注意力图仍然存在多模式、退化解等现象,并不能为soft roi pooling提供roi的信息。

那么很自然的,我们意识到,要为cross attention提供更好的位置先验,提供更好的roi region。很自然的,传统两阶段检测器中的anchor box可以引入到模型中作为位置先验。

引入anchor box作为query提供位置先验

从DETR到DAB-DETR

将anchor box引入之后的好处有:

  • query有了可解释性。
  • 为模型提供了位置先验,加速收敛。
  • anchor box中的位置信息可以用来调制注意力图。
  • anchor box可以层与层进行更新。

anchor box直接提供了roi区域用来做soft roi pooling,因而这一描述也更加的自然。

模型改进简述

我们将我们的模型和DETR&Conditional DETR的对比列了出来。我们核心改进有:

  • 直接学习anchor box作为query
  • 使用正余弦编码后的x,y作为positional query
  • 使用w,h调制注意力图
  • 层与层更新anchor box

DAB-Deformable-DETR

我们的建模方式也是通用的,我们将anchor box的建模方式用到deformble DETR里,依然能带来性能的提升。

DETR类模型对比

我们在文章里做了很多对比,包括将DAB-DETR和之前的DETR系列做对比:

DETR类模型的对比

DAB-DETR & Faster RCNN

这里其实更想和大家分享关于DETR和传统检测器进行对比。从我们的讨论中我们看到,DETR中的encoder起到了特征增强的作用,类似于一个non-local的模块。

而更令人着迷的decoder则起到了类似于two-stage模型中ROI head的作用,通过Soft ROI pooling的方式不断从特征图中采集特征,进行box的回归。而多个decoder layer又起到了类似于cascade RCNN,类似于级联的ROI head的效果。

那么现在来看除了结构上(Transformer和卷积)以外,DAB-DETR和Faster RCNN还有哪些区别:

一是box产生的方式。Faster RCNN来自于RPN,而DAB-DETR来自于learnable的anchor box(从这个意义上 DAB-DETR更像是Sparse RCNN)。那如果我们也将DAB-DETR的anchor box来自一个RPN或者encoder输出(Deformble DETR 已经做了),我们也可以构造一个two stage的DAB-DETR,也会有更好的性能。

二是标签分配的方式。DETR类模型的匹配是匈牙利匹配,one-to-one,同时考虑content和position,在layer之后;而Faster RCNN是one-to-many(一个gt可能对应多个anchor),只考虑position,在layer之前。那么最理想的匹配方式是什么?有没有更好的匹配方案?也是一个值得研究的问题。这里推荐peize大佬的一篇文章What Makes for End-to-End Object Detection?-ReadPaper论文阅读平台很有启发意义。

综上,DETR结构也可以看做是一种two stage模型,只是用了不同的模型结构(Transformer)和标签分配方式(匈牙利匹配)。

【项目推荐】

面向小白的顶会论文核心代码库:https://github.com/xmu-xiaoma666/External-Attention-pytorch

面向小白的YOLO目标检测库:https://github.com/iscyy/yoloair

面向小白的顶刊顶会的论文解析:https://github.com/xmu-xiaoma666/FightingCV-Paper-Reading

【技术交流】

已建立深度学习公众号——FightingCV,关注于最新论文解读、基础知识巩固、学术科研交流,欢迎大家关注!!!

请关注FightingCV公众号,并后台回复ECCV2022即可获得ECCV中稿论文汇总列表。

推荐加入FightingCV交流群,每日会发送论文解析、算法和代码的干货分享,进行学术交流,加群请添加小助手wx:FightngCV666,备注:地区-学校(公司)-名称

【赠书活动】

为感谢各位老粉和新粉的支持,FightingCV公众号将在10月1日包邮送出4本《智能数据分析:入门、实战与平台构建》来帮助大家学习,赠书对象为当日阅读榜和分享榜前两名。想要参与赠书活动的朋友,请添加小助手微信FightngCV666(备注“城市-方向-ID”),方便联系获得邮寄地址。

分类:

人工智能

标签:

人工智能

作者介绍

FightingCV
V1

公众号 FightingCV