本文对作者基于GFocalV1的工作的扩展,取得了不错的效果,想要更加直白理解这篇文章的话可以参考作者的《大白话 Generalized Focal Loss V2》。

简介

在之前的文章介绍了GFocalV1这个开创性的工作,它将边界框建模为通用分布表示,这个分布式的表示其实在GFocalV1中对整个模型的贡献并不是非常大(相比于分类-质量联合表示),因此如何充分利用成为GFocalV2的出发点,事实上,既然分布的形状和真实的定位质量高度相关,那么这个边框的分布表示其实可以算出统计量指导定位质量估计,这就是GFocalV2的核心创新点。

  • 论文标题

    Generalized Focal Loss V2: Learning Reliable Localization Quality Estimation for Dense Object Detection

  • 论文地址

    http://arxiv.org/abs/2011.12885

  • 论文源码

    https://github.com/implus/GFocalV2

介绍

当前的密集检测器由于其优雅且高效,成为业界比较关注的研究热点之一。这类框架的一个重要组件就是Localization Quality Estimation(LQE,定位质量评估模块),通过LQE,高质量检测框相比于低质量检测框有着更高的得分从而降低被NMS消除的风险。LQE的实现形式多变,早有基于IoU的Objectness,近有基于偏中心距离的Centerness,不过它们都有共同的特点,那就是它们都基于原始的卷积特征进行质量估计,如基于点、边界框或者区域的特征。

不同于之前的工作,GFocalV2从一个新的角度实现LQE,它利用了边界框分布的统计学特征而不使用原始的卷积特征。这里的边界框通用分布源于GFocalV1,它通过学习每个要预测的边的概率分布来描述边界框回归的不确定性,如下图的(a)所示。有趣的是,这个通用分布其实和真实的定位质量高度相关,作者将预测框分布的top1值和真实的IoU定位质量做了一个散点图,如下图的(b)所示,可以发现整个散点图其实是有y=x这一趋势的,这就是说,统计意义上来看,分布的形状其实与定位质量高相关。

更具体一点,从上图的©和(d)可以发现,边界框分布的尖锐程度可以清晰描述预测框的定位质量,对于那些模型很确信的预测它的分布是很尖锐的(在一个位置非常突出),而对于模型比较容易混淆的(上图的伞柄)预测框,分布是比较平缓甚至呈现双峰分布的。因此,分布的形状可以指导模型获得更好的LQE,那么如何刻画分布的形状呢?其实论文这里采用了一个非常简单的方法,就是topk数值来进行描述,这点后文会详细讲解。

总之,论文作者设计了一个非常轻量的子网络基于这些分布的统计量产生更加可靠的LQE得分,取得了可观的性能提升,文章将这个子网络称为Distribution-Guided Quality Predictor (DGQP)。引入这个DGQP之后的GFocalV1就成为了GFocalV2,这是一个新的密集检测器,在ATSS上获得了2.6AP的收益。

方法

在之前的文章中,我已经介绍了GFocalV1了,那篇文章的核心创新点是将分类得分和IoU定位质量估计联合到了一起将边界框表示建模为通用分布,这里就不多做回顾了。

分解分类和IoU的表示

在尽管在GFocalV1中分类和质量估计的联合表示解决了训练和推理时的不一致问题,然而只是使用分类分支来产生联合表示还是有所局限,所以这篇论文中作者将其显式分解为利用分类(CCC)和回归(III)两个分支的结构,联合表示的J=C×IJ=C\times IJ=C×I。其中C=[C1,C2,…,Cm],Ci∈[0,1]\mathbf{C}=\left[C_{1}, C_{2}, \ldots, C_{m}\right], C_{i} \in[0,1]C=[C1​,C2​,…,Cm​],Ci​∈[0,1]是mmm个类别的分类表示,而I∈[0,1]I \in[0,1]I∈[0,1]是表示IoU表示的标量。尽管这里将JJJ分解为了两部分,但是依然同时在训练和推理阶段使用JJJ,所以依然保持了GFocalV1追求的一致性。

那么这个CCC是如何得到的呢,其实是通过设计的DGQP模块从CCC和III计算而来,J的监督依然由QFL损失进行,关于这个DGQP模块,下文会讲解。

DGQP模块

Distribution-Guided Quality Predictor(DGQP)模块是GFocalV2最核心的模块,它如下图中的红色框所示,将预测的边框分布PPP输入到一个非常简单的全连接子网络中,得到一个IoU质量标量III,它和分类得分相乘作为最终的联合表示JJJ。和GFocalV1类似,它将相对四个边的偏移量作为回归目标,用通用分布表示,将四个边表示为{l,r,t,b}\{l,r,t,b\}{l,r,t,b},定义www边的概率分布为Pw=[Pw(y0),Pw(y1),…,Pw(yn)]\mathbf{P}^{w}=\left[P^{w}\left(y_{0}\right), P^{w}\left(y_{1}\right), \ldots, P^{w}\left(y_{n}\right)\right]Pw=[Pw(y0​),Pw(y1​),…,Pw(yn​)],其中w∈{l,r,t,b}w \in\{l, r, t, b\}w∈{l,r,t,b}。

关于如何选择分布的统计量,作者这里采用的是分布向量PwP^wPw的Top-k个值和整个向量的均值作为统计特征,因此四条边概率向量的基础统计特征F∈R4(k+1)\mathbf{F} \in \mathbb{R}^{4(k+1)}F∈R4(k+1)通过下式计算得到,其中的Topkm表示求topk值加上均值计算,concat表示串联。

F=Concat⁡({Topkm⁡(Pw)∣w∈{l,r,t,b}})\mathbf{F}=\operatorname{Concat}\left(\left\{\operatorname{Topkm}\left(\mathbf{P}^{w}\right) \mid w \in\{l, r, t, b\}\right\}\right) F=Concat({Topkm(Pw)∣w∈{l,r,t,b}})

之所以选择topk和均值,有以下两个好处。

  1. 由于是概率分布,因此概率分布的和是固定为1的,因此topk和均值就能基本反映分布的平坦程度,越大越尖锐,越小越平坦。
  2. topk和均值可以尽量和对象的尺度无关,也就是如下图所示的,不管是左边的小尺度目标还是右边的大尺度目标,它们的分布都是尖锐的(形状类似),因而统计值也应该差不多。这种表示方法更有鲁棒性。

下面来具体看一下DGQP模块的结构实现,如下图所示,上面的统计特征FFF输入DGQP模块(记为F\mathcal{F}F)中,这个模块只有两个全连接层(配合以激活函数),因而最终IoU预测标量如下式。

I=F(F)=σ(W2δ(W1F))I=\mathcal{F}(\mathbf{F})=\sigma\left(\mathbf{W}_{2} \delta\left(\mathbf{W}_{1} \mathbf{F}\right)\right) I=F(F)=σ(W2​δ(W1​F))

其中参数W1∈Rp×4(k+1)\mathbf{W}_{1} \in \mathbb{R}^{p \times 4(k+1)}W1​∈Rp×4(k+1)和W2∈R1×p\mathbf{W}_{2} \in \mathbb{R}^{1 \times p}W2​∈R1×p,kkk就是topk的取值,ppp是隐藏层的神经元数目(论文中k=4k=4k=4且p=64p=64p=64),最终输出的III和分类得分CCC相乘得到联合表示。

复杂度分析

需要注意的是,DGQP是非常轻量的,它引入的参数是可以忽略不急的。它也几乎不会带来计算开销。

实验

实验部分作者设计了不少消融实验,如统计量的选择、DGQP结构复杂度、统计特征指导和各种类型卷积特征的对比、联合表示的分解形式、和主流检测器的兼容性,这里我就不贴太多表格了。

上图是GFocalV2和主流SOTA的对比,性能改善是蛮大的。此外,作者还进行下图的可视化,可以看到其他算法准确的框score往往都在第三第四而GFocalV2质量较高的框得分也较高,这进一步说明GFocalV2可以利用好更好的定位质量估计来保障更精准的结果。

总结

这篇文章作者从一个新的角度地思考质量估计,从而提出边框的分布表示的统计特征指导质量估计,这是一个全新的工作,应该算是检测历史上第一个用学习到的分布的统计学特征指导质量估计的,本文也只是对这篇文章进行了比较粗糙的解读,想要更详细理解的强烈推荐阅读原论文。最后,如果我的文章对你有所帮助,欢迎一键三连,你的支持是我不懈创作的动力。

GFocalV2解读相关推荐

  1. CVPR2021 | 2D目标检测论文解读

    CVPR2021 | 2D目标检测论文解读 1. UP-DETR:--<UP-DETR: Unsupervised Pre-training for Object Detection with ...

  2. ICLR2022系列解读之三:一个新的目标检测网络结构范式GiraffeDet

    本文解读我们ICLR2022上发表的论文<GiraffeDet: A Heavy-Neck Paradigm for Object Detection>.我们提出了一个新的目标检测网络结构 ...

  3. Python Re 模块超全解读!详细

    内行必看!Python Re 模块超全解读! 2019.08.08 18:59:45字数 953阅读 121 re模块下的函数 compile(pattern):创建模式对象 > import ...

  4. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

  5. Bert系列(三)——源码解读之Pre-train

    https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现 ...

  6. NLP突破性成果 BERT 模型详细解读 bert参数微调

    https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 ​关注她 82 人赞了该文章 Goo ...

  7. 解读模拟摇杆原理及实验

    解读模拟摇杆原理及实验 Interpreting Analog Sticks 当游戏支持控制器时,玩家可能会一直使用模拟摇杆.在整个体验过程中,钉住输入处理可能会对质量产生重大影响.让来看一些核心概念 ...

  8. 自监督学习(Self-Supervised Learning)多篇论文解读(下)

    自监督学习(Self-Supervised Learning)多篇论文解读(下) 之前的研究思路主要是设计各种各样的pretext任务,比如patch相对位置预测.旋转预测.灰度图片上色.视频帧排序等 ...

  9. 自监督学习(Self-Supervised Learning)多篇论文解读(上)

    自监督学习(Self-Supervised Learning)多篇论文解读(上) 前言 Supervised deep learning由于需要大量标注信息,同时之前大量的研究已经解决了许多问题.所以 ...

最新文章

  1. 《大数据、小数据、无数据:网络世界的数据学术》一 导读
  2. ieee33节点系统图_【学术聚焦】考虑信息耦合的电气综合能源系统韧性优化方法...
  3. DS博客作业08--课程总结
  4. Docker中部署mysql后SpringBoot连接时提示表不存在(修改表名忽略大小写)
  5. 常用七大经典排序算法总结(C语言描述)
  6. [攻防世界 pwn]——pwn-200
  7. 矩阵对抗与漏洞补丁201001(第4期)
  8. C#里Attribute属性
  9. jQuery对checkbox的操作(转载)
  10. 【HDU - 1452】 Happy 2004(因子和,逆元,快速幂)
  11. 数据结构实验之栈七:出栈序列判定
  12. SIEM比以往更重要的5个原因
  13. office2007右键doc,xls
  14. oopc——7.面向接口编程
  15. mac无法下载python_无法在Mac上安装Python包(gcc4.0错误)
  16. 非关系型数据库和关系型数据库区别(转载)
  17. 拓端tecdat|R语言对股票风险“溃疡指数”( Ulcer Index)曲面图可视化
  18. 人工智能ai以算法为基础_为公司采用人工智能做准备
  19. Cadence PSpice 模型3:从官网或者技术支持得到的PSpice模型与Capture库关联方法图文教程
  20. 网页连接mysql教程_网页怎么连接到数据库?

热门文章

  1. 信息安全密码学:DES算法的核心 E盒、S盒、P盒
  2. 跟小老虎博客并驾齐驱的博客虎兄虎弟dbzhang800
  3. 都在说测试左移和右移,只有这篇文章说明白了
  4. springboot毕设项目人机工程与交互体验实验室网站zo77m(java+VUE+Mybatis+Maven+Mysql)
  5. FFMPEG录制视频
  6. ListView控件的理解——自洽理论
  7. 智慧警务:如何利用视频智能分析技术助力城市警务可视化综合监管与指挥系统
  8. cf战队服务器怎么分配位置,CF:全服最强排位上分车队,五个位置全部顶尖,请问怎么才能输...
  9. 面试必备:ArrayMap源码解析
  10. 【安全算法之SHA1】SHA1摘要运算的C语言源码实现