text: # Copyright (c) Meta Platforms, Inc. and affiliates.
  
  # All rights reserved.
  
  # This source code is licensed under the license found in the
  # LICENSE file in the root directory of this source tree.
  
  
  _base_ = [
      '../_base_/models/mask_rcnn_convnext_fpn.py',
      '../_base_/datasets/coco_instance.py',
      '../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
  ]
  
  model = dict(
      backbone=dict(
          in_chans=3,
          depths=[3, 3, 9, 3], 
          dims=[96, 192, 384, 768], 
          drop_path_rate=0.4,
          layer_scale_init_value=1.0,
          out_indices=[0, 1, 2, 3],
      ),
      neck=dict(in_channels=[96, 192, 384, 768]))
  
  img_norm_cfg = dict(
      mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
  
  # augmentation strategy originates from DETR / Sparse RCNN
  train_pipeline = [
      dict(type='LoadImageFromFile'),
      dict(type='LoadAnnotations', with_bbox=True, with_mask=True),
      dict(type='RandomFlip', flip_ratio=0.5),
      dict(type='AutoAugment',
           policies=[
               [
                   dict(type='Resize',
                        img_scale=[(480, 1333), (512, 1333), (544, 1333), (576, 1333),
                                   (608, 1333), (640, 1333), (672, 1333), (704, 1333),
                                   (736, 1333), (768, 1333), (800, 1333)],
                        multiscale_mode='value',
                        keep_ratio=True)
               ],
               [
                   dict(type='Resize',
                        img_scale=[(400, 1333), (500, 1333), (600, 1333)],
                        multiscale_mode='value',
                        keep_ratio=True),
                   dict(type='RandomCrop',
                        crop_type='absolute_range',
                        crop_size=(384, 600),
                        allow_negative_crop=True),
                   dict(type='Resize',
                        img_scale=[(480, 1333), (512, 1333), (544, 1333),
                                   (576, 1333), (608, 1333), (640, 1333),
                                   (672, 1333), (704, 1333), (736, 1333),
                                   (768, 1333), (800, 1333)],
                        multiscale_mode='value',
                        override=True,
                        keep_ratio=True)
               ]
           ]),
      dict(type='Normalize', **img_norm_cfg),
      dict(type='Pad', size_divisor=32),
      dict(type='DefaultFormatBundle'),
      dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_masks']),
  ]
  data = dict(train=dict(pipeline=train_pipeline))
  
  optimizer = dict(constructor='LearningRateDecayOptimizerConstructor', _delete_=True, type='AdamW', 
                   lr=0.0001, betas=(0.9, 0.999), weight_decay=0.05,
                   paramwise_cfg={'decay_rate': 0.95,
                                  'decay_type': 'layer_wise',
                                  'num_layers': 6})
  
  lr_config = dict(step=[27, 33])
  runner = dict(type='EpochBasedRunnerAmp', max_epochs=36)
  
  # do not use mmdet version fp16
  fp16 = None
  optimizer_config = dict(
      type="DistOptimizerHook",
      update_interval=1,
      grad_clip=None,
      coalesce=True,
      bucket_size_mb=-1,
      use_fp16=True,
  )
  