目录

1 摘要

2 算法要解决的问题

3 从结果推原因,算法的实现思路

3.1 最直接的实现

3.2 合理性讨论

4 CNN的尺度不变性的影响

4.1 log函数的非线性问题

5 线性模型的损失函数

5.1 预测参数

5.2 线性模型的损失

5.3 线性模型的目标函数


1 摘要

一般的目标检测算法的目的是在原图上生成若干个边界矩形框,bounding box(bbox),要求是生成的bbox尽可能的不多不少刚好完整包裹住目标物体。我们可以用一些方法来生候选边框,并且将这些候选框进行分类检测,将除了背景以外的框保留作为我们的输出。这些不在本文的重点关注内容里。本文关注的是当筛选出含有目标物体的边框之后,边框位置的精修问题。

本文中对算法说明的顺序可能和其他文章不同,我希望从更加直观的角度去理解这个算法。本文的算法以RCNN实现的bbox回归为参考。

2 算法要解决的问题

比如说下图中用绿框来表示筛选出来的bbox,红框表示真实的bbox。从直观来看,两个边框都包含了“猫”的元素。所以在算法中很可能也会将绿框视为一个猫的目标物体框。但是我们可以明显的看出,绿框和红框的形状和位置差距很大。真实的检测场景下我们应该是期待算法检测出一个和红框更相似的边框出来。

这时,实践证明我们可以用一个所谓的bbox 回归算法来对绿框进行校正和精修来生成一个新的检测框,这个新的检测框应该尽可能的和红色的检测框相似。

3 从结果推原因,算法的实现思路

首先不得不说,发明或者发现这些算法的人是非常杰出的。作为常人我们可能暂时没有那么强的头脑或者运气来发现或者发明这些算法,我们也很难去揣摩这些算法的原始作者们如何想到这些天才的主意的。但是我们至少可以根据常识来对这些算法如何实现以及如何变得有效做一下逆向的推理或者解释。

3.1 最直接的实现

上文提到,我们可以使用回归的算法来对绿框进行精修。按照构建线性回归模型最直接的方式是,我们建立一个模型,然后让这个模型输出四个值,一个是矩形框的左上坐标x0,y0.另外一个是右下角的坐标x1,y1(我们暂且叫它们为一组对角坐标,建立一个向量(x0,y0,x1,y1)叫对角坐标向量,名字是我自己瞎起的)。然后我们要做的是用真实的边框对角坐标向量和预测的对角坐标向量求方差作为损失来对回归模型做训练。

那模型的输入应该是什么呢?应该是图片的特征,一般目标检测算法都有CNN网络来提取图片特征,我们可以把这些提取出的特征输入到这个线性回归模型里面。

3.2 合理性讨论

但这种方式好像看上去有点别扭,我们再往上看一层,CNN输出的特征到底是什么。CNN输出的特征应该是候选边框(也就是前文图中的绿框)经过CNN网络抽取的特征。上面提到的方法实质上是根据这些特征来找到一组对角坐标这组坐标看上去和绿框的坐标本身没有什么联系,好像就是凭空生成的,虽然机器学习算法很强大,但也应该思考需不需要选择逻辑上更加合理的模型构建的方式。

于是我们可以开下脑洞,假设绿框(回归前的bbox框)和红框(真实边框)是存在某种转换关系的。因为绿框和红框包含同一个信息(猫),而且我们通过验证(使用IOU方法)发现其实绿框和红框都是定位到一个物体上。那我们就可以假设这种转换关系是非常简单的仿射转换关系。绿框捕捉到的信息就是将红框内容平移并且缩放一下。那我们可以根据绿框中我们已经找到的信息来推理出来真实的边框应该是什么样子的。举个例子比如上上面我们采到了一个绿框检测到了一只猫,但是通过学习,我们知道这个绿框内图片的特征是 首先在正常猫目标框宽度方向多了一些背景,另外在高度方向少了“猫尾巴”。要补全这个绿框我们大概率应该在两边砍掉一些,并在高度方向增加一些。

那么回归模型的输入不变,还是图像的特征,但模型的输出可以调整下来让模型更加合理。输出改为模型的平移参数和缩放参数。

这时又产生一个新的问题,如何表示平移和缩放?

首先我们换一种表示边框的方式,舍弃对角坐标向量的表示法。换成一种中心点坐标+宽高的四维向量。真实的bbox我们叫它ground truth,记为, 预测的bbox向量记为

这时候大家会想我们可以设定一组做简单加法,再找出一组做乘法。我们只需要建立对真实的回归模型就行了。到这里我们已经很接近了,但还需要一些工作和思考,这样简单的构建转换关系真的可以吗?

4 CNN的尺度不变性的影响

我们先来看一看如果我们手上有一个能够输出的线性模型,并且通过训练,对上文中插图非常有效。即我将一绿框部分区域图片输入给一个CNN网络,这个网络输出了一组图片特征,记为一个特征向量。将输入到线性模型当中,模型就会输出一组令绿框变换后成为红框或者接近红框。但此时如果我们将绿框内图像缩小之后再进行相同的操作会发生什么?因为CNN的尺度不变性,图像缩小后输入到CNN网络提取出的特征向量应该也是(实际上因为缩放后略微失真可能特征向量会有微小差异,但本文不做严谨性讨论,主要关注在理解算法思路)这个将不会包含任何尺寸相关的特征,将这个输入到线性模型后输出的应该也和前面的一样。显然,如果这个缩小后的图像再使用同一组变换参数进行转换的话是得不出正确的边框的。

那我们可以修改一下。将上面的参数标准化一下,令线性模型的输出除以预测的矩形框的大小,变为。这里有一个数学小技巧,就是缩放的倍率应该是大于零的,但是线性模型的输出是在实数域上面的,所以可以将预测的缩放倍率参数做一下转化改为:。这四个参数就应该是我们线性模型最终的输出,这四个参数的真实值记为

4.1 log函数的非线性问题

这里简单提下log函数的非线性问题,我们线性回归的对象最终为缩放倍率的对数,这显然引入了非线性因素,举个不严谨但是很形象的例子。我有两个预测出来的目标范围框,第一个框里面的区域图片我检测“猫尾巴”的特征是1/4代表我只截取到了1/4个猫尾巴,第二个框里面“猫尾巴”的特征为1/2代表截取了1/2个毛尾巴,而真实框中应该有1整个猫尾巴。那么在检测框中心点已经对准的情况下第一个框应该扩大四倍,第二个框应该扩大两倍,这种线性特性正好可以通过线性模型预测出来。但是加上log之后扩大倍率的参数就变成“非线性”的了。按理说使用线性模型的效果就不会很好了。但因为上文也说过,待调整的绿框也是经过筛选的,它们和真实红框的差距不应该过大(以IOU衡量),那么实际上可以理解为缩放的比例应该在1附近(这里“附近”只是定性的概念,实际上衡量绿框和红框相似度的方式并不能一定直接能保证缩放比例在1附近,比如IOU关注的就是面积重合的程度,并不直接关注缩放比例的大小。不过实验证明这种方式有效,我们还是可以这样理解)。根据简单的高等数学,对于log(x),x在1附近时, 我们可以用线性函数来近似。这就说明了为什么就算缩放比例加了log我们还是可以有效地用线性模型来进行回归。

5 线性模型的损失函数

通过上面的分析,我们可以根据预测框和真实框的位置尺寸计算出真实的转换参数

5.1 预测参数

首先我们有一个待优化的边框记为,将原图中P区域抠出来的图像输入到目标检测系统的CNN网络中,得出一个特征向量,我们把这个特征向量视为P经过一个由抠图+CNN的函数转换得来的向量,记为然后将该向量输入到线性回归模型中,假设线性回归模型的参数为,那么模型的输出为

5.2 线性模型的损失

模型的损失函数应该为真实值和预测值的方差,即

5.3 线性模型的目标函数

将损失加上正则化就是目标函数了,我们优化的目标是找到,使得目标函数最小化,表示为

目标检测中边框回归的直观理解 bbox regression相关推荐

  1. 对于目标检测中mAP@0.5的理解

    文章目录 前言 mAP@0.5 AP是Precision-Recall Curve(PRC)下面的面积!!! 理一下思路 参考 前言 一直不是很理解目标检测中的mAP是如何的,今天具体来写一下,加深一 ...

  2. 目标检测中的数据增强,包括bbox的变换

    检测和分类不同,检测过程中,图片处理以后,bbox往往也需要同步变换 里面碰到最坑的地方,在于cv.rectangle(),如果是对图像进行操作,一定要deepcopy 文章目录 1. 水平翻转 1. ...

  3. 关于目标检测中bounding box编码和解码时weight参数的理解

    关于目标检测中的Bounding box回归原理网上已经有很多解释的文章了,但是为了更好的阐述我的问题,一开始我还是先简单的过一下边框回归的基本原理,然后解释我在看源码时遇到的一点疑惑,最后分享一下在 ...

  4. 目标检测中的anchor-base与anchor-free

    前言 本文参考目标检测阵营 | Anchor-Base vs Anchor-Free 如何评价zhangshifeng最新的讨论anchor based/ free的论文? - 知乎 基础知识 | 目 ...

  5. 关于目标检测中正负样本的理解

    一开始学习时我没有太关注正负样本的问题,我以为正样本就是标注好的GT box,然而学到后面发现有很多的区别正负样本的方法,我才知道自己理解错了.正例是用来使预测结果更靠近真实值的,负例是用来使预测结果 ...

  6. 目标检测中bbox回归中class-agnostic和class-specific的区别在哪?

    目标检测中bbox回归中class-agnostic和class-specific的区别在哪? (本文取自知乎问答,仅作个人学习收藏使用,文末有参考链接) 明显是网络预测的object 类别数目不同. ...

  7. 【论文阅读】目标检测中的分类回归特征解耦

    论文来源:知网 以下仅仅是学习过程中的部分笔记,用作自己复习. 摘要 ..... 目标检测不仅需要判别图像中存在的目标的类别,还需要回归目标在图像中的位置. 特征耦合具体表现:分类和回归部分的网络共享 ...

  8. 目标检测中的Label Assignment

    ©PaperWeekly 原创 · 作者|燕皖 单位|渊亭科技 研究方向|计算机视觉.CNN Label Assignment Label assignment 主要是指检测算法在训练阶段,如何给特征 ...

  9. 综述:解决目标检测中的样本不均衡问题

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨SFXiang 来源丨AI算法修炼营 编辑丨极市平台 极市导 ...

最新文章

  1. shell 删除了hdfs 文件_知识干货 | 大数据全解 HDFS分布式文件系统
  2. java编译不了testpad,java – Gradle编译但不运行TestNG测试
  3. 高仿真的类-页面交互
  4. 2017.10.17 CF#441 F题 思考记录
  5. SharePoint 2010 - User Profile Sync Service自动停止
  6. 深度解析 | 用 AI 帮助听障人群,一共需要几步?
  7. VC6编辑直接采用Linux换行符,Tips: VC++篇
  8. Java日期与时间的处理/Date,String,Calendar转换
  9. FinalData的快速扫描
  10. Excel function
  11. 光与夜之恋服务器维护,《光与夜之恋》2021年7月30日停服维护说明
  12. 安装intel wifi link 5100 AG无线网卡驱动程序,iwlwifi-5000-5.ucode中的readme文件
  13. 50 OHM阻抗线设计
  14. tl-wdr5620虚拟服务器设置,TP-Link TL-WDR5620路由器手机怎么设置?
  15. Prometheus监控之PromQL表达式语法学习(1)
  16. 申诉解决TeamViewer免费个人版被误判为商业使用
  17. 计算机表格a列除b列,win10系统下EXCEL表格A列B列C列消失了怎么办
  18. java夯实基础系列:反射
  19. 170亿参数,28项公开测试集SOTA,行业最大的视觉多任务统一大模型来了
  20. CBE可表示计算机辅助教育,计算机辅助教育(CBE)的理论基础概述

热门文章

  1. vscode安装python插件失败_vscode安装python插件
  2. 小花梨的三角形--美登杯
  3. 用计算机实现校正环节采样开关加在哪,计算机控制技术习题—广州工业大学.doc...
  4. Ubuntu18笔记本安装nvidia显卡驱动
  5. 边缘设备、系统及计算杂谈(13)——k8s学习之三
  6. Android 电子书功能实现、长按选中、高亮显示。 TXT
  7. 网络编程及TCP/UDP协议
  8. 无情的事实--人类曾经被彻底毁灭过
  9. 七个不可思议事件谜题
  10. IO流 输入流、输出流、字节流、字符流、转换流、及Properties类