data_cfg:
  dataset_name: CCPG
  # TODO
  dataset_root: your_path # use datasets/pretreatment_rgb.py for data preprocessing!
  dataset_partition: ./datasets/CCPG/CCPG.json
  data_in_use: [True, True] # images / real_ratios
  num_workers: 8
  remove_no_gallery: false # Remove probe if no gallery for it
  test_dataset_name: CCPG

evaluator_cfg:
  enable_float16: true
  restore_ckpt_strict: True
  restore_hint: 40000
  save_name: BigGait__Dinov2_Gaitbase_Frame30
  eval_func: evaluate_CCPG
  sampler:
    batch_shuffle: false
    batch_size: 8 # GPUs number
    sample_type: all_ordered # all indicates whole sequence used to test, while ordered means input sequence by its natural order; Other options:   fixed_unordered
    frames_all_limit: 250 # limit the number of sampled frames to prevent out of memory
  metric: euc # cos
  transform:
    - type: BaseRgbTransform
    - type: NoOperation

loss_cfg:
  - loss_term_weight: 1.0
    margin: 0.2
    type: TripletLoss
    log_prefix: triplet
  - loss_term_weight: 1.0
    scale: 16
    type: CrossEntropyLoss
    log_prefix: softmax
    log_accuracy: true

model_cfg:
  model: BigGait__Dinov2_Gaitbase
  pretrained_dinov2: ./pretrained_LVMs/dinov2_vits14_pretrain.pth                   # DINOv2 Download Link: https://dl.fbaipublicfiles.com/dinov2/dinov2_vits14/dinov2_vits14_pretrain.pth
  pretrained_mask_branch: ./pretrained_LVMs/MaskBranch_vits14.pt                # pretrained_mask_branch: None or MaskBranch Download Link: https://drive.google.com/drive/folders/1zrWPUsrbCpwxoLgfom3d2irgxkBqtXqc?usp=sharing
  image_size: 224                                                               # 448x224
  sils_size: 32                                                                 # 64x32

  Denoising_Branch:
    source_dim: 1536
    target_dim: 16
    p: 0
    softmax: True
    Relu: True
    Up: False

  Appearance_Branch:
    source_dim: 1536
    target_dim: 16
    p: 0
    softmax: False
    Relu: False
    Up: False

  Mask_Branch:
    source_dim: 384
    target_dim: 2
    p: 0.5
    softmax: True
    Relu: False
    Up: True

  AttentionFusion:
    in_channels: 64
    squeeze_ratio: 16
    feat_len: 2

  backbone_cfg:
    type: ResNet9
    block: BasicBlock
    in_channel: 1
    channels: # Layers configuration for automatically model construction
      - 64
      - 128
      - 256
      - 512
    layers:
      - 1
      - 1
      - 1
      - 1
    strides:
      - 1
      - 2
      - 2
      - 1
    maxpool: false
  SeparateFCs:
    in_channels: 512
    out_channels: 256
    parts_num: 16
  SeparateBNNecks:
    class_num: 100
    in_channels: 256
    parts_num: 16
  bin_num:
    - 16

optimizer_cfg:
  lr: 0.1
  momentum: 0.9
  solver: SGD
  weight_decay: 0.0005

scheduler_cfg:
  gamma: 0.1
  milestones: # Learning Rate Reduction at each milestones
    - 15000
    - 25000
    - 30000
    - 35000
  scheduler: MultiStepLR


trainer_cfg:
  find_unused_parameters: True
  enable_float16: true # half_percesion float for memory reduction and speedup
  fix_BN: false
  log_iter: 100
  with_test: true
  restore_ckpt_strict: true
  restore_hint: 0
  save_iter: 10000
  save_name: BigGait__Dinov2_Gaitbase_Frame30
  sync_BN: true
  total_iter: 40000
  sampler:
    batch_shuffle: true
    batch_size:
      - 8 # TripletSampler, batch_size[0] indicates Number of Identity
      - 8 #                 batch_size[1] indicates Samples sequqnce for each Identity
    frames_num_fixed: 30 # fixed frames number for training
    frames_skip_num: 4
    frames_num_max: 40 # max frames number for unfixed training
    frames_num_min: 20 # min frames number for unfixed traing
    sample_type: fixed_unordered # fixed control input frames number, unordered for controlling order of input tensor; Other options: unfixed_ordered or all_ordered
    type: TripletSampler
  transform:
    - type: Compose
      trf_cfg:
        - type: RandomHorizontalFlip
        - type: BaseRgbTransform
    - type: NoOperation
