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. db2伪表sysibm.sysdummy1

    $ db2 describe table sysibm.sysdummy1 Column                         Type      Type name             ...

  2. postgresql常见开发技巧

    1.数据类型 名字 描述 bigint 有符号 8 字节整数 bigserial 自增八字节整数 bit [ (n) ] 定长位串 bit varying [ (n) ] 变长位串 boolean 逻 ...

  3. Fiddler捕获Java发送的HttpURLConnection请求

    1.说明 平常使用Fiddler抓包工具查看浏览器的请求和响应信息很方便, 但有时候我们也需要拦截java代码执行的http请求. 以便更好的调试程序.具体方法如下: 2.编写Java代码 // 配置 ...

  4. Django实战之文件上传下载

    项目介绍 最近学习django,通过文件上传下载这个小项目,总结下常用的知识点. 做这个案例我有以下需求: 1.要支持一次上传多个文件 2.支持上传后记录上传的数据以及列表展示 3.支持下载和删除文件 ...

  5. 硬件开发笔记(十五):RK3568底板电路VGA显示接口原理图分析

    前言   前面输出了HDMI,LVDS,MIPI-DSI,这里还有一个常用的显示接口就是VGA了,这个用的不多了,一般板子都是hdmi了.  本篇分析底板VGA电路.   VGA接口   VGA(Vi ...

  6. 内建函数iter(),第三个参数哨兵用法

    循环读取文件常见写法 CHUNKSIZE=8192 def reader(s): while True: data = s.recv(CHUNKSIZE) if data == b'': break ...

  7. Nebula Graph 源码解读系列 | Vol.06 MATCH 中变长 Pattern 的实现

    目录 问题分析 定长 Pattern 变长 Pattern 与变长 Pattern 的组合 执行计划 拓展一步 拓展多步 保存路径 变长拼接 总结 MATCH 作为 openCypher 语言的核心, ...

  8. Docker的使用记录

    开始 这是第一个尝试在Leanote上面编写文章,我觉得最重要的事情就是能够保证md文件是能够移植的,否则如果这个软件不靠谱的话,我还能把文章移动到别的地方去.所以先写一篇文章看看效果如何,方便不方便 ...

  9. APISIX的安装和简单使用

    APISIX 是一个云原生.高性能.可扩展的微服务 API 网关. 它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,APISIX 具备动态路由和插件热加载,特别适合微服务体系下的 ...

  10. 一款开源、免费、跨平台的Redis可视化管理工具

    前言 经常有小伙伴在技术群里问:有什么好用的Redis可视化管理工具推荐的吗?, 今天大姚给大家分享一款我一直在用的开源.免费(MIT License).跨平台的Redis可视化管理工具:Anothe ...