商汤提出解偶检测中分类和定位分支的新方法TSD,COCO 51.2mAP

2023-11-08

目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从sibling head改造入手,跳出常规的优化方向,提出TSD方法解决混合任务带来的内在冲突,从主干的proposal中学习不同的task-aware proposal,同时结合PC来保证TSD的性能,在COCO上达到了51.2mAP

来源:晓飞的算法工程笔记 公众号

论文: Revisiting the Sibling Head in Object Detector

Introduction


  经典RoI-based定位算法使用sibling head(2-fc)对proposal同时进行分类和回归,由于任务的本质不同,分类任务和定位任务是完全不同的,关注的特征也不一样,如图1所示。分类任务往往需要平移不变性,而定位任务则需要平移可变性。

  具体属性的表现如公式10所示, ∀ ε , I o U ( P + ε , B ) ≥ T \forall_{\varepsilon}, IoU(P+\varepsilon,\mathcal{B})\ge T ε,IoU(P+ε,B)T T T T为IoU阈值, f f f为共用的特征提取器。因此,共用的特征提取器以及相同的proposal都是目标检测学习的主要障碍。
  与以往的方法不同,论文观察到限制定位算法的根本问题在于分类分支和定位分支在空间维度上存在偏差,不是通过设计特征提取器或更好的结构能解决的。因此,论文提出TSD方法,从空间维度和特征提取两方面同时对分类任务和定位任务进行拆解,并且结合精心设计的渐进约束(PC)帮助学习。
  论文的贡献如下:

  • 深入探讨RoI-based检测算法中混合任务带来的障碍,并揭示限制检测性能的瓶颈
  • 提出TSD(task-aware spatial disentanglement)解决混合任务的冲突,能够学习到task-specific特征表达能力
  • 提出PC(progressive constraint)来扩大TSD和sibling head间的性能间隔
  • 在COCO和OpenImage上验证了有效性,单模型最高可达51.2mAP

Methods


  如图2所示,在训练时,TSD和原来的结构共存,定义主干输出的预测框为 P P P,TSD输出最终的定位结果 D ^ r \hat{D}_r D^r和最终的分类结果 D ^ c \hat{D}_c D^c,原sibling head输出的结果为 D D D,GT为 B \mathcal{B} B,类别为 y y y

TSD (task-aware spatial disentanglement)

  经典的Faster RCNN基于 P P P同时最小化预测框的分类误差和损失误差,如公式1, H 1 ( ⋅ ) = { f ( ⋅ ) , C ( ⋅ ) } \mathcal{H}_1(\cdot)=\{f(\cdot),\mathcal{C}(\cdot)\} H1()={f(),C()} H 2 ( ⋅ ) = { f ( ⋅ ) , R ( ⋅ ) } \mathcal{H}_2(\cdot)=\{f(\cdot),\mathcal{R}(\cdot)\} H2()={f(),R()} f ( ⋅ ) f(\cdot) f()为特征提取, C ( ⋅ ) \mathcal{C}(\cdot) C() H ( ⋅ ) \mathcal{H}(\cdot) H()为分别从特征进行分类和定位的预测函数。由于分类和定位所用到的特征不太一样,一些研究将特征提取拆分为 f c f_c fc f r f_r fr,尽管这样的拆分能带来一些提升,但任务混合在空间上的内在冲突仍然潜在(分类和定位所需的bbox其实不一样)

  为了解决这个潜在的问题,TSD直接在空间上对分类和定位进行分解,如公式2,从原预测框 P P P中预测出分类框 P ^ c = τ c ( P , Δ C ) \hat{P}_c = \tau_c(P, \Delta C) P^c=τc(P,ΔC)以及定位框 P ^ r = τ r ( P , Δ R ) \hat{P}_r = \tau_r(P, \Delta R) P^r=τr(P,ΔR) Δ C \Delta C ΔC为pointwise的形变, Δ R \Delta R ΔR为proposal-wise的变化,具体如图2(b)所示。然后再通过不同的特征提取和head进行分类和定位的预测, H 1 D ( ⋅ ) = { f c ( ⋅ ) , C ( ⋅ ) } \mathcal{H}_1^D(\cdot)=\{f_c(\cdot),\mathcal{C}(\cdot)\} H1D()={fc(),C()} H 2 D ( ⋅ ) = { f r ( ⋅ ) , R ( ⋅ ) } \mathcal{H}_2^D(\cdot)=\{f_r(\cdot),\mathcal{R}(\cdot)\} H2D()={fr(),R()}。由于分解了分类和定位的预测区域,TSD能够学习task-aware的特征表达。

TSD learning

  对于定位,使用三层全连接 F r \mathcal{F}_r Fr来生成proposal-wise变化 Δ R ∈ R 1 × 1 × 2 \Delta R\in \mathbb{R}^{1\times 1\times 2} ΔRR1×1×2用于将 P P P转换为 P ^ r \hat{P}_r P^r,每层的输出为 { 256 , 256 , 2 } \{256, 256, 2\} {256,256,2} γ \gamma γ为预设的调节标量。 τ r \tau_r τr的计算如公式4,即将 P P P进行整体移动,新点的值使用双线性插值计算,使得 Δ R \Delta R ΔR可微。

  对于分类,将规则的 P P P变形为不规则的 P ^ c \hat{P}_c P^c F c \mathcal{F}_c Fc为三层全连接层,每层的输出为 { 256 , 256 , k × k × 2 } \{256, 256, k\times k\times 2\} {256,256,k×k×2},为了减少参数,首层全连接与 F r \mathcal{F}_r Fr共用。 Δ C ∈ R k × k × 2 \Delta C\in \mathbb{R}^{k\times k\times 2} ΔCRk×k×2为pointwise的x坐标和y坐标变化, k × k k\times k k×k为池化后特征 F ^ c \hat{F}_c F^c的大小,根据公式6使用 Δ C \Delta C ΔC生成池化后的特征图 F ^ c \hat{F}_c F^c,这里的池化操作跟Deformable Convolution的一样。 ∣ G ( x , y ) ∣ |G(x,y)| G(x,y)为像素总数,具体大小跟池化前后的特征图大小有关, ( p x , p y ) (p_x, p_y) (px,py)为区域中的坐标, F B ( ⋅ ) \mathcal{F}_B(\cdot) FB()为双线性插值,使 Δ C \Delta C ΔC可导。

Progressive constraint

  在训练阶段,使用公式1对TSD和sibling head进行联合训练,此外还设计了渐进约束(progressive constraint, PC)来辅助TSD的学习,如图2©。

  对于分类分支,PC如公式7, H ( y ∣ ⋅ ) \mathcal{H}(y|\cdot) H(y) y y y类的置信度, m c m_c mc约预设的间隔, ∣ ⋅ ∣ + |\cdot|_{+} +类似于ReLU函数,即约束TSD的预测置信度需要比sibling head至少高 m r m_r mr,否则即学习不够,产生损失

  对于定位分支,PC如公式8, B ^ \hat{\mathcal{B}} B^为原方式的最终预测结果, B ^ D \hat{\mathcal{B}}_D B^D为TSD转换后的最终预测结果,仅对正样本进行计算,即约束TSD的预测结果的IoU需要比sibling head至少高 m r m_r mr

  最终的损失函数为公式9,结合了所有的损失,推理的时候把sibling head分支和PC去掉。
  论文在此处提出的约束方法很好,但是会存在一个问题,若sibling head学习充分了,留给TSD的提升空间本身就小于间隔,这样产生的损失显然有些不合理,所以是否在这种情况应该调整间隔,在可提升空间和预设间隔之间去个最小值。

Experiments


Ablation studies

  • Task-aware disentanglement

  这里对比了TSD与不同的分解策略,比如 D s 8 D_{s8} Ds8即从stride为8的特征图开始分解。

  • Joint training with sibling head H ∗ \mathcal{H}_* H

  • Effectiveness of PC

  • Derived proposal learning manner for H ∗ D \mathcal{H}_*^D HD

  • Delving to the effective PC

Applicable to variant backbones

  基于Faster R-CNN + TSD替换不同主干网络的结果

Applicable to Mask R-CNN

Generalization on large-scale OpenImage

Comparison with state-of-the-Arts

Analysis and discussion

  • Performance in different IoU criteria

  • Performance in different scale criteria

  • What did TSD learn

  从图5可以看出,TSD的定位能够学习不易回归的边界,而分类则专注于局部特征以及目标的上下文信息,这里的点为区域 G ( x , y ) G(x,y) G(x,y)转换后的中心点

Conclusion


  目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从sibling head改造入手,跳出常规的优化方向,提出TSD方法解决混合任务带来的内在冲突,从主干的proposal中学习不同的task-aware proposal,同时结合PC来保证TSD的性能,在COCO上达到了51.2mAP



如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

work-life balance.

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

商汤提出解偶检测中分类和定位分支的新方法TSD,COCO 51.2mAP 的相关文章

随机推荐

  • ES6-promise小技巧

    Promise all 从Promise all返回的主promise在所有成员promise都完成后才会执行 如果这些promise中有任何一个被拒绝 reject error 住promise就会被拒绝 并丢弃来自其他所有promise
  • 【Jupyter Notebook】安装及使用

    知识目录 前言 一 Jupyter Notebook安装使用 1 1 Jupyter Notebook的三种打开方式 1 点击Anaconda Prompt打开 2 点击Jupyter Notebook打开 3 使用Powershell打开
  • [计算机毕业设计]机器学习的数据驱动股票价格预测

    前言 大四是整个大学期间最忙碌的时光 一边要忙着准备考研 考公 考教资或者实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度的 对本科同学来说是充满挑战 为帮助大
  • 算法设计与分析——0/1背包问题

    问题描述 给定n个重量为 w1 w2 wn 价值为 v1 v2 vn 的物品和一个容量为C的背包 0 1背包问题是求这些物品中的一个 最有价值的子集 并且能够装入背包中 基本算法思想 暴力法 用暴力法解决0 1背包问题 需要考虑给定n个物品
  • 概率密度函数

    概率密度函数 Probability Density Function 简称PDF 是描述随机变量的概率分布的函数 它对于连续型随机变量来说是非常重要的概念 PDF可以用来描述变量在不同取值上的概率分布情况 对于一个连续型随机变量X 其概率
  • 记忆化搜索 (蒟蒻练习生)

    定义 记忆化搜索是一种通过记录已经遍历过的状态的信息 从而避免对同一状态重复遍历的搜索实现方式 因为记忆化搜索确保了每个状态只访问一次 它也是一种常见的动态规划实现方式 引入 题目见 NOIP2005 采药 朴素的 DFS 做法 很容易实现
  • Python web自动化测试 —— 文件上传

    文件上传三种方式 一 查看元素标签 如果是input 则可以参照文本框输入的形式进行文件上传 方法 和用户输入是一样的 使用send keys 1 2 3 4 5 步骤 1 找到定位元素 2 输入文件路径 ele driver find e
  • ios android 字体大小,并排文字在ios上字体变大,安卓上正常显示

    IOS页面 安卓页面 复现代码 公告 疑情公告 notice notice export default data return notice 中民筑友码垛机作业区域一号工位发 疑似闯入行为中民筑友码垛机作业区域一号工位发 疑似闯入行为 发
  • Golang中结构体Struct

    前言 这里总结的Golang 笔记只适合有点编程基础的人看 比如Java 往期内容 Golang学习 day1 变量 类型 Golang学习 指针 循环控制相关 循环结构控制 包函数的使用 异常处理 数组 老奶奶可以看懂的切片 老奶奶可以看
  • C++之extern和static用法和区别

    目录 声明和定义的区别 关键字extern 作用 用法总结 关键字static 全局变量和全局静态变量区别 局部静态变量 静态函数 声明和定义的区别 变量定义 用于为变量分配存储空间 还可为变量指定初始值 程序中 变量有且仅有一个定义 变量
  • C语言读取写入CSV文件基础入门篇

    什么是CSV 大量C语言项目课设 小游戏源码 压 缩 包 免 费 下 载 链 接 如 下 c语言项目课设小游戏源码资料压缩包 zip C文档类资源 CSDN下载c语言项目课设小游戏源码资料压缩包 zipc语言项目课设小游戏源码资料压缩包 z
  • 数据驱动的数字化转型:从流程驱动到数据驱动

    以下文章来源于凯哥讲故事系列 作者凯哥 数字化时代已经到来 1996年的时候 Being Digital 的作者Negroponte就提出数字化生活的概念 而20年以后的今天 我们已经进入了数字化的生活 移动互联网 物联网 手机 各种社交媒
  • 刷脸支付无一例外地建构与完善起来

    刷脸支付均采用的是3D人脸识别技术 这种技术具有一项至关重要的功能 活体检测 即系统摄像头在识别人脸是否为本人的同时 还能检验是否有人利用照片等手段冒充用户 由此封闭了假体攻击的空间 正如支付工具的迭代总是高出人们的预估一样 技术的进化对于
  • 小程序配置网络请求@escook/request-miniprogram

    由于平台限制 小程序项目不支持axios 原生wx request API功能较为简单 不支持拦截器等功能 所以使用 escook request miniprogram第三方包发起网络数据请求 配置步骤 官方文档 https www np
  • 浅谈.NET语言开发应用领域

    NET语言是一种跨平台的开发框架 适用于各种应用程序的开发 以下是一些常见的 NET语言开发应用领域 桌面应用程序开发 使用 NET框架开发的桌面应用程序可以在Windows操作系统上运行 包括Windows Forms和WPF 这些应用程
  • 智能指针之weak_ptr06

    一 weak ptr 看名字就知道 他是一个弱引用 他的存在是为了辅助shared ptr的循环引用问题 它不占用引用数 只能通过shared ptr或者weak ptr构造赋值 它没有重载 和 gt 运算符 因此不可以直接通过 weak
  • hvv 文件上传和文件包含考点

    天眼如何判断文件上传漏洞是否成功 数据包分析 观察客户端请求数据 是否包含webshell流量特征 观察服务器返回信息 是否有 上传成功 或 success upload 等信息提示 尝试寻找上传的文件 访问上传的文件看是否存在 查看文件上
  • Java的数据类型及变量

    一 变量 内存存储的是运行中程序的数据 eg 我有10块钱 买早餐花了6元 问我现在还有多钱 计算机 1 存储数据 2 CPU取出来 参与运算 3 结果更新内存 变量的本质 内存中的一个存储空间 另一种说法 程序运行过程中 其值可以发生改变
  • Java定时任务技术分析

    从零打造项目 系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实
  • 商汤提出解偶检测中分类和定位分支的新方法TSD,COCO 51.2mAP

    目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差 论文从sibling head改造入手 跳出常规的优化方向 提出TSD方法解决混合任务带来的内在冲突 从主干的proposal中学习不同的task aware proposal