Esempio n. 1
0
def build_num_workers_cfg(node, key='num_workers'):
    if key not in node:
        node[key] = CN()
    node[key].train = 8
    node[key].val = 2
    node[key].test = 2
    return node[key]
Esempio n. 2
0
    def gen_default_cfg() -> CfgNode:
        cfg = CfgNode()
        cfg.KEY1 = "default"
        cfg.KEY2 = "default"
        cfg.EXPRESSION = [3.0]

        return cfg
Esempio n. 3
0
def create_conv_layers(node, key='layer'):
    if key not in node:
        node[key] = CN()

    node[key].num_layers = 5
    node[key].num_filters = 2048
    node[key].stride = 1
    return node[key]
Esempio n. 4
0
def create_mlp_config(node, key='mlp'):
    if key not in node:
        node[key] = CN()

    node[key].layers = (1024, 1024)
    node[key].activ_type = 'relu'
    node[key].lrelu_slope = 0.2
    node[key].norm_type = 'none'
    node[key].num_groups = 32
    node[key].dropout = 0.0
    node[key].init_type = 'xavier'
    node[key].gain = 0.01
    node[key].bias_init = 0.0

    return node[key]
Esempio n. 5
0
def get_config_from_args(args=None):
    """
    Parses command line arguments and merges them with the defaults
    from the config file.

    Prepares experiment directories.

    Args:
        args: args from a different argument parser than the default one.
    """
    # load the default base
    with open(os.path.join(get_project_root(), 'defaults', 'darts_defaults.yaml')) as f:
        config = CfgNode.load_cfg(f)
    
    if not args:
        args = parse_args()
    logger.info("Command line args: {}".format(args))
    
    config.eval_only = args.eval_only
    config.resume = args.resume
    
    # load config file
    config.merge_from_file(args.config_file)
    config.merge_from_list(args.opts)

    # prepare the output directories
    config.save = '{}/{}/{}/{}'.format(config.out_dir, config.dataset, config.optimizer, config.seed)
    config.data = "{}/data".format(get_project_root())

    create_exp_dir(config.save)
    create_exp_dir(config.save + "/search")     # required for the checkpoints
    create_exp_dir(config.save + "/eval")

    return config
Esempio n. 6
0
def setup(args):
    utils.init_seeds(20)
    cfg = config.clone()
    if len(args.model_config) > 0:
        cfg.merge_from_file(args.model_config)
    opt = CfgNode(args.__dict__)
    cfg.merge_from_other_cfg(opt)
    device = torch.device(cfg.DEVICE) if torch.cuda.is_available() else torch.device('cpu')
    cfg.update({'DEVICE': device})
    model = model_factory.create_model(cfg)
    dataloader = create_dataloader(cfg.DATASET.PATH, cfg,
                                   TrainAugmentation(cfg.INPUT_SIZE[0], mean=cfg.DATASET.MEAN),
                                   is_training=True)[0]

    test_dataloader = create_dataloader(cfg.DATASET.PATH, cfg,
                                   TestTransform(cfg.INPUT_SIZE[0], mean=cfg.DATASET.MEAN),
                                   is_training=True, split='test')[0]
    model.train()
    model.to(cfg.DEVICE)
    nb = len(dataloader)
    max_step_burn_in = max(3 * nb, 1e3)  # burn-in iterations, max(3 epochs, 1k iterations)
    # solver = Solver(model, cfg, max_steps_burn_in=max_step_burn_in, apex=amp)
    solver = Solver(model, cfg)
    rtm3d_loss = RTM3DLoss(cfg)
    return model, (dataloader, test_dataloader), solver, rtm3d_loss, cfg
Esempio n. 7
0
def get_cfg(cfg_filename: str, allow_unsafe=True) -> CfgNode:
    """
    Get a copy of the default config.

    Returns:
        a mydl CfgNode instance.
    """

    loaded_cfg = _CfgNode.load_yaml_with_base(cfg_filename,
                                              allow_unsafe=allow_unsafe)

    # from .defaults import _C

    meta_arch = loaded_cfg['MODEL']['META_ARCHITECTURE']

    if meta_arch == 'ProteinResnet':
        # protein.py needs to import CfgNode
        from .protein import _C
    # elif meta_arch == 'some meta arch' :
    #   from .xxx import _C
    else:
        # defaults.py needs to import CfgNode
        from .defaults import _C

    return _C.clone()
Esempio n. 8
0
    def merge_from_file(self,
                        cfg_filename: str,
                        allow_unsafe: bool = True) -> None:
        loaded_cfg = _CfgNode.load_yaml_with_base(cfg_filename,
                                                  allow_unsafe=allow_unsafe)
        loaded_cfg = type(self)(loaded_cfg)

        # defaults.py needs to import CfgNode
        self.merge_from_other_cfg(loaded_cfg)
Esempio n. 9
0
 def __init__(self, cfg: CfgNode, dataset_name: str, trainer: DefaultTrainer, steps: int=10, ndata: int=5):
     super().__init__()
     self.cfg = cfg.clone()
     self.cfg.DATASETS.TRAIN = (dataset_name, )
     self._loader = iter(build_detection_train_loader(self.cfg))
     self.trainer = trainer
     self.steps = steps
     self.ndata = ndata
     self.loss_dict = {}
     self.data_time = 0
Esempio n. 10
0
    def merge_from_file(self,
                        cfg_filename: str,
                        allow_unsafe: bool = True) -> None:
        assert PathManager.isfile(
            cfg_filename), f"Config file '{cfg_filename}' does not exist!"
        loaded_cfg = _CfgNode.load_yaml_with_base(cfg_filename,
                                                  allow_unsafe=allow_unsafe)
        loaded_cfg = type(self)(loaded_cfg)

        self.merge_from_other_cfg(loaded_cfg)
Esempio n. 11
0
def configure(args):
    utils.init_seeds(20)
    cfg = config.clone()
    if len(args.model_config) > 0:
        cfg.merge_from_file(args.model_config)
    opt = CfgNode(args.__dict__)
    cfg.merge_from_other_cfg(opt)
    if cfg.dist_url == "env://" and cfg.world_size == -1:
        cfg.world_size = int(os.environ["WORLD_SIZE"])

    cfg.distributed = cfg.world_size > 1 or cfg.multiprocessing_distributed
    cfg.ngpus_per_node = torch.cuda.device_count()
    return cfg
Esempio n. 12
0
def create_subsample_layer(node,
                           num_layers=3,
                           key='layer',
                           kernel_size=3,
                           stride=2):
    if key not in node:
        node[key] = CN()

    node[key].num_filters = (512, ) * num_layers
    node[key].norm_type = 'bn'
    node[key].activ_type = 'relu'
    node[key].dim = 2
    node[key].kernel_sizes = [kernel_size] * len(node[key].num_filters)
    node[key].strides = [stride] * len(node[key].num_filters)
    node[key].padding = 1
    return node[key]
Esempio n. 13
0
def _create_gradient_clipper(cfg: CfgNode) -> _GradientClipper:
    cfg = cfg.clone()

    def clip_grad_norm(p: _GradientClipperInput):
        torch.nn.utils.clip_grad_norm_(p, cfg.CLIP_VALUE, cfg.NORM_TYPE)

    def clip_grad_value(p: _GradientClipperInput):
        torch.nn.utils.clip_grad_value_(p, cfg.CLIP_VALUE)

    _GRADIENT_CLIP_TYPE_TO_CLIPPER = {
        GradientClipType.VALUE: clip_grad_value,
        GradientClipType.NORM: clip_grad_norm,
    }
    return _GRADIENT_CLIP_TYPE_TO_CLIPPER[GradientClipType(cfg.CLIP_TYPE)]
Esempio n. 14
0
def add_custom_config(_C):
    # Knowledge distillation
    _C.KD = CfgNode()

    # If True enable KD, else skip KD.
    _C.KD.ENABLE = False

    # Teacher's config
    _C.KD.CONFIG = ""

    # Alpha
    _C.KD.ALPHA = 0.95

    # Temperature
    _C.KD.TEMPERATURE = 6

    # Teacher's config
    _C.KD.CONFIG = "configs/Kinetics/SLOWFAST_8x8_R50.yaml"

    # Path to the checkpoint to load the initial weight.
    _C.KD.CHECKPOINT_FILE_PATH = ""

    # Checkpoint types include `caffe2` or `pytorch`.
    _C.KD.CHECKPOINT_TYPE = "pytorch"

    _C.KD.TEACHER_TRANS_FUNC = 'bottleneck_transform'

    # TSM
    _C.TSM = CfgNode()

    # n_div for TSM
    _C.TSM.N_DIV = [[8, 8], [8, 8], [8, 8], [8, 8]]

    # fusion n_div
    _C.TSM.FUSION_N_DIV = [8, 8, 8, 8]

    _C.TEST.CLASS_LIST = 'filenames/kinetics-40'
Esempio n. 15
0
    def merge_from_file(
        self, cfg_filename: str, allow_unsafe: bool = True
    ) -> None:
        loaded_cfg = _CfgNode.load_yaml_with_base(
            cfg_filename, allow_unsafe=allow_unsafe
        )
        loaded_cfg = type(self)(loaded_cfg)

        # defaults.py needs to import CfgNode
        from .defaults import _CC as _C

        latest_ver = _C.VERSION
        assert (
            latest_ver == self.VERSION
        ), "CfgNode.merge_from_file is only allowed on a config of latest version!"

        logger = logging.getLogger(__name__)

        loaded_ver = loaded_cfg.get("VERSION", None)
        if loaded_ver is None:
            from .compat import guess_version

            loaded_ver = guess_version(loaded_cfg, cfg_filename)
        assert (
            loaded_ver <= self.VERSION
        ), "Cannot merge a v{} config into a v{} config.".format(
            loaded_ver, self.VERSION
        )

        if loaded_ver == self.VERSION:
            self.merge_from_other_cfg(loaded_cfg)
        else:
            # compat.py needs to import CfgNode
            from .compat import downgrade_config, upgrade_config

            logger.warning(
                "Loading an old v{} config file '{}' by automatically upgrading to v{}. "
                "See docs/CHANGELOG.md for instructions to update your files.".format(
                    loaded_ver, cfg_filename, self.VERSION
                )
            )
            # To convert, first obtain a full config at an old version
            old_self = downgrade_config(self, to_version=loaded_ver)
            old_self.merge_from_other_cfg(loaded_cfg)
            new_config = upgrade_config(old_self)
            self.clear()
            self.update(new_config)
Esempio n. 16
0
from fvcore.common.config import CfgNode as CN
_C = CN()
_C.MODEL = CN()
_C.MODEL.RESNETS = CN()

_C.MODEL.RESNETS.DEPTH = 50
_C.MODEL.RESNETS.OUT_FEATURES = [
    "res4"
]  # res4 for C4 backbone, res2..5 for FPN backbone

# Number of groups to use; 1 ==> ResNet; > 1 ==> ResNeXt
_C.MODEL.RESNETS.NUM_GROUPS = 1

# Options: FrozenBN, GN, "SyncBN", "BN"
_C.MODEL.RESNETS.NORM = "BN"

# Baseline width of each group.
# Scaling this parameters will scale the width of all bottleneck layers.
_C.MODEL.RESNETS.WIDTH_PER_GROUP = 64

# Place the stride 2 conv on the 1x1 filter
# Use True only for the original MSRA ResNet; use False for C2 and Torch models
_C.MODEL.RESNETS.STRIDE_IN_1X1 = True

# Apply dilation in stage "res5"
_C.MODEL.RESNETS.RES5_DILATION = 1

# Output width of res2. Scaling this parameters will scale the width of all 1x1 convs in ResNet
# For R18 and R34, this needs to be set to 64
_C.MODEL.RESNETS.RES2_OUT_CHANNELS = 256
_C.MODEL.RESNETS.STEM_OUT_CHANNELS = 64
Esempio n. 17
0
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.

"""Configs."""
from fvcore.common.config import CfgNode

# -----------------------------------------------------------------------------
# Config definition
# -----------------------------------------------------------------------------
_C = CfgNode()


# ---------------------------------------------------------------------------- #
# Batch norm options
# ---------------------------------------------------------------------------- #
_C.BN = CfgNode()

# BN epsilon.
_C.BN.EPSILON = 1e-5

# BN momentum.
_C.BN.MOMENTUM = 0.1

# Precise BN stats.
_C.BN.USE_PRECISE_STATS = False

# Number of samples use to compute precise bn.
_C.BN.NUM_BATCHES_PRECISE = 200

# Weight decay value that applies on BN.
_C.BN.WEIGHT_DECAY = 0.0
Esempio n. 18
0
from copy import deepcopy
#  from yacs.config import CfgNode as CN
from fvcore.common.config import CfgNode as CN

_C = CN()

_C.stages_to_penalize = [-1]
_C.stages_to_regularize = [-1]

_C.body_joints_2d = CN()
_C.body_joints_2d.type = 'keypoints'
_C.body_joints_2d.robustifier = 'none'
_C.body_joints_2d.norm_type = 'l1'
_C.body_joints_2d.rho = 100.0
_C.body_joints_2d.beta = 5.0 / 100 * 2
_C.body_joints_2d.size_average = True
_C.body_joints_2d.weight = 1.0
_C.body_joints_2d.enable = 0

_C.hand_joints_2d = CN()
_C.hand_joints_2d.type = 'keypoints'
_C.hand_joints_2d.norm_type = 'l1'
_C.hand_joints_2d.robustifier = 'none'
_C.hand_joints_2d.rho = 100.0
_C.hand_joints_2d.beta = 5.0 / 100 * 2
_C.hand_joints_2d.size_average = True
_C.hand_joints_2d.weight = 1.0
_C.hand_joints_2d.enable = 0

_C.face_joints_2d = CN()
_C.face_joints_2d.type = 'keypoints'
Esempio n. 19
0
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
"""Configs."""
from fvcore.common.config import CfgNode

from . import custom_config

# -----------------------------------------------------------------------------
# Config definition
# -----------------------------------------------------------------------------
_C = CfgNode()

# ---------------------------------------------------------------------------- #
# Batch norm options
# ---------------------------------------------------------------------------- #
_C.BN = CfgNode()

# BN epsilon.
_C.BN.EPSILON = 1e-5

# BN momentum.
_C.BN.MOMENTUM = 0.1

# Precise BN stats.
_C.BN.USE_PRECISE_STATS = False

# Number of samples use to compute precise bn.
_C.BN.NUM_BATCHES_PRECISE = 200

# Weight decay value that applies on BN.
_C.BN.WEIGHT_DECAY = 0.0
    def __init__(self,
                 config_file: Optional[str] = None,
                 override_list: List[Any] = []):
        _C = CN()

        # Random seed for NumPy and PyTorch, important for reproducibility.
        _C.RANDOM_SEED = 0
        # Train with Automatic Mixed Precision (native PyTorch).
        _C.AMP = True
        # Set CUDNN deterministic flag (torch.backends.cudnn.deterministic).
        # Setting this will ensure exact results on every run at the cost of
        # little slowdown. Good for debugging.
        _C.CUDNN_DETERMINISTIC = False
        # Set CUDNN benchmark flag (torch.backends.cudnn.benchmark). Enables
        # CUDNN to select fastest implementation for operations based on GPU.
        # May change results (in decimals) on different hardware, but faster
        # to train. Turn off while debugging.
        _C.CUDNN_BENCHMARK = True

        # ---------------------------------------------------------------------
        #   Data paths and parameters related to dataloading.
        # ---------------------------------------------------------------------
        _C.DATA = CN()

        # Path to the dataset root, which structure as per README. Path is
        # assumed to be relative to project root.
        _C.DATA.ROOT = "datasets/coco"
        # Path to .model file generated by ``sentencepiece``.
        _C.DATA.TOKENIZER_MODEL = "datasets/vocab/coco_10k.model"

        # Handy config params for vocab size and indices of special tokens.
        # While these can be picked up from the tokenizer, having these in
        # the config makes it easy to create a model without instantiating too
        # many tokenizer instances (especially when not needed, e.g. model zoo).
        # These must match according to what's present in ``TOKENIZER_VOCAB``
        # and ``TOKENIZER_MODEL`` above.
        _C.DATA.VOCAB_SIZE = 10000
        # Index of out-of-vocabulary (and padding) token.
        _C.DATA.UNK_INDEX = 0
        # Index of the start-of-sentence [SOS] token.
        _C.DATA.SOS_INDEX = 1
        # Index of the end-of-sentence [EOS] token.
        _C.DATA.EOS_INDEX = 2
        # Index of the word masking token. While not used for captioning, having
        # this extra token makes it possible to train an MLM model without
        # re-creating a new vocab mapping.
        _C.DATA.MASK_INDEX = 3

        # Size of the image (square) to crop from original input image.
        _C.DATA.IMAGE_CROP_SIZE = 224
        # Maximum length of input caption (number of tokens).
        # Longer captions will be truncated up to this length.
        _C.DATA.MAX_CAPTION_LENGTH = 30

        # COCO Captions has five captions per image. If ``True``, training will
        # use one random caption per image (data efficiency ablations).
        _C.DATA.USE_SINGLE_CAPTION = False
        # Percentage of dataset to use for training (data efficiency ablations).
        _C.DATA.USE_PERCENTAGE = 100.0

        # List of image transforms (pre-processing and data augmentation) to be
        # applied sequentially (always or randomly) during training and
        # validation. Refer ``virtex/facetories.py`` for all possible transforms.
        _C.DATA.IMAGE_TRANSFORM_TRAIN = [
            "random_resized_crop",
            "horizontal_flip",
            "color_jitter",
            "normalize",
        ]
        _C.DATA.IMAGE_TRANSFORM_VAL = [
            "smallest_resize",
            "center_crop",
            "normalize",
        ]

        # Hyper-parameters for masked LM pretraining task. These are only used
        # when ``MODEL.NAME`` is "masked_lm".
        _C.DATA.MASKED_LM = CN()
        # Fraction of tokens to choose for masking, this must be less than 1.
        _C.DATA.MASKED_LM.MASK_PROPORTION = 0.15
        # Probability to replace chosen tokens with [MASK] token.
        _C.DATA.MASKED_LM.MASK_PROBABILITY = 0.85
        # Probability to replace chosen tokens with a random token.
        _C.DATA.MASKED_LM.REPLACE_PROBABILITY = 0.10

        # ---------------------------------------------------------------------
        #   Model architecture: visual backbone and textual head.
        # ---------------------------------------------------------------------
        _C.MODEL = CN()

        # Name of model, based on pretraining task.
        # Possible choices: {"token_classification", "multilabel_classification",
        # "captioning", "bicaptioning", "masked_lm", "virtex"}
        _C.MODEL.NAME = "virtex"

        _C.MODEL.VISUAL = CN()
        # Name of visual backbone. Possible choices: {"blind", "torchvision"}
        # Models from torchvision can be specified as shown below.
        _C.MODEL.VISUAL.NAME = "torchvision::resnet50"
        # Number of channels in pooled spatial features of visual backbone.
        _C.MODEL.VISUAL.FEATURE_SIZE = 2048
        # Whether to load ImageNet pretrained weights into visual backbone.
        _C.MODEL.VISUAL.PRETRAINED = False
        # Whether to keep visual backbone frozen and train only textual head.
        _C.MODEL.VISUAL.FROZEN = False

        _C.MODEL.TEXTUAL = CN()
        # Name of textual head. Set to "none" for MODEL.NAME = "*_classification".
        # Possible choices: {"transformer_postnorm", "transformer_prenorm"}.
        # Architectural hyper-parameters are specified as shown above.
        _C.MODEL.TEXTUAL.NAME = "transformer_postnorm::L1_H2048_A32_F8192"
        # L = Number of layers in the transformer.
        # H = Hidden size of the transformer (embeddings, attention features).
        # A = Number of attention heads in the transformer.
        # F = Size of feedforward layers in the transformer.
        # Typically, we have (A = H / 64) and (F = 4 * H).

        # Dropout probability for embedding, hidden features in textual head.
        _C.MODEL.TEXTUAL.DROPOUT = 0.1

        # ---------------------------------------------------------------------
        #   Optimization hyper-parameters, default values are for pretraining
        #   our best model on bicaptioning task (COCO Captions).
        # ---------------------------------------------------------------------
        _C.OPTIM = CN()

        # Name of optimizer to use. Supported values: {"sgd", "adamw"}.
        # AdamW uses default (beta1, beta2) values from PyTorch.
        _C.OPTIM.OPTIMIZER_NAME = "sgd"
        # Momentum co-efficient for SGD. Ignored for AdamW.
        _C.OPTIM.SGD_MOMENTUM = 0.9
        # Weight decay co-efficient for the optimizer.
        _C.OPTIM.WEIGHT_DECAY = 0.0001
        # Regex pattern of params for which there will be no weight decay.
        _C.OPTIM.NO_DECAY = ".*textual.(embedding|transformer).*(norm.*|bias)"
        # Max gradient norm for clipping to avoid exploding gradients.
        _C.OPTIM.CLIP_GRAD_NORM = 10

        # Wrap our optimizer with Lookahead (https://arxiv.org/abs/1907.08610).
        _C.OPTIM.USE_LOOKAHEAD = False
        _C.OPTIM.LOOKAHEAD_ALPHA = 0.5
        _C.OPTIM.LOOKAHEAD_STEPS = 5

        # We set different learning rates for CNN (visual backbone) and rest of
        # the model. CNN LR is typically much higher for training from scratch.
        # Both LRs undergo same warmup-decay schedules.

        # Total batch size (will be distributed evenly across GPUs).
        _C.OPTIM.BATCH_SIZE = 256
        # Max learning rate for CNN (visual backbone).
        _C.OPTIM.CNN_LR = 0.2
        # Max learning rate for rest of the model.
        _C.OPTIM.LR = 0.001
        # Number of iterations to train for, batches are randomly sampled.
        _C.OPTIM.NUM_ITERATIONS = 500000

        # Number of steps at the start of training for linear LR warmup.
        _C.OPTIM.WARMUP_STEPS = 10000
        # Learning rate annealing schedule for decay after warmup.
        # Possible choices: {"none", "linear", "cosine", "multistep"}.
        _C.OPTIM.LR_DECAY_NAME = "cosine"
        # Steps to decay LR for "multistep" schedule.
        _C.OPTIM.LR_STEPS = []
        # Factor to multiply with LR for "multistep" schedule.
        _C.OPTIM.LR_GAMMA = 0.1

        # Override parameter values from YAML file first, then from override
        # list, then add derived params.
        self._C = _C
        if config_file is not None:
            self._C.merge_from_file(config_file)
        self._C.merge_from_list(override_list)

        self.add_derived_params()

        # Make an instantiated object of this class immutable.
        self._C.freeze()
Esempio n. 21
0
    def __init__(self,
                 config_file: Optional[str] = None,
                 override_list: List[Any] = []):
        _C = CN()
        _C.VALID_IMAGES = [
            'CXR1576_IM-0375-2001.png', 'CXR1581_IM-0378-2001.png',
            'CXR3177_IM-1497-2001.png', 'CXR2585_IM-1082-1001.png',
            'CXR1125_IM-0082-1001.png', 'CXR3_IM-1384-2001.png',
            'CXR1565_IM-0368-1001.png', 'CXR1105_IM-0072-1001-0001.png',
            'CXR2874_IM-1280-1001.png', 'CXR1886_IM-0574-1001.png'
        ]

        _C.MODELS = [{
            'resnet18': (pretrainedmodels.resnet18(pretrained=None), 512, 224),
            'resnet50':
            (pretrainedmodels.resnet50(pretrained=None), 2048, 224),
            'resnet101':
            (pretrainedmodels.resnet101(pretrained=None), 2048, 224),
            'resnet152':
            (pretrainedmodels.resnet152(pretrained=None), 2048, 224),
            'inception_resnet_v2':
            (pretrainedmodels.inceptionresnetv2(pretrained=None), 1536, 299)
        }]

        # _C.MODELS_FEATURE_SIZE = {'resnet18':512, 'resnet50':2048, 'resnet101':2048, 'resnet152':2048,
        #                           'inception_v3':2048, 'inception_resnet_v2':1536}

        # Random seed for NumPy and PyTorch, important for reproducibility.
        _C.RANDOM_SEED = 42
        # Opt level for mixed precision training using NVIDIA Apex. This can be
        # one of {0, 1, 2}. Refer NVIDIA Apex docs for their meaning.
        _C.FP16_OPT = 2

        # Path to the dataset root, which structure as per README. Path is
        # assumed to be relative to project root.
        _C.IMAGE_PATH = '/netscratch/gsingh/MIMIC_CXR/DataSet/Indiana_Chest_XRay/Images_2'
        _C.TRAIN_JSON_PATH = '/netscratch/gsingh/MIMIC_CXR/DataSet/Indiana_Chest_XRay/iu_xray_train_2.json'
        _C.VAL_JSON_PATH = '/netscratch/gsingh/MIMIC_CXR/DataSet/Indiana_Chest_XRay/iu_xray_val_2.json'
        _C.TEST_JSON_PATH = '/netscratch/gsingh/MIMIC_CXR/DataSet/Indiana_Chest_XRay/iu_xray_test_2.json'
        _C.PRETRAINED_EMDEDDING = False
        # Path to .vocab file generated by ``sentencepiece``.
        _C.VOCAB_FILE_PATH = "/netscratch/gsingh/MIMIC_CXR/DataSet/Indiana_Chest_XRay/Vocab/indiana.vocab"
        # Path to .model file generated by ``sentencepiece``.
        _C.VOCAB_MODEL_PATH = "/netscratch/gsingh/MIMIC_CXR/DataSet/Indiana_Chest_XRay/Vocab/indiana.model"
        _C.VOCAB_SIZE = 3000
        _C.EPOCHS = 1024
        _C.BATCH_SIZE = 10
        _C.TEST_BATCH_SIZE = 100
        _C.ITERATIONS_PER_EPOCHS = 1
        _C.WEIGHT_DECAY = 1e-5
        _C.NUM_LABELS = 41
        _C.IMAGE_SIZE = 299
        _C.MAX_SEQUENCE_LENGTH = 130
        _C.DROPOUT_RATE = 0.1
        _C.D_HEAD = 64

        _C.TRAIN_DATASET_LENGTH = 25000
        _C.INFERENCE_TIME = False
        _C.COMBINED_N_LAYERS = 1
        _C.BEAM_SIZE = 50
        _C.PADDING_INDEX = 0
        _C.EOS_INDEX = 3
        _C.SOS_INDEX = 2
        _C.USE_BEAM_SEARCH = True
        _C.EXTRACTED_FEATURES = False
        _C.IMAGE_MODEL_PATH = '/netscratch/gsingh/MIMIC_CXR/Results/Image_Feature_Extraction/MIMIC_CXR_No_ES/model.pth'

        _C.EMBEDDING_DIM = 8192
        _C.CONTEXT_SIZE = 1024
        _C.LR_COMBINED = 1e-4
        _C.MAX_LR = 1e-1
        _C.SAVED_DATASET = False
        _C.MODEL_NAME = 'inception_resnet_v2'
        INIT_PATH = '/netscratch/gsingh/MIMIC_CXR/Results/Modified_Transformer/Indiana_15_10_2020_2/'
        _C.SAVED_DATASET_PATH_TRAIN = INIT_PATH + 'DataSet/train_dataloader.pth'
        _C.SAVED_DATASET_PATH_VAL = INIT_PATH + 'DataSet/val_dataloader.pth'
        _C.SAVED_DATASET_PATH_TEST = INIT_PATH + 'DataSet/test_dataloader.pth'

        _C.CHECKPOINT_PATH = INIT_PATH + 'CheckPoints'
        _C.MODEL_PATH = INIT_PATH + 'combined_model.pth'
        _C.MODEL_STATE_DIC = INIT_PATH + 'combined_model_state_dic.pth'
        _C.FIGURE_PATH = INIT_PATH + 'Graphs'
        _C.CSV_PATH = INIT_PATH
        _C.TEST_CSV_PATH = INIT_PATH + 'test_output_image_feature_input.json'
        self._C = _C
        if config_file is not None:
            self._C.merge_from_file(config_file)
        self._C.merge_from_list(override_list)

        self.add_derived_params()

        # Make an instantiated object of this class immutable.
        self._C.freeze()
from fvcore.common.config import CfgNode as CN

_C = CN()

_C.EVAL = CN(new_allowed=True)
_C.EVAL.MAX_CLICKS = 100
_C.EVAL.OUTPUT_PROBABILITY_THRESH = 0.5


def get_cfg_defaults():
  """Get a yacs CfgNode object with default values for my_project."""
  # Return a clone so that the defaults will not be altered
  # This is for the "local variable" use pattern
  return _C.clone()

Esempio n. 23
0
if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--model-config',
                        type=str,
                        default='./models/configs/rtm3d_dla34_kitti.yaml')
    parser.add_argument('--num-workers',
                        default=1,
                        type=int,
                        help='the num of threads for data.')
    args = parser.parse_args()
    # opt.config = utils.check_file(opt.config)  # check file
    cfg = config.clone()
    if len(args.model_config) > 0:
        cfg.merge_from_file(args.model_config)
    opt = CfgNode(args.__dict__)
    cfg.merge_from_other_cfg(opt)

    brg_mean = config.DATASET.MEAN
    dr = DatasetReader(config.DATASET.PATH, cfg,
                       TrainAugmentation(cfg.INPUT_SIZE[0], mean=brg_mean))
    dataloader, _, dr = create_dataloader(
        config.DATASET.PATH,
        cfg,
        transform=TrainAugmentation(cfg.INPUT_SIZE[0], mean=brg_mean),
        is_training=True)
    batch_size = min(1, len(dr))
    nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0,
              8])  # number of workers
    names = cfg.DATASET.OBJs
    colors = [[random.randint(0, 255) for _ in range(3)]
Esempio n. 24
0
from fvcore.common.config import CfgNode
from Archs_2D import Register

CONFIGS = CfgNode()
CONFIGS.INTENSOR_SHAPE = (288, 288)
CONFIGS.BATCH_SIZE = 4
CONFIGS.DEVICE = 'cuda'

CONFIGS.TRAINING = CfgNode()
CONFIGS.TRAINING.LOGDIR = './logdirs/shufflev2_retinanet'
CONFIGS.TRAINING.CHECKPOINT_MODE = 'START'  #['PRETRAINED', 'RESUME', 'START']
CONFIGS.TRAINING.CHECKPOINT_FILE = './pretrained/mobilenetv2_pretrained.pkl'

CONFIGS.DATASET = CfgNode()
CONFIGS.DATASET.PATH = './datasets/data/kitti'
CONFIGS.DATASET.MEAN = [95.87739305, 98.76049672, 93.83309082]

CONFIGS.DATALOADER = CfgNode()
CONFIGS.DATALOADER.SAMPLER_TRAIN = 'TrainingSampler'
# Solver
# ---------------------------------------------------------------------------- #
CONFIGS.SOLVER = CfgNode()

# See detectron2/solver/build.py for LR scheduler options
CONFIGS.SOLVER.LR_SCHEDULER_NAME = "WarmupMultiStepLR"

CONFIGS.SOLVER.MAX_ITER = 400000

CONFIGS.SOLVER.BASE_LR = 0.01

CONFIGS.SOLVER.MOMENTUM = 0.9
Esempio n. 25
0
def get_shapenet_cfg():

    cfg = CN()
    cfg.MODEL = CN()
    cfg.MODEL.BACKBONE = "resnet50"
    cfg.MODEL.VOXEL_ON = False
    cfg.MODEL.MESH_ON = False

    # ------------------------------------------------------------------------ #
    # Checkpoint
    # ------------------------------------------------------------------------ #
    cfg.MODEL.CHECKPOINT = ""  # path to checkpoint

    # ------------------------------------------------------------------------ #
    # Voxel Head
    # ------------------------------------------------------------------------ #
    cfg.MODEL.VOXEL_HEAD = CN()
    # The number of convs in the voxel head and the number of channels
    cfg.MODEL.VOXEL_HEAD.NUM_CONV = 0
    cfg.MODEL.VOXEL_HEAD.CONV_DIM = 256
    # Normalization method for the convolution layers. Options: "" (no norm), "GN"
    cfg.MODEL.VOXEL_HEAD.NORM = ""
    # The number of depth channels for the predicted voxels
    cfg.MODEL.VOXEL_HEAD.VOXEL_SIZE = 28
    cfg.MODEL.VOXEL_HEAD.LOSS_WEIGHT = 1.0
    cfg.MODEL.VOXEL_HEAD.CUBIFY_THRESH = 0.0
    # voxel only iterations
    cfg.MODEL.VOXEL_HEAD.VOXEL_ONLY_ITERS = 100
    ##
    cfg.MODEL.VOXEL_HEAD.TCONV_USE_BIAS = False
    cfg.MODEL.VOXEL_HEAD.LEAKY_VALUE = 0.2
    ##
    # ------------------------------------------------------------------------ #
    # Mesh Head
    # ------------------------------------------------------------------------ #
    cfg.MODEL.MESH_HEAD = CN()
    cfg.MODEL.MESH_HEAD.NAME = "VoxMeshHead"
    # Numer of stages
    cfg.MODEL.MESH_HEAD.NUM_STAGES = 1
    cfg.MODEL.MESH_HEAD.NUM_GRAPH_CONVS = 1  # per stage
    cfg.MODEL.MESH_HEAD.GRAPH_CONV_DIM = 256
    cfg.MODEL.MESH_HEAD.GRAPH_CONV_INIT = "normal"
    # Mesh sampling
    cfg.MODEL.MESH_HEAD.GT_NUM_SAMPLES = 5000
    cfg.MODEL.MESH_HEAD.PRED_NUM_SAMPLES = 5000
    # loss weights
    cfg.MODEL.MESH_HEAD.CHAMFER_LOSS_WEIGHT = 1.0
    cfg.MODEL.MESH_HEAD.NORMALS_LOSS_WEIGHT = 1.0
    cfg.MODEL.MESH_HEAD.EDGE_LOSS_WEIGHT = 1.0
    # Init ico_sphere level (only for when voxel_on is false)
    cfg.MODEL.MESH_HEAD.ICO_SPHERE_LEVEL = -1

    # ------------------------------------------------------------------------ #
    # Solver
    # ------------------------------------------------------------------------ #
    cfg.SOLVER = CN()
    cfg.SOLVER.LR_SCHEDULER_NAME = "constant"  # {'constant', 'cosine'}
    cfg.SOLVER.BATCH_SIZE = 32
    cfg.SOLVER.BATCH_SIZE_EVAL = 8
    cfg.SOLVER.NUM_EPOCHS = 25
    cfg.SOLVER.BASE_LR = 0.0001
    cfg.SOLVER.OPTIMIZER = "adam"  # {'sgd', 'adam'}
    cfg.SOLVER.MOMENTUM = 0.9
    cfg.SOLVER.WARMUP_ITERS = 500
    cfg.SOLVER.WARMUP_FACTOR = 0.1
    cfg.SOLVER.CHECKPOINT_PERIOD = 24949  # in iters
    cfg.SOLVER.LOGGING_PERIOD = 50  # in iters
    # stable training
    cfg.SOLVER.SKIP_LOSS_THRESH = 50.0
    cfg.SOLVER.LOSS_SKIP_GAMMA = 0.9

    # ------------------------------------------------------------------------ #
    # Datasets
    # ------------------------------------------------------------------------ #
    cfg.DATASETS = CN()
    cfg.DATASETS.NAME = "shapenet"

    # ------------------------------------------------------------------------ #
    # Misc options
    # ------------------------------------------------------------------------ #
    # Directory where output files are written
    cfg.OUTPUT_DIR = "./output"

    return cfg
Esempio n. 26
0
'''Configs'''

from fvcore.common.config import CfgNode

# -----------------------------------------------------------------------------
# Config definition
# -----------------------------------------------------------------------------
_C = CfgNode()

# -----------------------------------------------------------------------------
# Data options
# -----------------------------------------------------------------------------
_C.DATA = CfgNode()

_C.DATA.NUM_WORKERS = 0

_C.DATA.PIN_MEMORY = True

_C.DATA.ROOT = './.data'

# -----------------------------------------------------------------------------
# Training options
# -----------------------------------------------------------------------------
_C.TRAIN = CfgNode()

# Total mini-batch size.
_C.TRAIN.BATCH_SIZE = 128

# Maximal number of epochs.
_C.TRAIN.MAX_EPOCH = 300
Esempio n. 27
0
#!/usr/bin/env python3
# Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.

"""Configs."""
from fvcore.common.config import CfgNode

from . import custom_config

# -----------------------------------------------------------------------------
# Config definition
# -----------------------------------------------------------------------------
_C = CfgNode()

# ---------------------------------------------------------------------------- #
# Batch norm options
# ---------------------------------------------------------------------------- #
_C.BN = CfgNode()

# Precise BN stats.
_C.BN.USE_PRECISE_STATS = False

# Number of samples use to compute precise bn.
_C.BN.NUM_BATCHES_PRECISE = 200

# Weight decay value that applies on BN.
_C.BN.WEIGHT_DECAY = 0.0

# Norm type, options include `batchnorm`, `sub_batchnorm`, `sync_batchnorm`
_C.BN.NORM_TYPE = "batchnorm"

# Parameter for SubBatchNorm, where it splits the batch dimension into
Esempio n. 28
0
from fvcore.common.config import CfgNode
from Archs_3D import Register

CONFIGS = CfgNode()
CONFIGS.INTENSOR_SHAPE = (224, 224)
CONFIGS.BATCH_SIZE = 4
CONFIGS.DEVICE = 'cuda'

CONFIGS.TRAINING = CfgNode()
CONFIGS.TRAINING.LOGDIR = './logdirs/mobiv2_retinanet'
CONFIGS.TRAINING.EPOCHS = 700
CONFIGS.TRAINING.CHECKPOINT_MODE = 'PRETRAINED'  #['PRETRAINED', 'RESUME', 'START']
CONFIGS.TRAINING.CHECKPOINT_FILE = './pretrained/mobilenetv2_pretrained.pkl'

CONFIGS.DATASET = CfgNode()
CONFIGS.DATASET.PATH = './datasets/data/kitti'
CONFIGS.DATASET.MEAN = [95.87739305, 98.76049672, 93.83309082]
CONFIGS.DATASET.DIM_MEAN = [[1.52607842, 1.62858147, 3.88396124],
                            [2.20649159, 1.90197734, 5.07812564],
                            [3.25207685, 2.58505032, 10.10703568],
                            [1.76067766, 0.6602296, 0.84220464],
                            [1.27538462, 0.59506787, 0.80180995],
                            [1.73712792, 0.59677122, 1.76338868],
                            [3.52905882, 2.54368627, 16.09707843],
                            [1.9074177, 1.51386831, 3.57683128]]

CONFIGS.DATALOADER = CfgNode()
CONFIGS.DATALOADER.SAMPLER_TRAIN = 'TrainingSampler'
# Solver
# ---------------------------------------------------------------------------- #
CONFIGS.SOLVER = CfgNode()
Esempio n. 29
0
from fvcore.common.config import CfgNode as CN

_C = CN()

_C.TASK = 'classification'
_C.TRAIN_DIR = ('data/train', )
_C.VAL_DIR = ('data/val', )
_C.OUTPUT_DIR = 'baseline'
_C.EPOCH = 60
_C.BATCH_SIZE = 64
_C.MIXED_PRECISION = False
_C.QUANTIZATION_TRAINING = False
_C.TENSORBOARD = True
_C.MULTI_GPU = True

_C.MODEL = CN()
_C.MODEL.NAME = 'resnet50'
_C.MODEL.NUM_CLASSES = 3
_C.MODEL.CLASSES = (None, )

_C.MODEL.TEMPERATURE_SCALING = 1

_C.MODEL.AUTOML = False
_C.MODEL.AUTOML_TRIALS = 1000

_C.SOLVER = CN()
_C.SOLVER.NAME = 'sgd'
_C.SOLVER.LR = 0.0002
_C.SOLVER.WEIGHT_DECAY = 0.00001

_C.SOLVER.SCHEDULER = CN()
Esempio n. 30
0
    node.backbone.hrnet.stage2.subsample.strides = [2]

    node.backbone.hrnet.stage3.subsample = create_subsample_layer(
        node.backbone.hrnet.stage3, key='subsample', num_layers=1)
    node.backbone.hrnet.stage3.subsample.num_filters = [192, 384]
    node.backbone.hrnet.stage3.subsample.kernel_sizes = [3, 3]
    node.backbone.hrnet.stage3.subsample.strides = [2, 2]

    node.backbone.hrnet.final_conv = create_conv_layers(node.backbone.hrnet,
                                                        key='final_conv')
    node.backbone.hrnet.final_conv.num_filters = 2048

    return node.backbone


_C = CN()

# General

_C.num_gpus = 1
_C.local_rank = 0
_C.use_cuda = True
_C.log_file = '/tmp/logs/'

_C.output_folder = 'output'
_C.summary_folder = 'summaries'
_C.results_folder = 'results'
_C.code_folder = 'code'
_C.summary_steps = 100
_C.img_summary_steps = 100
_C.hd_img_summary_steps = 1000