MCPcopy Index your code
hub / github.com/ActiveVisionLab/DFNet / train_feature_matching

Function train_feature_matching

script/feature/direct_feature_matching.py:412–471  ·  view source on GitHub ↗

finetune pretrained PoseNet using NeRF

(args, model, feat_model, optimizer, i_split, hwf, near, far, device, early_stopping, images=None, poses_train=None, train_dl=None, val_dl=None, test_dl=None)

Source from the content-addressed store, hash-verified

410 return total_loss_mean, total_psnr_mean
411
412def train_feature_matching(args, model, feat_model, optimizer, i_split, hwf, near, far, device, early_stopping, images=None, poses_train=None, train_dl=None, val_dl=None, test_dl=None):
413 ''' finetune pretrained PoseNet using NeRF '''
414 # half_res = False # direct-pn paper settings
415 half_res = True # debug
416
417 # load NeRF model
418 _, render_kwargs_test, start, grad_vars, _ = create_nerf(args)
419 global_step = start
420 if args.reduce_embedding==2:
421 render_kwargs_test['i_epoch'] = global_step
422
423 data_loaders = [train_dl, val_dl, test_dl]
424 bds_dict = {
425 'near' : near,
426 'far' : far,
427 }
428 # render_kwargs_train.update(bds_dict)
429 render_kwargs_test.update(bds_dict)
430 i_train, i_val, i_test = i_split
431
432 render_kwargs_test['embedding_a'] = disable_model_grad(render_kwargs_test['embedding_a'])
433 render_kwargs_test['embedding_t'] = disable_model_grad(render_kwargs_test['embedding_t'])
434 render_kwargs_test['network_fn'] = disable_model_grad(render_kwargs_test['network_fn'])
435 render_kwargs_test['network_fine'] = disable_model_grad(render_kwargs_test['network_fine'])
436
437 N_epoch = 2001
438 print('Begin')
439 print('TRAIN views are', i_train)
440 print('TEST views are', i_test)
441 print('VAL views are', i_val)
442
443 world_setup_dict = {
444 'pose_scale' : train_dl.dataset.pose_scale,
445 'pose_scale2' : train_dl.dataset.pose_scale2,
446 'move_all_cam_vec' : train_dl.dataset.move_all_cam_vec,
447 }
448
449 time0 = time.time()
450
451 model_log = tqdm(total=0, position = 1, bar_format='{desc}')
452 for epoch in tqdm(range(N_epoch), desc='epochs'):
453 #train 1 epoch with batch_size = 1, 15% speed up for DFNet_s
454 loss, psnr = train_on_epoch(args, data_loaders, model, feat_model, hwf, optimizer, half_res, device, world_setup_dict, **render_kwargs_test)
455
456 # 26% speed up for DFNet_s
457 val_loss, val_psnr = eval_on_epoch(args, data_loaders, model, feat_model, hwf, half_res, device, world_setup_dict, **render_kwargs_test)
458
459
460 tqdm.write('At epoch {0:4d} : train loss: {1:.4f}, train psnr: {2:.4f}, val loss: {3:.4f}, val psnr: {4:.4f}'.format(epoch, loss, psnr, val_loss, val_psnr))
461
462 # check wether to early stop
463 early_stopping(val_loss, model, epoch=epoch, save_multiple=(not args.no_save_multiple), save_all=args.save_all_ckpt, val_psnr=val_psnr)
464 if early_stopping.early_stop:
465 print("Early stopping")
466 break
467 model_log.set_description_str(f'Best val loss: {early_stopping.val_loss_min:.4f}')
468
469 if epoch % args.i_eval == 0:

Callers 1

trainFunction · 0.90

Calls 5

create_nerfFunction · 0.90
get_error_in_qFunction · 0.90
disable_model_gradFunction · 0.70
train_on_epochFunction · 0.70
eval_on_epochFunction · 0.70

Tested by

no test coverage detected