from copy import deepcopy expname = None # experiment name basedir = './logs/' # where to store ckpts and logs ''' Template of data options ''' data = dict( datadir=None, # path to dataset root folder dataset_type=None, # blender | nsvf | blendedmvs | tankstemple | deepvoxels | co3d inverse_y=False, # intrinsict mode (to support blendedmvs, nsvf, tankstemple) flip_x=False, # to support co3d flip_y=False, # to suppo/= 10 annot_path='', # to support co3d split_path='', # to support co3d sequence_name='', # to support co3d # load2gpu_on_the_fly=False, # do not load all images into gpu (to save gpu memory) load2gpu_on_the_fly=True, # do not load all images into gpu (to save gpu memory) testskip=5, # subsample testset to preview results white_bkgd=True, # use white background (note that some dataset don't provide alpha and with blended bg color) rand_bkgd=False, # use random background during training half_res=False, # [TODO] bd_factor=.75, movie_render_kwargs=dict(), # Below are forward-facing llff specific settings. ndc=False, # use ndc coordinate (only for forward-facing; not support yet) spherify=False, # inward-facing factor=4, # [TODO] width=None, # enforce image width height=None, # enforce image height llffhold=8, # testsplit load_depths=False, # load depth # Below are unbounded inward-facing specific settings. unbounded_inward=False, unbounded_inner_r=1.0, ) ''' Template of training options ''' coarse_train = dict( N_iters=5000, # number of optimization steps N_rand=8192, # batch size (number of random rays per optimization step) #N_rand=1024, # batch size (number of random rays per optimization step) lrate_seg_mask_grid=1, # lr of segmentation voxel grid lrate_dual_seg_mask_grid=1, # lr of dual segmentation voxel grid # lrate_k0_mask_grid=1e-2, lrate_density=0, # lr of density voxel grid lrate_k0=0, # lr of color/feature voxel grid lrate_rgbnet=0, # lr of the mlp to preduct view-dependent color lrate_decay=20, # lr decay by 0.1 after every lrate_decay*1000 steps pervoxel_lr=False, # view-count-based lr pervoxel_lr_downrate=0, # downsampled image for computing view-count-based lr ray_sampler='random', # ray sampling strategies weight_main=1.0, # weight of photometric loss weight_entropy_last=0.01, # weight of background entropy loss weight_nearclip=0, weight_distortion=0, weight_rgbper=0.1, # weight of per-point rgb loss tv_every=1, # count total variation loss every tv_every step tv_after=0, # count total variation loss from tv_from step tv_before=0, # count total variation before the given number of iterations tv_dense_before=0, # count total variation densely before the given number of iterations weight_tv_density=0.0, # weight of total variation loss of density voxel grid weight_tv_k0=0.0, # weight of total variation loss of color/feature voxel grid pg_scale=[], # checkpoints for progressive scaling decay_after_scale=1.0, # decay act_shift after scaling skip_zero_grad_fields=[], # the variable name to skip optimizing parameters w/ zero grad in each iteration maskout_lt_nviews=0, ) fine_train = deepcopy(coarse_train) fine_train.update(dict( N_iters=20000, pervoxel_lr=False, ray_sampler='flatten', weight_entropy_last=0.001, weight_rgbper=0.01, pg_scale=[1000, 2000, 3000, 4000], skip_zero_grad_fields=['density', 'k0'], )) ''' Template of model and rendering options ''' coarse_model_and_render = dict( num_voxels=1024000, # expected number of voxel num_voxels_base=1024000, # to rescale delta distance density_type='DenseGrid', # DenseGrid, TensoRFGrid k0_type='TensoRFGrid', # DenseGrid, TensoRFGrid density_config=dict(), k0_config=dict(n_comp=48), mpi_depth=128, # the number of planes in Multiplane Image (work when ndc=True) nearest=False, # nearest interpolation pre_act_density=False, # pre-activated trilinear interpolation in_act_density=False, # in-activated trilinear interpolation bbox_thres=1e-3, # threshold to determine known free-space in the fine stage mask_cache_thres=1e-3, # threshold to determine a tighten BBox in the fine stage rgbnet_dim=0, # feature voxel grid dim rgbnet_full_implicit=False, # let the colors MLP ignore feature voxel grid rgbnet_direct=True, # set to False to treat the first 3 dim of feature voxel grid as diffuse rgb rgbnet_depth=3, # depth of the colors MLP (there are rgbnet_depth-1 intermediate features) rgbnet_width=128, # width of the colors MLP alpha_init=1e-6, # set the alpha values everywhere at the begin of training fast_color_thres=1e-7, # threshold of alpha value to skip the fine stage sampled point maskout_near_cam_vox=True, # maskout grid points that between cameras and their near planes world_bound_scale=1, # rescale the BBox enclosing the scene stepsize=0.5, # sampling stepsize in volume rendering ) fine_model_and_render = deepcopy(coarse_model_and_render) fine_model_and_render.update(dict( num_voxels=160**3, num_voxels_base=160**3, rgbnet_dim=12, alpha_init=1e-2, fast_color_thres=1e-4, maskout_near_cam_vox=False, world_bound_scale=1.05, )) del deepcopy