已知真值点(x,y)根据所要制作热力图真值的范围如(x2,y
2)范围以及结合高斯公式制作真值。
高斯公式(参考高斯曲面拟合以及Matlab实现 - 知乎)
1、已知真值点x,y
2、已知范围(x2,y
2)可产生(x-2,y-2),(x-1,y-2),(x+1,y-2),(x+2,y-2),(x-2,y-1),(x-1,y-1),(x+1,y-2),(x+2,y-1)……等这些点
ps、如何确定范围R,参考bilibili up主讲解的centernet。
Guuuuuu老师儿https://space.bilibili.com/416475945真值与预测值重叠分为如下三种情况:红框为真值,绿框为预测值
def gaussian_radius(det_size, min_overlap=0.7):#det_size为对象bbox的长宽
height, width = det_size
a1 = 1
b1 = (height + width)
c1 = width * height * (1 - min_overlap) / (1 + min_overlap)
sq1 = np.sqrt(b1 ** 2 - 4 * a1 * c1)
r1 = (b1 + sq1) / 2
a2 = 4
b2 = 2 * (height + width)
c2 = (1 - min_overlap) * width * height
sq2 = np.sqrt(b2 ** 2 - 4 * a2 * c2)
r2 = (b2 + sq2) / 2
a3 = 4 * min_overlap
b3 = -2 * min_overlap * (height + width)
c3 = (min_overlap - 1) * width * height
sq3 = np.sqrt(b3 ** 2 - 4 * a3 * c3)
r3 = (b3 + sq3) / 2
return min(r1, r2, r3)
由此可得到范围r。
在centernet代码中,sigma=r,范围R=3*r
3、想要计算以xy真值为中心范围为R的所有点的f(x),即在这些范围点中的概率,真值(x,y)的f(x)为1
4、根据高斯公式,将已知的1,2点带入公式
即可得到热力图的真值(其中(x,y)为真值,(x0,y0)为范围内的值)