Label的生成(RPN)

RPN部分的Label,是连同数据增广,在送入网络训练之前就已经生成好的。由于检测需要解决的是2个问题:坐标的回归&坐标点的分类,自然地这里的Label包含的是2方面:分类Label的生成&回归Label的生成

分类Label的生成(RPN)

假设原图大小为 HWH*W,有9个anchor,Feature Map stride为16,那么最终关于分类的样本维度为 H/stride * W/stride * numanchor,即 H/16 * W/16 * 9,下面将结合实际图例,说明分类样本产生的过程。

这里举例一种简单的情况:原图的大小为768 * 1024,为了适配网络(1024 * 1024),我们在底部补黑边(0,0,0)。图中只有1个框,坐标为(x0,y0,x1,y1)=(266.24,241.664,1009.664,724.992)(x_0,y_0,x_1,y_1) = (266.24,241.664,1009.664,724.992),如下图所示。
Faster RCNN Review(2):Label的生成

这里先给出最终生成的,每个Anchor下的分类Label。其中-1代表Ignore,实际训练中不会回传该部分的梯度;0代表负样本,即背景;1代表正样本,即目标。
Faster RCNN Review(2):Label的生成

可以看到,大部分的Anchor,对应的Label,不是0就是-1,只有Anchor 6中有少部分的目标。但具体是为什么,而每个点对应的值是如何计算的,下面给出说明。
分类Label的生成,涉及到以下的变量:

  • Anchor Map:上文提到的 (WH94)(W*H*9*4) 的Feature Map,记为FF
  • 负样本(背景)的IoU阈值(neg)
  • 正样本(目标)的IoU阈值(pos)
  • 图片的ROI区域(xim0,yim0,xim1,yim1)(x_{im0}, y_{im0},x_{im1}, y_{im1})
  • 图中目标的GT坐标值(x00,y00,x01,y01),(x10,y10,x11,y11)(x_{00},y_{00}, x_{01},y_{01}),(x_{10},y_{10}, x_{11},y_{11}),这里我们先讨论只有一个GT框的情况,记这个GT框为GG
    给定一个GT框(x00,y00,x01,y01)(x_{00},y_{00}, x_{01},y_{01}),我们需要计算出,输出Feature Map中的每个坐标点(i,j)(i, j)中的每个Anchor BoxF(x,y,i)F(x,y,i)GG之间的交并比(IoU)。需要注意的是,任何超过图像边界框(xim0,yim0,xim1,yim1)(x_{im0}, y_{im0},x_{im1}, y_{im1})的Anchor都会被记为无效,并且忽略。 以Anchor3(wh = (368,192))为例,图中的某个Anchor Box与GT的相互关系如下图所示。显然此时IOU = 0。
    Faster RCNN Review(2):Label的生成

计算所有有效Anchor的原图,并映射回Output Feature Map,就能得到如下的IoU Map。可以看到有相当一部分的Anchor都为无效,我们将对应的值设为-1,这里有效Anchor和GT的IoU都比较小,基本在0.2以下,这也说明了这个宽高为(368,192)无法很好地作为这个GT框的先验
Faster RCNN Review(2):Label的生成

基于IoU Map,我们可以得到正负样本的Label:iou > pos的对应的位置,我们标记为正样本(1,目标),而iou < neg对应的位置,我们标记为负样本(0,背景),而 neg<= iou <= pos的区域,我们标记为-1(忽略),这么做的原因,一方面我们要在正负样本的数量上做均衡,另一方面neg<= iou <= pos很难区分,不利于网络的学习。最终得到下图所示的分类Label。通过刚才的IOU计算,其实已经可以知道这个Anchor下无法生成正样本Label
Faster RCNN Review(2):Label的生成

同理,可以得到Anchor6(736, 384)下的IoU Map以及分类Label
Faster RCNN Review(2):Label的生成
Faster RCNN Review(2):Label的生成

回归Label的生成(RPN)

相关文章: