コード例 #1
0
ファイル: eval_util.py プロジェクト: WMX567/Arbicon-Net
def inlier_count(batch,
                 batch_start_idx,
                 theta_tps,
                 theta_aff_tps,
                 corr_aff,
                 corr_aff_tps,
                 model_tps,
                 stats,
                 args,
                 use_cuda=True):
    inliersComposed = TwoStageWeakInlierCount(
        use_cuda=torch.cuda.is_available(),
        dilation_filter=0,
        normalize_inlier_count=True)
    inliers_comp = inliersComposed(matches=corr_aff,
                                   theta_aff=theta_aff,
                                   theta_aff_tps=theta_aff_tps,
                                   model_tps=model_tps)
    current_batch_size = batch['source_im_size'].size(0)
    indices = range(batch_start_idx, batch_start_idx + current_batch_size)

    stats['aff_tps']['inlier_count'][indices] = inliers_comp.unsqueeze(
        1).cpu().data.numpy()

    return stats
コード例 #2
0
    if args.train_fr and name.find('bn') != -1:
        param.requires_grad = args.train_bn

# define loss
print('Using weak loss...')
if args.dilation_filter == 0:
    dilation_filter = 0
else:
    dilation_filter = generate_binary_structure(2, args.dilation_filter)

if args.inlier_loss:
    inliersAffine = WeakInlierCount(geometric_model='affine',
                                    seg_mask=args.mask,
                                    **arg_groups['weak_loss'])
    inliersComposed = TwoStageWeakInlierCount(use_cuda=use_cuda,
                                              seg_mask=args.mask,
                                              **arg_groups['weak_loss'])

if args.consistency_loss:
    aff_ConsisLoss = ConsistencyLoss(use_cuda=use_cuda, transform='affine')
    tps_ConsisLoss = ConsistencyLoss(use_cuda=use_cuda, transform='tps')

if args.transitivity_loss:
    aff_TransLoss = TransitivityLoss(use_cuda=use_cuda, transform='affine')
    tps_TransLoss = TransitivityLoss(use_cuda=use_cuda, transform='tps')

if args.consistency_loss or args.transitivity_loss:
    coord = []
    for i in range(config.NUM_OF_COORD):
        for j in range(config.NUM_OF_COORD):
            xx = []
コード例 #3
0
ファイル: train_weak.py プロジェクト: nyummvc/Arbicon-Net
    if args.train_fr and name.find('bn') != -1:
        param.requires_grad = args.train_bn
for name, param in model.GridDeformation2.named_parameters():
    print(name.ljust(30), param.requires_grad)

# define loss
print('Using weak loss...')
if args.dilation_filter == 0:
    dilation_filter = 0
else:
    dilation_filter = generate_binary_structure(2, args.dilation_filter)

inliersAffine = WeakInlierCount(geometric_model='affine',
                                **arg_groups['weak_loss'])
inliersTps = WeakInlierCount(geometric_model='tps', **arg_groups['weak_loss'])
inliersComposed = TwoStageWeakInlierCount(use_cuda=use_cuda,
                                          **arg_groups['weak_loss'])


def inlier_score_function(theta_aff,
                          theta_aff_tps,
                          corr_aff,
                          corr_aff_tps,
                          model_tps,
                          minimize_outliers=False):
    inliers_comp = inliersComposed(matches=corr_aff,
                                   theta_aff=theta_aff,
                                   theta_aff_tps=theta_aff_tps,
                                   model_tps=model_tps)

    inliers_aff = inliersAffine(matches=corr_aff, theta=theta_aff)