|
- import configargparse
-
-
- def config_parser(cmd=None):
- parser = configargparse.ArgumentParser()
- parser.add_argument('--config', is_config_file=True,
- help='config file path')
- parser.add_argument("--expname", type=str,
- help='experiment name')
- parser.add_argument("--basedir", type=str, default='./log',
- help='where to store ckpts and logs')
- parser.add_argument("--add_timestamp", type=int, default=0,
- help='add timestamp to dir')
- parser.add_argument("--datadir", type=str, default='./data/llff/fern',
- help='input data directory')
- parser.add_argument("--progress_refresh_rate", type=int, default=1,
- help='how many iterations to show psnrs or iters')
- parser.add_argument("--fp16", action="store_true")
-
- parser.add_argument('--with_depth', action='store_true')
- parser.add_argument('--downsample_train', type=float, default=1.0)
- parser.add_argument('--downsample_test', type=float, default=1.0)
-
- parser.add_argument('--model_name', type=str, default='TensorSemVMSplit',
- choices=['TensorVMSplit', 'TensorCP', 'TensorSemVMSplit'])
-
- # multi-gpu options
- parser.add_argument('--gpu_ids', type=str, default='0', help='gpu ids: e.g. 0 0,1,2, 0,2. use -1 for CPU')
-
- # loader options
- parser.add_argument('--nEpoches', type=int, default=10)
- parser.add_argument('--nCases', type=int, default=100, help='number of cases for training GAN')
- parser.add_argument('--batch_size', type=int, default=1)
- parser.add_argument('--chunk_size', type=int, default=4096, help='rendering ray chunk size')
-
- parser.add_argument('--dataset_name', type=str, default='blender',
- choices=['blender', 'llff', 'nsvf', 'dtu', 'tankstemple', 'replica',
- 'replica_dmnerf', 'own_data'])
-
- parser.add_argument("--near", type=float, default=0.1)
- parser.add_argument("--far", type=float, default=50)
- parser.add_argument("--scene_bbox_stretch", type=float, default=5.5)
- # parser.add_argument('--scene_name', type=str, default='office_0')
- parser.add_argument("--use_same_rays", action='store_false',
- help='if not specified, use the same generated rays for all cases')
- parser.add_argument("--load_colored_sem", type=int, default=1)
-
- # training options
- # gan learning rate
- parser.add_argument("--lr_gan_init", type=float, default=0.0002,
- help='initial gan learning rate')
- parser.add_argument('--lr_decay_iter_start', type=int, default=50,
- help='number of iterations at starting learning rate decay')
- parser.add_argument("--lr_decay_iters", type=int, default=50,
- help='number of iterations to linearly decay learning rate to zero')
- # tensorf learning rate
- parser.add_argument("--lr_init", type=float, default=0.02,
- help='learning rate')
- parser.add_argument("--lr_basis", type=float, default=1e-3,
- help='learning rate')
- parser.add_argument("--lr_decay_target_ratio", type=float, default=0.1,
- help='the target decay ratio; after decay_iters inital lr decays to lr*ratio')
- parser.add_argument("--lr_upsample_reset", type=int, default=1,
- help='reset lr to inital after upsampling')
-
- # loss
- # tensorf loss
- parser.add_argument("--L1_weight_inital", type=float, default=0.0,
- help='loss weight')
- parser.add_argument("--L1_weight_rest", type=float, default=0,
- help='loss weight')
- parser.add_argument("--Ortho_weight", type=float, default=0.0,
- help='loss weight')
- parser.add_argument("--TV_weight_density", type=float, default=0.0,
- help='loss weight')
- parser.add_argument("--TV_weight_app", type=float, default=0.0,
- help='loss weight')
-
- parser.add_argument("--TV_weight_sem", type=float, default=0.0,
- help='loss weight')
- # gan loss
- parser.add_argument('--use_ganFeat_loss', action='store_false',
- help='if not specified, use discriminator feature matching loss')
- parser.add_argument('--use_vgg_loss', action='store_false',
- help='if not specified, use VGG feature matching loss')
-
- # model
- # volume options
- parser.add_argument("--n_lamb_sigma", type=int, action="append")
- parser.add_argument("--n_lamb_sh", type=int, action="append")
- parser.add_argument("--data_dim_color", type=int, default=27)
-
- parser.add_argument("--rm_weight_mask_thre", type=float, default=0.0001,
- help='mask points in ray marching')
- parser.add_argument("--alpha_mask_thre", type=float, default=0.0001,
- help='threshold for creating alpha mask volume')
- parser.add_argument("--distance_scale", type=float, default=25,
- help='scaling sampling distance for computation')
- parser.add_argument("--density_shift", type=float, default=-10,
- help='shift density in softplus; making density = 0 when feature == 0')
-
- # semantic options
- parser.add_argument("--n_lamb_sem", type=int, action="append")
-
- parser.add_argument("--sem_info_path", type=str,
- default="/media/alpha4TB/doubin/nerf/datasets/nerf_replica/pre_rendered/semantic_info/office_0/")
-
- parser.add_argument('--norm', type=str, default='instance',
- help='instance normalization or batch normalization')
- # generator
- parser.add_argument('--netG', type=str, default='global', help='selects model to use for netG')
- parser.add_argument('--use_sem_density_features', action='store_false')
- parser.add_argument('--ngf', type=int, default=64, help='number of gen filter channels in first conv layer')
- parser.add_argument('--n_downsample_global', type=int, default=4,
- help='number of downsampling layers in netG')
- parser.add_argument('--n_blocks_global', type=int, default=9,
- help='number of residual blocks in the global generator network')
- parser.add_argument('--n_blocks_local', type=int, default=3,
- help='number of residual blocks in the local enhancer network')
- parser.add_argument('--n_local_enhancers', type=int, default=1, help='number of local enhancers to use')
- parser.add_argument('--niter_fix_global', type=int, default=0,
- help='number of epochs that we only train the outmost local enhancer')
-
- # encoder network
- parser.add_argument('--gen_features', action='store_true', help='if specified, gen feature maps from G')
-
- # discriminator
- parser.add_argument('--input_nc', type=int, default=3, help='number of input image channels')
- parser.add_argument('--output_nc', type=int, default=3, help='number of output image channels')
- parser.add_argument('--ndf', type=int, default=64, help='number of discrim filters in first conv layer')
- parser.add_argument('--n_layers_D', type=int, default=3, help='only used if which_model_netD==n_layers')
- parser.add_argument('--use_lsgan', action='store_false',
- help='use least square GAN, if false, use vanilla GAN(BCE)')
- parser.add_argument('--num_D', type=int, default=2, help='number of discriminators to use')
- parser.add_argument('--pool_size', type=int, default=0,
- help='the size of image buffer that stores previously generated images')
- parser.add_argument('--lambda_feat', type=float, default=10.0, help='weight for feature matching loss')
-
- # network decoder
- parser.add_argument("--shadingMode", type=str, default="MLP_PE",
- help='which shading mode to use')
- parser.add_argument("--pos_pe", type=int, default=6,
- help='number of pe for pos')
- parser.add_argument("--view_pe", type=int, default=6,
- help='number of pe for view')
- parser.add_argument("--fea_pe", type=int, default=6,
- help='number of pe for features')
- parser.add_argument("--featureC", type=int, default=128,
- help='hidden feature channel in MLP')
-
- parser.add_argument("--ckpt", type=str, default=None,
- help='specific weights npy file to reload for coarse network')
- parser.add_argument("--render_only", type=int, default=0)
- parser.add_argument("--render_test", type=int, default=0)
- parser.add_argument("--render_train", type=int, default=0)
- parser.add_argument("--render_path", type=int, default=0)
- parser.add_argument("--export_mesh", type=int, default=0)
-
- # rendering options
- parser.add_argument('--lindisp', default=False, action="store_true",
- help='use disparity depth sampling')
- parser.add_argument("--perturb", type=float, default=1.,
- help='set to 0. for no jitter, 1. for jitter')
- parser.add_argument("--accumulate_decay", type=float, default=0.998)
- parser.add_argument("--fea2denseAct", type=str, default='softplus')
- parser.add_argument('--ndc_ray', type=int, default=0)
- parser.add_argument('--nSamples', type=int, default=1e6,
- help='sample point each ray, pass 1e6 if automatic adjust')
- parser.add_argument('--step_ratio', type=float, default=0.5)
-
- # tps options
- parser.add_argument('--tps_scale', type=float, default=0.08,
- help='tps changing scale')
-
- # PSNR thresh
- parser.add_argument('--PSNR_thresh', type=float, default=0.0)
-
- ## blender flags
- parser.add_argument("--white_bkgd", action='store_true',
- help='set to render synthetic data on a white bkgd (always use for dvoxels)')
-
- parser.add_argument('--N_voxel_init',
- type=int,
- default=100 ** 3)
- parser.add_argument('--N_voxel_final',
- type=int,
- default=300 ** 3)
- parser.add_argument("--upsamp_list", type=int, action="append")
- parser.add_argument("--update_AlphaMask_list", type=int, action="append")
-
- parser.add_argument('--idx_view',
- type=int,
- default=0)
- # logging/saving options
- parser.add_argument("--N_vis", type=int, default=5,
- help='N images to vis')
- parser.add_argument("--vis_every", type=int, default=10000,
- help='frequency of visualize the image')
- parser.add_argument('--save_iter_freq', type=int, default=10,
- help='frequency of saving checkpoints at the end of iterations')
-
- if cmd is not None:
- return parser.parse_args(cmd)
- else:
- return parser.parse_args()
|