目的检测 Deformable DETR(2021)具体解读

[复制链接]
发表于 2026-1-13 21:37:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
媒介

为办理DETR attention的盘算量大导致收敛速率慢、小目的检测结果差的标题:提出了Deformable Attention,其留意力模块只关注一个query附近的少量关键采样点集,采样点的位置并非固定,而是可学习的(如左图所示,DETR的query要和其他全部的key盘算相似度盘算量为token的平方, 而Deformable DETR只关注附近少量的key,大大淘汰了盘算量,进步了收敛速率),并接纳了多标准战略进步了小物体的检测性能。

团体网络架构

左图为detr网络架构,右图为deformable detr网络架构。
改造点:

  • 多标准 feature map
  • Encoder部分的Muti-Head Self-Attention改为Multi-Scale Deformable Self-Attention
  • Dncoder部分的Muti-Head Attention改为Multi-Scale Deformable Cross-Attention
  • 让检测头prediction heads推测界限框与参考点的相对偏移量,以进一步低落优化难度。
  • 目的数上限从100提升至300,在末了推测的时间会选择top-k前100举行推测。

为什么只将Decoder中的自留意力模块不改成可变形留意力模块?
由于在交织留意模块中,对象查询从特性映射中提取特性,此中的key是来自编码器的输出特性映射;在自留意模块中,对象查询相互交互,此中key是对象查询 (key value的泉源一样平常都是同一个);而本文提出的可变形留意模块是将卷积特性图作为关键元素筹划的,由于交织留意模块使用了encoder的输出,encoder的输入是特性图,因此只必要修改交织留意模块就可以了。
可变形留意力模块

deformable头脑:
deformable头脑泉源于DCN(deformable convolution可变形卷积),DCN的头脑就是做卷积的时间,不是选取固定的附近n*n地区的像素点,而是用网络学习我到底取哪些点来做卷积。可变形卷积实际是指标准卷积操纵中采样位置增长了一个偏移量offset(这个偏移量是通过学习得到的),如许卷积核就能在练习过程中扩展到很大的范围。

如图(a)平常卷积的卷积核权重的固定导致同一CNN在处置处罚一张图的差别位置地区的时间感受野尺寸都雷同,这对于编码位置信息的深层卷积神经网络是不公道的。图(b)是可变形卷积,在采样时可以更贴近物体的外形和尺寸。

deformable detr工作中,就是用到了这个头脑:本来的DETR盘算相似性的时间是稠密的,就是Q中的features要和K中的每个features盘算相似性。这个盘算量非常大。在deformable detr中,feature只与少部分其他features做相似性盘算,然后对特性举行加权融合。
Deformable Attention:

第一行是DETR的attention过程,x是输入特性;                                       z                         q                                  z_q               zq​看做query,由x线性变动天生;                                        A                                   m                            q                            k                                           A_{mqk}               Amqk​ 表现的是归一化留意力权重attention map,它是通过 Q×                                        K                         T                                  K^T               KT 算出来的;                                       W                         m                         ′                                       x                         k                                  W_{m}'x_k               Wm′​xk​ 实在就是value。m代表第几留意力头部。                                       W                         m                                  W_m               Wm​是留意力施加在value之后的结果颠末线性变动,从而得到差别头部的输出结果,末了举行concat拼接(公式内里没有表现出来)。由此可知,在Transformer的多头留意力盘算中,每个query都要与全部位置的key盘算留意力权重,而且对应施加在全部的value上。
第二行是可变形多头留意力Deformable DETR,                                       p                         q                                  p_q               pq​ 代表                                       z                         q                                  z_q               zq​的位置(明确成坐标),是2d向量称为参考点;                              Δ                               p                                   m                            q                            k                                           Δp_{mqk}               Δpmqk​是采样聚集点相对于参考点的位置偏移,位置偏移                              Δ                               p                                   m                            q                            k                                           Δp_{mqk}               Δpmqk​是可学习的,由query颠末全毗连层得到;                              x                      (                               p                         q                              +                      Δ                               p                                   m                            q                            k                                       )                          x(p_{q} + Δp_{mqk})               x(pq​+Δpmqk​)代表基于采样点位置插值出来的value,每个query在每个头部中,只需和这些位置的特性举行交互。
第三行是多标准可变形多头留意力,和第二个公式根本一样,增长了多标准,此中 L 表现从backbone中选取的feature map总层数,由于deformable的一个优化就是用了多标准的feature map,提升小目的的检测性能。

backbone天生多标准特性

生存尺寸小的特性图有利于检测大目的,生存尺寸大的特性图善于检测小目的。为此,Deformable DETR提取4个尺寸下的特性图(DETR仅1个尺寸),特性提取过程如下图:

多标准位置编码

将四个特性图的token首尾相连concat拼接从而实现并行运算。

DETR的使用的是单标准特性,而且使用的是三角函数,差别位置的(x、y)坐标会天生差别的位置编码,这肯定没标题,但是Deformable DETR是使用了4个差别标准的特性,假如照旧用原来的方法,那么在这些差别标准的特性中,位于雷同位置(x、y)坐标的位置会产生雷同的位置编码,以是这个方法就无法区分这些差别特性雷同位置的位置编码了。
针对这个标题,作者引入了level_embedding,差别层的特性图会有差别的level_embed 再让原先的每层位置编码+每层的level_embed,如许就可以区分差别特性雷同位置的位置编码了。
prediction heads

分类头:负责推测每个查询(query)对应的目的种别。具体来说,分类头将解码器输出的特性映射到种别空间,从而得到每个查询的种别概率分布。
回归头:由于多标准可变形关注模块提取的是参考点附近的图像特性,因此我们在筹划检测头时将界限框推测为与参考点的相对偏移,以进一步低落优化难度。参考点被用作界限框中心的初始推测,用检测头来推测与参考点的相对偏移。界限框的推测公式为:

此中                                                 p                            q                                  ^                                  \hat{p_q}               pq​^​ = (                                                  p                                       q                               x                                            ^                                  \hat{p_{qx}}               pqx​^​,                                                 p                                       q                               y                                            ^                                  \hat{p_{qy}}               pqy​^​)表现参考点;                                       b                                   q                            (                            x                            ,                            y                            ,                            w                            ,                            h                            )                                           b_{q(x,y,w,h)}               bq(x,y,w,h)​表现由推测头推测的相对偏移,用于对参考点的坐标举行修正;                              δ                          \delta               δ 和                                       δ                                   −                            1                                           \delta^{-1}               δ−1是为了确保是归一化坐标。
两个变体


  • 界限框迭代强化战略 Iterative Bounding Box Refinement.:
    每个解码器层根据上一层的推测来细化界限框,这种战略答应模子在多层解码器中徐徐修正推测的界限框位置和巨细,从而进步终极的检测结果。
    在标准的Deformable DETR中,终极box的推测仅来自于末了一层。使用refine机制时,decoder layer的输出结果会颠末box_embed(雷同于prediction heads内里的界限框回归头)得到偏移量的推测结果,然后举行一些盘算,会得到新的参考点,这个参考点会传给下一层使用,也就是说每层使用的参考点信息泉源是上一层颠末了推测的box。
    以是和平常版差别的是,iterative bounding box refinement在每一次decoder中的参考点都是颠末box_embed的推测结果;而简朴版不颠末box_embed的推测,直接将上一层的参考点直接输入到下一层内里。
  • 两阶段Deformable DETR
    留意:two-stage战略必须和界限框战略一起使用。
    根据Encoder的输出对参考点举行筛选,得到分类分数最高的top-k个参考点作为proposals,而且作为Decoder的参考点。而且Decoder中的query(tgt)和query pos都是由这些proposals天生的。
    具体来说: Encoder会天生特性memory,再自己天生开端proposals(实在就是特性图上的点坐标 xywh)。然后分别使用第七个非共享检测头的分类分支对memory举行分类推测,得到对每个种别的分类结果;再用第七个非共享回归分支举行回归推测,得到proposals的偏移量(xywh)。再用开端proposals + 偏移量 得到第一个阶段的推测proposals。然后选取top-k个分数最高的那批推测proposals作为Decoder的参考点。而且,Decoder的object query和 query pos都是由参考点通过位置嵌入(position embedding)再接上一个全毗连层 + LN层处置处罚天生的。
    (由于每次Encoder后多加了一次prediction heads,以是叫两阶段)
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表