這一節講述proposal層,和這一層有關的結構圖如下:

proposal層的prototxt定義如下:
layer {
name: 'proposal'
type: 'Python'
bottom: 'rpn_cls_prob_reshape'
bottom: 'rpn_bbox_pred'
bottom: 'im_info'
top: 'rpn_rois'
# top: 'rpn_scores'
python_param {
module: 'rpn.proposal_layer'
layer: 'ProposalLayer'
param_str: "'feat_stride': 16"
}
}
這一層的功能是對卷積網絡中RPN輸出的bbox_deltas, scores做后處理,主要步驟如下:
1、同上節中的第一步,生成anchor;
2、將anchor和RPN網絡輸出的bbox_deltas疊加,得到proposals,剔除超出圖像區域的proposal,並刪除在原圖尺度(不是輸入網絡的尺度)上長或寬小於16的proposal;
3、將proposals按分數從大到小排序,並取前12000個做NMS,overlap閾值為0.7;
4、NMS之后,proposals仍然是按分數從大到小排序的,取前2000個(如果NMS之后proposal個數小於2000,則取全部)proposals;
5、給proposals(n x 4)添加一列,表示batch_inds(都為0),添加在第一列,最后得到的proposals的shape為n x 5。
這一層的代碼鏈接見這里,此外涉及到的其他函數有bbox_transform_inv,clip_boxes,nms。
