dvlab-research / PanopticFCN

Fully Convolutional Networks for Panoptic Segmentation (CVPR2021 Oral)
Apache License 2.0
393 stars 53 forks source link

train with cityscapes datasets #36

Closed DejaYang closed 3 years ago

DejaYang commented 3 years ago

hi, would you like to show me the configs you use to train with cityscapes datasets? or, can you tell me the problems with my config file? thanks a lot.

yaml file MODEL: META_ARCHITECTURE: "PanopticFCN" WEIGHTS: "/mnt/lj/detectron2/projects/PanopticFCN/model_final.pth" MASK_ON: True PIXEL_MEAN: [123.675, 116.28, 103.53] PIXEL_STD: [1.0, 1.0, 1.0] RESNETS: DEPTH: 50 OUT_FEATURES: ["res2", "res3", "res4", "res5"] FPN: IN_FEATURES: ["res2", "res3", "res4", "res5"] FEATURE_ENCODER: DEFORM: True CONVS_DIM: 256 DATASETS: TRAIN: ("cityscapes_fine_panoptic_train",) TEST: ("cityscapes_fine_panoptic_val",) DATALOADER: FILTER_EMPTY_ANNOTATIONS: True SOLVER: BASE_LR: 0.02 WEIGHT_DECAY: 1e-4 LR_SCHEDULER_NAME: "WarmupPolyLR" POLY_LR_POWER: 0.9 WARMUP_ITERS: 1000 WARMUP_FACTOR: 0.001 WARMUP_METHOD: "linear" CLIP_GRADIENTS: ENABLED: True CLIP_VALUE: 35.0 IMS_PER_BATCH: 2 MAX_ITER: 270000 CHECKPOINT_PERIOD: 10000 INPUT: MIN_SIZE_TRAIN: (512, 768, 1024, 1280, 1536, 1792, 2048) MIN_SIZE_TRAIN_SAMPLING: "choice" MIN_SIZE_TEST: 1024 MAX_SIZE_TRAIN: 4096 MAX_SIZE_TEST: 2048 CROP: ENABLED: True TYPE: "absolute" SIZE: (512, 1024) VERSION: 2 OUTPUT_DIR: ./output/panoptic_fn

THING.NUM_CLASSES=8、STUFF.NUM_CLASSES=11、SEM_SEG_HEAD.NUM_CLASSES=11 , is it right?

def add_panopticfcn_config(cfg):
    """
    Add config for Panoptic FCN.
    """
    cfg.MODEL.TENSOR_DIM                 = 100
    cfg.MODEL.IGNORE_VALUE               = 255
    cfg.SOLVER.POLY_LR_POWER             = 0.9
    cfg.SOLVER.POLY_LR_CONSTANT_ENDING   = 0.0

    cfg.MODEL.SEMANTIC_FPN   = CN()
    cfg.MODEL.SEMANTIC_FPN.IN_FEATURES   = ["p2", "p3", "p4", "p5"]
    cfg.MODEL.SEMANTIC_FPN.CONVS_DIM     = 256
    cfg.MODEL.SEMANTIC_FPN.COMMON_STRIDE = 4
    cfg.MODEL.SEMANTIC_FPN.NORM          = "GN"

    cfg.MODEL.POSITION_HEAD   = CN()
    cfg.MODEL.POSITION_HEAD.NUM_CONVS       = 3
    cfg.MODEL.POSITION_HEAD.COORD           = False
    cfg.MODEL.POSITION_HEAD.CONVS_DIM       = 256
    cfg.MODEL.POSITION_HEAD.NORM            = "GN"
    cfg.MODEL.POSITION_HEAD.DEFORM          = True
    cfg.MODEL.POSITION_HEAD.THING = CN()
    cfg.MODEL.POSITION_HEAD.THING.CENTER_TYPE    = "mass"
    cfg.MODEL.POSITION_HEAD.THING.POS_NUM        = 7
    cfg.MODEL.POSITION_HEAD.THING.NUM_CLASSES    = 8
    cfg.MODEL.POSITION_HEAD.THING.BIAS_VALUE     = -2.19
    cfg.MODEL.POSITION_HEAD.THING.MIN_OVERLAP    = 0.7
    cfg.MODEL.POSITION_HEAD.THING.GAUSSIAN_SIGMA = 3
    cfg.MODEL.POSITION_HEAD.THING.THRES          = 0.05
    cfg.MODEL.POSITION_HEAD.THING.TOP_NUM        = 100

    cfg.MODEL.POSITION_HEAD.STUFF = CN()
    cfg.MODEL.POSITION_HEAD.STUFF.NUM_CLASSES  = 11
    cfg.MODEL.POSITION_HEAD.STUFF.WITH_THING   = True
    cfg.MODEL.POSITION_HEAD.STUFF.THRES        = 0.05

    cfg.MODEL.SEM_SEG_HEAD   = CN()
    cfg.MODEL.SEM_SEG_HEAD.NUM_CLASSES  = 11
    cfg.MODEL.SEM_SEG_HEAD.IGNORE_VALUE = 255

    cfg.MODEL.KERNEL_HEAD    = CN()
    cfg.MODEL.KERNEL_HEAD.INSTANCE_SCALES = ((1, 64), (32, 128), (64, 256), (128, 512), (256, 2048),)
    cfg.MODEL.KERNEL_HEAD.TEST_SCALES     = ((1, 64), (64, 128), (128, 256), (256, 512), (512, 2048),)
    cfg.MODEL.KERNEL_HEAD.NUM_CONVS       = 3
    cfg.MODEL.KERNEL_HEAD.DEFORM          = False
    cfg.MODEL.KERNEL_HEAD.COORD           = True
    cfg.MODEL.KERNEL_HEAD.CONVS_DIM       = 256
    cfg.MODEL.KERNEL_HEAD.NORM            = "GN"

    cfg.MODEL.FEATURE_ENCODER    = CN()
    cfg.MODEL.FEATURE_ENCODER.IN_FEATURES     = ["p3", "p4", "p5", "p6", "p7"]
    cfg.MODEL.FEATURE_ENCODER.NUM_CONVS       = 3
    cfg.MODEL.FEATURE_ENCODER.CONVS_DIM       = 64
    cfg.MODEL.FEATURE_ENCODER.DEFORM          = False
    cfg.MODEL.FEATURE_ENCODER.COORD           = True
    cfg.MODEL.FEATURE_ENCODER.NORM            = ""

    cfg.MODEL.LOSS_WEIGHT    = CN()
    cfg.MODEL.LOSS_WEIGHT.POSITION          = 1.0
    cfg.MODEL.LOSS_WEIGHT.SEGMENT           = 3.0
    cfg.MODEL.LOSS_WEIGHT.FOCAL_LOSS_ALPHA  = 0.25
    cfg.MODEL.LOSS_WEIGHT.FOCAL_LOSS_GAMMA  = 2.0

    cfg.MODEL.INFERENCE      = CN()
    cfg.MODEL.INFERENCE.INST_THRES        = 0.4
    cfg.MODEL.INFERENCE.SIMILAR_THRES     = 0.9
    cfg.MODEL.INFERENCE.SIMILAR_TYPE      = "cosine"
    cfg.MODEL.INFERENCE.CLASS_SPECIFIC    = True

    cfg.MODEL.INFERENCE.COMBINE  = CN()
    cfg.MODEL.INFERENCE.COMBINE.ENABLE           = True
    cfg.MODEL.INFERENCE.COMBINE.NO_OVERLAP       = False
    cfg.MODEL.INFERENCE.COMBINE.OVERLAP_THRESH   = 0.5
    cfg.MODEL.INFERENCE.COMBINE.STUFF_AREA_LIMIT = 4096
    cfg.MODEL.INFERENCE.COMBINE.INST_THRESH      = 0.2

    cfg.MODEL.EXPORT_ONNX = False
DejaYang commented 3 years ago

#30