def get_derender_config(dataset_name): _C = CfgNode() _C.DEBUG = False _C.TYPE = "derender" _C.ATTRIBUTES = CfgNode() _C.RESUME = False _C.RESUME_DIR = "" _C.SEED = -1 _C.CUDNN_BENCHMARK = False # ----------------------------------------------------------------------------- # Model # ----------------------------------------------------------------------------- _C.MODEL = CfgNode() # Number of derender visual feature channels _C.MODEL.FEATURE_CHANNELS = 512 # number of hidden layers after backbone _C.MODEL.NUM_MID_LAYERS = 2 # Number of intermediate layer channels _C.MODEL.MID_CHANNELS = 256 _C.INPUT = CfgNode() _C.DATASETS = CfgNode() _C.DATASETS.USE_PREDICTED_BOXES = False _C.DATASETS.BASE_NAME = dataset_name # ----------------------------------------------------------------------------- # DataLoader # ----------------------------------------------------------------------------- _C.DATALOADER = CfgNode() # Number of data loading threads if _C.DEBUG: _C.DATALOADER.NUM_WORKERS = 0 else: _C.DATALOADER.NUM_WORKERS = 6 if _C.DEBUG: _C.DATALOADER.VAL_BATCH_SIZE = 80 else: _C.DATALOADER.VAL_BATCH_SIZE = 160 # ---------------------------------------------------------------------------- # # Solver # ---------------------------------------------------------------------------- # _C.SOLVER = CfgNode() #maximum number of seconds for training _C.SOLVER.MAX_TIME_SECS = 43200 # Print metrics every _ seconds _C.SOLVER.PRINT_METRICS_TIME = 180 #TODO: set back to 180 # write to tensorboard summary every_ secconds _C.SOLVER.TENSORBOARD_SECS = 1 # Checkpoint every _ seconds _C.SOLVER.CHECKPOINT_SECS = 600 # Run validation every _ seconds _C.SOLVER.VALIDATION_SECS = 600 #TODO: change back to 300 _C.SOLVER.VALIDATION_MAX_SECS = 60 _C.SOLVER.BASE_LR = 6.658777172739463e-5 _C.SOLVER.BIAS_LR_FACTOR = 2 _C.SOLVER.OPT_TYPE = "Adam" #options "Adam" "SGD" _C.SOLVER.MOMENTUM = 0.9960477666835778 #found via Bayesian Optimization _C.SOLVER.ADAM_BETA = 0.9999427846237621 _C.SOLVER.WEIGHT_DECAY = 0.0005 _C.SOLVER.WEIGHT_DECAY_BIAS = 0 #Factor of reduction at iteration == el for el in SOLVER.STEPS _C.SOLVER.GAMMA = 0.3 _C.SOLVER.STEPS = (80000, 100000) # _C.SOLVER.STEPS = (3000,5000) _C.SOLVER.WARMUP_FACTOR = 1.0 / 3 _C.SOLVER.WARMUP_ITERS = 500 _C.SOLVER.WARMUP_METHOD = "linear" ######### INTPHYS ############### if _C.DATASETS.BASE_NAME == "intphys": _C.DATASETS.TRAIN = ("intphys_train", ) # _C.DATASETS.TRAIN = ("intphys_val",) _C.DATASETS.TEST = ("intphys_val", ) _C.DATASETS.USE_DEPTH = True _C.DATALOADER.OBJECTS_PER_BATCH = 160 # TODO: get back to 160 _C.ATTRIBUTES.NAME = "intphys" _C.MODEL.ADD_CAMERA = True # Input channels for the model (segmented depth map, depth map) _C.MODEL.IN_CHANNELS = 2 # The size of pooling kernel in the last layer of the resnet34 _C.MODEL.POOLING_KERNEL_SIZE = (8, 8) ####### ADEPT ################# elif _C.DATASETS.BASE_NAME == "adept": _C.DATASETS.TRAIN = ("adept_train", ) # _C.DATASETS.TRAIN = ("adept_val",) _C.DATASETS.TEST = ("adept_val", ) _C.DATASETS.USE_DEPTH = False _C.ATTRIBUTES.NAME = "adept" _C.MODEL.ADD_CAMERA = False if _C.DEBUG: _C.DATALOADER.OBJECTS_PER_BATCH = 20 # TODO: get back to 40 else: _C.DATALOADER.OBJECTS_PER_BATCH = 120 # TODO: get back to 40 # Input channels for the model (segmented depth map, depth map) _C.MODEL.IN_CHANNELS = 12 # The size of pooling kernel in the last layer of the resnet34 _C.MODEL.POOLING_KERNEL_SIZE = (10, 15) elif _C.DATASETS.BASE_NAME == "ai2thor-intphys": _C.DATASETS.TRAIN = ("ai2thor-intphys_train", ) # _C.DATASETS.TRAIN = ("ai2thor-intphys_val",) _C.DATASETS.TEST = ("ai2thor-intphys_val", ) _C.DATASETS.USE_DEPTH = True _C.ATTRIBUTES.NAME = "ai2thor" _C.MODEL.ADD_CAMERA = False if _C.DEBUG: _C.DATALOADER.OBJECTS_PER_BATCH = 20 else: _C.DATALOADER.OBJECTS_PER_BATCH = 120 # Input channels for the model (segmented depth map, depth map) _C.MODEL.IN_CHANNELS = 2 # The size of pooling kernel in the last layer of the resnet34 _C.MODEL.POOLING_KERNEL_SIZE = (8, 16) else: raise NotImplementedError return _C
def get_adept_cfg(dataset_basename): _C = CfgNode() _C.TYPE = "adept" _C.DEBUG = False _C.VERSION = "paper-adept" #options: "paper-adept", "intphys-adept" _C.RESUME = False _C.RESUME_DIR = "" _C.SEED = -1 _C.CUDNN_BENCHMARK = False _C.DEBUG_VIDEOS = [ ] #["output/intphys/.data_tmp/adept_jsons/pred_attr_82649/intphys_dev_O1/video_00054.json"] _C.ANALYZE_RESULTS_FOLDER = "None" #"output/intphys/adept/bk_distributed_exp" #"/home/aldo/cora-derender/output/adept/adept/bk_distributed_exp" #"/all/home/aldo/cora-derenderer/output/adept/adept/distributed_exp/" #'/all/home/aldo/cora-derenderer/output/intphys/adept/distributed_exp_complete_bk' #"None" #"output/intphys/adept/exp_00025" # ----------------------------------------------------------------------------- # Datasets # ----------------------------------------------------------------------------- _C.DATASETS = CfgNode() _C.DATASETS.BASE_NAME = dataset_basename if _C.DATASETS.BASE_NAME == "intphys": ####### INTPHYS ########### _C.ATTRIBUTES_KEYS = ( "pred_attr_82649", # "pred_attr_03227", # "pred_attr_06472", # "pred_attr_12664", # "pred_attr_22318", # "pred_attr_41337", ) _C.DATASETS.TEST = ( "intphys_dev_O1", "intphys_dev_O2", "intphys_dev_O3", # "intphys_dev-meta_O1", # "intphys_dev-meta_O2", # "intphys_dev-meta_O3" ) elif _C.DATASETS.BASE_NAME == "adept": _C.ATTRIBUTES_KEYS = ( # "attributes", "pred_attr_43044", # "pred_attr_00650", # 'pred_attr_10580', # "pred_attr_18377", # "pred_attr_34216" ) _C.DATASETS.TEST = ( # "adept_val", # "adept_train", #TODO get back to only test "adept_human_create", "adept_human_vanish", "adept_human_short-overturn", "adept_human_long-overturn", "adept_human_visible-discontinuous", "adept_human_invisible-discontinuous", "adept_human_delay", "adept_human_block", ) # ----------------------------------------------------------------------------- # Model # ----------------------------------------------------------------------------- _C.MODEL = CfgNode() _C.MODEL.META_ARCHITECTURE = "PARTICLE_FILTER" # Particles to be used in the particle filter _C.MODEL.N_PARTICLES = 128 # Threshold for minimal area for an objects to be considered visible _C.MODEL.AREA_THRESHOLD = 200. # ----------------------------------------------------------------------------- # Dynamics Model # ----------------------------------------------------------------------------- _C.MODEL.STEP = CfgNode() _C.MODEL.STEP.PERTURBATION = CfgNode() # Whether to perturb the objects _C.MODEL.STEP.PERTURBATION.TO_PERTURB = True # Sigma in the velocity term _C.MODEL.STEP.PERTURBATION.VELOCITY_SIGMA = [.01, .06] _C.MODEL.STEP.PERTURBATION.SCALE_SIGMA = .0005 # Sigma in the location term _C.MODEL.STEP.PERTURBATION.LOCATION_SIGMA = [.01, .06] # Sigma in the velocity term, multiplicative _C.MODEL.STEP.PERTURBATION.VELOCITY_LAMBDA = [.01, .06] # ----------------------------------------------------------------------------- # Magic in the dynamics model # ----------------------------------------------------------------------------- _C.MODEL.STEP.MAGIC = CfgNode() # Whether to use magic _C.MODEL.STEP.MAGIC.USE_MAGIC = True # The probability to disappear _C.MODEL.STEP.MAGIC.DISAPPEAR_PROBABILITY = .02 # The penalty for magically disappearing _C.MODEL.STEP.MAGIC.DISAPPEAR_PENALTY = 10. # The probability for magically stopping _C.MODEL.STEP.MAGIC.STOP_PROBABILITY = .02 # The penalty for magically stopping _C.MODEL.STEP.MAGIC.STOP_PENALTY = 1. # The probability for magically accelerating _C.MODEL.STEP.MAGIC.ACCELERATE_PROBABILITY = .04 # The penalty for magically accelerating _C.MODEL.STEP.MAGIC.ACCELERATE_PENALTY = 1. # The magnitude for magically accelerating _C.MODEL.STEP.MAGIC.ACCELERATE_LAMBDA = 1.5 # ----------------------------------------------------------------------------- # Particle filter # ----------------------------------------------------------------------------- # The period for particle filter to resample _C.MODEL.RESAMPLE = CfgNode() # Resample every period _C.MODEL.RESAMPLE.PERIOD = 1 # Scaling on nll _C.MODEL.RESAMPLE.FACTOR = 1. # ----------------------------------------------------------------------------- # Mass sampler # ----------------------------------------------------------------------------- _C.MODEL.MASS = CfgNode() # Whether to sample mass _C.MODEL.MASS.TO_SAMPLE_MASS = False # The log mean of mass _C.MODEL.MASS.LOG_MASS_MU = 0 # The log stdev of mass _C.MODEL.MASS.LOG_MASS_SIGMA = 1 # ----------------------------------------------------------------------------- # Observation Model # ----------------------------------------------------------------------------- _C.MODEL.UPDATING = CfgNode() _C.MODEL.UPDATING.MATCHED = CfgNode() # Loss for matched object updating _C.MODEL.UPDATING.MATCHED.LOSS = "Smoothed_L_Half" # Sigma in the location term _C.MODEL.UPDATING.MATCHED.LOCATION_SIGMA = .2 # Sigma in the velocity term _C.MODEL.UPDATING.MATCHED.VELOCITY_SIGMA = .2 _C.MODEL.UPDATING.MATCHED.SCALE_SIGMA = .05 _C.MODEL.UPDATING.UNMATCHED_BELIEF = CfgNode() # Base Penalty coefficient for unseen object _C.MODEL.UPDATING.UNMATCHED_BELIEF.BASE_PENALTY = 1. # Penalty coefficient for unseen object w.r.t. mask area shown _C.MODEL.UPDATING.UNMATCHED_BELIEF.MASK_PENALTY = .0001 _C.MODEL.UPDATING.UNMATCHED_OBSERVATION = CfgNode() # Penalty for object appearing _C.MODEL.UPDATING.UNMATCHED_OBSERVATION.PENALTY = .02 _C.MODEL.UPDATING.UNMATCHED_OBSERVATION.MAX_PENALTY = 12. _C.MODEL.MATCHER = CfgNode() # PENALTY FOR MISMATCHED OBJECT TYPES, ONLY BETWEEN OCCLUDER AND OTHER _C.MODEL.MATCHER.TYPE_PENALTY = 10. # PENALTY FOR MISMATCHED OBJECT COLOR _C.MODEL.MATCHER.COLOR_PENALTY = 12. # PENALTY FOR MISMATCHED OBJECT WHEN THEY ARE AFAR _C.MODEL.MATCHER.DISTANCE_PENALTY = 14. if _C.VERSION == "intphys-adept" else 20. # THE THRESHOLD FOR OBJECT BEING AFAR _C.MODEL.MATCHER.DISTANCE_THRESHOLD = 2. # THE BASE PENALTY BETWEEN PLACEHOLDER AND OBJECTS _C.MODEL.MATCHER.BASE_PENALTY = 8. # when more than 5 objects creating more objects should not happen _C.MODEL.MATCHER.BASE_PENALTY_HIGH = 16 return _C
def get_dynamics_cfg(dataset_base_name): _C = CfgNode() _C.DEBUG = False _C.TYPE = "dynamics" _C.DATASETS = CfgNode() # _C.DATASETS.USE_PREDICTED_ATTRIBUTES = True _C.DATASETS.BASE_NAME = dataset_base_name _C.DATALOADER = CfgNode() _C.DATALOADER.NUM_WORKERS = 4 _C.DATALOADER.BATCH_SIZE = 15 _C.MODEL = CfgNode() _C.MODEL.ARCHITECTURE = "interaction" _C.MODEL.RNN_NUM_LAYERS = 6 _C.MODEL.DROP_OUT = 0.2 _C.MODEL.HIDDEN_SIZE = 300 _C.SOLVER = CfgNode() _C.SOLVER.BASE_LR = 0.001 _C.SOLVER.BIAS_LR_FACTOR = 2 _C.SOLVER.OPT_TYPE = "Adam" _C.SOLVER.MOMENTUM = 0.996 _C.SOLVER.ADAM_BETA = 0.9999427846237621 _C.SOLVER.WEIGHT_DECAY = 0.0005 _C.SOLVER.WEIGHT_DECAY_BIAS = 0 _C.SOLVER.GAMMA = 0.5 _C.SOLVER.STEPS = (999999, 999999) _C.SOLVER.WARMUP_FACTOR = 1.0 / 3 _C.SOLVER.WARMUP_ITERS = 500 _C.SOLVER.WARMUP_METHOD = "linear" _C.SOLVER.MAX_TIME_SECS = 999999999 # Print metrics every _ seconds _C.SOLVER.PRINT_METRICS_TIME = 180 #TODO: set back to 180 # write to tensorboard summary every_ secconds _C.SOLVER.TENSORBOARD_SECS = 1 # Checkpoint every _ seconds _C.SOLVER.CHECKPOINT_SECS = 1200 # Run validation every _ seconds _C.SOLVER.VALIDATION_SECS = 60 #TODO: change back to 300 _C.SOLVER.VALIDATION_MAX_SECS = 9999 if _C.DATASETS.BASE_NAME == "intphys": _C.DATASETS.TRAIN = ("intphys_val", ) _C.DATASETS.TEST = ( "intphys_dev_O1", "intphys_dev_O2", "intphys_dev_O3", # "intphys_dev-meta_O1", # "intphys_dev-meta_O2", # "intphys_dev-meta_O3" ) _C.ATTRIBUTES_KEYS = ("pred_attr_401469", "pred_attr_003227") elif _C.DATASETS.BASE_NAME == "adept": _C.ATTRIBUTES_KEYS = ( "attributes", # "pred_attr_00650", "pred_attr_43044", # 'pred_attr_10580', # "pred_attr_18377", # "pred_attr_34216" ) _C.DATASETS.TRAIN = ("adept_train", ) _C.DATASETS.TEST = ( "adept_val", # "adept_train", # "adept_human_create", # "adept_human_vanish", # "adept_human_short-overturn", # "adept_human_long-overturn", # "adept_human_visible-discontinuous", # "adept_human_invisible-discontinuous", # "adept_human_delay", # "adept_human_block", ) return _C