Faster R-CNN中RPN为什么能进行候选区域提取?

因为还没搞清楚,所以以下内容有猜测成分。

  • 对于models\rpn_prototxts\ZF\train_val.prototxt,当输入图像“data”的尺寸是224*224*3时,那么前向传播过程中conv_5的输出的blob的维度就是15*15*256*1,其中15*15是特征图的大小,256是特征图的通道数。
  • 接下来,conv_5层的输出作为conv_proposal1层的输入,conv_proposal1的输出也是15*15*256*1,这一步的作用就是Faster R-CNN论文中所说的3*3的滑动窗口,也就是提取15*15个256d的特征向量。然后,论文中说,该特征向量输出给两个同级的全连接层,也就是proposal_cls_score层和proposal_bbox_pred层,这两个层实现为1*1的卷积层。
  • proposal_cls_score层的输出数据维度为15*15*18*1,proposal_bbox_pred层的输出数据维度为15*15*36*1,这里15*15意义同上,18则对应9个anchors的分类信息(前景 / 背景),36则对应于9个anchors的参数化坐标(所谓参数化坐标,也就是并非实际意义上的坐标。论文中有提到其公式)。
  • 为什么rpn能够进行候选区域提取?我还搞不懂,只能猜一下。我不明白深度学习的机理,但试图用已有的理解去拟合它。监督学习的算法,是给定一定数量的(x,y)数据对,以此作为输入数据,然后让模型的参数自动调整,以更好地拟合这种函数关系。那么类似地,在训练RPN时,输入一张图像,前向传播到proposal_bbox_pred层会输出了一个结果,这个结果与我们事先确定的标签,也就是前景区域的坐标进行比对,计算误差。然后反向传播,调整模型参数,以使该误差降低。当误差降到一定程度时,proposal_bbox_pred层的输出就约等于候选区域的坐标。
  • 是否可以这么认为:在训练之前,模型在proposal_bbox_pred的输出没有明确的意义,而在标签信息限制下的训练过程才使得该输出具有了一定的意义。那么,进一步是不是可以认为,深度学习的方法是:只要给定准确的训练的数据,那么即使在模型很模糊(未明确实际意义)的情况下,也能强行将该之训练成那种输出具有“实际意义”的模型?

你可能感兴趣的:(目标检测)