目录
废话
由于论文实验的需要,这几天在看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”: