Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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')
Esempio n. 4
0
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