目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从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所示,$\forall_{\varepsilon}, IoU(P+\varepsilon,\mathcal{B})\ge T$,$T$为IoU阈值,$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$,TSD输出最终的定位结果$\hat{D}_r$和最终的分类结果$\hat{D}_c$,原sibling head输出的结果为$D$,GT为$\mathcal{B}$,类别为$y$

TSD (task-aware spatial disentanglement)

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

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

TSD learning

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

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

Progressive constraint

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

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

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

  最终的损失函数为公式9,结合了所有的损失,推理的时候把sibling head分支和PC去掉。

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

Experiments


Ablation studies

  • Task-aware disentanglement

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

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

  • Effectiveness of PC

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

  • 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)$转换后的中心点

Conclusion


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





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

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

  1. 计蒜客 第四场 C 商汤科技的行人检测(中等)平面几何好题

    商汤科技近日推出的 SenseVideo 能够对视频监控中的对象进行识别与分析,包括行人检测等.在行人检测问题中,最重要的就是对行人移动的检测.由于往往是在视频监控数据中检测行人,我们将图像上的行人抽 ...

  2. 详解Objective-C的meta-class 分类: ios相关 ios技术 2015-03-07 15:41 51人阅读 评论(0) 收藏

    比较简单的一篇英文,重点是讲解meta-class.翻译下,加深理解. 原文标题:What is a meta-class in Objective-C? 原文地址:http://www.cocoaw ...

  3. 旷视向左、商汤向右,AI一哥之名将落谁家

    编辑 | 于斌 出品 | 于见(mpyujian) AI风口历经多年洗礼之后,真正意义上的AI第一股终于要来了. 相比于聚焦在语音识别技术上的科大讯飞.立足互联网产业的百度.发力人形机器人领域的优必选 ...

  4. 目标检测中的IOU和CIOU原理讲解以及应用(附测试代码)

    上期讲解了目标检测中的三种数据增强的方法,这期我们讲讲目标检测中用来评估对象检测算法的IOU和CIOU的原理应用以及代码实现. 交并比IOU(Intersection over union) 在目标检 ...

  5. SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020

    论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡.PConv ...

  6. CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等

    CVPR 2020几篇论文内容点评:目标检测跟踪,人脸表情识别,姿态估计,实例分割等 CVPR 2020中选论文放榜后,最新开源项目合集也来了. 本届CPVR共接收6656篇论文,中选1470篇,&q ...

  7. vue学习(十四) 条件搜索框动态查询表中数据 数组的新方法

    //html <div id="app"> <label> 名称搜索关键字: <input type="text" clasa=& ...

  8. 目标检测 1 : 目标检测中的Anchor详解

    咸鱼了半年,年底了,把这半年做的关于目标的检测的内容总结下. 本文主要有两部分: 目标检测中的边框表示 Anchor相关的问题,R-CNN,SSD,YOLO 中的anchor 目标检测中的边框表示 目 ...

  9. 商汤科技汤晓鸥:其实不存在AI行业,唯一存在的是“AI+“行业

    https://mp.weixin.qq.com/s/bU-TFh8lBAF5L0JrWEGgUQ 9 月 17 日,2018 世界人工智能大会在上海召开,在上午主论坛大会上,商汤科技联合创始人汤晓鸥 ...

随机推荐

  1. Scala——的并行集合

    当出现Kafka单个分区数据量很大,但每个分区的数据量很平均的情况时,我们往往采用下面两种方案增加并行度: l  增加Kafka分区数量 l  对拉取过来的数据执行repartition 但是针对这种 ...

  2. scrapy版本爬取某网站,加入了ua池,ip池,不限速不封号,100个线程爬崩网站

    目录 scrapy版本爬取妹子图 关键所在下载图片 前期准备 代理ip池 UserAgent池 middlewares中间件(破解反爬) settings配置 正题 爬虫 保存下载图片 scrapy版 ...

  3. java添加对象成功后想知道当前添加对象的id

    我使用的是springboot Mybatis写的项目,结构如下 mapper.xml(以下2个属性必须要有,主键id 一般是自动生成的) mapper.java  (注意新增的返回值不需要,一般情况 ...

  4. java中取得用户输入的方法

    java中取得用户输入的方法 1.采用java.util.Scanner类 采用Scannerd的next()方法读取,测试代码如下: Scanner sc=new Scanner(System.in ...

  5. 2019-05-12 Python之模拟体育竞赛

    一.简介 可以选择任意规则,模拟不同的两个队伍进行球赛的模拟比赛 二.源代码 函数介绍: from random import * #输出介绍信息 def printIntro(): print(&q ...

  6. FJUT2019暑假第二次周赛题解

    A 服务器维护 题目大意: 给出时间段[S,E],这段时间需要人维护服务器,给出n个小时间段[ai,bi],代表每个人会维护的时间段,每个人维护这段时间有一个花费,现在问题就是维护服务器[S,E]这段 ...

  7. 发现一款手绘可视化神器!Python绘图还在用Matplotlib?out了 !

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取htt ...

  8. Oracle使用fy_recover_data恢复truncate删除的数据

    (一)truncate操作概述 在生产中,truncate是使用的多的命令,在使用不当的情况下,往往会造成表的数据全部丢失,恢复较为困难.对于truncate恢复,常见的有以下几种方法可以进行恢复: ...

  9. 最新超详细VMware虚拟机安装完整教程

    一.基础介绍 VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows.DOS.LINUX系统.与“多启动”系统相比,VMWare采用了完全不同的概念.多启 ...

  10. 使用 selenium 实现谷歌以图搜图爬虫

    使用selenium实现谷歌以图搜图 实现思路 原理非常简单,就是利用selenium去操作浏览器,获取到想要的链接,然后进行图片的下载,和一般的爬虫无异. 用到的技术:multiprocessing ...