Dynamic Head: Unifying Object Detection Heads with Attentions

Dynamic Head

论文标题:Dynamic Head: Unifying Object Detection Heads with Attentions
论文地址:https://arxiv.org/pdf/2106.08322v1.pdf
论文源码:https://github.com/microsoft/DynamicHead

微软

Motivation

​ 文章提出了一个动态的head架构,通过attention机制将多种不同表示形式(corner,center,anchor box)的目标检测方法统一为一个。

  • scale-awareness:特征层间的self-attention能够识别不同尺度物体(一张图片中有不同尺度的物体需要识别).
  • spatial-awareness:空间位置间的self-attention能够帮助识别不同形状物体.(指同一类物体有不同形状、朝向和不同视角)
  • task-awareness:输出的通道间的self-attention能够用于关注特定的任务.(指物体可以选用不用的表示方式,如边框、中心点、corner点等)

​ 通过结合这三种self-attention,作者在不引入计算cost的情况下极大地提高了目标检测头的表示能力。使用SOTA backbone Swin-L时,将COCO的结果记录刷到了60.6AP!

Approach

​ 如果将backbone的输出视为一个3维的tensor,即 l e v e l × s p a c e × c h a n n e l level\times space\times channel level×space×channel,这个unified head就可以被看作一个attention学习问题。一个直观的方案是在此tensor之上构造一个full self-attention机制,然而,优化问题难以解决并且计算cost 难以承受

​ 作者提出在分别在level-wise,spatial-wise,和channel-wise等每个独特的特征维度上分别地应用attention 机制

​ scale-aware attention只应用在level dimension,对于一个物体,scale-aware attention会根据其scale来学习各种语义level上的相关重要性来增强相应于其scale 的level上的特征。同理spatial-aware attention学习空间位置上的关联表示。 task-aware attention作用于channel,根据物体返回的不同卷积核响应,让不同的channel响应不用的任务。通过这种方式实现了一个作用域detection head的unified attention机制。

Dynamic Head: Unifying with Attentions

在这里插入图片描述

在这里插入图片描述

​ 将L层的特征图通过上采样或者下采样来resize到一个中间层,然后concatenate起来得到特征图 F i n = { F i } i = 1 F_{in} = \left\{F_i\right\}_{i=1} Fin={Fi}i=1,这个特征图的尺寸可被视为一个4维的tensor F ∈ R L × H × W × C F \in R^{L×H×W×C} FRL×H×W×C,其中L表示的是金字塔中的level数量, H 、 W 、 C H、W、C HWC分辨是特征图的高、宽、和通道数。令 S = H × W S=H×W S=H×W将上述4维tensor reshape成一个3维的tensor F ∈ R L × S × C F \in R^{L×S×C} FRL×S×C

​ 给定 F ∈ R L × S × C F \in R^{L×S×C} FRL×S×C这样的一个tensor,self-attention的通用公式为:

W ( F ) = π ( F ) ⋅ F W ( F ) = π ( F ) ⋅ F W ( F ) = π ( F ) ⋅ F W(F) = π(F) · F W(F)=π(F)FW(F)=π(F)F
​ 其中 π ( ⋅ ) π(·) π()是一个 attention function.一种很简单的attention实现方式是使用全连接,但是全连接从所以维度上学习,由于我们的维度很大,计算代价太大,不可取。

​ 所以这里将attention function转为3个序列化的attentions,每个都只聚焦于一个角度:

W ( F ) = π C ( π S ( π L ( F ) ⋅ F ) ⋅ F ) ⋅ F W(F)=\pi _C(\pi_S(\pi_L(F)·F)·F)·F W(F)=πC(πS(πL(F)F)F)F
​ 其中 π L ( ⋅ ) , π S ( ⋅ ) , 和 π C ( ⋅ ) πL(·), πS(·), 和πC (·) πL(),πS(),πC()分别是三个不同的attention function,分别应用在不同的维度 L , S , C L,S,C L,S,C

Scale-aware Attention π L π_L πL

​ 目标检测中应对多尺度变换有很多方法,比如: image pyramid、 feature pyramid、SNIPER等。其中 feature pyramid用的比较多,对于feature pyramid的聚合也有很多方法,比如:PANET、ASFF等。Dynamic Head中的尺度attention其实就是一个feature pyramid一个attention操作,scale-attention函数如下所示:
π L ( F ) ⋅ F = σ ( f ( 1 S C ∑ S , C F ) ) ⋅ F \pi_{L}(\mathcal {F})\cdot \mathcal {F}=\sigma(f(\frac {1}{SC}\sum_{S,C}\mathcal {F}))\cdot \mathcal{F} πL(F)F=σ(f(SC1S,CF))F
σ ( ) \sigma() σ()为hard-sigmoid函数, 1 S C ∑ S , C F \frac {1}{SC}\sum_{S,C}\mathcal {F} SC1S,CF就是一个avg-pooling操作。scale-attention就是对每一个尺寸对应的特征 F l ∈ R H × W × C \mathcal {F}_{l}\in R^{H\times W\times C} FlRH×W×C做avg-pooling操作,在通过一个 1 × 1 1\times 1 1×1的卷积后进行hard-sigmoid输出一个attention值与 F \mathcal{F} F相乘。

Spatial-aware Attention π S π_S πS

​ 考虑到 S S S是高维度,将这个模块分为两步:第一步使用可变形卷积(deconv)让注意力学习稀疏,然后aggregating 不同level上相同spatial location的特征。
π S ( F ) ⋅ F = 1 L ∑ l = 1 L ∑ k = 1 k w l , k ⋅ F ( l ; p k + Δ p k ; c ) ⋅ Δ m k \pi_{S}(\mathcal{F})\cdot \mathcal{F}=\frac{1}{L}\sum_{l=1}^{L}\sum_{k=1}^{k}w_{l,k}\cdot \mathcal{F}(l;p_{k}+\Delta p_{k};c)\cdot\Delta m_{k} πS(F)F=L1l=1Lk=1kwl,kF(l;pk+Δpk;c)Δmk
​ K是位置稀疏采样点数量,可以认为是DCN的采样数, F ( l ; p k + Δ p k ; c ) \mathcal{F}(l;p_{k}+\Delta p_{k};c) F(l;pk+Δpk;c)就是deformable conv操作, Δ p k \Delta p_k Δpk是学习到的偏置, w l , k w_{l,k} wl,k是deconv的参数, F ( l ; p k + Δ p k ; c ) \mathcal{F}(l;p_{k}+\Delta p_{k};c) F(l;pk+Δpk;c)表示 F \mathcal{F} F l l l层特征的第 c c c个通道的 p k + Δ p k p_{k}+\Delta p_{k} pk+Δpk位置的值。

Task-aware Attention π C π_C πC.

​ 为了实现关联的学习和泛化到不同的物体表示方法,最后应用了一个task-aware attention。它动态地开启或关闭特征图的channels来适应不同的tasks:
π C ( F ) ⋅ F = max ⁡ ( α 1 ( F ) ⋅ F c + β 1 ( F ) , α 2 ( F ) ⋅ F c + β 2 ( F ) ) \pi_{C}(\mathcal{F})\cdot \mathcal{F}=\max(\alpha^{1}(\mathcal{F})\cdot \mathcal{F}_{c}+\beta^{1}(\mathcal{F}),\alpha^{2}(\mathcal{F})\cdot\mathcal{F}_{c}+\beta^{2}(\mathcal{F})) πC(F)F=max(α1(F)Fc+β1(F),α2(F)Fc+β2(F))
​ 通过对 F \mathcal{F} F中的 C C C个通道进行Dynamic relu来对不同的通道进行不同的激活达到attention操作。

F c \mathcal{F}_{c} Fc是指第 c c c个channel的特征切片, [ α 1 , α 2 , β 1 , β 2 ] = θ ( ⋅ ) [\alpha^{1},\alpha^{2},\beta^{1},\beta^{2}]=\theta(\cdot) [α1,α2,β1,β2]=θ()是一个超参数,用来学习控制激活的阈值。首先在 L × S L\times S L×S维度上做global average pooling来降维,然后使用两个全连接和一个Noramlization layer,最后使用一个shifted sigmoid函数来normalize输出到 [ − 1 , 1 ] [-1,1] [1,1]之间。

Ablation Study

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Experiment

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值