1、nms和soft-nms实现过程
(1) nms实现过程
初始时,非极大值抑制过程开始于一个检测框列表B、对应的置信度标S、空的检测列表D、阈值N_t。首先,找到最高置信度对应的检测框M,将其从B中删除,并添加到最终框列表D中。然后,计算M与B中其他检测框的重叠程度IOU,将IOU大于阈值N_t的目标检测从B中删除。对于B中剩余的检测框,继续重复这个过程,直到B为空时结束。
(2) soft nms解决哪些问题
nms的一个主要问题是,将与NMS重叠度大于阈值的其他检测框直接从B中删除。造成如果在NMS的邻域,实际上真的有一个目标,也会因为该目标的检测框与M重叠度大于阈值而被抑制。这就造成该目标没有检测出来,影响了整体的平均精度。
(3) soft nms的流层
在soft-nms中使用的惩罚函数f(iou(M,b_l))有两种形式可以使用:
第一种是线性的惩罚函数,表达式为:
这个惩罚函数满足了距离较远的检测框不受影响,距离较近的检测框会受到很大的惩罚这样的原则。但是,这个函数不是连续的,即当检测框满足重叠阈值Nt时,会突然施加惩罚。
第二种是高斯惩罚函数,表达式如下:
(4)代码实现
2、Focal loss
解决列别类别不平衡问题
import torch
import numpy as np
import matplotlib.pyplot as plt
x= np.linspace(0,1,500)
# y=-(1-x)^2*log(x)
y=-np.power(1-x,2) *np.log(x)
plt.figure()
plt.plot(x,y)
plt.show()
分析x对y值的影响
3、