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,即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(SC1S,C∑F))⋅F
σ()\sigma()σ()为hard-sigmoid函数,1SC∑S,CF\frac {1}{SC}\sum_{S,C}\mathcal {F}SC1∑S,CF就是一个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=L1l=1∑Lk=1∑kwl,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相关推荐
- Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读
Dynamic Head: Unifying Object Detection Heads with Attentions论文阅读 摘要 介绍 相关工作 方法 Dynamic Head 扩展到现存的检 ...
- Dynamic Head Unifying Object Detection Heads with Attentions 论文阅读笔记
Dynamic Head Unifying Object Detection Heads with Attentions论文阅读笔记 这是微软在CVPR2021发表的文章,在coco数据集上取得了目前 ...
- Dynamic Head :Unifying Object Detection Heads with Attentions
Dynamic Head :Unifying Object Detection Heads with Attentions 作者针对目标检测中通过backbone提取特征金字塔后的输出后,会形成最基 ...
- Dynamic Head: Unifying Object Detection Heads with Attentions 阅读
Abstract 这里就是说在目标检测领域,很多工作都想提高检测头的性能,这篇文章提出了动态头,也就是Dynamic Head,来将检测头和注意力(Attention)结合.在尺度(scale-awa ...
- 【目标检测】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 总体 ...
- 目标检测之Dynamic Head: Unifying Object Detection Heads with Attentions
cvpr2021 论文:https://arxiv.org/pdf/2106.08322v1.pdf 代码:https://github.com/microsoft/DynamicHead 1.摘要 ...
- CVPR 2021 Object Detection
一. 关于3D有26篇: 3DIoUMatch: Leveraging IoU Prediction for Semi-Supervised 3D Object Detection ST3D: Sel ...
- 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 ...
- DAL(Dynamic Anchor Learning for Arbitrary-Oriented Object Detection)
遥感第二篇读了DAL,也是本校自动化专业前辈的工作.本篇也是参考了其自己的博客用于学习和总结,附上链接.个人认为这篇的流畅程度+严谨程度要胜过S2ANet. 总体理解 S2ANet从网络结构入手,主要 ...
最新文章
- 解决微信二次分享失败--后面被加上from=singlemessageisappinstalled=0的解决方案
- UVa12326 Yummy Triangular Pizza(dfs)
- 常见.Net 英文专业词汇收集
- CRM product UI里assignment block的显示隐藏逻辑
- Java面向对象(1) —— 封装
- css渲染(一) 字体
- MySQL入门之PHP的MySQL数据库编程
- linux mysql异机备份_Linux环境下oracle数据库Rman备份异机恢复
- 简单的网络协议:TCP/UDP HTTP/HTTPS
- 如何在XP SP2下面使用DTC
- Linux服务器自动清理缓存
- html文字左侧居中,HTML如何让文字靠左居中?
- 最好的Vim学习教程-Vim Adventures 全攻略(附彩蛋)
- 五款优质资源网站 每一个都让你欲罢不能
- android主动获取手机电量,获取Android手机的电量信息
- 日语资料和电子版教材无偿分享
- tp5源码分析之网络请求
- [教程]西秦的ACE-JAVA教程一、JAVA MAVEN环境搭建
- 后LHC时代对撞机:瞬间输出能量超全球电力千倍
- excel最强教科书电子版_Excel最强教科书(完全版全彩印刷)
热门文章
- Python练习题答案: IRR计算 - 盈利能力的评价【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战
- 扩展欧几里得算法 求解 丢番图方程
- 初步分析CCLE和GDSC的数据——RNA表达矩阵
- 信佛的人对佛教的诘问
- python处理金融数据_Python金融大数据分析-数据获取与简单处理
- python图像切割成多边形_python opencv在图像中裁剪任意形状多边形,裁剪镂空多边形, 裁剪多个多边形...
- Android 蓝牙/wifi云打印机 ESC/POS热敏打印机打印(ESC/POS指令篇)
- 服务器没有显示器能接笔记本吗,笔记本能连显示器吗,笔记本怎么才能接显示器(图文)...
- Java面试官最爱问的垃圾回收机制,mysql密码忘记
- Linux命令--tac(倒序查看文件所有内容)