一文了解目标检测边界框概率分布

2023-05-16

一文了解目标检测边界框概率分布

    • 概率建模


众所周知,CNN的有监督学习通常是建立在给定训练数据集之上的,数据集的标签(也称为GT),决定了人类期望模型学习的样子。它通过损失函数、优化器等与CNN模型相连。因而机器所表现的出的一切有关识别、定位的能力,均是合理优化的结果。同样地,如何能够玩转目标检测?其实只需能够玩转最优化即可。

在最近两年内,出现了一些有关目标检测bounding box概率分布建模的文章,如Softer-NMS (CVPR 2019),Gaussian YOLOv3 (ICCV 2019),An Alternative Probabilistic Interpretation of the Huber Loss (Arxiv 2019.11),Generalized Focal Loss (Arxiv 2020.06),本文将主要通过以上四篇文章进行阐述。

火车的右边界是模棱两可的
目标检测的概率分布建模,首次出现于Softer-NMS (to my best knowledge),其文章主旨基于一个最基本的观察:bounding box标签存在模棱两可的区域。所谓模棱两可的区域正如上图的火车,它的左、上、下边界都是较为确定的,而右边界却是模棱两可的,因为它包含了一些非目标区域。可以说,对于右边界而言,往左偏移一点与往右偏移一点都是可接受的,这就是它的模糊性。

接下来再考察我们的bounding box regression模块,模型的监督信息只有四个值x,y,w,h (中心点坐标与宽高),或者x1,y1,x2,y2(左上角点与右下角点坐标),亦或者t,b,l,r (采样点到上下左右四条边的距离)。而所选用的损失函数,通常为Ln范数损失,如L1,L2,Smooth L1损失,或者基于IoU的损失。

关于目标检测box回归损失函数,可以参考目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss

然而以上这些损失函数均以模型预测值GT值比较作为反向传播的依据,这缺乏了对数据标签不确定性的估计。如果我们能够得到一个box的定位不确定程度,则我们可以加以利用以提升模型的精度。

常用的一些手段包括:

惩罚分类得分 (Mask Scoring R-CNN CVPR 2019, Gaussian YOLOv3 ICCV 2019, FCOS ICCV 2019, PolarMask CVPR 2020)、加权平均后处理 (Softer-NMS CVPR 2019),引导NMS (IoU-Net ECCV 2018)。

概率建模

传统的box预测只有四个输出值,对于每一个输出值,等同于优化一个狄拉克分布
Dirac分布
也即一个在给定区间上积分为1的概率分布,其只在 x = a x=a x=a处有监督信号,而在其余地方没有监督。

为了引入box的不确定性估计,Softer-NMS与Gaussian YOLOv3均采取了高斯建模的方法,将模型的预测值由4个变为8个,分别代表四条边的均值与方差,其中方差代表了不确定性的程度。

在这里插入图片描述
我们知道高斯分布当方差越大时,分布越为平坦,表明了模型对均值范围内的预测不确定;方差越小时,分布越尖锐,表明模型对均值位置处的预测很自信。

从数学上来看,我们只需要一些衡量两个概率分布相似程度的损失函数,如KL散度,就能够做到用高斯分布去拟合狄拉克分布。

在An Alternative Probabilistic Interpretation of the Huber Loss中,研究者首先解释了Ln范数损失与概率分布之间的联系。总结来说:

  1. 当选用L1损失时,等价于优化一个不确定度满足拉普拉斯分布的似然估计。

  2. 当选用L2损失时,等价于优化一个不确定度满足高斯分布的似然估计。

  3. 当选用Huber损失时(也即Smooth L1损失),等价于优化一个不确定度满足特定值的拉普拉斯分布,而这个不确定度与Huber损失中所选用的L1损失和L2损失的转折点 α \alpha α 有直接联系。

L1损失、L2损失、转折点alpha=1时的Huber概率密度函数
因此,与Softer-NMS和Gaussian YOLOv3不同的是,该文将视线转移到了Huber损失中转折点 α \alpha α 的选用是否合适上。经过一系列理论推导,论文得出的结论是,目前的Smooth L1损失中所选用的转折点 α \alpha α 是有问题的。

该文将转折点 α \alpha α 与不确定度关联起来,得出了如下结果:

  1. GT作为人类预测的结果,其不确定度应该比模型预测要小。

  2. RPN是粗定位阶段,其不确定度理应比Fast R-CNN精细定位阶段大。

而由目前的Smooth L1的转折点 α \alpha α 推导出的不确定性,都违反了以上两个直觉。因此该文后续的改进主要是对 α \alpha α 进行调整。

缺点:以上这些概率建模方式,依然没有脱离对box的四个变量独立预测,无法享用目前最新的一些IoU-based损失的好处。

Generalized Focal Loss一文中,研究者尝试建模一个一般的概率分布。

既然狄拉克分布太严格了,缺乏对不确定度的估计,而高斯分布又是一种简化版本,且实际的数据所满足的概率分布应该是任意的,因此一般概率分布的建模也就应运而生。

在这里插入图片描述
一般分布的建模,有个直接问题是无法使用较少参数将一个连续且任意的概率分布描述出来,因此必须采取离散法。大致方法是将给定区间分成n个间隔均匀的小区间,网络输出n+1个预测值,分别代表概率。

这些概率都经过了Softmax输出,且满足概率和为1。

∑ i P ( x i ) = 1 \sum\limits_iP(x_i)=1 iP(xi)=1

按照加权和,即可得到某条边的预测值 x = ∑ i P ( x i ) x i x=\sum\limits_iP(x_i)x_i x=iP(xi)xi
在这里插入图片描述
论文选用了FCOS作为基础框架,由于FCOS在边界框回归上是采取预测采样点到上、下、左、右四条边的距离,这使得回归目标的长度较为统一,可以很好地在一个固定区间上表示出来。
MS COCO 训练集 t, b, l, r 回归长度
好处

  1. 一般分布更为灵活,可以更好地应对现实世界的复杂数据。
  2. 可以享受IoU-based损失,而高斯分布无法直接享用。
  3. 一般分布可以预测出双峰型的分布,这或许隐含了一些对数据集模棱两可位置的信息,有可能可以用于进一步数据标签校正。

在这里插入图片描述
从效果来看一般分布建模取得了最好的结果。
在这里插入图片描述
这里表格的最后一行代表使用了DFL (Distribution Focal Loss),用于额外加强GT所属的小区间端点的学习,加速模型收敛。

参考文献

  • Bounding Box Regression with Uncertainty for Accurate Object Detection. CVPR 2019
  • Gaussian YOLOv3: An Accurate and Fast Object Detector Using Localization Uncertainty for Autonomous Driving. ICCV 2019
  • An Alternative Probabilistic Interpretation of the Huber Loss. Arxiv 2019.11
  • Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection. Arxiv 2020.06
  • Acquisition of Localization Confidence for Accurate Object Detection. ECCV 2018
  • Mask Scoring R-CNN. CVPR 2019
  • FCOS: A simple and strong anchor-free object detector. ICCV 2019
  • PolarMask: Single Shot Instance Segmentation with Polar Representation. CVPR 2020
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文了解目标检测边界框概率分布 的相关文章

  • matlab 调用GPU运算

    1 利用gpuArray 函数将数据从CPU传入GPU中 a 61 zeros 2 3 a 61 gpuArray a 或 a 61 gpuArray single a 数据默认都是双精度 xff0c 降成单精度会提高计算速度 2 用cla
  • 1.数字芯片后端设计小概述

    大家好 xff0c 第一篇文章想来简单介绍一下数字芯片后端的基本流程 对于没有接触过后端设计的新人可能会有用 后端设计总体来说 xff0c 是将前端写好的RTL代码通过综合 xff08 synthesize xff09 转换成物理网表 xf
  • Neutron学习笔记2-- Neutron的网络实现模型

    Neutron学习笔记2 Neutron的网络实现模型 Neutron的三类节点 计算节点网络节点控制节点 Neutron将在这三类节点中进行部署 xff0c Neutron在各个计算节点 xff0c 网络节点中运行各种各样的Agent x
  • Neutron学习笔记1--基本概念

    Neutron学习笔记 基本概念 1 涉及的Linux网络技术 bridge xff1a 网桥 xff0c Linux中用于表示一个能连接不同网络设备的虚拟设备 xff0c Linux中传统实现的网桥类似于一个hub设备 xff0c 而ov
  • 解决EXCEL打开.csv文件时的乱码问题

    问题描述 xff1a 在爬取数据的时候需要生成 csv文件用于存储数据 xff0c 但是生成的文件打开的时候是都是乱码 xff08 包括在网上下载的用于数据分析联系的 csv文件很多时候也会乱码 xff09 xff0c 具体情况如下 xff
  • 关于C语言中字符串以‘\0‘结尾的原因

    0 一般放在字符串的结束处 xff0c 用来表示字符串的结束 xff0c 其是ascii值为0的字符的转义 如果一个字符串中没有 0 这个结束字符 xff0c 那么这些函数将不能确定字符串的结束位置在哪儿 xff0c 从而引起一些不必要的错
  • ESP8266_NONOS_SDK开发环境搭建及验证

    ESP8266 NONOS SDK开发环境搭建及验证 视频教程 xff1a 芯片资料芯片 xff1a ESP8266EX模组 xff1a ESP 12F开发板 xff1a NodeMCU 启动模式安装AiThinkerIDE编译报错问题No
  • 华为开发者大会2019观后感

  • 运行Mapreduce,运行一半卡着不动了

    64 root 64 master mr inverted test bash run sh rmr DEPRECATED Please use rm r instead 19 01 17 23 22 23 INFO fs TrashPol
  • 51单片机 | LCD1602 液晶显示实验

    文章目录 一 LCD1602 介绍1 LCD1602 简介2 LCD1602 常用指令3 LCD1602 使用 二 硬件设计三 软件设计1 LCD1602 驱动函数2 主函数 四 实验现象 在前面章节 xff0c 我们已经学习过几种显示装置
  • Ubuntu18.04下自定义meauconfig

    一 前言 本文记录ubutu18 04下自定义meauconfig的安装使用 二 安装 参考链接 xff1a https nuttx apache org docs latest quickstart install html 或者可以看这
  • 服务器搭建及数据库部署

    服务器搭建 参考文章 快速搭建一个自己的服务器详解 xff08 java环境 xff09 因为上学期做非关系数据库课程实验时使用过PolarDB云数据库 xff0c 进行过阿里云的学生认证 xff0c 所以此次云服务器也就选择了Ali的开发
  • MATLAB 2018b 安装 mexopencv (VS 2017 编译)

    MATLAB 2018b 安装 mexopencv VS 2017 编译 之前电脑上装的是MATLAB 2016b 没办法识别VS 2017 虽然官方说有补丁解决这个问题 但还是下了最新的2018b 2018b 识别VS 2017 是没问题
  • Mybatis搞五下(分页、缓存)

    Mybatis搞五下 xff08 分页 缓存 xff09 上篇博客我们讲了动态SQL xff0c 一一多多和延迟加载问题 xff0c 这篇我们讲点轻松的东西 xff0c 关于分页插件pageHelper和Mybatis面试常问的缓存问题 M
  • 03、postman前置脚本

    postman前置脚本是指在Pre requests Script中编写的js脚本 xff0c 一个请求在发送之前 xff0c 会先去执行Pre Request Script xff08 前置脚本 xff09 中的代码 xff0c 可以是为
  • Python3爬取淘宝网商品数据!

    分析淘宝网 这次选择的是淘宝网热卖而不是淘宝网 xff0c 二者虽然名字有不同 xff0c 但是数据还是一样的 xff0c 区别就在于前者把后者的所有店铺和商品的海量数据按照销售量 好评度 信誉度综合测评 重新计算 重新排序展现给买家的一个
  • Python实现淘宝准点抢单!双十一秒杀神器啊!还不来学?

    一 ChromeDriver的安装 若想使用Selenium成功调用Chrome浏览器完成相应的操作 xff0c 需要通过ChromeDriver来驱动 我们在下载之前先来确认下我们使用的Chrome浏览器版本 只需要红框内几位相同即可 根
  • 【点云系列】 场景识别类导读

    文章目录 1 背景知识2 定义3 传统方法4 基于深度学习的方法5 其他参考 xff1a 终于可以简单写一下这一块的导读了 xff0c 拖了一个多周了 希望可以帮助到大家 xff1b xff09 1 背景知识 点云检索 xff08 poin
  • 异常检测综述(Anomaly Detection: A Survey)

    Anomaly Detection A Survey 异常检测综述 xff1a 异常检测是一个重要的问题 xff0c 已经在不同的研究领域和应用领域进行了研究 许多异常检测技术是专门为某些应用领域开发的 xff0c 而其他技术则更为通用 本

随机推荐

  • 基于Prometheus和k8s搭建监控系统

    文章目录 1 实验环境2 Prometheus介绍 xff1f 3 Prometheus特点3 1 样本 4 Prometheus组件介绍5 Prometheus和zabbix对比分析6 Prometheus的几种部署模式6 1 基本高可用
  • STM32F4 | 窗口门狗(WWDG)实验

    文章目录 一 STM32F4 窗口看门狗简介二 硬件设计三 软件设计四 实验现象五 STM32CubeMX 配置 WWDG 在本章中 xff0c 我们将使用窗口看门狗的 中断功能来喂狗 xff0c 通过 DS0 和 DS1 提示程序的运行状
  • deepin15.11系统下使用源码包(tar.xz)安装MySQL 8.0+(补充)

    1 下载MySQL的安装包 1 1 进入官网 xff0c 找到下载 官网地址 mysql官网 1 2 找到下载入口 1 3 选择这个 1 4找到适合自己电脑系统版本 2 安装 配置MySQL和创建mysql用户 注意 最好使用root安装和
  • 基于docker部署prometheus

    1 prometheus架构 Prometheus Server 收集指标和存储时间序列数据 xff0c 并提供查询接口 ClientLibrary 客户端库 Push Gateway 短期存储指标数据 主要用于临时性的任务 Exporte
  • Prometheus监控实战系列二十:监控Kubernetes集群(下)

    本文承接上篇 xff0c 在本篇中我们会讲解Prometheus如何应用基于Kubernetes的服务发现功能 xff0c 检索目标信息并进行监控 在监控策略上 xff0c 我们将混合使用白盒监控与黑盒监控两种模式 xff0c 建立起包括基
  • RT-Thread 简介及架构

    RT Thread xff0c 全称是 Real Time Thread xff0c 顾名思义 xff0c 它是一个嵌入式实时多线程操作系统 xff0c 基本属性之一是支持多任务 xff0c 允许多个任务同时运行并不意味着处理器在同一时刻真
  • 进程的结构

    什么是进程 UNIX标准 xff08 特别是IEEE Std 1003 1 2004年版 xff09 把进程定义为 一个其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源 目前 xff0c 可以把进程看作正在运行的程序 像Linu
  • 【代码小坑】梯度回传为0

    记录一下训练过程中遇到的问题 xff0c 由于这个问题我花了很长时间才解决 xff0c 所以值得记录 先给出结论 xff1a tensor转换成numpy后会丢失梯度 xff0c 导致回传出现问题 由于原代码不容易理解 xff0c 简单用个
  • (超详细)零基础如何学习操作系统---操作系统书籍推荐

    直接先给出路线书籍 编码 隐匿在计算机软硬件背后的语言 汇编语言 x86从实模式到保护模式 操作系统导论 操作系统真象还原 查漏补缺 1 编码 隐匿在计算机软硬件背后的语言 对于完全不懂计算机的朋友 xff0c 这本书可以让你对计算机有一个
  • 多种形式ICP问题的ceres实例应用

    一家之言 xff0c 仅作分享 xff0c 如有不合理或需要改进的地方 xff0c 欢迎各位讨论 ICP方法主要解决空间点云3D 3D的运动估计问题 xff0c 已知 xff1a t 1 t 1 t 1 和
  • git配置以及git-cola使用教程

    git安装 打开终端 xff0c 输入sudo apt get install git git配置 配置用户名 git config global user name 34 user name 34 配置邮箱 git config glob
  • C++ 手撸简易服务器

    本文使用上一期写的反射类 xff0c 另外我发现 lt WinSock2 h gt 这个头文件里有RegisterClass 这个结构 xff0c 还有typedef RegisterClass RegisterClassW这句话 这都能重
  • STM32CubeMX实战教程(一)——软件入门

    软件入门 前言新建工程界面简介MCU外设配置时钟树工程设置工具生成代码代码分析main cgpio cstm32f4xx it c 程序下载现象 结语 前言 STM32Cube 是一个全面的软件平台 xff0c 包括了ST产品的每个系列 平
  • STM32F4 | 定时器中断实验

    文章目录 一 STM32F429 通用定时器简介二 硬件设计三 软件设计四 实验现象五 STM32CubeMX 配置定时器更新中断功能 这一章介绍如何使用 STM32F429 的通用定时器 xff0c STM32F429 的定时器功能十分强
  • 相机标定和ORBSLAM2/VINS测试

    目录 一 相机标定1 1 标定目的1 2 常见模型介绍1 2 1 相机模型1 2 2 畸变模型 1 3 双目标定1 3 1 常见标定工具及对应使用场景1 3 2 Kalibr标定1 3 3 opencv双目标定1 3 4 basalt标定
  • matlab安装教程

    MATLAB xff08 矩阵实验室 xff09 是MATrix LABoratory的缩写 xff0c 是一款由美国The MathWorks公司出品的商业数学软件 MATLAB是一种用于算法开发 数据可视化 数据分析以及数值计算的高级技
  • 软件工程结构化分析

    需求分析的概念 需求分析是软件定义时期的最后一个阶段 xff0c 它的基本任务是准确的回答 系统必须做什么 这个问题 也就是对目标系统提出完整 准确 清晰 具体的要求 在需求分析阶段结束之前 xff0c 系统分析员应该写出软件需求规格说明书
  • 树莓派忘记密码 vnc登陆显示‘No configured security type is supported by 3.3 viewer’的问题解决办法

    树莓派忘记密码以及部署VNC 1 修改密码 需求你的树莓派有屏幕 xff0c 没有屏幕的可以百度其他解决方案了一把键盘 树莓派吃灰了很久 xff0c 最近由于有新的需求 xff0c 就拿出来玩耍一下 首先是第一个问题 xff0c 如何查看i
  • imx6ull 正点原子设备树适配韦东山的开发板 (一)顺利启动,配置led,button

    设备树在公司经常用到 有时候很多驱动编写也就是替换设备树 所以拿韦老师的板子练手设备树 这次尝试直接拿正点的设备书改成韦老师的板子能用 对比 正点原子的设备树结构图 韦东山的设备树结构图 从因为蓝色的是开发板厂商对开发板自己的优化 所以我们
  • 一文了解目标检测边界框概率分布

    一文了解目标检测边界框概率分布 概率建模 众所周知 xff0c CNN的有监督学习通常是建立在给定训练数据集之上的 xff0c 数据集的标签 也称为GT xff0c 决定了人类期望模型学习的样子 它通过损失函数 优化器等与CNN模型相连 因