锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

大白话用Transformer做Object Detection

时间:2022-08-14 11:00:00 abs轮速传感器各自的优缺点

91ef98ed70e2dcfb337687084210cf14.gif

?作者 | 张恒

单位 | 法国国家信息与自动化研究所

研究方向 | 目标检测、传感器集成

记录隔离期间学习的记录 DETR [1] 追求简单、清晰、易懂的系列文章。

分为上下两部分,上一篇介绍 DETR 下一篇是针对基本原理的 DETR 改进缺点。

大白话 Attention

理解 Attention 是读懂 Transformer [2] 说白了,论文的第一步就是一个公式:

其中 q=fc(a),k=fc(b),v=fc(b)。如果 a==b 就是 Self-attention(ViT 如果是这个东西); a!=b 就是 Cross-attention(一般用于 Transformer decoder)。注意这三个 fc 层不共享参数。简单起见,省略了 scaling factor(不影响理解)。

那么如何理解这个公式呢?Attention 加权的本质是:部分重要,其他部分不重要;或者部分相关,其他部分不相关。以上加权为基础 k 对于 q 的相似度。举个直观的例子:特征提取的目的是寻找高富帅,q(query)高富帅代表理想标准,k(key)代表每个真实候选人的身高、财富和外貌,v(value)是每个真实候选人的特点。候选人越符合高富帅的标准条件,权重就越高,特征比例就越大。


为什么要用Transformer目标测试?

DETR 本质是基于查询(query)目标检测的本质是目标检测的一种 image-to-boxes 的转换。相比于 CNN 时代以锚框或锚点为基础(anchor box or anchor point)的检测方法 基于[3,4,5] query 其实检测机制更符合 image-to-boxes 的范式:encoder 中的一个元素代表图像上的一块区域(patch embedding),而 decoder 一个元素代表一个物体(object embedding)。Image-to-boxes 转换是基于区域与区域、区域与物体、物体与物体之间的信息交换。Image-to-boxes 转换是基于区域与区域、区域与物体、物体与物体之间的信息交换。整体思路其实很简单,直接,合理。

DETR 两大核心优势:

1. End-to-end detection。Anchor-based 大多数目标检测器使用一对多的标签分配算法,因此 NMS 成为必不可少的后处理步骤(去除冗余框)。最近也有一些基础 CNN 探索一对一标签匹配 [6],实现了 nms-free 目标检测(但精度提高不明显,适用于 YOLOX 甚至有一些掉点)。对于 DETR,端到端检测特别自然直接。除了一对一的二分匹配(bipartite matching),Transformer 机制引入了 query 间信息交换(Self-attention in decoder),来防止多个 query 收敛到相同的目标。相似的操作也被 Sparse RCNN [7] 所采用。也许样本(anchor/query/proposal)信息交换是实现的 end-to-end detection 的关键。

2. 解耦输入输出空间。在 Transformer 在逻辑中,图片被展开成一维序列(sequence),由 positional embedding 描述保持图片形式的绝对位置信息 encoder 应用一套 positional embedding,decoder 应用另一套 positional embedding。这实际上给了模型解耦输入和输出空间的能力:例如,输入空间是图片上均匀采样的点(stride=32),输出空间随机分布在图片上 100 个点;例如,输入空间为多个环视相机视角,输出空间为 BEV 视角。

从另一个角度思考,query 和 anchor、proposal 本质上是对图片中潜在物体的描绘。得益于 Attention 机制,query 获得了野外和样本之间信息交换的能力,实现了稀疏采样(sparse sampling)和端到端检测(end-to-end detection)。

DETR网络结构

基于 anchor 目标检测器一般可分为三部分:backbone(特征提取),neck(多尺度特征聚合),head(分类与回归预测)。DETR 延续结构:backbone(特征提取),encoder(特征聚合),decoder(query 精修)。区别在于后两种结构(encoder 和 decoder)都是由基于 Attention 机制的 Transformer 实现。

▲ DETR网络结构,add/Norm/省略了残差连接

3.1 Transformer encoder

先用一个 1*1 卷积降低 CNN 特征维度提取(b,2048,h,w ==> b,256,h,w),展开成一维序列(b,256,h,w ==> h*w,b,256),记为 src;然后准备相同的形状 positional embedding(计算方法见此),记为 pos_embed。最后重复 6 次 Self-attention 和 FFN,其中 Self-attention 的 k=fc(src pos_embed),q=fc(src pos_embed),v=fc(src);FFN 就是两层 fc。最后重复 6 次 Self-attention 和 FFN,其中 Self-attention 的 k=fc(src pos_embed),q=fc(src pos_embed),v=fc(src);FFN 就是两层 fc。输出记为 memory。

3.2 Transformer decoder

准备 100 个 object queries,形状为(100,256) 0,记为 tgt。准备相应的相同形状 positional embedding,随机初始化,记为 query_embed。训练时两者都扩展到(100,b,256)。最后重复 6 次 Self-attention、Cross-attention 和 FFN,其中 Self-attention 的 k=fc(tgt query_embed),q=fc(tgt query_embed),v=fc(tgt);Cross-attention 的 k=fc(tgt query_embed),q=fc(memory pos_embed),v=fc(memory)。

直观地理解,Cross-attention 就是每个 query 从图片中提取相关信息,并根据提取相关信息, Self-attention 就是所有 query 开会决定谁当大哥(前景),谁当小弟(背景)。

我想简单解释一下 object queries (tgt) 和其对应的 positional embedding (query_embed)的初始化:object query 装载图片上的物体信息,进入 decoder 之前模型其实对图片上的物体一无所知,所以作者将他初始化为 0。positional embedding 装载每一个 query 作者希望关注的位置和区域 100 个 query 整个图片可以尽可能均匀地覆盖,因此采用随机初始化。

其他诸如 Prediction FFN、Bipartite matching loss、Deep supervision 等细节,比较容易理解,这里就不赘述了。

DETR 不是传统 anchor-based detectors 的降维打击。相反,DETR 存在收敛速度慢、检测精度差、运行效率低等问题。在下一篇文章中,我将针对这些原始的 DETR 介绍了一系列的改进工作。

碎碎念:CVPR2022 收录了至少 4 篇 DETR 使用相关检测论文 transformer 做 object detection 算是一个很 promising 研究方向,值得关注。

得益于 Transformer 动态感受野与样本之间的信息交换能力,DETR 稀疏采样解(sparse sampling)和端到端检测(end-to-end detection)两个技能。

然而原始 DETR 还有一个明显的缺点,就是收敛需要很长的训练周期(在 COCO 在数据集上训练 500 个 epoch)。DETR 大多数后续工作都试图改进这一缺点。

为何DETR难以收敛?

根据作者的想法,每一个 object query 将根据自己感兴趣的区域通过 Transformer decoder 里的 Cross-attention layer 从图片中提取相应的物体特征。

提取特征的过程包括两个步骤,一个是 key( image features)对于 query (object queries)匹配的相似性是基于匹配结果 value(image features)加权平均。

然而,理想是丰满的,现实是骨感的。问题出在这里步骤上:由于 query embedding 是随机初始化的,object queries 和 image features 在模型训练的初期无法正确匹配。

直观上理解,一把钥匙(object query)开一把锁(图片上某一特定区域的物体)。但是由于钥匙是随机初始化的,导致它实际上开不了任何一把锁(图片上任意位置的特征对于 object query 的相似匹配度都很低)。结果就是 Cross-attention layer 实际上几乎均匀地抽取了整张图片的特征,而不是有针对性的抽取特定区域内的物体特征。可以想象,在这之后的 object query 不仅采集了目标物体的特征,还采集了图片背景和其他不相关物体的特征,因此用它来分类和定位目标物体还是很困难的。

换个角度考虑,Cross-attention 可以想象成是一种软性的 RoIAlign:从图片中依据 kq 相关性(attention map)划分出感兴趣区域(region of interest)并收集相应特征。DETR 难以收敛的原因就是由于 object query 和 image feature 间的不对齐(misalignment),导致无法有针对性的收集特定区域的物体特征,而是收集到了图片上其他很杂乱的特征。

简单补充一下为什么基于 CNN 的检测器没有这个问题:Two-stage detectors 是直接利用 RoIAlign 操作对齐了 region proposal 和 image features;对于 One-stage detectors,anchor box 的中心是依据所处特征的 image coordinate 设定的,大小是依据所处金字塔的 feature scale 设定的,所以大体上也是对齐的(参考 AlignDet [8])。


一系列改进工作

Deformable DETR [9]:既然原始的 Cross-attention layer 自由度太高,没有办法 focus 到特定区域,那就为每个 object query 设定需要关注的中心点 (reference point),并且提出的 Deformable attention 也只采样中心点附近的 N 个图片特征,这样既加速了收敛又减少了计算量。并且由于 Deformable attention 的计算量与特征图大小无关,还可以采用多尺度特征图来优化小目标的检测。

SMCA DETR [10]:在计算 Cross-attention 之前,每个 query 先预测一下要检测物体的位置和长宽(有点 anchor 的味道了),再根据预测的物体位置和长宽生成一个对应的高斯热图(Gaussian-like weight map),并融入 Cross-attention 里 kq 相似度匹配计算中。这样,每个 query  抽取的特征就被限制在物体的中心附近,收敛速度也因此得到提升。

Anchor DETR [11]:顾名思义,直接将 anchor point 的位置编码为 object query,并且 encoder 和 decoder 共用一套位置编码的方式(Sine encoding + MLP)。这样 encoder 和 decoder 的位置部分(positional embedding)就是对齐的,每个 query 抽取的特征也就集中在 anchor point 附近了。此外,为了检测同一位置的不同物体,作者还提出为每个 anchor point 添加不同的模式(multiple patterns,一般是 3 种,有点类似每个位置设置大小和长宽比不同的 3 种 anchor box)。

DAB DETR [12]:相对 Anchor DETR 做了两个方面的优化,一是将 anchor box(包括位置长宽 4 个维度)编码为 object query,而不是仅仅编码 anchor point 的位置信息;二是应用了 cascade 思想,每层不断精修 anchor box(上一层的输出的作为下一层的输入)。值得注意的是作者利用所预测的 box 长宽进一步限制了 Cross-attention 里的 kq 相似度匹配计算,使生成的注意力图能够拟合不同位置、不同尺度、不同长宽比的物体。

SAM DETR [13]:为了在语义空间上对齐 object queries 和 image features,作者直接在 Cross-attention layer 前加了一个 RoIAlign 操作,即先从 image features 里切出物体特征,再重新采样 8 个显著点(salient points re-sampling),用以生成语义对齐的 query embedding 和 positional embedding。这里有个小小的疑问,Cross-attention 就是为了提取 image feature 上各个 query 所对应的物体特征,完成作者的这些操作以后,原本的 Cross-attention 还有必要吗?

总结一下,由于 object query 和 image feature 间(位置上的和语义上的)不对齐,导致 Transformer decoder 中的 Cross-attention layer 难以精确地匹配到待检测物体所对应的特征区域,object query 也因此采集到了很多除目标物体以外的无关特征,最终导致 DETR 收敛缓慢。上面介绍的几个工作都是通过不同的方式限制了 object query 的采样区域,使得网络能够更快的地聚焦于物体区域,所以加速了训练。


Future direction

探讨 object query 的数量对于检测精度的影响。理论上 100 已经远远大于图片上可能出现的物体个数了,然而更多的 query 还是会带来更高检测精度。直观上思考,越少的 query 会导致各个 query 的搜索范围变大,并且难以检测同一位置的多个目标;过多的 query 又会导致难以抑制多个 query 收敛到同一物体的情况。那么多少才是合适的 query 数量呢?每层需求的 query 数量相同吗?

由于需要精准定位物体,DETR 必须能够很好地编码特征的绝对/相对位置关系。DETR 目前所采用地 Positional embedding 是否是最佳方案?或许该在 Transformer 里塞一些卷积层,或者是否能够从 query based patch localization 角度,构造一个自监督训练框架?

还有 one to one 的匈牙利标签匹配还没有人动过,这会不会也是造成 DETR 收敛慢的原因呢?大家觉得怎么样呢 :-)

参考文献

[1] End-to-End Object Detection with Transformers https://arxiv.org/abs/2005.12872

[2] Attention Is All You Need https://arxiv.org/abs/1706.03762

[3] Focal Loss for Dense Object Detection https://arxiv.org/abs/1708.02002

[4] FCOS: Fully Convolutional One-Stage Object Detection https://arxiv.org/abs/1904.01355

[5] Objects as Points https://arxiv.org/abs/1904.07850

[6] What Makes for End-to-End Object Detection? https://arxiv.org/abs/2012.05780

[7] Sparse R-CNN: End-to-End Object Detection with Learnable Proposals https://arxiv.org/abs/2011.12450

[8] Revisiting Feature Alignment for One-stage Object Detection https://arxiv.org/abs/1908.01570

[9] Deformable DETR: Deformable Transformers for End-to-End Object Detection https://arxiv.org/abs/2010.04159

[10] Fast Convergence of DETR with Spatially Modulated Co-Attention https://arxiv.org/abs/2101.07448

[11] Anchor DETR: Query Design for Transformer-Based Object Detection https://arxiv.org/abs/2109.07107

[12] DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR https://arxiv.org/abs/2201.12329

[13] Accelerating DETR Convergence via Semantic-Aligned Matching https://arxiv.org/abs/2203.06883

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章