コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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