{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":71549,"databundleVersionId":8561470,"sourceType":"competition"},{"sourceId":6063037,"sourceType":"datasetVersion","datasetId":3469773},{"sourceId":6063590,"sourceType":"datasetVersion","datasetId":3470137},{"sourceId":9398875,"sourceType":"datasetVersion","datasetId":5704874}],"dockerImageVersionId":30762,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"The CoCoDataset are transformed from YOLO Dataset made by https://www.kaggle.com/code/namgalielei/lsdc-gen-yolo-data-scs/notebook","metadata":{}},{"cell_type":"code","source":"from IPython.display import clear_output\n\n!pip install --no-index --no-deps /kaggle/input/predetectron-31-wheel/pycocotools-2.0.6-cp310-cp310-linux_x86_64.whl\n!pip install --no-index --no-deps /kaggle/input/mmdetectron-31-wheel/torch-1.12.1+cu116-cp310-cp310-linux_x86_64.whl\n!pip install --no-index --no-deps /kaggle/input/mmdetectron-31-wheel/torchvision-0.13.1+cu116-cp310-cp310-linux_x86_64.whl\n!pip install --no-index --no-deps /kaggle/input/mmdetectron-31-wheel/mmcv-2.0.1-cp310-cp310-manylinux1_x86_64.whl \n!pip install --no-index --no-deps /kaggle/input/mmdetectron-31-wheel/openmim-0.3.9-py2.py3-none-any.whl\n!pip install --no-index --no-deps /kaggle/input/mmdetectron-31-wheel/mmengine-0.7.4-py3-none-any.whl\n!pip install --no-index --no-deps /kaggle/input/mmdetectron-31-wheel/addict-2.4.0-py3-none-any.whl\n!pip install yapf==0.40.1\n!pip install terminaltables\n!pip install setuptools==69.5.1\n!pip install --no-index --no-deps /kaggle/input/mmpretrain/einops-0.6.1-py3-none-any.whl\n!pip install --no-index --no-deps /kaggle/input/mmpretrain/mat4py-0.5.0-py2.py3-none-any.whl\n!pip install --no-index --no-deps /kaggle/input/mmpretrain/ordered_set-4.1.0-py3-none-any.whl\n!pip install --no-index --no-deps /kaggle/input/mmpretrain/model_index-0.1.11-py3-none-any.whl\n!pip install --no-index --no-deps /kaggle/input/mmpretrain/modelindex-0.0.2-py3-none-any.whl\n!pip install --no-index --no-deps /kaggle/input/mmpretrain/mmpretrain-1.0.0rc8-py2.py3-none-any.whl\nclear_output()","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:44:59.615403Z","iopub.execute_input":"2024-09-15T14:44:59.615775Z","iopub.status.idle":"2024-09-15T14:47:31.443891Z","shell.execute_reply.started":"2024-09-15T14:44:59.615732Z","shell.execute_reply":"2024-09-15T14:47:31.442730Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Importing the required pakages","metadata":{}},{"cell_type":"code","source":"from tqdm.notebook import tqdm\nimport pandas as pd\n\nimport matplotlib.pyplot as plt\nfrom PIL import Image\n\nfrom glob import glob\nimport matplotlib.pyplot as plt","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:47:31.446536Z","iopub.execute_input":"2024-09-15T14:47:31.447250Z","iopub.status.idle":"2024-09-15T14:47:31.887571Z","shell.execute_reply.started":"2024-09-15T14:47:31.447212Z","shell.execute_reply":"2024-09-15T14:47:31.886833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Git cloning and installing MMDetection 3.1","metadata":{}},{"cell_type":"code","source":"!git clone https://github.com/open-mmlab/mmdetection.git\n%cd /kaggle/working/mmdetection\n!pip install -v -e .\n\nclear_output()","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:47:31.888818Z","iopub.execute_input":"2024-09-15T14:47:31.889584Z","iopub.status.idle":"2024-09-15T14:47:58.532562Z","shell.execute_reply.started":"2024-09-15T14:47:31.889533Z","shell.execute_reply":"2024-09-15T14:47:58.531485Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Check Pytorch installation\nimport torch, torchvision\nprint(\"torch version:\",torch.__version__, \"cuda:\",torch.cuda.is_available())\n\n# Check MMDetection installation\nimport mmdet\nprint(\"mmdetection:\",mmdet.__version__)\n\n# Check mmcv installation\nimport mmcv\nprint(\"mmcv:\",mmcv.__version__)\n\n# Check mmengine installation\nimport mmengine\nprint(\"mmengine:\",mmengine.__version__)","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:47:58.534647Z","iopub.execute_input":"2024-09-15T14:47:58.535545Z","iopub.status.idle":"2024-09-15T14:48:00.168279Z","shell.execute_reply.started":"2024-09-15T14:47:58.535496Z","shell.execute_reply":"2024-09-15T14:48:00.167307Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Test MMdetection","metadata":{}},{"cell_type":"code","source":"# !mkdir ../checkpoints\n# !wget -P ../checkpoints https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:00.171359Z","iopub.execute_input":"2024-09-15T14:48:00.171797Z","iopub.status.idle":"2024-09-15T14:48:00.176052Z","shell.execute_reply.started":"2024-09-15T14:48:00.171761Z","shell.execute_reply":"2024-09-15T14:48:00.174817Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from mmdet.apis import init_detector, inference_detector\n# from mmdet.registry import VISUALIZERS\n# import mmcv\n\n# config_file = 'configs/faster_rcnn/faster-rcnn_r50_fpn_soft-nms_1x_coco.py'\n# # 从 model zoo 下载 checkpoint 并放在 `checkpoints/` 文件下\n# # 网址为: http://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth\n# checkpoint_file = '../checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth'\n# device = 'cuda:0'\n\n# visualizer = VISUALIZERS.build(model.cfg.visualizer)\n# # the dataset_meta is loaded from the checkpoint and\n# # then pass to the model in init_detector\n# visualizer.dataset_meta = model.dataset_meta\n# # img='demo/demo.jpg\n# img = mmcv.imread('demo/demo.jpg')\n# # 初始化检测器\n# model = init_detector(config_file, checkpoint_file, device=device)\n# # 推理演示图像\n# result=inference_detector(model, img)\n\n# visualizer.add_datasample('result',\n#                           img, data_sample=result,\n#                           draw_gt=False,\n#                           wait_time=0,\n#                           out_file='../result.jpg',\n#                           pred_score_thr=0.3\n#                           )\n\n\n","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:00.177237Z","iopub.execute_input":"2024-09-15T14:48:00.177540Z","iopub.status.idle":"2024-09-15T14:48:00.185826Z","shell.execute_reply.started":"2024-09-15T14:48:00.177508Z","shell.execute_reply":"2024-09-15T14:48:00.184849Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from PIL import Image\n# Image.open('../result.jpg')","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:00.187213Z","iopub.execute_input":"2024-09-15T14:48:00.187664Z","iopub.status.idle":"2024-09-15T14:48:00.193891Z","shell.execute_reply.started":"2024-09-15T14:48:00.187617Z","shell.execute_reply":"2024-09-15T14:48:00.193016Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Writing the config","metadata":{}},{"cell_type":"code","source":"!mkdir -p configs/RSNA2024_SCS","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:00.194884Z","iopub.execute_input":"2024-09-15T14:48:00.195171Z","iopub.status.idle":"2024-09-15T14:48:01.210376Z","shell.execute_reply.started":"2024-09-15T14:48:00.195135Z","shell.execute_reply":"2024-09-15T14:48:01.209073Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# atss model","metadata":{}},{"cell_type":"code","source":"# !wget -O atss_r101_fpn_1x.pth \"https://download.openmmlab.com/mmdetection/v2.0/atss/atss_r101_fpn_1x_coco/atss_r101_fpn_1x_20200825-dfcadd6f.pth\"","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:01.212129Z","iopub.execute_input":"2024-09-15T14:48:01.212532Z","iopub.status.idle":"2024-09-15T14:48:01.217670Z","shell.execute_reply.started":"2024-09-15T14:48:01.212490Z","shell.execute_reply":"2024-09-15T14:48:01.216559Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# from mmengine.config import Config\n# base=\"atss_r101_fpn_1x_coco\"\n# cfg = Config.fromfile(f'/kaggle/working/mmdetection/configs/atss/{base}.py')\n# #----------------------------------------------------\n# width=512\n# height=512\n\n# max_epochs=20\n\n# batch_size=16\n# num_classes=15\n\n# dataset_type = 'CocoDataset' \n# classes = classes = ('spinal_canal_stenosis_l1_l2_normal/mild',\n# 'spinal_canal_stenosis_l1_l2_moderate',\n# 'spinal_canal_stenosis_l1_l2_severe',\n# 'spinal_canal_stenosis_l2_l3_normal/mild',\n# 'spinal_canal_stenosis_l2_l3_moderate',\n# 'spinal_canal_stenosis_l2_l3_severe',\n# 'spinal_canal_stenosis_l3_l4_normal/mild',\n# 'spinal_canal_stenosis_l3_l4_moderate',\n# 'spinal_canal_stenosis_l3_l4_severe',\n# 'spinal_canal_stenosis_l4_l5_normal/mild',\n# 'spinal_canal_stenosis_l4_l5_moderate',\n# 'spinal_canal_stenosis_l4_l5_severe',\n# 'spinal_canal_stenosis_l5_s1_normal/mild',\n# 'spinal_canal_stenosis_l5_s1_moderate',\n# 'spinal_canal_stenosis_l5_s1_severe') \n\n# data_root = '/kaggle/input/lsdc-scs-cocodataset'\n\n# cfg.work_dir = '../model_output'\n# #-----------------------------------------------------\n# cfg.model.bbox_head.num_classes = num_classes\n# #-----------------------------------------------------\n# cfg.train_pipeline[2]['scale']=(width,height)\n# cfg.test_pipeline [1]['scale']=(width,height)","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:01.219346Z","iopub.execute_input":"2024-09-15T14:48:01.219690Z","iopub.status.idle":"2024-09-15T14:48:01.228505Z","shell.execute_reply.started":"2024-09-15T14:48:01.219650Z","shell.execute_reply":"2024-09-15T14:48:01.227646Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# #-----------------------------------------------------\n# cfg.train_dataloader.dataset.type=dataset_type\n# cfg.train_dataloader.dataset.metainfo=dict(classes=classes)\n# cfg.train_dataloader.dataset.data_root=data_root\n# cfg.train_dataloader.dataset.ann_file='/kaggle/input/lsdc-scs-cocodataset/annotations_train.json'\n# cfg.train_dataloader.dataset.data_prefix=dict(img='train2017/')\n# cfg.train_dataloader.batch_size=batch_size\n# cfg.train_dataloader.dataset.pipeline[2]['scale']=(width,height)\n# #-----------------------------------------------------\n# cfg.val_dataloader.dataset.type=dataset_type\n# cfg.val_dataloader.dataset.metainfo=dict(classes=classes)\n# cfg.val_dataloader.dataset.data_root=data_root\n# cfg.val_dataloader.dataset.ann_file='/kaggle/input/lsdc-scs-cocodataset/annotations_valid.json'\n# cfg.val_dataloader.dataset.data_prefix=dict(img='valid2017/')\n# cfg.val_dataloader.dataset.pipeline[1]['scale']=(width,height)\n# #-----------------------------------------------------\n# cfg.test_dataloader.dataset.type=dataset_type\n# cfg.test_dataloader.dataset.metainfo=dict(classes=classes)\n# cfg.test_dataloader.dataset.data_root=data_root\n# cfg.test_dataloader.dataset.ann_file='/kaggle/input/lsdc-scs-cocodataset/annotations_valid.json'\n\n# cfg.test_dataloader.dataset.data_prefix=dict(img='valid2017/')\n# cfg.test_dataloader.dataset.pipeline[1]['scale']=(width,height)\n# #------------------------------------------------------","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:01.231475Z","iopub.execute_input":"2024-09-15T14:48:01.231786Z","iopub.status.idle":"2024-09-15T14:48:01.238173Z","shell.execute_reply.started":"2024-09-15T14:48:01.231740Z","shell.execute_reply":"2024-09-15T14:48:01.237247Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# #------------------------------------------------------\n# cfg.val_evaluator.type='CocoMetric'\n# cfg.val_evaluator.ann_file='/kaggle/input/lsdc-scs-cocodataset/annotations_valid.json'\n# # cfg.val_evaluator.metric=['segm']\n\n# cfg.test_evaluator.type='CocoMetric'\n# cfg.test_evaluator.ann_file='/kaggle/input/lsdc-scs-cocodataset/annotations_valid.json'\n# # cfg.test_evaluator.metric=['segm']\n# #------------------------------------------------------\n# cfg.train_cfg.max_epochs=max_epochs\n# cfg.optim_wrapper.type='OptimWrapper'\n# cfg.optim_wrapper.optimizer=dict(type='AdamW',lr=0.001,weight_decay=0.05,eps=1e-8,betas=(0.9, 0.999))\n# cfg.default_hooks = dict(logger=dict(type='LoggerHook', interval=200),\n#                          checkpoint=dict(type='CheckpointHook', interval=5, save_best='auto'))\n\n# #------------------------------------------------------\n# config=f'configs/RSNA2024/custom_config_{base}_{width}_{height}.py'\n# with open(config, 'w') as f:\n#     f.write(cfg.pretty_text)","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:01.241265Z","iopub.execute_input":"2024-09-15T14:48:01.241587Z","iopub.status.idle":"2024-09-15T14:48:01.248793Z","shell.execute_reply.started":"2024-09-15T14:48:01.241556Z","shell.execute_reply":"2024-09-15T14:48:01.247775Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Convnext+CascadeRCN","metadata":{}},{"cell_type":"code","source":"%%writefile configs/RSNA2024_SCS/custom_config.py\n\n_base_ = [\n    '../_base_/models/cascade-rcnn_r50_fpn.py',\n    '../_base_/datasets/coco_instance.py',\n    '../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'\n]\n\n# please install mmpretrain\n# import mmpretrain.models to trigger register_module in mmpretrain\ncustom_imports = dict(\n    imports=['mmpretrain.models'], allow_failed_imports=False)\ncheckpoint_file = 'https://download.openmmlab.com/mmclassification/v0/convnext/downstream/convnext-tiny_3rdparty_32xb128-noema_in1k_20220301-795e9634.pth'  # noqa\nepoch = 20\n\nmodel = dict(\n    backbone=dict(\n        _delete_=True,\n        type='mmpretrain.ConvNeXt',\n        arch='small',\n        out_indices=[0, 1, 2, 3],\n        drop_path_rate=0.6,\n        layer_scale_init_value=1.0,\n        gap_before_final_norm=False,\n        init_cfg=dict(\n            type='Pretrained', checkpoint=checkpoint_file,\n            prefix='backbone.')),\n    neck=dict(in_channels=[96, 192, 384, 768]),\n    roi_head=dict(bbox_head=[\n        dict(\n            type='ConvFCBBoxHead',\n            num_shared_convs=4,\n            num_shared_fcs=1,\n            in_channels=256,\n            conv_out_channels=256,\n            fc_out_channels=1024,\n            roi_feat_size=7,\n            num_classes=15,\n            bbox_coder=dict(\n                type='DeltaXYWHBBoxCoder',\n                target_means=[0., 0., 0., 0.],\n                target_stds=[0.1, 0.1, 0.2, 0.2]),\n            reg_class_agnostic=False,\n            reg_decoded_bbox=True,\n            norm_cfg=dict(type='SyncBN', requires_grad=True),\n            loss_cls=dict(\n                type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),\n            loss_bbox=dict(type='GIoULoss', loss_weight=10.0)),\n        dict(\n            type='ConvFCBBoxHead',\n            num_shared_convs=4,\n            num_shared_fcs=1,\n            in_channels=256,\n            conv_out_channels=256,\n            fc_out_channels=1024,\n            roi_feat_size=7,\n            num_classes=15,\n            bbox_coder=dict(\n                type='DeltaXYWHBBoxCoder',\n                target_means=[0., 0., 0., 0.],\n                target_stds=[0.05, 0.05, 0.1, 0.1]),\n            reg_class_agnostic=False,\n            reg_decoded_bbox=True,\n            norm_cfg=dict(type='SyncBN', requires_grad=True),\n            loss_cls=dict(\n                type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),\n            loss_bbox=dict(type='GIoULoss', loss_weight=10.0)),\n        dict(\n            type='ConvFCBBoxHead',\n            num_shared_convs=4,\n            num_shared_fcs=1,\n            in_channels=256,\n            conv_out_channels=256,\n            fc_out_channels=1024,\n            roi_feat_size=7,\n            num_classes=15,\n            bbox_coder=dict(\n                type='DeltaXYWHBBoxCoder',\n                target_means=[0., 0., 0., 0.],\n                target_stds=[0.033, 0.033, 0.067, 0.067]),\n            reg_class_agnostic=False,\n            reg_decoded_bbox=True,\n            norm_cfg=dict(type='SyncBN', requires_grad=True),\n            loss_cls=dict(\n                type='CrossEntropyLoss', use_sigmoid=False, loss_weight=1.0),\n            loss_bbox=dict(type='GIoULoss', loss_weight=10.0))\n    ]),\n    test_cfg=dict(\n        _delete_=True,\n        rpn=dict(\n            nms_pre=1000,\n            max_per_img=1000,\n            nms=dict(type='nms', iou_threshold=0.7),\n            min_bbox_size=0),\n        rcnn=dict(\n            score_thr=0.05,\n            nms=dict(type='soft_nms', iou_threshold=0.5, min_score=0.05),\n            max_per_img=100)))\n\n\n# automatic-mixed-precision\noptim_wrapper = dict(\n    type='AmpOptimWrapper',\n    constructor='LearningRateDecayOptimizerConstructor',\n    paramwise_cfg={\n        'decay_rate': 0.7,\n        'decay_type': 'layer_wise',\n        'num_layers': 12\n    },\n    optimizer=dict(\n        _delete_=True,\n        type='AdamW',\n        lr=0.0002,\n        betas=(0.9, 0.999),\n        weight_decay=0.05))\n\nclasses = ('spinal_canal_stenosis_l1_l2_normal/mild',\n'spinal_canal_stenosis_l1_l2_moderate',\n'spinal_canal_stenosis_l1_l2_severe',\n'spinal_canal_stenosis_l2_l3_normal/mild',\n'spinal_canal_stenosis_l2_l3_moderate',\n'spinal_canal_stenosis_l2_l3_severe',\n'spinal_canal_stenosis_l3_l4_normal/mild',\n'spinal_canal_stenosis_l3_l4_moderate',\n'spinal_canal_stenosis_l3_l4_severe',\n'spinal_canal_stenosis_l4_l5_normal/mild',\n'spinal_canal_stenosis_l4_l5_moderate',\n'spinal_canal_stenosis_l4_l5_severe',\n'spinal_canal_stenosis_l5_s1_normal/mild',\n'spinal_canal_stenosis_l5_s1_moderate',\n'spinal_canal_stenosis_l5_s1_severe') # Added\nbackend_args = None\ndata_root = '/kaggle/input/lsdc-scs-cocodataset/'\ntrain_cfg = dict(type='EpochBasedTrainLoop', max_epochs=epoch, val_interval=1)\nval_cfg = dict(type='ValLoop')\ntest_cfg = dict(type='TestLoop')\n\n\nparam_scheduler = [\n    dict(type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=2000),\n    dict(\n        type='MultiStepLR',\n        begin=0,\n        end=epoch,\n        by_epoch=True,\n        milestones=[8, 11],\n        gamma=0.1)\n]\nalbu_train_transforms = [\n    dict(\n        type='Sharpen',\n        alpha=(0.2, 0.7)\n    )\n]\n\nimg_scale = (448, 448)\n\ntrain_pipeline = [\n    dict(type='Mosaic', img_scale=img_scale, pad_val=114.0),\n    dict(\n        type='RandomAffine',\n        scaling_ratio_range=(0.1, 2),\n        # img_scale is (width, height)\n        border=(-img_scale[0] // 2, -img_scale[1] // 2)),\n     dict(\n        type='MixUp',\n        img_scale=img_scale,\n        ratio_range=(0.8, 1.6),\n        pad_val=114.0),\n    dict(type='RandomFlip', prob=0.5),\n    dict(type='PhotoMetricDistortion',\n         brightness_delta=32, contrast_range=(0.5, 1.5),\n         saturation_range=(0.5, 1.5), hue_delta=18),\n    dict(type='Resize', scale=img_scale, keep_ratio=True),\n    dict(type='FilterAnnotations', min_gt_bbox_wh=(1, 1), keep_empty=False),\n    dict(type='PackDetInputs')\n]\n\n\ntest_pipeline = [\n    dict(type='LoadImageFromFile', backend_args=backend_args),\n    dict(type='LoadAnnotations', with_bbox=True),\n    dict(type='PhotoMetricDistortion',\n          brightness_delta=32, contrast_range=(0.5,1.5),\n          saturation_range=(0.5,1.5),hue_delta=18\n         ),\n    dict(type='Resize', scale=img_scale, keep_ratio=True),\n    # If you don't have a gt annotation, delete the pipeline\n    dict(\n        type='PackDetInputs',\n        meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',\n                   'scale_factor'))\n]\n\ntrain_dataset = dict(\n    # use MultiImageMixDataset wrapper to support mosaic and mixup\n    _delete_=True,\n    type='MultiImageMixDataset',\n    dataset=dict(\n        type='CocoDataset',\n        data_root=data_root,\n        metainfo=dict(classes=classes),\n        ann_file=data_root + 'annotations_train.json',\n        data_prefix=dict(img='train2017/'),\n        pipeline=[\n            dict(type='LoadImageFromFile', backend_args=backend_args),\n            dict(type='LoadAnnotations', with_bbox=True)\n        ],\n        backend_args=backend_args),\n    pipeline=train_pipeline)\n\n\ntrain_dataloader = dict(\n    batch_size=8,\n    num_workers=2,\n    persistent_workers=True,\n    dataset=train_dataset)\n\nval_dataloader = dict(\n    batch_size=8,\n    num_workers=2,\n    persistent_workers=True,\n    drop_last=False,\n    dataset=dict(\n        type='CocoDataset',\n        data_root=data_root,\n        metainfo=dict(classes=classes),\n        ann_file=data_root + 'annotations_valid.json',\n        data_prefix=dict(img='valid2017/'),\n        test_mode=True,\n        pipeline=test_pipeline,\n        backend_args=backend_args))\ntest_dataloader = val_dataloader\n\ntest_cfg = dict(type='TestLoop', _delete_=True) \n\nval_evaluator = dict(\nann_file=data_root + 'annotations_valid.json', metric=['bbox'])\nload_from='https://download.openmmlab.com/mmdetection/v2.0/convnext/cascade_mask_rcnn_convnext-s_p4_w7_fpn_giou_4conv1f_fp16_ms-crop_3x_coco/cascade_mask_rcnn_convnext-s_p4_w7_fpn_giou_4conv1f_fp16_ms-crop_3x_coco_20220510_201004-3d24f5a4.pth'\ntest_evaluator = val_evaluator\nfp16=dict(loss_scale=512.)\nwork_dir = '../model_output'\n\ndefault_hooks = dict(\n    timer=dict(type='IterTimerHook'),\n    logger=dict(type='LoggerHook', interval=100),\n    param_scheduler=dict(type='ParamSchedulerHook'),\n    checkpoint=dict(type='CheckpointHook', interval=1, max_keep_ckpts=1,\n        save_best='coco/bbox_mAP_50'),\n    sampler_seed=dict(type='DistSamplerSeedHook'),\n    visualization=dict(type='DetVisualizationHook'))\nresume_from = None","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:49:18.838970Z","iopub.execute_input":"2024-09-15T14:49:18.839399Z","iopub.status.idle":"2024-09-15T14:49:18.850863Z","shell.execute_reply.started":"2024-09-15T14:49:18.839362Z","shell.execute_reply":"2024-09-15T14:49:18.849937Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!bash tools/dist_train.sh /kaggle/working/mmdetection/configs/RSNA2024_SCS/custom_config.py 2","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:49:20.295894Z","iopub.execute_input":"2024-09-15T14:49:20.296715Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# !python /kaggle/working/mmdetection/tools/train.py {config}","metadata":{"execution":{"iopub.status.busy":"2024-09-15T14:48:48.692663Z","iopub.execute_input":"2024-09-15T14:48:48.692962Z","iopub.status.idle":"2024-09-15T14:48:48.697802Z","shell.execute_reply.started":"2024-09-15T14:48:48.692930Z","shell.execute_reply":"2024-09-15T14:48:48.696656Z"},"trusted":true},"execution_count":null,"outputs":[]}]}