architecture: CascadeMaskRCNN
train_feed: MaskRCNNTrainFeed
eval_feed: MaskRCNNEvalFeed
test_feed: MaskRCNNTestFeed
max_iters: 300000
snapshot_iter: 10000
use_gpu: true
log_iter: 20
log_smooth_window: 20
save_dir: output
pretrain_weights: https://paddle-imagenet-models-name.bj.bcebos.com/SENet154_vd_caffe_pretrained.tar 
weights: output/cascade_mask_rcnn_dcn_se154_vd_fpn_gn_s1x/model_final/
metric: COCO
num_classes: 81

CascadeMaskRCNN:
  backbone: SENet
  fpn: FPN
  rpn_head: FPNRPNHead
  roi_extractor: FPNRoIAlign
  bbox_head: CascadeBBoxHead
  bbox_assigner: CascadeBBoxAssigner
  mask_assigner: MaskAssigner
  mask_head: MaskHead

SENet:
  depth: 152
  feature_maps: [2, 3, 4, 5]
  freeze_at: 2
  group_width: 4
  groups: 64
  norm_type: bn
  freeze_norm: True
  variant: d
  dcn_v2_stages: [3, 4, 5]
  std_senet: True

FPN:
  max_level: 6
  min_level: 2
  num_chan: 256
  spatial_scale: [0.03125, 0.0625, 0.125, 0.25]
  freeze_norm: False
  norm_type: gn

FPNRPNHead:
  anchor_generator:
    aspect_ratios: [0.5, 1.0, 2.0]
    variance: [1.0, 1.0, 1.0, 1.0]
  anchor_start_size: 32
  max_level: 6
  min_level: 2
  num_chan: 256
  rpn_target_assign:
    rpn_batch_size_per_im: 256
    rpn_fg_fraction: 0.5
    rpn_negative_overlap: 0.3
    rpn_positive_overlap: 0.7
    rpn_straddle_thresh: 0.0
  train_proposal:
    min_size: 0.0
    nms_thresh: 0.7
    pre_nms_top_n: 2000
    post_nms_top_n: 2000
  test_proposal:
    min_size: 0.0
    nms_thresh: 0.7
    pre_nms_top_n: 1000
    post_nms_top_n: 1000

FPNRoIAlign:
  canconical_level: 4
  canonical_size: 224
  max_level: 5
  min_level: 2
  box_resolution: 7
  sampling_ratio: 2
  mask_resolution: 14

MaskHead:
  dilation: 1
  conv_dim: 256
  num_convs: 4
  resolution: 28
  norm_type: gn

CascadeBBoxAssigner:
  batch_size_per_im: 512
  bbox_reg_weights: [10, 20, 30]
  bg_thresh_hi: [0.5, 0.6, 0.7]
  bg_thresh_lo: [0.0, 0.0, 0.0]
  fg_fraction: 0.25
  fg_thresh: [0.5, 0.6, 0.7]

MaskAssigner:
  resolution: 28

CascadeBBoxHead:
  head: CascadeXConvNormHead 
  nms:
    keep_top_k: 100
    nms_threshold: 0.5
    score_threshold: 0.05

CascadeXConvNormHead:
  norm_type: gn

MultiScaleTEST:
  score_thresh: 0.05
  nms_thresh: 0.5
  detections_per_im: 100
  enable_voting: true
  vote_thresh: 0.9

LearningRate:
  base_lr: 0.01
  schedulers:
  - !PiecewiseDecay
    gamma: 0.1
    milestones: [240000, 280000]
  - !LinearWarmup
    start_factor: 0.01
    steps: 2000

OptimizerBuilder:
  optimizer:
    momentum: 0.9
    type: Momentum
  regularizer:
    factor: 0.0001
    type: L2

MaskRCNNTrainFeed:
  # batch size per device
  batch_size: 1
  dataset:
    dataset_dir: dataset/coco
    image_dir: train2017
    annotation: annotations/instances_train2017.json
  sample_transforms: 
  - !DecodeImage
    to_rgb: False
    with_mixup: False
  - !RandomFlipImage
    is_mask_flip: true
    is_normalized: false
    prob: 0.5
  - !NormalizeImage
    is_channel_first: false
    is_scale: False
    mean:
    - 102.9801 
    - 115.9465
    - 122.7717
    std:
    - 1.0 
    - 1.0 
    - 1.0 
  - !ResizeImage
    interp: 1
    target_size:
    - 416
    - 448
    - 480
    - 512
    - 544
    - 576
    - 608
    - 640
    - 672
    - 704 
    - 736
    - 768
    - 800
    - 832
    - 864
    - 896
    - 928
    - 960
    - 992
    - 1024
    - 1056
    - 1088
    - 1120
    - 1152
    - 1184
    - 1216
    - 1248
    - 1280
    - 1312
    - 1344
    - 1376
    - 1408
    max_size: 1600
    use_cv2: true
  - !Permute
    channel_first: true
    to_bgr: false
  batch_transforms:
  - !PadBatch
    pad_to_stride: 32
  num_workers: 8

MaskRCNNEvalFeed:
  batch_size: 1
  dataset:
    dataset_dir: dataset/coco
    annotation: annotations/instances_val2017.json
    image_dir: val2017
  sample_transforms: 
  - !DecodeImage
    to_rgb: False
  - !NormalizeImage
    is_channel_first: false
    is_scale: False
    mean:
    - 102.9801 
    - 115.9465
    - 122.7717
    std:
    - 1.0 
    - 1.0 
    - 1.0 
  - !MultiscaleTestResize
    origin_target_size: 800
    origin_max_size: 1333
    target_size:
    - 400
    - 500
    - 600
    - 700
    - 900
    - 1000
    - 1100
    - 1200
    max_size: 2000
    use_flip: true
  - !Permute
    channel_first: true
    to_bgr: false
  batch_transforms:
  - !PadMSTest
    pad_to_stride: 32
  # num_scale = (len(target_size) + 1) * (1 + use_flip)
  num_scale: 18 
  num_workers: 2

MaskRCNNTestFeed:
  batch_size: 1
  dataset:
    annotation: dataset/coco/annotations/instances_val2017.json
  sample_transforms:
  - !DecodeImage
    to_rgb: False
  - !NormalizeImage
    is_channel_first: false
    is_scale: False
    mean:
    - 102.9801
    - 115.9465
    - 122.7717
    std:
    - 1.0
    - 1.0
    - 1.0
  - !Permute
    channel_first: true
    to_bgr: false
  batch_transforms:
  - !PadBatch
    pad_to_stride: 32
  num_workers: 2
