一、生成默认框
默认框的宽高
默认框的宽高是相对于原图的尺寸计算出来的。
默认框的中心
默认框的中心是相对于特征图的尺寸计算出来的。
二、将真实框分配给默认框
1、区分正负样本
1.1、选取正样本
计算真实框(bboxs)与每个默认框(dboxs)的IOU,如图。
第一条准则是选择与真实框IOU最大的默认框,将其置为正样本。
第二条准则是选择与真实框IOU大于0.5的默认框,将其置为正样本。
对于被置为正样本的默认框,将其标签和坐标改为相匹配的真实框的标签和坐标。
2.2、选取负样本
非正样本的默认框就是负样本,负样本的默认框的标签和坐标不用发生变化。
三、特征提取
网络结构
生成六个特征图
四、特征预测
设每个特征图的位置上会生成k个默认框,对上一步生成的六个特征图,k=[4,6,6,6,4,4] 。
采用3x3的卷积对特征图进行预测,例如,对于第一个特征层,进行3x3卷积之后,如果预测的为坐标信息,则预测后的通道数为4xk(即4x4),得到的shape为 [batch_size,4xk,特征图长,特征图宽] ,再通过.view方法将shape重塑为[batch_size,4,k x 特征图长 x 特征图宽],即得到该特征图的每一个默认框坐标信息的预测值。
五、计算损失(训练模式)
定位损失
标签损失
直接计算预测标签和真实标签的损失是不合理的,因为负样本的数量远远多于正样本的数量,因此要对负样本进行筛选,筛选的方法就是根据置信度损失对负样本进行降序排序,选取置信度高的负样本,得到负样本掩码,再和正样本掩码相加,乘以整体的标签损失,最终得到标签损失。
六、后处理(预测模式)
首先通过预测的boxes回归参数得到最终预测坐标, 将预测目标score通过softmax处理。