1.交并比
(1)定义
交并比是用来衡量目标检测算法的表现的函数。定义如下:
用预测框和真实框的面积的交集除以预测框和真实框的面积的并集,得到的结果本次算法预测的交并比。研究函数可以发现,交并比的范围为[0,1](1说明预测框与真实框重叠,0说明完全不重合),其值越大,说明算法表现越优(定位准)。
(2)阈值
关于上图,预测框是网络给出的紫框,真实框是红框,那目标检测算法给出结果是优还是劣?通过计算交并比,只能得到一个数字说明重合的程度,因此可以给出阈值,如果超过这个阈值,就认为算法表现好,如果小于这个阈值,就认为算法表现差。一般初始阈值设为0.5,如果希望严格一点,就可以设置为超过0.5的值,比如0.6、0.7等等。loU越高,边界框越精确。
2.非极大值抑制
假设我们需要在下面图片里检测汽车,将图片划分为19×19网格,理论上车只有一个中点,所以它应该只被分配到一个格子里。实际上,可能1、2、3、4、5、6编号的格子都认为自己的区域有车,出现了多个定位,而图片中只有两辆车,应该只有两个定位,因此可以使用非极大值抑制算法,将汽车分类概率最高的格子保留,同一辆汽车的其他低分类概率的格子的定位删除。这也是非极大值抑制要做的事情。
非极大值抑制需要用到交并比LOU,因此假设交并比阈值为0.5,而分类概率阈值设为0.6(低于0.6的不认为是汽车分类),非极大值抑制算法步骤:
Step1:删除分类概率pc小于等于0.6的定位边框。
Step2:选择当前剩余边框中pc最大的概率值作为算法的输出,即分类概率。
Step3:计算和Step2中选择的最大概率值边框重叠的边框的交并比,并删除交并比大于等于0.5的定位边框(因为这些边框和最大概率的边框重叠的太多,很有可能表示同一个对象的定位)。
Step4:重复循环Step2-Step3,直到不再剩余要被删除的边框。
以上图为例,首先去除小于0.6的边框后剩余的边框均用蓝色表示,选择最大的概率的边框0.9,高亮该边框,计算与该边框重叠的边框0.6和0.7,发现交并比均大于0.5,因此需要删去,这里选择较暗的蓝色表示抑制。
接着还存在没有被删去的边框,即左边黑色轿车附近,选择概率最大的0.8,抑制交并比大于0.5的概率0.7表示的边框,即上图所示的结果。于是最终检测出两个汽车对象,即高亮框的范围。
非极大值意味着只输出概率最大的分类结果,但抑制很接近而不是最大的其他预测结果,所以这方法叫做非极大值抑制。
注意:如果同时检测多个对象,比如说行人、汽车、摩托,那么输出向量就会有三个额外的分量(c1、c2和c3)。正确的做法是独立进行三次非极大值抑制,对每个输出类别都做一次,因此实际上计算的边框的概率应该是pc乘c1、c2或c3。