def _add_wsl_head(model, add_roi_box_head_func, blob_in, dim_in, spatial_scale_in): """Add a Fast R-CNN head to the model.""" blob_frcn, dim_frcn = add_roi_box_head_func(model, blob_in, dim_in, spatial_scale_in) if cfg.WEBLY.WEBLY_ON: webly_heads.add_wsl_outputs(model, blob_frcn, dim_frcn) if model.train: loss_gradients = webly_heads.add_wsl_losses(model) else: loss_gradients = None return loss_gradients wsl_heads.add_wsl_outputs(model, blob_frcn, dim_frcn) if model.train: if isinstance(blob_frcn, list) and False: loss_gradients = {} for i in range(len(blob_frcn)): lg = wsl_heads.add_wsl_losses(model, prefix='_{}_'.format(i)) loss_gradients.update(lg) else: loss_gradients = wsl_heads.add_wsl_losses(model) else: loss_gradients = None return loss_gradients
def _add_wsl_head(model, add_roi_box_head_func, blob_in, dim_in, spatial_scale_in): """Add a Fast R-CNN head to the model.""" blob_frcn, dim_frcn = add_roi_box_head_func(model, blob_in, dim_in, spatial_scale_in) wsl_heads.add_wsl_outputs(model, blob_frcn, dim_frcn) if model.train: loss_gradients = wsl_heads.add_wsl_losses(model) else: loss_gradients = None return loss_gradients
def add_webly_outputs(model, blob_in, dim, prefix=''): add_wsl_outputs(model, blob_in[0], dim[0], prefix=prefix) # Box classification layer model.FC( blob_in[1], prefix + 'noisy_fc8c', dim[1], model.num_classes - 1, weight_init=('XavierFill', {}), # weight_init=('GaussianFill', { # 'std': 0.0005 # }), bias_init=const_fill(0.0)) model.FC( blob_in[1], prefix + 'noisy_fc8d', dim[1], model.num_classes - 1, # weight_init=('GaussianFill', { # 'std': 0.0005 # }), weight_init=('XavierFill', {}), bias_init=const_fill(0.0)) model.net.Add([prefix + 'fc8c', prefix + 'noisy_fc8c'], [prefix + 'fc8c_noise']) model.net.Add([prefix + 'fc8d', prefix + 'noisy_fc8d'], [prefix + 'fc8d_noise']) model.Softmax(prefix + 'fc8c_noise', prefix + 'alpha_cls_noise', axis=1) model.Transpose(prefix + 'fc8d_noise', prefix + 'fc8d_t_noise', axes=(1, 0)) model.Softmax(prefix + 'fc8d_t_noise', prefix + 'alpha_det_t_noise', axis=1) model.Transpose(prefix + 'alpha_det_t_noise', prefix + 'alpha_det_noise', axes=(1, 0)) model.net.Mul([prefix + 'alpha_cls_noise', prefix + 'alpha_det_noise'], prefix + 'rois_pred_noise')
def _add_wsl_head(model, add_roi_box_head_func, blob_in, dim_in, spatial_scale_in): """Add a Fast R-CNN head to the model.""" blob_frcn, dim_frcn = add_roi_box_head_func(model, blob_in, dim_in, spatial_scale_in) wsl_heads.add_wsl_outputs(model, blob_frcn, dim_frcn) if model.train and True: wsl_heads.add_hard_mining(model) blob_frcn, dim_frcn = get_func(cfg.FAST_RCNN.ROI_BOX_HEAD + '_shared')( model, "db1_add", dim_in, spatial_scale_in, prefix='mining_') wsl_heads.add_mining_outputs_shared(model, blob_frcn, dim_frcn, prefix='mining_') loss_gradients = wsl_heads.add_mining_losses(model, prefix='mining_') elif model.train: loss_gradients = wsl_heads.add_wsl_losses(model) else: loss_gradients = None return loss_gradients