Detic / detic /config.py
AK391
files
159f437
# Copyright (c) Facebook, Inc. and its affiliates.
from detectron2.config import CfgNode as CN
def add_detic_config(cfg):
_C = cfg
_C.WITH_IMAGE_LABELS = False # Turn on co-training with classification data
# Open-vocabulary classifier
_C.MODEL.ROI_BOX_HEAD.USE_ZEROSHOT_CLS = False # Use fixed classifier for open-vocabulary detection
_C.MODEL.ROI_BOX_HEAD.ZEROSHOT_WEIGHT_PATH = 'datasets/metadata/lvis_v1_clip_a+cname.npy'
_C.MODEL.ROI_BOX_HEAD.ZEROSHOT_WEIGHT_DIM = 512
_C.MODEL.ROI_BOX_HEAD.NORM_WEIGHT = True
_C.MODEL.ROI_BOX_HEAD.NORM_TEMP = 50.0
_C.MODEL.ROI_BOX_HEAD.IGNORE_ZERO_CATS = False
_C.MODEL.ROI_BOX_HEAD.USE_BIAS = 0.0 # >= 0: not use
_C.MODEL.ROI_BOX_HEAD.MULT_PROPOSAL_SCORE = False # CenterNet2
_C.MODEL.ROI_BOX_HEAD.USE_SIGMOID_CE = False
_C.MODEL.ROI_BOX_HEAD.PRIOR_PROB = 0.01
_C.MODEL.ROI_BOX_HEAD.USE_FED_LOSS = False # Federated Loss
_C.MODEL.ROI_BOX_HEAD.CAT_FREQ_PATH = \
'datasets/metadata/lvis_v1_train_cat_info.json'
_C.MODEL.ROI_BOX_HEAD.FED_LOSS_NUM_CAT = 50
_C.MODEL.ROI_BOX_HEAD.FED_LOSS_FREQ_WEIGHT = 0.5
# Classification data configs
_C.MODEL.ROI_BOX_HEAD.IMAGE_LABEL_LOSS = 'max_size' # max, softmax, sum
_C.MODEL.ROI_BOX_HEAD.IMAGE_LOSS_WEIGHT = 0.1
_C.MODEL.ROI_BOX_HEAD.IMAGE_BOX_SIZE = 1.0
_C.MODEL.ROI_BOX_HEAD.ADD_IMAGE_BOX = False # Used for image-box loss and caption loss
_C.MODEL.ROI_BOX_HEAD.WS_NUM_PROPS = 128 # num proposals for image-labeled data
_C.MODEL.ROI_BOX_HEAD.WITH_SOFTMAX_PROP = False # Used for WSDDN
_C.MODEL.ROI_BOX_HEAD.CAPTION_WEIGHT = 1.0 # Caption loss weight
_C.MODEL.ROI_BOX_HEAD.NEG_CAP_WEIGHT = 0.125 # Caption loss hyper-parameter
_C.MODEL.ROI_BOX_HEAD.ADD_FEATURE_TO_PROP = False # Used for WSDDN
_C.MODEL.ROI_BOX_HEAD.SOFTMAX_WEAK_LOSS = False # Used when USE_SIGMOID_CE is False
_C.MODEL.ROI_HEADS.MASK_WEIGHT = 1.0
_C.MODEL.ROI_HEADS.ONE_CLASS_PER_PROPOSAL = False # For demo only
# Caption losses
_C.MODEL.CAP_BATCH_RATIO = 4 # Ratio between detection data and caption data
_C.MODEL.WITH_CAPTION = False
_C.MODEL.SYNC_CAPTION_BATCH = False # synchronize across GPUs to enlarge # "classes"
# dynamic class sampling when training with 21K classes
_C.MODEL.DYNAMIC_CLASSIFIER = False
_C.MODEL.NUM_SAMPLE_CATS = 50
# Different classifiers in testing, used in cross-dataset evaluation
_C.MODEL.RESET_CLS_TESTS = False
_C.MODEL.TEST_CLASSIFIERS = []
_C.MODEL.TEST_NUM_CLASSES = []
# Backbones
_C.MODEL.SWIN = CN()
_C.MODEL.SWIN.SIZE = 'T' # 'T', 'S', 'B'
_C.MODEL.SWIN.USE_CHECKPOINT = False
_C.MODEL.SWIN.OUT_FEATURES = (1, 2, 3) # FPN stride 8 - 32
_C.MODEL.TIMM = CN()
_C.MODEL.TIMM.BASE_NAME = 'resnet50'
_C.MODEL.TIMM.OUT_LEVELS = (3, 4, 5)
_C.MODEL.TIMM.NORM = 'FrozenBN'
_C.MODEL.TIMM.FREEZE_AT = 0
_C.MODEL.DATASET_LOSS_WEIGHT = []
# Multi-dataset dataloader
_C.DATALOADER.DATASET_RATIO = [1, 1] # sample ratio
_C.DATALOADER.USE_RFS = [False, False]
_C.DATALOADER.MULTI_DATASET_GROUPING = False # Always true when multi-dataset is enabled
_C.DATALOADER.DATASET_ANN = ['box', 'box'] # Annotation type of each dataset
_C.DATALOADER.USE_DIFF_BS_SIZE = False # Use different batchsize for each dataset
_C.DATALOADER.DATASET_BS = [8, 32] # Used when USE_DIFF_BS_SIZE is on
_C.DATALOADER.DATASET_INPUT_SIZE = [896, 384] # Used when USE_DIFF_BS_SIZE is on
_C.DATALOADER.DATASET_INPUT_SCALE = [(0.1, 2.0), (0.5, 1.5)] # Used when USE_DIFF_BS_SIZE is on
_C.DATALOADER.DATASET_MIN_SIZES = [(640, 800), (320, 400)] # Used when USE_DIFF_BS_SIZE is on
_C.DATALOADER.DATASET_MAX_SIZES = [1333, 667] # Used when USE_DIFF_BS_SIZE is on
_C.DATALOADER.USE_TAR_DATASET = False # for ImageNet-21K, directly reading from unziped files
_C.DATALOADER.TARFILE_PATH = 'datasets/imagenet/metadata-22k/tar_files.npy'
_C.DATALOADER.TAR_INDEX_DIR = 'datasets/imagenet/metadata-22k/tarindex_npy'
_C.SOLVER.USE_CUSTOM_SOLVER = False
_C.SOLVER.OPTIMIZER = 'SGD'
_C.SOLVER.BACKBONE_MULTIPLIER = 1.0 # Used in DETR
_C.SOLVER.CUSTOM_MULTIPLIER = 1.0 # Used in DETR
_C.SOLVER.CUSTOM_MULTIPLIER_NAME = [] # Used in DETR
# Deformable DETR
_C.MODEL.DETR = CN()
_C.MODEL.DETR.NUM_CLASSES = 80
_C.MODEL.DETR.FROZEN_WEIGHTS = '' # For Segmentation
_C.MODEL.DETR.GIOU_WEIGHT = 2.0
_C.MODEL.DETR.L1_WEIGHT = 5.0
_C.MODEL.DETR.DEEP_SUPERVISION = True
_C.MODEL.DETR.NO_OBJECT_WEIGHT = 0.1
_C.MODEL.DETR.CLS_WEIGHT = 2.0
_C.MODEL.DETR.NUM_FEATURE_LEVELS = 4
_C.MODEL.DETR.TWO_STAGE = False
_C.MODEL.DETR.WITH_BOX_REFINE = False
_C.MODEL.DETR.FOCAL_ALPHA = 0.25
_C.MODEL.DETR.NHEADS = 8
_C.MODEL.DETR.DROPOUT = 0.1
_C.MODEL.DETR.DIM_FEEDFORWARD = 2048
_C.MODEL.DETR.ENC_LAYERS = 6
_C.MODEL.DETR.DEC_LAYERS = 6
_C.MODEL.DETR.PRE_NORM = False
_C.MODEL.DETR.HIDDEN_DIM = 256
_C.MODEL.DETR.NUM_OBJECT_QUERIES = 100
_C.MODEL.DETR.USE_FED_LOSS = False
_C.MODEL.DETR.WEAK_WEIGHT = 0.1
_C.INPUT.CUSTOM_AUG = ''
_C.INPUT.TRAIN_SIZE = 640
_C.INPUT.TEST_SIZE = 640
_C.INPUT.SCALE_RANGE = (0.1, 2.)
# 'default' for fixed short/ long edge, 'square' for max size=INPUT.SIZE
_C.INPUT.TEST_INPUT_TYPE = 'default'
_C.FIND_UNUSED_PARAM = True
_C.EVAL_PRED_AR = False
_C.EVAL_PROPOSAL_AR = False
_C.EVAL_CAT_SPEC_AR = False
_C.IS_DEBUG = False
_C.QUICK_DEBUG = False
_C.FP16 = False
_C.EVAL_AP_FIX = False
_C.GEN_PSEDO_LABELS = False
_C.SAVE_DEBUG_PATH = 'output/save_debug/'