1.交并比函数(IoU)
计算两个边框交集和并集之比:(一般用于评价对象定位算法是否精准)
对于上图来说,。
如果IoU >= 0.5,则检测正确;0.5是人为规定的,如果想更严格也可以设为0.6、0.7等等。
2.非极大值抑制
顾名思义,非极大值抑制就是抑制那些不是极大值的值。
算法可能对一个对象检测多次,非极大值抑制做的就是清理这些检测结果,使每个对象只被检测一次。
以上图中右边车辆的检测结果为例,三个框中有车的概率分别是0.6、0.7、0.9,其中概率最大的是中间概率为0.9的方框,所有和这个方框有很高交并比的其他方框就会被抑制,即0.6和0.7的方框会被抑制(其他没有很高交并比的方框会在执行非极大值抑制之前被筛出去)。
那么概率最大的方框会以高亮标记,被抑制的方框会变暗。之后直接抛弃变暗的边框,就会得到最后的检测结果。如下图所示:
3.anchor box
在上面两小节中一个方框只能检测出一个目标,如果想要一个方框检测多个目标,就要用到anchor box。
假设我们预先定义两个anchor box(也可以是其他个数),例如下图所示的两个黄色方框:
之后我们定义类别标签:
其中pc表示方框中有目标的概率,bx、by是方框的中点坐标,bh、bw是方框的长和宽,c1 c2 c3分别表示方框中是否有行人、汽车、摩托车(c1=1表示框中有行人,c2=0表示框中没有汽车)。
标签中有两组pc…c3,第1组表示和anchor box1的有关的各项输出,第2组表示和anchor box2的有关的各项输出。由于行人的形状更像anchor box1,汽车的形状更像anchor box2,因此标签y可以表示为:
因为我们定义了2个anchor box,所以每个对象都会分配到2个anchor box,然后计算anchor box和实际边界框的交并比,哪个anchor box和实际边界框的交并比大,就说明哪个anchor box和实际目标的形状更像。
所以最后的输出维度也和定义的anchor box数量有关,以图1为例,图1被分割为3×3个单元,每个单元对应2个anchor box,每个box对应8个输出(pc到c3),所以最后的输出维度是3×3×2×8,即3×3×16。
如果有图片被分割为m×m个单元,定义了n个anchor box,要分的类别有k个,则一个box对应的输出包括pc bx by bh bw c1 c2 … ck共1+4+k个输出,最终输出的维度就是m × m × [ n × (1+4+k) ]。
