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

2023-10-31

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

1、摘要

作者认为目标检测的头部是由三个部分组成:首先,头部应该是尺度感知的,因为多个具有极大不同尺度的物体经常共存于一幅图像中,FPN。其次,头部应该是空间感知的,因为物体通常在不同的视点下以不同的形状、旋转和位置出现,膨胀卷积、可变形卷积。第三,头部需要具有任务感知,因为目标可以有不同的表示形式(例如边界框、中心和角点),它们拥有完全不同的目标和约束没,RPN。
本文的动态检测头就是通过注意力学习将这三个任务集中在一起解决。

2.实现方法unified attention

1.尺度感知:物体尺度上的差异合起所在不同的特征层有关,可以通过改进不同尺度的特征来提高尺度感知
2.空间感知:改进不同空间位置的表示学习可以提高目标检测的空间感知能力
3.任务感知:改进不同通道的特征提取方式来提高任务感知能力

R L × H × W × C R^{L×H×W×C} RL×H×W×C S = H ∗ W S=H*W S=HW R L × S × C R^{L×S×C} RL×S×C分别代表着Layer,Space,Channel。分别在level-wise,spatial-wise,和channel-wise等每个独特的特征维度上分别地应用attention 机制:
W ( F ) = π c ( π s ( π l ( F ) ∗ F ) ∗ F ) W(F)=π_c(π_s(π_l(F)*F)*F) W(F)=πc(πs(πl(F)F)F)
在这里插入图片描述

2.1Spatial-aware Attention

将这个模块分成两步:先用可变卷积学习稀疏的空间注意力,然后在同样的位置上,对不同层次的特征进行集成。

在这里插入图片描述
K K K是稀疏采样地点的数量, p k + Δ p k p_{k}+\Delta p_{k} pk+Δpk是self-learned空间位置的偏移量,通过自学习空间补偿 Δ p k \Delta p_{k} Δpk来关注有区别的区域,并且 Δ m k \Delta m_{k} Δmk是位置 p k p_{k} pk处的自学习重要标量。两者都从 F \mathcal{F} F的输入特性从平均水平。

self.DyConv = nn.ModuleList()
        self.DyConv.append(conv_func(in_channels, out_channels, 1))#只改stride和通道数的可变性卷积
        self.DyConv.append(conv_func(in_channels, out_channels, 1))
        self.DyConv.append(conv_func(in_channels, out_channels, 2))

2.2Scale-aware Attention πL

首先基于语义重要性,动态的融合融合特征
在这里插入图片描述
f为和1*1卷积类似的线性函数,σ为sigmoid函数

        self.AttnConv = nn.Sequential(
            nn.AdaptiveAvgPool2d(1),#自适应均值池化
            nn.Conv2d(in_channels, 1, kernel_size=1),
            nn.ReLU(inplace=True))

        self.h_sigmoid = h_sigmoid()

spa_pyr_attn = self.h_sigmoid(torch.stack(attn_fea))
            mean_fea = torch.mean(res_fea * spa_pyr_attn, dim=0, keepdim=False)

在这里插入图片描述

2.3Task-aware Attention

在这里插入图片描述
通过开关max()函数来控制是否学习这部分的注意力,这部分内容感觉有点牵强.αβ都是超参数,配合max函数来控制是否激活注意力的,fc是通道切片。动态的对通道进行开关,来适应不同的任务。

3.算法流程

在特征金字塔上的应用:首先在特征金字塔上应用scale-aware attention和spatial-aware attention,然后ROI-pooling layer之后开始使用task-aware attention来替代原来的全连接层
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

目标检测之Dynamic Head: Unifying Object Detection Heads with Attentions 的相关文章

  • C++ 虚继承和多态性

    类体系的函数重载 在一个类中声明重载 派生类定义和基类同名 同参数的函数 即在派生类中重载 类指针的关系 基类指针指向基类对象 派生类指针指向派生类对象 基类指针指向派生类对象 派生类指针指向基类对象 基类指针可以直接指向派生类对象 但是使
  • 线程的锁问题

    1 公平锁与非公平锁 公平锁 排队进行 非公平锁 抢占式 同步代码块 同步方法都属于非公平锁 显式锁Lock可以指定是否为公平锁 true 公平锁 false 给公平锁 默认 private Lock l new ReentrantLock
  • 7.反引号 ` `

    1 反引号第一种使用情况 fun main 登录功能 2021年8月8日测试环境下 测试登录功能 需求编码人是Derry Derry 123456 private fun 登录功能 2021年8月8日测试环境下 测试登录功能 需求编码人是D
  • selenium自动化测试实战案例哔哩哔哩信息至Excel

    文章目录 前言 明确目标 最终效果 开发环境 思路分析 实现步骤 运行效果 以下是全部代码 前言 最近在B站学习知识 于是看完了视频就想着练习一下巩固一下知识 就地取材的做了个B站selenium小项目 感觉还挺适合新手入门的 于是迫不及待

随机推荐

  • LeetCode-410.最小区间、滑动窗口、双指针

    你有 k 个升序排列的整数数组 找到一个最小区间 使得 k 个列表中的每个列表至少有一个数包含在其中 我们定义如果 b a lt d c 或者在 b a d c 时 a lt c 则区间 a b 比 c d 小 示例 1 输入 4 10 1
  • 【chineseocr_lite】踩的坑

    chineseocr lite版本 https github com ouyanghuiyu chineseocr lite git 最重要的电脑环境 v100服务器 cuda10 python3 6 环境对了就成功90 另本环境是cuda
  • UWB自组网定位方案_基于UWB技术的消防应急救援定位解决方案

    目前国内应急救援市场都是基于被动定位应用 在特殊情况下救援也大多处于单兵作战的情况 并不能及时知道自己和自己组员的位置信息和状态 且没有场景感知和室内外一体位置信息结合 使相关救援人员处于更加危险境地 本篇就带大家详细了解一下微能信息针对消
  • JDBC中的Connection

    jdbc中的Connection连接基本用法 package Jdbc import java sql Connection import java sql DriverManager import java sql SQLExceptio
  • Google Sign In error 12500

    接入Google登录遇到12500报错 网上查到的原因是后台配置包的签名哈希值不正确 但是我们的应用并没有使用firebase管理 尝试多次之后终于找到了解决方法 在开发者后台应用管理界面 创建一个新的凭据 类型为Andorid 该凭据下包
  • 层层优化重复代码,我又搞了一个通用模板

    后端思维 最近工作中 我通过层层优化重复代码 最后抽出个通用模板 因此跟大家分享一下优化以及思考的过程 我会先造一个相似的例子 然后一步步带大家如何优化哈 看完一定会有帮助的 优化前的例子 第一步优化 抽取公用方法 第二步优化 反射对比字段
  • 除了李飞飞,那些影响 AI 技术发展的女性工程师

    自 1911 年以来 国际妇女节已经走过了一个多世纪 我们为一个更平等的世界努力过 并且仍将继续努力 近年来 随着数据科学和机器学习的迅猛发展 AI 从业者的需求激增 然而 人工智能领域女性从业者的数量远低于男性 根据 Wired 和 El
  • 〖Web全栈开发②〗—网络编程基础(下)

    Web全栈开发 网络编程基础 下 一 TCP 网络应用程序开发流程 1 TCP 网络应用程序开发流程的介绍 2 TCP 客户端程序开发流程的介绍 3 TCP 服务端程序开发流程的介绍 4 小结 二 socket之send和recv原理剖析
  • Java BIO API及代码测试

    文章目录 0 网络编程 1 JAVA最初的网络应用 BIO 1 1服务端代码编写 1 2客户端代码编写 1 3升级版服务端代码 支持同时处理多连接 1 4再次升级服务端代码 支持浏览器请求 2 拓展学习 ServerSocket 类 及AP
  • 蓝桥杯算法提高VIP-队列操作

    题目 题目链接 题解 模拟队列 代码 include
  • 删除vim打开文件末尾的^M

    最近在Windows下写了一个shell脚本 拿到Linux下执行的时候一直提示找不到文件 但是文件明明就存在 在Linux用vi vim 打开脚本 文件内容不为空 仔细检查脚本内容也没有出错 只是每行 末尾 多出来一个 M 符号 去掉这个
  • Qt使用QTcpSocket及QTcpServer传输文件

    服务端具体代码如下 h include
  • Python学习笔记合集(Pyhton基础总结)

    Python学习笔记合集 Python学习笔记合集 Pyhton基础总结 第一天主要讲了Python基本语句 上 第二天主要讲了Python基本语句 下 第三天主要讲了import导包 库 和Python条件语句 第四天主要讲了Python
  • 闭包【JavaScript基础面试题】

    闭包的定义 如果一个函数能访问外部的变量 那么就形成了一个闭包 闭包形成的原理 当一个普通函数执行结束之后 函数内的变量会被全部销毁 垃圾回收 但是 如果某些变量在函数外部会被用到 那么该变量就不会被销毁 因此形成了闭包 可以看下面的例子
  • [INFO] [copilotIgnore] inactive,github copilot没反应怎么解决

    在使用github copilot的时候 插件不工作 后台出现了这种输出 这种情况下就是它的激活出现了问题 如果账号的使用权没有问题的话 就将该插件disable之后再重新enable 重新观察输出 就会看到copilot在重新链接引擎了
  • C语言头文件和条件编译

    目录 一 条件编译 1 ifdef else endif 2 ifndef 用法 3 if和 elif 4 上述指令的嵌套使用 5 line 和 error 6 pragma 二 include 1 头文件被包含的方式 1 1 本地文件包含
  • 基于 pytorch的 肺部x光片疾病识别

    目录 案例主要流程 数据集下载地址 数据示例 模型结构示意图 ResNet 网络结构图
  • Python基础数据之列表知识(二)

    Python基础数据之列表知识 二 一 列表的特点 二 列表的排序 三 列表的嵌套 1 嵌套的基本使用 2 嵌套的示例 四 列表的循环删除 五 列表相关知识链接 一 列表的特点 1 有序 2 独立 3 列表中的元素可以重复 二 列表的排序
  • 【数据结构】队列的链式实现

    链式队列定义及各类操作 include
  • 目标检测之Dynamic Head: Unifying Object Detection Heads with Attentions

    cvpr2021 论文 https arxiv org pdf 2106 08322v1 pdf 代码 https github com microsoft DynamicHead 1 摘要 作者认为目标检测的头部是由三个部分组成 首先 头