RPN(Region Proposal Network)即区域候选网络,是目标检测算法中的一个重要组成部分。 在RPN 中,矩阵通常涉及到特征图、分类得分矩阵和回归目标矩阵等。 以分类得分矩阵为例,对于输入的特征图,经过一系列卷积操作后,会得到一个分类得分矩阵,比如 rpn_cls_score 矩阵。这个矩阵的维度通常为 [1, 18, H, W] ,其中...
其实是因为这个层的输入信息rpn_cls_score就提供了一个长宽信息就回家洗洗睡了,所以就没必要传递梯度了。 3. ROI Proposal网络部分 3.1 ProposalLayer 该层有3个输入:fg/bg anchors分类器结果rpn_cls_prob_reshape,对应的bbox reg的 [ d x ( A ) , d y ( A ) , d w ( A ) , d h ( A ) ]...
rpn_conv1是一层1*1的卷积,这一层是单独为rpn网络多提取一层特征,这一层之后就接两个输出channel层不同的1*1的卷积(即分别进行score的预测和坐标补偿值的预测),这样保证feature map的大小不变。 rpn_cls_score:bach_size*18*width*height rpn_cls_score_reshape:batch_size*2*(9*width)*height rpn_bbox...
在RPN中部,分类分支(cls)和边框回归分支(bbox reg)分别对这堆anchor进行各种计算。在RPN末端,通过对两个分支的结果进行汇总,来实现对anchor的初步筛除(先剔除越界的anchor,再根据cls结果通过非极大值抑制(NMS)算法去重)和初步偏移(根据bbox reg结果),此时输出的都bbox改头换面叫 Proposal 了 偏移公式如下。An就...
然后对每个proposal进行分类和bounding box regression:得到的前景概率和背景概率(2个参数)(对应图上的 cls_score);由于每个 proposal 和 ground truth 位置及尺寸上的差异,从 proposal 通过平移放缩得到 ground truth 需要的4个平移放缩参数(对应图上的 bbox_pred)。
rois, _ = self._proposal_top_layer(rpn_cls_prob, rpn_bbox_pred, "rois") else: raise NotImplementedError _proposal_layer: 通过神经网络产生的rpn_bbox_pred是参数化的Bounding Box,首先需要转换到图像坐标框,并且裁剪掉超出边界的部分。 然后采用nms(非最大值抑制),按照Score大小返回前Top N的rois; ...
cls_score = cls_score.view((b, -1, 2)) rois = [] roi_idxes = [] for batch in range(b): # apply network offset prediction to anchors roi = self.proposalCreator(anchors, reg_off[batch].cpu(), fg_score[batch].cpu(), \ ...
rpn_cls_score_reshape:batch_size*2*(9*width)*height rpn_bbox_pred:batch_size*36*width*height。每4个channel对应一种类型的anchor(即一个尺寸和一个ratio),因为有9种类型的anchor,所有一共也就有36个channel。以前4个channel为例,第一个channel的feature map每一个值是每个位置中心点x方向的补偿值dx,第...
bottom: "rpn_cls_score" top: "rpn_cls_score_reshape" # 我们之前说过,其实这一层是12*12*256的,所以后面我们要送给损失函数,需要将这个矩阵reshape一下,我们需要的是144个滑窗,每个对应的256的向量 name: "rpn_cls_score_reshape" type: "Reshape" ...
2、rpn_relu->rpn_cls_score->rpn_cls_score_reshape->rpn_cls_prob->rpn_cls_prob_reshape 这里是预测每个点的前景和背景概率。rpn_cls_score实际上就是一个1*1的卷积层而已。(相当于是一个全连接层) 如果有A个anchor,每个anchor都有一个前景概率一个背景概率(2*A),输出的大小为(1,2*A,H,W)。