输入:任意尺寸的图像
输出:一系列包含物体的候选框
结构:
Feature map的每个像素,映射回原输入图像得到一个中心点,每个中心点设置k个不同尺寸,不同大小的anchor box。所以一共有m*n*k个anchor box。以每个Feature map的中心做核大小为3*3的卷积,核个数为256,每个位置得到一个256维的向量。这个256维的向量作为后两个分支的共同输入。左分支计算分类得分,右分支计算bounding box。左分支计算分类得分,输入是上一步得到的256维向量,做卷积核大小为1*1的卷积运算(相当于全连接),核个数为2k个,所以输出是一个2k维的向量,2k个输出参数代表有两个分类(物体,背景),有k个anchor,所以输出维度为2k;右分支计算bounding box(x,y,w,h:中心点坐标,宽、高),输入是那个256维的向量,有k个anchor,做卷积核大小为1*1的卷积运算(相当于全连接),核个数为4k个,所以这里的输出维度是4k,代表k个anchor的bounding box的参数(x,y,w,h:中心点坐标,宽、高),每个bounding box用这4个参数表示。
训练:
1.标签获取:
标注原则:1)与一个ground truth box的IoU最高的anchor box,标注为正样本;2)与ground truth box的IoU>0.7的,标注为正样本;3)与所有ground truth box的IoU都小于0.3的,标注为负样本。4)其余anchor box不参与loss计算,对训练无影响。(正样本标签为1,负样本标签为0)。
2.loss计算
i是mini-batch里的第i个参与训练的anchor,一共有N个,代表预测概率,代表ground truth的概率(0或1)。前面一项计算二分类的交叉熵;后面一项计算bounding box的回归。第二项乘以是因为负样本没有bounding box。Lreg = smoothL1:
loss的第二项中的和的定义见下方
x,y,w,h是框的中心点坐标,宽度和高度。x,xa,分别是预测值,anchor box的值和ground truth的值。