yolo v3中的anchor是怎么计算的
p代表的是anchor,b代表的是预测框,而t是网络的真实输出,
即由网络的输出(t)计算出预测的框(b)
上图公式表示的实际是由网络的输出(t)解码到预测的框(b)的过程
编码:
对于真实的目标框,先归一化为(gx,gy,gw,gh),具体的归一化方法为,
gx = (xo/W)*13
gy = (yo/H)*13
gw = (wo/W)*13
gh = (ho/H)*13,
o下表代表原始的数据,归一化之后(gx,gy,gw,gh)的值都处于(0,13)的范围内
归一化之后进行编码,对于gx,gy的编码,只需要取小数部分即可,因为可以确定与回归的anchor在同一个格子中。对于gw,gh,需要与同样归一化操作的anchor进行对数运算
t gx = gx - gx(floor)
t gy = gy - gy(floor)
t gw = log(gw / pw)
t gh = log(gh / ph)
t gx ,t gy处于(0,1)之间
计算loss即计算网络的输出(tx,ty,tw,th)和(t gx,t gy,t gw,t gh)之间的损失。
t代表一种偏移(offset)
解码:
在test中,网络的输出(tx,ty,tw,th),根据上图中的公式即可以实际计算出预测框(b)
训练中的正负样本和ignore:
正样本:目标中心落在哪个格子中,计算那个格子的9个anchor中,与目标IOU最大的,该anchor负责预测这个目标
负样本:anchor与每个目标的IOU都小于阈值
ignore:IOU较大,当成负样本会影响结果,所以不参与计算