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

  • 摘要
  • 介绍
  • 相关工作
  • 方法
    • Dynamic Head
    • 扩展到现存的检测器
  • 实验
    • 实验细节
    • 消融实验
      • 消融实验使用ResNet50作为backbone实现
      • scale与spatial可视化
      • Dynamic Head的深度
      • 扩展到现存的目标检测器
    • 与SOTA比较
      • 与不同的ResNe(X)t系列backbone搭配
      • 与SOTA检测器的比较
      • 与transformer backbone搭配
      • SOTA

paper:https://arxiv.org/pdf/2106.08322v1.pdf
code: https://github.com/microsoft/DynamicHead

摘要

在目标检测中,定位和分类相结合的复杂性导致了方法的蓬勃发展。以往的工作试图提高各种目标检测head的性能,但未能给出统一通用的观点。论文提出一个新的dynamic head框架通过attention来统一目标检测head,通过在尺度感知的特征层之间空间感知的空间位置之间以及任务感知的输出通道内连贯地结合多种self-attention,该方法显著地提高了目标检测head的表示能力,而无需任何计算开销。在coco基准上的实验证明了提出的dynamic head框架的有效性,在ResNeXt-101-DCN backbone上,实现了新的SOTA,54.0AP。更换更强大的backbone:Swin transformer,实现了60.6mAP,COCO基准的新SOTA。

介绍

开发一个好的目标检测head面临的挑战可以归纳为三类。

  1. 由于多个尺度不一的目标会出现在一张图上,所以head应该是scale-aware的;
  2. 在不同的视角下,物体通常以截然不同的形状、旋转和位置出现,所以head应该是 spatial-aware的。
  3. 由于目标可以有多种不同的表示(边框,中心,边角点),所以head应该是task-aware的。

论文中提出了一个统一的目标检测head,Dynamic head,来统一scale-awareness, spatial-awareness, task-awareness。
可以将backbone】的输出看做一个3-d(level x space x channel)的tensor,统一这三个维度的awareness可以看做是一个attention学习问题;
一种直接的方法是:直接使用整个self-attention机制来处理这个tensor,但是这样处理,是很困难去优化的,并且计算花费也是不可承受的。

作者将注意力机制分开处理为level-wise、spatial-wise、channel-wise,scale-aware注意力模块只在level维度处理,学习多个语义层的相对重要性,根据对象的尺度在适当的层次上增强特征。spatial-aware注意力模块只在space(h x w)维度处理,在空间位置上学习连贯的区别表示。task-aware注意力模块值处理channels,根据对象的不同卷积核响应,引导不同的特征通道分别支持不同的任务(如分类、边框回归和中心/关键点学习)。
实验证明Dynamic head可以统一提高检测器1.2% ~ 3.2%的mAP,相比于EffcientDet和SpineNet,dynamic head仅使用1/20的训练时间,能够实现更好的精度。

相关工作

Scale-awareness: 特征金字塔网络中,不同层级的特征通常是从网络的不同深度提取的,这就造成了明显的语义差距,直接将不同层级的特征层融合不是最优的。为了解决这个问题,PANet提出通过一个自下而上的路径来增强低层的特征,Libra r-cnn引入平衡采样和平衡特征金字塔,SEPC提出一个金字塔卷积来提出尺度和空间特征。

Spatial-awareness: 卷积神经网络在学习图像中存在的空间变换方面受到限制,一些工作通过增加模型size或者探索更强的数据增强来缓解这个问题,这导致了在inference和training过程中更多的计算花费。之后,提出了新的卷积操作来提升卷积对空间变换的学习,例如空洞卷积,deformable conv v1/v2。

Task-awareness: 最近,越来越多的研究发现,目标的各种表示可能会提高性能。Fcos提出用中心表示法以逐像素预测的方式解决目标检测问题;ATSS提出自动的选择positive来提高精度;Reppoints将目标检测看作是关键点来简化学习;Centernet(Keypoint)将每个目标看作是三个关键点,而不是一对关键点,从而减少了错误的预测,提高了精度;Borderdet提出了从每个边界的极值点提取边界特征,增强点特征,并达到了SOTA的精度。

方法


对于来自特征金字塔不同层级L,一个特征图Fin = {Fi}Li=1,可以使用上采样或下采样调整连续级别特征的大小,使其接近中间级别特征的比例。re-scaled的金字塔可以用一个4-d的tensor F∈RLxHxWxC表示,L表示特征金字塔的层数,H,W,C分别表示height,width,中间层级的channels。设置S = HxW,将F reshape到LxSxC维度。

Dynamic Head

对于给定的tensor F∈RLxSxC,使用self-attention的表示为:

其中π(·)是一个attention方法,该attention的一个简单的实现方式是直接采用全连接层,但是直接学习所有维度的attention,由于tensor的高维度,计算量是巨大的。
所以,作者提出将attention分为三个连续的attention,每个负责一个部分

其中πL(·),πS(·),πC(·)分别表示三个在L,S,C维度的不同attention方法;

Scale-aware Attention πL

其中f(·)是一个1x1卷积实现的线性函数,σ(x) = max(0, min(1, x+12\frac{x+1}{2}2x+1​))是hard-sigmoid函数。

Spatial-aware Attention πS 作者应用另一个基于融合特征的空间感知注意模块,将注意力集中在空间位置和特征层次上一致存在的区分区域上。考虑到S的高维性,作者将该模块分解为两个步骤:首先使用可变形卷积[7]使注意力学习变得稀疏,然后在相同的空间位置聚合不同层次的特征

其中K是稀疏采样位置的数量,pk + ∆pk 是通过自学习的空间偏移∆pk来移动的位置聚焦于一个有区别的区域,∆mk是位置pk处的自学习的重要性标量。都是从中层级输入特征F学习的;

Task-aware Attention πC

其中Fc是特征c-th通道的切片,[α1 , α2 , β 1 , β 2]T = θ(·)是一个学习控制阈值的超函数Dynamic relu,首先使用一个全局平均池化对L× S维降维,然后使用两个全连接层和一个归一化层,最后应用移位的sigmoid函数对输出进行归一化[−1, 1]。

最后,可以多次嵌套等式2,以有效地叠加多个πL,πS,和πC块在一起,详情配置如图2(a)所示;

使用Dynamic Head的整个目标检测范式如图1所示,任何backbone都可以用来提取特征金字塔F,然后将F resize到相同的尺寸,形成3-d tensor F ∈ RL×S×C,然后作为dynamic head的输入,然后几个Dynamic head模块串联堆叠,dynamic head的输出可以为目标检测的不同任务表征;

如图1所示:

  1. 经过backbone提取特征之后,由于ImageNet预训练权重适用域与目标检测不同,可以看到还有许多噪声;

  2. 经过scale-aware注意力模块之后,特征图对不同尺度变得更加敏感;

  3. 经过spatial-aware注意力模块之后,特征图变得更加稀疏并且聚焦于不同位置的目标;

  4. 经过task-aware注意力模块之后,特征图会基于不同的下游任务而形成不一样的激活;

扩展到现存的检测器

One-stage Detector: 对于one-stage检测器,只需要在backbone之后添加一个统一的分支Dynamic Head,如图2(b)所示;FCOS,ATSS,RepPoint重新定义目标为中心点,关键点来提高精度,这需要重新添加一个centerness分支或者是回归分支,这使得特定于任务的分支的构造非常简单。相比之下,部署Dynamic Head更灵活,因为它只在头的末尾附加各种类型的预测,如图2(b)所示。

Two-stage Detector: two-stage通过伴随着ROI-Pooling的使用,作者首先在使用ROI-Pooling之前使用scale-aware和spatial-aware注意力,然后使用task-aware注意力代替原本的全连接层,如图2©所示;

实验

实验细节

训练:
基于Mask R-CNN,采用ATSS的框架训练;
初始学习率0.02,权重衰减1e-4,动量0.9,在训练总epochs的67%和89%乘以0.1;
推理: 与SOTA模型比较时,使用TTA,其他tricks,EMA,mosaic,mix-up,标签平滑,soft-NMS等没有使用;

消融实验

消融实验使用ResNet50作为backbone实现

scale与spatial可视化

注意力模块的效果: 图3显示的是不同层级学习的scale ratios(通过将高分辨率的学习权重除以低分辨率的学习权重来计算),该直方图是由COCO val2017子集的所有图片计算。很明显,scale-aware注意模块倾向于将高分辨率特征图(“图中level5”紫色直方图)调整为低分辨率,将低分辨率特征图(“图中level1”蓝色直方图)调整为高分辨率,以平滑不同特征级别的比例差异。这证明了scale-aware知注意学习的有效性。

图4可视化了添加Dynamic Head模块之前,以及添加了不同数量的Dynamic Head模块的特征图。证明了spatial-aware注意力模型的学习。

Dynamic Head的深度

当堆叠2个Dynamic Head的时候,精度以及比baseline高,且计算量也有减少。当堆叠6个时,效果最好,且计算量相比于backbone可以忽略不计;

扩展到现存的目标检测器

可以看到下表,均有提升1.2%~3.2%不等的AP提升;

与SOTA比较

与不同的ResNe(X)t系列backbone搭配

与SOTA检测器的比较

与transformer backbone搭配

SOTA

使用更大的input-size和额外数据集;
使用额外的数据集和自训练,增加最大边1333到2000,多尺度训练最小边480到1200;
训练设置与前面一致,没有使用额外的tricks;
在没有使用额外数据集的情况下达到了之前SOTA的精度;
将imagenet图片生成伪标签将其作为额外数据集,实现了新SOTA:60.6%mAP。

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论文阅读笔记 这是微软在CVPR2021发表的文章,在coco数据集上取得了目前 ...

  2. Dynamic Head: Unifying Object Detection Heads with Attentions

    Dynamic Head 论文标题:Dynamic Head: Unifying Object Detection Heads with Attentions 论文地址:https://arxiv.o ...

  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. Sparse R-CNN: End-to-End Object Detection with Learnable Proposals - 论文阅读翻译

    Sparse R-CNN: End-to-End Object Detection with Learnable Proposals - 论文阅读翻译 文章目录 Sparse R-CNN: End-t ...

  8. Minimum Barrier Salient Object Detection at 80 FPS 论文阅读笔记

    这几天帮学长研究这篇论文,整理了这些笔记,由于我在CV方面刚刚入门,博客中可能会有很多错误与不当之处,希望大家能多多指正. 附上我自己修改的C++代码,可以运行在windows环境下: 链接:http ...

  9. Choosing Smartly: Adaptive Multimodal Fusion for Object Detection in Changing Environments论文阅读笔记

    论文:https://arxiv.org/pdf/1707.05733v1.pdf Abstract 对象检测是在动态和变化的环境中运行的自动机器人的基本任务.机器人应该能够在存在传感器噪声的情况下也 ...

最新文章

  1. 目标检测算法终结篇:YOLOv7(非正式版)正式开源
  2. 【LorMe云讲堂】梁玉婷:农田土壤微生物共存与功能识别调控
  3. android支持色彩管理软件,安卓首家!OPPO全链路色彩管理系统亮相:全局支持10bit照片视频...
  4. P4026-[SHOI2008]循环的债务【dp】
  5. 力软敏捷开发框架真正源码_敏捷真正使谁受益?
  6. 排序算法 c++(思想+code)
  7. 深度理解cnn 网络
  8. 纳英特九宫医疗机器人编程_机器人大赛|我校王子航、阮云天成功进入世界机器人华东赛区决赛...
  9. java上传、下载、删除ftp文件
  10. vue-cli webpack浅析
  11. Oracle数据库管理之创建和删除数据库
  12. Hadoop组件及功能
  13. VS1005 功放板
  14. 属性子集选择的基本启发方法_【数据挖掘笔记三】数据预处理
  15. 交换机vlan配置实训心得_交换机与VLAN的配置实验报告.doc
  16. 第一节:(2)逻辑芯片工艺特性指标
  17. MathType找不到dll文件,原来要这样解决
  18. n个评委给m个选手打分python_n个评委为m个选手打分(n个评委打分总次数mn)。请问如何评判m个选手的成绩?...
  19. 最好用的网易邮箱工具-网易邮箱助手_我是亲民_新浪博客
  20. 使用matplotlib绘制中国手机网民占比图,将折线图和柱状图整合在一个图中等

热门文章

  1. c语言str系列函数
  2. web前端期末大作业——基于HTML+CSS+JavaScript实现中国茶文化(30页)
  3. python微信抢红包神器_Python自动抢红包教程详解
  4. 信佛的人对佛教的诘问
  5. 中国自由软件推广先锋的自述,心潮澎湃的一往无前,一定要看!作者:洪峰...
  6. 多模态训练如何平衡不同模态
  7. ## 纯干货|UI设计字体分类、使用标准及测量内容
  8. python游戏源码——2绘画简易坦克
  9. 数据仓库之搭建ODS(原始数据层)
  10. 苹果开发者账号注册、申请续费整个流程