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,即level×space×channellevel\times space\times channellevel×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起来得到特征图Fin={Fi}i=1F_{in} = \left\{F_i\right\}_{i=1}Fin​={Fi​}i=1​,这个特征图的尺寸可被视为一个4维的tensorF∈RL×H×W×CF \in R^{L×H×W×C}F∈RL×H×W×C,其中L表示的是金字塔中的level数量,H、W、CH、W、CH、W、C分辨是特征图的高、宽、和通道数。令S=H×WS=H×WS=H×W将上述4维tensor reshape成一个3维的tensorF∈RL×S×CF \in R^{L×S×C}F∈RL×S×C。

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

W(F)=π(F)⋅FW(F)=π(F)⋅FW ( 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)⋅FW(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,CL,S,CL,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(1SC∑S,CF))⋅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(SC1​S,C∑​F))⋅F
​ σ()\sigma()σ()为hard-sigmoid函数,1SC∑S,CF\frac {1}{SC}\sum_{S,C}\mathcal {F}SC1​∑S,C​F就是一个avg-pooling操作。scale-attention就是对每一个尺寸对应的特征Fl∈RH×W×C\mathcal {F}_{l}\in R^{H\times W\times C}Fl​∈RH×W×C做avg-pooling操作,在通过一个1×11\times 11×1的卷积后进行hard-sigmoid输出一个attention值与F\mathcal{F}F相乘。

Spatial-aware Attention πSπ_SπS​

​ 考虑到SSS是高维度,将这个模块分为两步:第一步使用可变形卷积(deconv)让注意力学习稀疏,然后aggregating 不同level上相同spatial location的特征。
πS(F)⋅F=1L∑l=1L∑k=1kwl,k⋅F(l;pk+Δpk;c)⋅Δmk\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=L1​l=1∑L​k=1∑k​wl,k​⋅F(l;pk​+Δpk​;c)⋅Δmk​
​ K是位置稀疏采样点数量,可以认为是DCN的采样数,F(l;pk+Δpk;c)\mathcal{F}(l;p_{k}+\Delta p_{k};c)F(l;pk​+Δpk​;c)就是deformable conv操作,Δpk\Delta p_kΔpk​是学习到的偏置,wl,kw_{l,k}wl,k​是deconv的参数,F(l;pk+Δpk;c)\mathcal{F}(l;p_{k}+\Delta p_{k};c)F(l;pk​+Δpk​;c)表示F\mathcal{F}F第lll层特征的第ccc个通道的pk+Δpkp_{k}+\Delta p_{k}pk​+Δpk​位置的值。

Task-aware Attention πCπ_CπC​.

​ 为了实现关联的学习和泛化到不同的物体表示方法,最后应用了一个task-aware attention。它动态地开启或关闭特征图的channels来适应不同的tasks:
πC(F)⋅F=max⁡(α1(F)⋅Fc+β1(F),α2(F)⋅Fc+β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中的CCC个通道进行Dynamic relu来对不同的通道进行不同的激活达到attention操作。

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

Ablation Study


Experiment


Dynamic Head: Unifying Object Detection Heads with Attentions相关推荐

  1. Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读

    Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读 摘要 介绍 相关工作 方法 Dynamic Head 扩展到现存的检 ...

  2. Dynamic Head Unifying Object Detection Heads with Attentions 论文阅读笔记

    Dynamic Head Unifying Object Detection Heads with Attentions论文阅读笔记 这是微软在CVPR2021发表的文章,在coco数据集上取得了目前 ...

  3. Dynamic Head :Unifying Object Detection Heads with Attentions

    Dynamic Head :Unifying Object Detection Heads with Attentions  作者针对目标检测中通过backbone提取特征金字塔后的输出后,会形成最基 ...

  4. Dynamic Head: Unifying Object Detection Heads with Attentions 阅读

    Abstract 这里就是说在目标检测领域,很多工作都想提高检测头的性能,这篇文章提出了动态头,也就是Dynamic Head,来将检测头和注意力(Attention)结合.在尺度(scale-awa ...

  5. 【目标检测】61、Dynamic Head Unifying Object Detection Heads with Attentions

    文章目录 一.背景 二.方法 2.1 scale-aware attention 2.2 spatial-aware attention 2.3 task-aware attention 2.4 总体 ...

  6. 目标检测之Dynamic Head: Unifying Object Detection Heads with Attentions

    cvpr2021 论文:https://arxiv.org/pdf/2106.08322v1.pdf 代码:https://github.com/microsoft/DynamicHead 1.摘要 ...

  7. CVPR 2021 Object Detection

    一. 关于3D有26篇: 3DIoUMatch: Leveraging IoU Prediction for Semi-Supervised 3D Object Detection ST3D: Sel ...

  8. DenseBox: Unifying Landmark Localization with End to End Object Detection

    DenseBox: Unifying Landmark Localization with End to End Object Detection arxiv: http://arxiv.org/ab ...

  9. DAL(Dynamic Anchor Learning for Arbitrary-Oriented Object Detection)

    遥感第二篇读了DAL,也是本校自动化专业前辈的工作.本篇也是参考了其自己的博客用于学习和总结,附上链接.个人认为这篇的流畅程度+严谨程度要胜过S2ANet. 总体理解 S2ANet从网络结构入手,主要 ...

最新文章

  1. 解决微信二次分享失败--后面被加上from=singlemessageisappinstalled=0的解决方案
  2. UVa12326 Yummy Triangular Pizza(dfs)
  3. 常见.Net 英文专业词汇收集
  4. CRM product UI里assignment block的显示隐藏逻辑
  5. Java面向对象(1) —— 封装
  6. css渲染(一) 字体
  7. MySQL入门之PHP的MySQL数据库编程
  8. linux mysql异机备份_Linux环境下oracle数据库Rman备份异机恢复
  9. 简单的网络协议:TCP/UDP HTTP/HTTPS
  10. 如何在XP SP2下面使用DTC
  11. Linux服务器自动清理缓存
  12. html文字左侧居中,HTML如何让文字靠左居中?
  13. 最好的Vim学习教程-Vim Adventures 全攻略(附彩蛋)
  14. 五款优质资源网站 每一个都让你欲罢不能
  15. android主动获取手机电量,获取Android手机的电量信息
  16. 日语资料和电子版教材无偿分享
  17. tp5源码分析之网络请求
  18. [教程]西秦的ACE-JAVA教程一、JAVA MAVEN环境搭建
  19. 后LHC时代对撞机:瞬间输出能量超全球电力千倍
  20. excel最强教科书电子版_Excel最强教科书(完全版全彩印刷)

热门文章

  1. Python练习题答案: IRR计算 - 盈利能力的评价【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
  2. 扩展欧几里得算法 求解 丢番图方程
  3. 初步分析CCLE和GDSC的数据——RNA表达矩阵
  4. 信佛的人对佛教的诘问
  5. python处理金融数据_Python金融大数据分析-数据获取与简单处理
  6. python图像切割成多边形_python opencv在图像中裁剪任意形状多边形,裁剪镂空多边形, 裁剪多个多边形...
  7. Android 蓝牙/wifi云打印机 ESC/POS热敏打印机打印(ESC/POS指令篇)
  8. 服务器没有显示器能接笔记本吗,笔记本能连显示器吗,笔记本怎么才能接显示器(图文)...
  9. Java面试官最爱问的垃圾回收机制,mysql密码忘记
  10. Linux命令--tac(倒序查看文件所有内容)