
_base_ = '../box2mask/box2mask_r101_lsj_8x2_50e_coco.py'

classes_list = ('person','none')
class_num = 2
image_size = (800, 1333)

model = dict(
    panoptic_head=dict(
        num_things_classes=class_num,
        loss_cls=dict(class_weight=[1.0] * class_num + [0.1])),
    panoptic_fusion_head=dict(
        num_things_classes=class_num))

evaluation = dict(
    interval=20000,
    metric=['bbox', 'segm'],
    classwise=True,
    dynamic_intervals=[(365001, 368750)])

img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)
train_pipeline = [
    dict(type='LoadImageFromFile', to_float32=True),
    dict(type='LoadAnnotations', with_bbox=True, with_mask=False),
    dict(type='GenerateBoxMask'),
    dict(type='RandomFlip', flip_ratio=0.5),
    dict(
        type='Resize',
        img_scale=(800, 1333),
        multiscale_mode='value',
        keep_ratio=True),
    dict(type='Pad', size_divisor=32),
    dict(
        type='Normalize',
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        to_rgb=True),
    dict(type='DefaultFormatBundle', img_to_float=True),
    dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_masks'])
]
test_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(
        type='MultiScaleFlipAug',
        img_scale=(1333, 800),
        flip=False,
        transforms=[
            dict(type='Resize', keep_ratio=True),
            dict(type='RandomFlip'),
            dict(type='Normalize', **img_norm_cfg),
            dict(type='Pad', size_divisor=32),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='Collect', keys=['img']),
        ])
]

# Data
# Modify dataset related settings
data = dict(
    samples_per_gpu=6,
    workers_per_gpu=20,
    train=dict(
        type='CocoDataset',
        classes = classes_list,
        ann_file='/data/cvprw/AIC23/dataset/coco_AIC23/train/train.json', 
        img_prefix='/data/cvprw/AIC23/dataset/train_result/detect_result',
        pipeline = train_pipeline),
    val=dict(
        type='CocoDataset',
        classes = classes_list,
        ann_file='/data/cvprw/AIC23/dataset/coco_AIC23/val/val.json',
        img_prefix='/data/cvprw/AIC23/dataset/val_result/detect_result',
        pipeline = test_pipeline),
    test=dict(
        type='CocoDataset',
        classes = classes_list,
        ann_file='/data/cvprw/AIC23/dataset/coco_AIC23/val/val.json',
        img_prefix='/data/cvprw/AIC23/dataset/val_result/detect_result',
        pipeline=test_pipeline))

log_config = dict(
    interval=50,
    hooks=[
        dict(type='TextLoggerHook', by_epoch=False)
    ])

# work_dir = '/data/cvprw/AIC23/detect/experiments/tood'

# evaluation = dict(interval=1, metric='bbox', classwise=True)

# # Num class
# model = dict(
#     backbone=dict(
#         depth=101,
#         init_cfg=dict(type='Pretrained',
#                       checkpoint='torchvision://resnet101')),
#     bbox_head=dict(num_classes=class_num))


# # Evaluation times
# evaluation = dict(interval=1, metric='bbox',
#                  classwise = True)
# # optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)
# # optimizer_config = dict(grad_clip=None)
# # lr_config = dict(
# #     policy='step',
# #     warmup='linear',
# #     warmup_iters=500,
# #     warmup_ratio=0.001,
# #     step=[20, 30])
# # runner = dict(type='EpochBasedRunner', max_epochs=24)

# # Check point save
# checkpoint_config = dict(interval=8)

