目录

废话

正文

第一种计算方式

情况一:两角点均在真值框内

情况二:两角点均在真值框外

情况三:一角点在真值框内,一角点在真值框外

第二种计算方式

两种计算方式的比较

最后

References


废话

由于论文实验的需要,这几天在看CenterNet代码,看到关于高斯半径的选择,百思不得其解,遂参考了一些资料,算是搞明白了,在此详细记录一下,仅作备忘。文中或许包括图片、文字和公式的直接借用是为了图省事,参考资料会在最后给出出处,如有冒犯,麻烦告知本人,我会删掉,谢谢!下面进入正文。

正文

For each corner, there is one ground-truth positive location, and all other locations are negative. During training, instead of equally penalizing negative locations, we reduce the penalty given to negative locations within a radius of the positive location. This is because a pair of false corner detections, if they are close to their respective ground truth locations, can still produce a box that suciently overlaps the ground-truth box (Fig. 5). We determine the radius by the size of an object by ensuring that a pair of points within the radius would generate a bounding box with at least t IoU with the ground-truth annotation (we set t to 0:3 in allexperiments).


关于高斯半径的问题与论文中如上所述的文段及图片对应。

在[1]中,知乎作者认为上述“这段话的意思就是在设置GT box的heat map的时候,我们不能仅仅只在top-left/bottom-right的位置设置标签(置为1),因为你看fig5啊,其中红色的bbox为GT框,但是绿色的框其实也能很好的包围目标。所以如果在检测中得到想绿色的这样的框的话,我们也给它保留下来。甚至说的更普遍一些,只要预测的corners在top-left/bottom-right点的某一个半径r内,并且其与GTbox的IOU大于一个阈值(一般设为0.7),我们将将这些点的标签不直接置为0,那置为多少呢?可以通过一个温和的方式来慢慢过渡,所以采用二维的高斯核未尝不可。”[1]

我认为说的非常明白,“那问题现在就变成了如何确定半径r,使得IOU与GT box大于0.7的预测框不被直接阉割掉。”[1]

现在根据预测的两个角点与Ground Truth角点的位置关系,分三种情况来考虑:

1)两角点均在真值框内

2)两角点均在真值框外

3)一角点在真值框内,一角点在真值框外

PS:为什么分三种情况,因为角点间关系就只有这三种情况。


第一种计算方式

下面分别分析这三种情况:

情况一:两角点均在真值框内

IOU计算公式:                                

根据两个预测角点的两个限制条件:1)均在GT框内,2)均在GT框两个角点以r为半径的圆内,以及IOU计算公式可知,最小IOU的在预测框和半径r圆相切时获得。(最小IOU都满足要求了,其余情况就也符合了),因此我们只需要考虑“预测的框和GTbox两个角点以r为半径的圆内切。”[1]的情况。

下面,我们根据上图和IOU计算公式,分析下半径r如何选取。

实际上,随着半径r的变化(半径r的变化是由于预测框角点的变化引起的),上图中并集的面积是固定的,等于GT框的面积;而交集面积随着半径r的增大而减小,从而导致IOU的减小,也就是说IOU的值随r增大,逐渐从1→0。

此时可以根据论文要求的iou=0.7,反向计算一个“高斯半径r”:

注意,此处公式中的r并不是真正的r,只是r在x、y轴上的分量d=rcosθ。但实际上d和r在(0°, 90°)范围内单调性相同,可能是为了简便,统一把d写作r。最终比较三个d的大小,也就比较了三个r的大小。

整理成r的一元二次方程:

于是令

根据根的判别式公式,则:

并且r需要大于0,则:

此处想说下,在[1]中,作者三种情况计算的r公式均相同,我觉得不太对。(不同的地方就在于中间的加减号)

所以,此时求得的r是当前情况一下的最大半径。(r越小,IOU越大)。


情况二:两角点均在真值框外

同理,我们可以分析出,该情况下,最小IOU在预测框和半径r相外切时取得,因此我们只需要考虑“预测的框和GTbox两个角点以r为半径的圆外切。”[1]的情况。

此时,分析r的变化与IOU的关系可知, 随着r的增大,交集面积不变,但并集面积增大,则IOU减小。

则此时计算一个出一个临界值“r”。

整理为r的一员二次方程:

则相当于求这个关于r的一元二次方程。

令,

根据根的判别式公式并且r需要大于0,则:

此时求得的r也是当前情况二下的最大半径。(r越小,IOU越大)。


情况三:一角点在真值框内,一角点在真值框外

我们也可以很容易地分析出,该情况下,最小IOU在预测框两个角点分别和和半径r的圆相外切和相内切时取得(例如我们可以固定某一角点在x方向不变,变动y方向观察相交、相并面积的变化情况)。因此我们只需要考虑“预测的框和GTbox两个角点以r为半径的圆一个边内切,一个边外切。”[1]的情况。

此时,分析r的变化与IOU的关系可知, 随着r的增大,交集面积减小,同时并集面积增大,则IOU会快速减小。

此时计算临界值。

整理得到r的方程:

令,

得到,

此时求得的r仍然是当前情况三下的最大半径。(r越小,IOU越大)。


综上,

1)两角点均在里面,求得的是最大r

2)两角点均在外面,求得的也是最大r

3)一点在外一点在里,求得的还是最大r

“则综合三种情况,可以得到r = min(r1, r2, r3)将这三个中的最小值设为半径。”[1]

因为三种情况求得的r都是最大r,也就是说r再大一些的话就不满足0.7overlap的要求了,那么要同时满足三种情况,r只能取三个中的最小一个!从而保证在所有情况下,均能符合要求。


相应代码如下[2]:

def gaussian_radius(det_size, min_overlap):height, width = det_sizea1  = 1b1  = (height + width)c1  = width * height * (1 - min_overlap) / (1 + min_overlap)sq1 = np.sqrt(b1 ** 2 - 4 * a1 * c1)r1  = (b1 - sq1) / (2 * a1)a2  = 4b2  = 2 * (height + width)c2  = (1 - min_overlap) * width * heightsq2 = np.sqrt(b2 ** 2 - 4 * a2 * c2)r2  = (b2 - sq2) / (2 * a2)a3  = 4 * min_overlapb3  = -2 * min_overlap * (height + width)c3  = (min_overlap - 1) * width * heightsq3 = np.sqrt(b3 ** 2 - 4 * a3 * c3)r3  = (b3 + sq3) / (2 * a3)return min(r1, r2, r3)

第二种计算方式

正文中所提到的计算方式,实际上是模糊了半径r和其在x、y轴分量的区分。还记得上面说的两者关系么?

→注意,此处公式中的r并不是真正的r,只是r在x、y轴上的分量d=rcosθ。但实际上d和r在(0°, 90°)范围内单调性相同,可能是为了简便,统一把d写作r。最终比较三个d的大小,也就比较了三个r的大小。

所以在Github issues[3]中,网友进行了区分,也就是在固定r的情况下,清楚比较了三种情况下的r大小关系。

1)两点在外计算公式

2)两点在内计算公式

3)一点在外,一点在内计算公式

 ,S1,S2均表示面积

最后,根据sinθ、cosθ与w、h的关系,如1)中图例可以看出,

代入上述1)-3)式中,分别求的r1-r3如下:

因此,r2<r3<r1,故选择r2。

两种计算方式的比较

其实我认为两种方式是殊途同归,为什么这么说呢?还记得上面反复提到的一句话么?

→注意,此处公式中的r并不是真正的r,只是r在x、y轴上的分量d=rcosθ。但实际上d和r在(0°, 90°)范围内单调性相同,可能是为了简便,统一把d写作r。最终比较三个d的大小,也就比较了三个r的大小。”也就是说正文方法一计算公式中的r其实是d,如果严格进行替换的话,结果估计会一样?(我只是这样想的,没经过验证

CornerNet Guassian radius高斯半径的确定-数学公式详解相关推荐

  1. 高斯滤波GaussianBlur()中参数详解

    高斯滤波GaussianBlur()中参数详解: 高斯滤波是应用于图像处理,对图像进行滤波操作(平滑操作.过滤操作,去噪操作) 在python中的格式为: cv2.GaussianBlur( SRC, ...

  2. vue引入Echarts画折线图、平滑曲线图、转化数学公式详解

    目录 1 引入Echarts 1.1 安装 1.2 引入 1.3 基本使用 2 基本折线图 3 复杂折线图 3.1 多条折线 3.2 动态变化折线图 4 笛卡尔坐标系中的折线图 5 平滑曲线图 6 折 ...

  3. Markdown 数学公式详解

    文章目录 1 概述 1.1 行内与独行 2 运算 2.1 四则运算 2.2 逻辑运算 2.3 上标.下标 2.4 高级运算 3 符号 3.1 括号 3.2 百分号 3.3 箭头 3.4 省略号 1 概 ...

  4. numpy中的高斯分布函数 normal 的具体详解

    1.高斯分布的概率密度函数为: 2. 在numpy中: numpy.random.normal(loc=0.0, scale=1.0, size=None) 3.具体参数详解 loc:float此概率 ...

  5. 详解高斯混合模型与EM算法

    详解高斯混合模型与EM算法 详解高斯混合模型与EM算法 高斯混合模型 单高斯模型(Gaussian single model, GSM) 一维高斯分布 多维高斯分布 混合高斯模型(Gaussian m ...

  6. matlab中用imnoise向图像中加入特定高斯半径的噪声

    最近需要做图像仿真,感觉用C++编写速度有点慢,也是为了省事,就用了matlab做前期的处理,后期到发布版本时,再用C++. 由于是初接触到图像仿真,有些问题没有很好的深入.这里就针对对某个图像中,加 ...

  7. 【问题描述】定义一个Circle类,有数据成员radius(半径),成员函数getArea()计算圆的面积。构造一个Circle的对象进行测试(注:圆周率取值3.14)。

    [问题描述] 定义一个Circle类,有数据成员radius(半径),成员函数getArea()计算圆的面积.构造一个Circle的对象进行测试(注:圆周率取值3.14). [输入形式] 程序参考的输 ...

  8. 设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径、area( )用于计算圆的面积; (2)定义一个桌子类table,内有私有数据h

    1.(1)设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径.area( )用于计算圆的面积: (2)定义一个桌子类table,内有私有数据h ...

  9. 曲率高斯滤波去噪python实现(附代码详解)

    曲率高斯滤波去噪python实现(附代码详解) 曲率滤波的理论基础可以参考下曲率滤波的理论基础和应用,这篇博客介绍的思想完美的避开了一大堆数学公式,简直是我的福音,但还是要细看的,不然很容易忽略重点, ...

最新文章

  1. 均方差误差函数(使用函数方式实现MSE计算)
  2. 90后售楼人员的肺腑之言:再便宜你也不能买的房子(转)
  3. 20161228阅读笔记
  4. strust2控制标签(二) merge标签,generator标签,subset标签,sort标签
  5. 老王说ros的tf库
  6. Windows游戏编程大师技巧笔记(一些基础)
  7. Winform读报工具
  8. Ext.apply与Ext.applyIf
  9. 18个黑科技网站,你想要的软件都能找到,请收藏!!!
  10. crf的实现 keras_keras 解决加载lstm+crf模型出错的问题
  11. android视频播放器卡顿,Android,_ExoPlayer循环播放本地视频,偶尔出现视频卡顿。,Android - phpStudy...
  12. WSO2 ESB 5.0.0 配置消息存储
  13. shadowdocksc错误;端口已被占用
  14. Rxjava Subject分析
  15. 你有哪些独到的识人技巧?
  16. 寻求任意颜色转CMY的方法,帮个忙
  17. OpenResty 在又拍云容器平台中的应用
  18. 填词作文:新的一年,新的梦想
  19. Java核心技术之Comparator和Comparable在排序中的应用
  20. 什么是DNS?DNS的作用?

热门文章

  1. stm32驱动rgb屏电路图_stm32h7“点亮RGB屏幕”
  2. Glib基础——版本信息
  3. streamx平台部署
  4. OpenStreetMap开放街道图(OSM)
  5. 如何删除PDF文档中的某一页
  6. 怎么理解毕业论文中理论意义和实践意义的区别?
  7. 基于wowchemy和hugo搭建个人网站
  8. HZAU毕设之装订边边距32 mm、非装订边边距25 mm的操作
  9. android 实现ble蓝牙自动配对连接
  10. cern ROOT 读取TXT文件数据并画一个简单的直方图