Faster RCNN系列——RPN的真值与预测值

  对于目标检测任务,模型需要预测物体的类别和位置,即类别、边框中心点坐标 x x x y y y 、边框宽 w w w 与高 h h h 这5个量,基于Anchor这个先验框,RPN可以预测Anchor的类别作为预测边框的类别,可以预测真实的边框相对于Anchor的偏移量进而求解真实边框的位置。

  因此,RPN有两种真实和预测值,分别是类别偏移量

  如下图所示,输入图像中有3个Anchor和2个标签,Anchor A与label M有重叠,Anchor C与label N有重叠,Anchor B不与任何label重叠。

Faster RCNN系列——RPN的真值与预测值_第1张图片

图1 Anchor与标签的关系

1.1 真值

  • 类别真值

  这里的类别真值是指Anchor是属于前景还是属于背景。RPN通过计算Anchor与标签的IoU来判断一个Anchor是属于前景还是属于背景。图1中Anchor A与label M的IoU计算公式如下:

I o U ( A , M ) = A ∩ M A ∪ M IoU(A,M)=\frac{A\cap M}{A\cup M} IoU(A,M)=AMAM

  当IoU大于一定值时,该Anchor的类别真值为前景;当IoU小于一定值时,该Anchor的类别真值为背景。具体的判断标准如下:

  • 对于任何一个Anchor,与所有标签的最大IoU小于0.3,则视为负样本。

  • 对于任何一个标签,与其有最大IoU的Anchor视为正样本。

  • 对于任何一个Anchor,与所有标签的最大IoU大于0.7,则视为正样本。

  • 偏移量真值

  假设图1中Anchor A的中心坐标为 x a x_{a} xa y a y_{a} ya,宽高分别为 w a w_{a} wa h a h_{a} ha,标签M的中心坐标为 x x x y y y,宽高分别为 w w w h h h,则偏移量真值的计算公式如下:

{ t x = ( x − x a ) w a t y = ( y − y a ) h a t w = l o g ( w w a ) t h = l o g ( h h a ) \left\{\begin{matrix} t_{x}= \frac{(x-x_{a})}{w_{a}}\\ t_{y}= \frac{(y-y_{a})}{h_{a}} \\ t_{w}=log(\frac{w}{w_{a}}) \\ t_{h}=log(\frac{h}{h_{a}}) \end{matrix}\right. tx=wa(xxa)ty=ha(yya)tw=log(waw)th=log(hah)

1.2 预测值

  RPN通过搭建如图2所示的网络结构,实现对类别和偏移量的预测,即通过分类分支求得类别预测值、通过回归分支求得偏移量预测值。

Faster RCNN系列——RPN的真值与预测值_第2张图片

图2 RPN网络结构
  • 类别预测值

  在分类分支中,首先使用 1 × 1 1×1 1×1卷积输出 18 × 37 × 50 18×37×50 18×37×50的特征,由于每个点默认有9个Anchors,并且每个Anchor 只预测其属于前景还是背景,因此通道数为18。随后利用torch.view()函数将特征映射到 2 × 333 × 75 2×333×75 2×333×75,这样第一维仅仅是一个Anchor的前景背景得分,并送到Softmax函数中进行概率计算,得到的特征再变换到 18 × 37 × 50 18×37×50 18×37×50的维度,最终输出的是每个Anchor属于前景与背景的概率。

  • 偏移量预测值

  在回归分支中,利用 1 × 1 1×1 1×1卷积输出 36 × 37 × 50 36×37×50 36×37×50的特征,第一维的36包含9个Anchors的预测,每一个Anchor有4个数据,分别代表了每一个Anchor的中心点横纵坐标及宽高这4个量相对于真值的偏移量。

你可能感兴趣的:(目标检测,深度学习,目标检测,人工智能)