Our3D / lib /configs.py
yansong1616's picture
Upload 384 files
b177539 verified
import argparse
### configs
def config_parser():
'''Define command line arguments
'''
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('--config', required=True,
help='config file path')
parser.add_argument("--seed", type=int, default=777,
help='Random seed')
parser.add_argument("--no_reload", action='store_true',
help='do not reload weights from saved ckpt')
parser.add_argument("--no_reload_optimizer", action='store_true',
help='do not reload optimizer state from saved ckpt')
parser.add_argument("--ft_path", type=str, default='',
help='specific weights npy file to reload for coarse network')
parser.add_argument("--export_bbox_and_cams_only", type=str, default='',
help='export scene bbox and camera poses for debugging and 3d visualization')
parser.add_argument("--export_coarse_only", type=str, default='')
# testing options
parser.add_argument("--render_only", action='store_true',
help='do not optimize, reload weights and render out render_poses path')
parser.add_argument("--render_opt", default=None, type=str,
choices=['train', 'test', 'video'], help='rendering mode')
parser.add_argument("--render_video_flipy", action='store_true')
parser.add_argument("--render_video_rot90", default=0, type=int)
parser.add_argument("--render_video_factor", type=float, default=0,
help='downsampling factor to speed up rendering, set 4 or 8 for fast preview')
parser.add_argument("--dump_images", action='store_true')
parser.add_argument("--eval_ssim", action='store_true')
parser.add_argument("--eval_lpips_alex", action='store_true')
parser.add_argument("--eval_lpips_vgg", action='store_true')
# logging/saving options
parser.add_argument("--i_print", type=int, default=500,
help='frequency of console printout and metric loggin')
parser.add_argument("--i_weights", type=int, default=5000,
help='frequency of weight ckpt saving')
# arguments for feature distillation
parser.add_argument("--freeze_density", action='store_true',
help='freeze density grid')
parser.add_argument("--freeze_rgb", action='store_true',
help='freeze rgb grid and mlp')
parser.add_argument("--freeze_feature", action='store_true',
help='freeze feature grid')
parser.add_argument("--only_distill_loss", action='store_true',
help='train on only loss of features')
parser.add_argument("--weighted_distill_loss", action='store_true',
help='train on weighted loss')
parser.add_argument("--seg_mask", action='store_true',
help='generate segmentation mask')
parser.add_argument("--segment", action='store_true',
help='interactively set threshold and re-render until stopped.')
parser.add_argument("--segment_everything", action='store_true',
help='if true, adopt SamAutomaticMaskGenerator to generate masks for all possible objects in the first frame.')
parser.add_argument("--stop_at", type=int, default=1000000,
help='at what iteration to stop training.')
parser.add_argument("--get_cam_trajectory", action='store_true',
help='Get the camera poses of the training set as the trajectory.')
# prompt options
parser.add_argument("--num_prompts", type=int, default=3, help='number of prompts')
parser.add_argument("--num_epochs", type=int, default=1, help='number of training epochs')
parser.add_argument("--lamb", type=float, default=1., help='the negative force in seg loss')
parser.add_argument("--tau", type=float, default=0.5, help='the iou threshold')
parser.add_argument('--prompt_type', type=str, default='scene', choices=['scene', 'file', 'input', 'interactive', 'text'],
help='the type of prompt, point or box')
# type 1: scene property
parser.add_argument("--scene", type=str, default=None,
help='scene, used for querying point and box coords')
# type 2: json file
parser.add_argument("--prompt_file", type=str, default=None,
help='json file containing prompts')
# type 3: directly input the prompts
parser.add_argument('--coords', metavar='N', type=int, nargs='+', help='get prompts from command line')
# type 4: interactive backend
parser.add_argument("--interactive", action='store_true', help='interactive backend, \
input points are from interactive GUI') # TODO
# type 5: text discription
parser.add_argument("--text", type=str, default=None,
help='text discription of the prompt')
# sp_name for instance
parser.add_argument("--sp_name", type=str, default=None, help="if None, use default, else use this as e_flag")
# seg training
parser.add_argument("--use_fine_stage", action='store_true',
help='fine stage can be used when IoU is low')
parser.add_argument("--seg_poses", default='train', type=str,
choices=['train', 'video'], help='which poses are used for segmentation')
# seg testing
parser.add_argument('--seg_type', nargs = '+', type=str, default=['seg_img', 'seg_density'],
help='segmentation type in inference')
parser.add_argument("--save_ckpt", action='store_true',
help='save segmentation ckpt')
parser.add_argument("--mobile_sam", action='store_true', help='Replace the original SAM encoder with MobileSAM to accelerate segmentation')
return parser