def add_generic_rpn_outputs(model, blob_in, dim_in, spatial_scale_in): """Add RPN outputs (objectness classification and bounding box regression) to an RPN model. Abstracts away the use of FPN. 是否为目标,对anchor进行回归 """ loss_gradients = None if cfg.FPN.FPN_ON: # Delegate to the FPN module # 添加proposals层,输出为(bacth_index, x1, y1, x2, y2) # 1. 获得rpn的输出,MxNxAnchors, MxNx4Anchors; # 2. 对fpn中的每一层,获取ROIs FPN.add_fpn_rpn_outputs(model, blob_in, dim_in, spatial_scale_in) if cfg.MODEL.FASTER_RCNN: # CollectAndDistributeFpnRpnProposals also labels proposals when in # training mode # 在该函数中构造候选区域的目标值,回归量以及类别,权重 model.CollectAndDistributeFpnRpnProposals() if model.train: loss_gradients = FPN.add_fpn_rpn_losses(model) else: # Not using FPN, add RPN to a single scale # 添加输出 add_single_scale_rpn_outputs(model, blob_in, dim_in, spatial_scale_in) if model.train: # 添加loss loss_gradients = add_single_scale_rpn_losses(model) return loss_gradients
def add_generic_rpn_outputs(model, blob_in, dim_in, spatial_scale_in): """Add RPN outputs (objectness classification and bounding box regression) to an RPN model. Abstracts away the use of FPN. """ loss_gradients = None if cfg.FPN.FPN_ON: # Delegate to the FPN module FPN.add_fpn_rpn_outputs(model, blob_in, dim_in, spatial_scale_in) if cfg.MODEL.FASTER_RCNN: # CollectAndDistributeFpnRpnProposals also labels proposals when in # training mode model.CollectAndDistributeFpnRpnProposals() if model.train: loss_gradients = FPN.add_fpn_rpn_losses(model) return loss_gradients