GFLV2基于GFLV1的bbox分布进行改进,将分布的统计信息融入到定位质量估计中,整体思想十分创新和完备,从实验结果来看,效果还是挺不错的

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

论文: Generalized Focal Loss V2: Learning Reliable Localization Quality Estimationfor Dense Object Detection

Introduction


  GFL系列方法将bbox的四个值预测转化为四个分布预测,能够在输出预测值的同时根据分布判断预测值的预测可靠性。如图1c和图1d所示,高可靠性的预测结果的分布较为集中,低可靠性的预测结果的分布则较为分散。另外,论文将GFL的每个bbox的四个分布的最大值的均值与实际的IoU进行了对比,发现有较高的关联性,表明GFL的分布预测效果还是不错的。

  在当前的目标检测算法中,定位质量(Localization Quality Estimation, LQE)越来越得到重视。LQE不仅能够帮助留下高质量的预测框,还可以避免NMS的误消除。之前的方法大都从卷积特征直接进行LQE,如图2左所示,主要是特征采用上做文章,但实际上这些采样的特征更多是跟分类相关的。如前面所述,GFL预测的bbox分布信息与实际IoU有较强的关联性,于是论文将其融入LQE中,提出了GFLV2,如图2右所示。

  论文的主要贡献如下:

  • 首次将bbox分布信息融入到定位质量预测中进行端到端的目标检测。
  • GFLV2整体架构轻量且消耗极少,能够嵌入到其它框架中带了~2AP的提升。
  • GFLV2在COCO中达到了53.3AP。

Generalized Focal Loss V1


  讲GFLV2前先概括地总结一下GFLV1,主要有两点,分别是Classification-IoU Joint Representation以及General Distribution of Bounding Box Representation,具体可以看Generalized Focal Loss:Focal loss魔改以及预测框概率分布,保涨点 | NeurIPS 2020

Classification-IoU Joint Representation

  这一块是GFLV1的其中一个核心,初衷是将解决训练和推理过程定位质量预测和分类预测不一致的问题(训练时分开训练,推理时却合并输出),简单点说就是直接将分类分支的输出改为IoU和分类的合并结果\(J=[J_1,J_2,\cdots,J_m]\):

  公式1将原本的离散的训练目标转成了连续的目标,为了更好的进行训练,论文也将原本用于离散值的Focal loss修改成用于连续值的Focal loss。

General Distribution of Bounding Box Representation

  GFLV1的另一个核心是将直接预测bbox的四个值改为预测bbox的四个分布\(P(x)\),bbox的每条边的预测值可通过预设区域\([y_0, y_n]\)的积分\(\hat{y}=\int^{+\infty}_{-\infty}P(x)xdx=\int^{y_n}_{y_0}P(x)xdx\)获得。为了完成分布的预测,将网络的输出变为\(n\)个离散值,给定离散分布特性\(\sum^n_{i=0}P(y_i)=1\),回归值\(\hat{y}\)的计算为:

  相对于直接预测值,分布\(P(x)\)还能反应预测值的可靠性。为了网络能够更好地学习预测的分布,论文还提出了针对分布学习的损失函数进行引导。

Generalized Focal Loss V2


Decomposed Classification-IoU Representation

  GFLV1虽然解决了训练和推理过程定位质量预测和分类预测不一致的问题,但仅用分类分支进行联合概率的预测依然有其局限性,所以GFLV2直接融合了分类\(C\)和回归\(I\)分支:

  \(C=[C_1,C_2,\cdots,C_m]\),\(C_i\in [0, 1]\)为\(m\)个类别的分类特征,\(I\in[0,1]\)为IoU特征的标量。尽管\(J\)被分解成了两个部分,但由于在训练和推理阶段都直接使用,依然可以避免不一致的问题。在计算时,先将分类分支的\(C\)和回归分支经过Distribution-Guided Quality Predictor(DGQP)得到的\(I\)进行结合,训练时使用GFLV1提出的QFL进行监督训练,推理时直接将联合结果用于NMS中。

Distribution-Guided Quality Predictor

  DGQP是GFLV2的核心组件,通过小的子网将预测的分布\(P\)的统计信息转化为IoU标量\(I\),用于生成分类-IoU联合特征。跟GFLV1一样,将每条边的相对距离\(\{l,r,t,b\}\)作为回归目标,每个bbox生成对应四个离散的分布\(P^w=[P^w(y_0),P^w(y_1),\cdots,P^w(y_n)]\),\(w\in {l,r,t,b}\)。如图1所示,分布\(P\)的平坦情况能够反映bbox的质量,在实际计算中,论文选择概率分布\(P^w\)的Top-k值及其均值,concatenate后作为基础的统计特征\(F\in\mathbb{R}^{4(k+1)}\):

  选择Top-k值和均值有两个好处:

  • 由于\(P^w\)的和固定为1,Top-k值和均值能够更好地反映分布的平坦情况,比如值越大越尖,值越小则越平。

  • Top-k值和均值能够使得统计特征对分布区域上的相对偏移不敏感,生成与目标尺寸无关的鲁棒特征。

  给定统计特征\(F\)作为输入,使用小型子网\(\mathcal{F}(\cdot)\)进行IoU质量预测,子网主要由两层全连接层构成,分别接ReLU和Sigmoid激活,IoU标量\(I\)的计算为:

  \(W_1\in\mathbb{R}^{p\times 4(k+1)}\),\(W_1\in\mathbb{R}^{1\times p}\),\(p\)为channel维度。由于DGQP的结构十分轻量,所以几乎不会对原本的训练和推理造成过多的额外开销。

  论文也尝试用DFQP生成额外的特征与分类特征进行contatenate,然后再后续操作,但效果没有直接融合好,具体可以看看实验部分。

Experiment


  从整体结果来看,GFLV2在准确率和速度上都有不错的表现,论文还有很多丰富的对比实验,有兴趣的可以去看看原文。

Conclusion


  GFLV2基于GFLV1的bbox分布进行改进,将分布的统计信息融入到定位质量估计中,整体思想十分创新和完备,从实验结果来看,效果还是挺不错的。





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

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

GFLV2:边界框不确定性的进一步融合,提点神器 | CVPR 2021的更多相关文章

  1. OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

  2. 输出预测边界框,NMS非极大值抑制

    我们预测阶段时: 生成多个锚框 每个锚框预测类别和偏移量 但是,当同一个目标上可能输出较多的相似的预测边界框.我们可以移除相似的预测边界框.——NMS(非极大值抑制). 对于一个预测边界框B,模型会计 ...

  3. 3D集合图元:最小边界框/包围盒(boundingbox)

    对于2D边界框的应用时比较广泛地,它为一个简单匹配建立了很小的计算规则,3D模型的boundingbox则比较困难,计算代价较大.对于PCL库的使用则降低了计算难度,三维数值化降低了建模过程,可以使用 ...

  4. [深度学习] imgaug边界框增强笔记

    imgaug边界框增强笔记主要是讲述基于imgaug库对目标检测图像的边界框进行图像增强.本文需要掌握imgaug库的基本使用,imgaug库的基本使用见[深度学习] imgaug库使用笔记. 文章目 ...

  5. NX二次开发-UFUN求对象的最大边界框UF_MODL_ask_bounding_box

    NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...

  6. C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例

    C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...

  7. [提权]域内提权神器 MS14-068 完整EXP

     可以让任何域内用户提升为域管理员     c:\python27\python.exe ms14-068.py -u k8test3@k8.local -p k8team!@# -s S-1-5-2 ...

  8. mysql提权神器

    java -jar udf.jar 127.0.0.1 root 123456 [32/64]

  9. Java 提效神器 Stream 的冷门技巧

    Stream 使用这个方法创建一个 Stream 对象. new ArrayList<>().stream() Filter 过滤器,里面传递一个函数,这个函数的返回结果如果为 true ...

  10. SpringBoot--Easycode、mybatisX插件生成entity,controller,service,dao,mapper IDEA版 项目提效神器

    一.介绍 Easycode是idea的一个插件,可以直接对数据的表生成entity,controller,service,dao,mapper,无需任何编码,简单而强大. MybatisX 是一款基于 ...

随机推荐

  1. Ubuntu 20.04 出现 SSL_connect: error:1425F102 .. unsupported protocol问题的解决

    在安装完Ubuntu 20.04后, 这个问题影响了好几个软件, 包括MySQL Workbench, Openfortigui等等, 出现的错误都是 ERROR: SSL_connect: erro ...

  2. 使用CNN实现MNIST数据集分类

    1 MNIST数据集和CNN网络配置 关于MNIST数据集的说明及配置见使用TensorFlow实现MNIST数据集分类 CNN网络参数配置如下: 原始数据:输入为[28,28],输出为[1,10] ...

  3. Python之初级RPG小游戏

    在国外网站上找到一个练习Python的小游戏感觉不错,自己实现了一下. 通过该练习你能学到: 元组 字典 简单定义函数和封装 条件控制语句 游戏说明 以下是3个房间和1个花园: Hall 客厅 有一把 ...

  4. Java集合框架学习(十五) ListIterator接口详解

    ListIterator介绍 一个为list对象设计的迭代器,允许开发人员在2个方向上迭代,修改和获得list迭代位置. ListIterator 没有所谓当前元素. 它的游标位置总是位于previo ...

  5. xml开发笔记(一):tinyXml2库介绍、编译和工程模板

    前言   Qt开发Xml相关技术,使用到tinyxml2库.   TinyXML   TinyXML是一个简单的.小的C++的XML解析器,可以集成到其他程序中.它是ROS的标准XML解析器.  最新 ...

  6. Taurus.MVC WebMVC 入门开发教程3:数据绑定Model

    前言: 在这篇 Taurus.MVC WebMVC 入门开发教程的第三篇文章中, 我们将重点介绍如何进行数据绑定操作,还会学习如何使用 ${属性名称} CMS 语法来绑定页面上的元素与 Model 中 ...

  7. Dockerfile和docker-compose详解

    Dockerfile镜像制作 docker/podman中, 镜像是容器的基础,每次执行docker run的时候都会指定哪个基本镜像作为容器运行的基础.我们之前的docker的操作都是使用来自doc ...

  8. 框架和MVC架构

    网络框架及MVC架构 网络框架 所谓网络框架是指这样的一组Python包,它能够使开发者专注于网站应用业务逻辑的开发,而无须处理网络应用底层的协议.线程.进程等方面.这样能大大提高开发者的工作效率,同 ...

  9. jquery实现轮播图切换

    这个是我模仿网易云的音乐界面写的轮播图,主要实现的功能有 1.每隔4秒图片和对应的背景颜色一起切换 2.点击翻页会跳转到相对应的图片以及背景上 3.点击左右翻页,实现顺序切换 <1>HTM ...

  10. Java 多线程----- 解决线程安全问题的 方式三:Lock锁 --------jdk 5.0 新增

    1 package bytezero.deadlock; 2 3 import java.util.concurrent.locks.ReentrantLock; 4 5 /** 6 * 解决线程安全 ...