{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"!nvidia-smi","metadata":{"id":"85hb8_B5LiIQ","outputId":"e3b7bb78-cd69-4e44-87ed-f293e1b7fead","execution":{"iopub.status.busy":"2021-12-18T04:12:30.994177Z","iopub.execute_input":"2021-12-18T04:12:30.994441Z","iopub.status.idle":"2021-12-18T04:12:31.759476Z","shell.execute_reply.started":"2021-12-18T04:12:30.994411Z","shell.execute_reply":"2021-12-18T04:12:31.758637Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\n!pip install openmim\n!mim install mmdet","metadata":{"execution":{"iopub.status.busy":"2021-12-18T03:43:00.582005Z","iopub.execute_input":"2021-12-18T03:43:00.582407Z","iopub.status.idle":"2021-12-18T04:08:54.149064Z","shell.execute_reply.started":"2021-12-18T03:43:00.582304Z","shell.execute_reply":"2021-12-18T04:08:54.14813Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!git clone https://github.com/open-mmlab/mmdetection.git","metadata":{"execution":{"iopub.status.busy":"2021-12-18T04:12:26.281195Z","iopub.execute_input":"2021-12-18T04:12:26.281918Z","iopub.status.idle":"2021-12-18T04:12:28.743195Z","shell.execute_reply.started":"2021-12-18T04:12:26.281867Z","shell.execute_reply":"2021-12-18T04:12:28.742414Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import torch\nimport torch.nn as nn\nimport torchvision.transforms as transforms\nimport torch.nn.functional as F\nimport sklearn\nimport torchvision\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import LabelEncoder\nimport numpy as np\nimport pandas as pd\nimport os\nimport matplotlib.pyplot as plt\nimport PIL\nimport json\nfrom PIL import Image, ImageEnhance\nimport albumentations as A\nimport mmdet\nimport mmcv\nfrom albumentations.pytorch import ToTensorV2\nimport seaborn as sns\nimport glob\nfrom pathlib import Path\nimport pycocotools\nfrom pycocotools import mask\nimport numpy.random\nimport random\nimport cv2\nimport re\nfrom mmdet.datasets import build_dataset\nfrom mmdet.models import build_detector\nfrom mmdet.apis import train_detector\nfrom mmdet.apis import inference_detector, init_detector, show_result_pyplot, set_random_seed\nfrom mmcv import Config","metadata":{"id":"dsKcvdodMyVe","execution":{"iopub.status.busy":"2021-12-18T04:12:41.6881Z","iopub.execute_input":"2021-12-18T04:12:41.688632Z","iopub.status.idle":"2021-12-18T04:13:02.041059Z","shell.execute_reply.started":"2021-12-18T04:12:41.68859Z","shell.execute_reply":"2021-12-18T04:13:02.040204Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!mkdir mmdetection/checkpoint\n!wget https://download.openmmlab.com/mmdetection/v2.0/swin/mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco/mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco_20210903_104808-b92c91f1.pth -P checkpoint/","metadata":{"id":"sL1qWXaNNBY3","outputId":"fa88b84c-b050-4d6b-f373-212ee96f9981","execution":{"iopub.status.busy":"2021-12-18T04:13:02.043116Z","iopub.execute_input":"2021-12-18T04:13:02.043355Z","iopub.status.idle":"2021-12-18T04:13:34.494449Z","shell.execute_reply.started":"2021-12-18T04:13:02.043322Z","shell.execute_reply":"2021-12-18T04:13:34.493669Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%writefile labels.txt\nshsy5y\ncort\nastro","metadata":{"id":"P8iAXhPGEmc6","outputId":"bb784132-66e1-442e-c4cc-32178127b42a","execution":{"iopub.status.busy":"2021-12-18T04:13:34.496091Z","iopub.execute_input":"2021-12-18T04:13:34.496367Z","iopub.status.idle":"2021-12-18T04:13:34.502834Z","shell.execute_reply.started":"2021-12-18T04:13:34.496331Z","shell.execute_reply":"2021-12-18T04:13:34.502039Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cfg = Config.fromfile('mmdetection/configs/swin/mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco.py')\nprint(cfg.pretty_text)","metadata":{"id":"_NccUbpVNE7n","outputId":"04a0e728-0273-4344-fa64-5cd11f9610d3","execution":{"iopub.status.busy":"2021-12-18T04:13:34.504846Z","iopub.execute_input":"2021-12-18T04:13:34.505096Z","iopub.status.idle":"2021-12-18T04:13:39.31133Z","shell.execute_reply.started":"2021-12-18T04:13:34.505054Z","shell.execute_reply":"2021-12-18T04:13:39.310577Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fold=2","metadata":{"id":"buQSFHfUzSjD","execution":{"iopub.status.busy":"2021-12-18T04:13:58.930534Z","iopub.execute_input":"2021-12-18T04:13:58.931094Z","iopub.status.idle":"2021-12-18T04:13:58.935341Z","shell.execute_reply.started":"2021-12-18T04:13:58.931042Z","shell.execute_reply":"2021-12-18T04:13:58.934352Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cfg.dataset_type = 'CustomDataset'\ncfg.classes = 'labels.txt'\n\ncfg.model.roi_head.bbox_head.num_classes=3\n\ncfg.model.roi_head.mask_head.num_classes=3\n\ncfg.data.test.type = 'CustomDataset'\ncfg.data.test.classes = 'labels.txt'\ncfg.data.test.ann_file = f'/kaggle/input/scs-10-folds-mmdet/tenFoldsMMdet/tenFolds_MMdet/mmdet_val_fold2.pkl'\ncfg.data.test.img_prefix = '/kaggle/input/scs-10-folds-mmdet/SCS_images/SCS_images/'\n\ncfg.data.train.type = 'CustomDataset'\ncfg.data.train.ann_file = f'/kaggle/input/scs-10-folds-mmdet/tenFoldsMMdet/tenFolds_MMdet/mmdet_trn_fold2.pkl'\ncfg.data.train.img_prefix = '/kaggle/input/scs-10-folds-mmdet/SCS_images/SCS_images/'\ncfg.data.train.classes = 'labels.txt'\n\ncfg.data.val.type = 'CustomDataset'\ncfg.data.val.ann_file = f'/kaggle/input/scs-10-folds-mmdet/tenFoldsMMdet/tenFolds_MMdet/mmdet_val_fold2.pkl'\ncfg.data.val.img_prefix = '/kaggle/input/scs-10-folds-mmdet/SCS_images/SCS_images/'\ncfg.data.val.classes = 'labels.txt'\n\n\n# cfg.train_pipeline = [\n#     dict(type='LoadImageFromFile'),\n#     dict(\n#         type='LoadAnnotations', with_bbox=True, with_mask=True,\n#         ),\n#     dict(\n#         type='Resize',\n#         img_scale=[(1333, 1333), (1280, 1280), (1024, 1024)],\n#         multiscale_mode='value',\n#         keep_ratio=True),\n#     dict(\n#         type='RandomFlip',\n#         direction=['horizontal', 'vertical'],\n#         flip_ratio=0.5),\n#     dict(\n#         type='Normalize',\n#         mean=[123.68, 116.779, 103.939],\n#         std=[58.393, 57.12, 57.375],\n#         to_rgb=True),\n#     dict(type='Pad', size_divisor=32),\n#     dict(type='DefaultFormatBundle'),\n#     dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels', 'gt_masks'])\n# ]\n\n# cfg.val_pipeline = [\n#     dict(type='LoadImageFromFile'),\n#     dict(\n#         type='MultiScaleFlipAug',\n#         img_scale=(1280, 1280),\n#         flip=True,\n#         transforms=[\n#             dict(type='Resize', keep_ratio=True),\n#             dict(type='RandomFlip', direction=['horizontal', 'vertical']),\n#             dict(\n#                 type='Normalize',\n#                 mean=[123.68, 116.779, 103.939],\n#                 std=[58.393, 57.12, 57.375],\n#                 to_rgb=True),\n#             dict(type='Pad', size_divisor=32),\n#             dict(type='ImageToTensor', keys=['img']),\n#             dict(type='Collect', keys=['img'])\n#         ])\n# ]\n\n\n# cfg.test_pipeline = [\n#     dict(type='LoadImageFromFile'),\n#     dict(\n#         type='MultiScaleFlipAug',\n#         img_scale=(1280, 1280),\n#         flip=True,\n#         transforms=[\n#             dict(type='Resize', keep_ratio=True),\n#             dict(type='RandomFlip', direction=['horizontal', 'vertical']),\n#             dict(\n#                 type='Normalize',\n#                 mean=[123.68, 116.779, 103.939],\n#                 std=[58.393, 57.12, 57.375],\n#                 to_rgb=True),\n#             dict(type='Pad', size_divisor=32),\n#             dict(type='ImageToTensor', keys=['img']),\n#             dict(type='Collect', keys=['img'])\n#         ])\n# ]\n\n# cfg.data.train.pipeline = cfg.train_pipeline\n# cfg.data.val.pipeline = cfg.val_pipeline\n# cfg.data.test.pipeline = cfg.test_pipeline\n\n\ncfg.model.test_cfg.rcnn.max_per_img = 200\ncfg.load_from=\"checkpoint/mask_rcnn_swin-s-p4-w7_fpn_fp16_ms-crop-3x_coco_20210903_104808-b92c91f1.pth\"\ncfg.work_dir = 'model_output'\n\ncfg.runner = dict(type='IterBasedRunner', max_iters=1000)\ncfg.optimizer=dict(type='Adam', lr=0.0005, weight_decay=0.0001)\ncfg.lr_config = dict(\n    policy='CosineAnnealing', \n    by_epoch=False,\n    warmup='linear', \n    warmup_iters=250,\n    warmup_ratio=0.001,\n    min_lr=1e-07)\n\ncfg.data.samples_per_gpu = 1\ncfg.data.workers_per_gpu = 1\n\ncfg.evaluation.interval=20005\ncfg.evaluation.metric='loss'\n\ncfg.checkpoint_config.interval = 300\ncfg.runner.max_iters = 40000\ncfg.log_config.interval = 50\n\ncfg.seed = 0\nset_random_seed(0, deterministic=False)\ncfg.gpu_ids = range(1)\ncfg.fp16 = dict(loss_scale=512.0)\nmeta = dict()\nmeta['config'] = cfg.pretty_text\n\nprint(f'Config:\\n{cfg.pretty_text}')","metadata":{"id":"pa5y4I79NHNo","outputId":"1f0a784b-a91d-4a8d-bffe-3dea39e1cc4e","execution":{"iopub.status.busy":"2021-12-18T04:14:11.734572Z","iopub.execute_input":"2021-12-18T04:14:11.734948Z","iopub.status.idle":"2021-12-18T04:14:20.729063Z","shell.execute_reply.started":"2021-12-18T04:14:11.734915Z","shell.execute_reply":"2021-12-18T04:14:20.728255Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"datasets = [build_dataset(cfg.data.train)]\nmodel = build_detector(cfg.model, train_cfg=cfg.get('train_cfg'), test_cfg=cfg.get('test_cfg'))\nmodel.CLASSES = datasets[0].CLASSES\n\nmmcv.mkdir_or_exist(os.path.abspath(cfg.work_dir))\ntrain_detector(model, datasets, cfg, distributed=False, validate=True, meta=meta)","metadata":{"id":"uae5fy1XzMOQ","outputId":"110d86cd-738d-4b7d-93e0-5ac9afac5690","execution":{"iopub.status.busy":"2021-12-17T21:57:19.543759Z","iopub.execute_input":"2021-12-17T21:57:19.544024Z","iopub.status.idle":"2021-12-17T21:57:20.998493Z","shell.execute_reply.started":"2021-12-17T21:57:19.543978Z","shell.execute_reply":"2021-12-17T21:57:20.996888Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":" !mv /content/model_output/iter_18900.pth /content/drive/MyDrive/MMD_CRCNN1.pth","metadata":{"id":"1uRUE8_tzah5"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"id":"ura9jU1mSXUr"},"execution_count":null,"outputs":[]}]}