{"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":"!conda install '/kaggle/input/pydicom-conda-helper/libjpeg-turbo-2.1.0-h7f98852_0.tar.bz2' -c conda-forge -y\n!conda install '/kaggle/input/pydicom-conda-helper/libgcc-ng-9.3.0-h2828fa1_19.tar.bz2' -c conda-forge -y\n!conda install '/kaggle/input/pydicom-conda-helper/gdcm-2.8.9-py37h500ead1_1.tar.bz2' -c conda-forge -y\n!conda install '/kaggle/input/pydicom-conda-helper/conda-4.10.1-py37h89c1867_0.tar.bz2' -c conda-forge -y\n!conda install '/kaggle/input/pydicom-conda-helper/certifi-2020.12.5-py37h89c1867_1.tar.bz2' -c conda-forge -y\n!conda install '/kaggle/input/pydicom-conda-helper/openssl-1.1.1k-h7f98852_0.tar.bz2' -c conda-forge -y","metadata":{"execution":{"iopub.status.busy":"2021-07-23T07:16:57.13483Z","iopub.execute_input":"2021-07-23T07:16:57.135179Z","iopub.status.idle":"2021-07-23T07:18:19.984528Z","shell.execute_reply.started":"2021-07-23T07:16:57.135099Z","shell.execute_reply":"2021-07-23T07:18:19.983097Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import torch\ntorch.__version__\nimport pandas as pd\nimport os\n\nfrom PIL import Image\nimport pandas as pd\nfrom tqdm.auto import tqdm\nimport numpy as np\nimport pydicom\nfrom pydicom.pixel_data_handlers.util import apply_voi_lut\nIMGSIZE = 1024","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-07-23T07:34:36.833314Z","iopub.execute_input":"2021-07-23T07:34:36.83368Z","iopub.status.idle":"2021-07-23T07:34:36.840304Z","shell.execute_reply.started":"2021-07-23T07:34:36.833648Z","shell.execute_reply":"2021-07-23T07:34:36.838947Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!wget https://github.com/SwinTransformer/storage/releases/download/v1.0.2/mask_rcnn_swin_tiny_patch4_window7.pth","metadata":{"execution":{"iopub.status.busy":"2021-07-23T07:23:02.215171Z","iopub.execute_input":"2021-07-23T07:23:02.215554Z","iopub.status.idle":"2021-07-23T07:23:07.662441Z","shell.execute_reply.started":"2021-07-23T07:23:02.215523Z","shell.execute_reply":"2021-07-23T07:23:07.6612Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!git clone https://akshays12@bitbucket.org/akshays12/covid-detection.git","metadata":{"execution":{"iopub.status.busy":"2021-07-23T07:23:11.497716Z","iopub.execute_input":"2021-07-23T07:23:11.4981Z","iopub.status.idle":"2021-07-23T07:23:16.209666Z","shell.execute_reply.started":"2021-07-23T07:23:11.498065Z","shell.execute_reply":"2021-07-23T07:23:16.208183Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html","metadata":{"execution":{"iopub.status.busy":"2021-07-23T07:23:16.213905Z","iopub.execute_input":"2021-07-23T07:23:16.214242Z","iopub.status.idle":"2021-07-23T07:23:34.302129Z","shell.execute_reply.started":"2021-07-23T07:23:16.214208Z","shell.execute_reply":"2021-07-23T07:23:34.300827Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = pd.read_csv('../input/siim-covid19-detection/train_image_level.csv')\n\n# Modify values in the id column\ndf['id'] = df.apply(lambda row: row.id.split('_')[0], axis=1)\n# Add absolute path\n# df['path'] = df.apply(lambda row: TRAIN_PATH+row.id+'.jpg', axis=1)\n# Get image level labels\ndf['image_level'] = df.apply(lambda row: row.label.split(' ')[0], axis=1)\n\ndf.head(5)\n","metadata":{"execution":{"iopub.status.busy":"2021-07-23T07:23:34.306668Z","iopub.execute_input":"2021-07-23T07:23:34.307054Z","iopub.status.idle":"2021-07-23T07:23:34.662147Z","shell.execute_reply.started":"2021-07-23T07:23:34.306984Z","shell.execute_reply":"2021-07-23T07:23:34.661003Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def read_xray(path, voi_lut = True, fix_monochrome = True):\n    # Original from: https://www.kaggle.com/raddar/convert-dicom-to-np-array-the-correct-way\n    dicom = pydicom.read_file(path)\n    \n    # VOI LUT (if available by DICOM device) is used to transform raw DICOM data to \n    # \"human-friendly\" view\n    if voi_lut:\n        data = apply_voi_lut(dicom.pixel_array, dicom)\n    else:\n        data = dicom.pixel_array\n               \n    # depending on this value, X-ray may look inverted - fix that:\n    if fix_monochrome and dicom.PhotometricInterpretation == \"MONOCHROME1\":\n        data = np.amax(data) - data\n        \n    data = data - np.min(data)\n    data = data / np.max(data)\n    data = (data * 255).astype(np.uint8)\n        \n    return data\n\ndef resize_xray(array, size, keep_ratio=False, resample=Image.LANCZOS):\n    # Original from: https://www.kaggle.com/xhlulu/vinbigdata-process-and-resize-to-image\n    im = Image.fromarray(array)\n    \n    if keep_ratio:\n        im.thumbnail((size, size), resample)\n    else:\n        im = im.resize((size, size), resample)\n    \n    return im","metadata":{"execution":{"iopub.status.busy":"2021-07-23T07:23:34.664294Z","iopub.execute_input":"2021-07-23T07:23:34.664796Z","iopub.status.idle":"2021-07-23T07:23:34.676405Z","shell.execute_reply.started":"2021-07-23T07:23:34.664734Z","shell.execute_reply":"2021-07-23T07:23:34.675046Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"image_id = []\ndim0 = []\ndim1 = []\nsave_dir = f'/kaggle/working/train/'\n\nos.makedirs(save_dir, exist_ok=True)\n\nfor dirname, _, filenames in tqdm(os.walk(f'/kaggle/input/siim-covid19-detection/train')):\n    for file in filenames:\n        # set keep_ratio=True to have original aspect ratio\n        xray = read_xray(os.path.join(dirname, file))\n        im = resize_xray(xray, size=IMGSIZE)  \n        im.save(os.path.join(save_dir, file.replace('dcm', 'jpg')))\n\n        image_id.append(file.replace('.dcm', ''))\n        dim0.append(xray.shape[0])\n        dim1.append(xray.shape[1])","metadata":{"execution":{"iopub.status.busy":"2021-07-23T07:34:42.474969Z","iopub.execute_input":"2021-07-23T07:34:42.475342Z","iopub.status.idle":"2021-07-23T08:17:06.211265Z","shell.execute_reply.started":"2021-07-23T07:34:42.475309Z","shell.execute_reply":"2021-07-23T08:17:06.209981Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"metadf = pd.DataFrame.from_dict({'id': image_id, 'dim0': dim0, 'dim1': dim1})\nmetadf.to_csv('meta.csv', index=False)\nlen(metadf)","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.213244Z","iopub.execute_input":"2021-07-23T08:17:06.213929Z","iopub.status.idle":"2021-07-23T08:17:06.252991Z","shell.execute_reply.started":"2021-07-23T08:17:06.213885Z","shell.execute_reply":"2021-07-23T08:17:06.251713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_bbox(row):\n    bboxes = []\n    bbox = []\n    for i, l in enumerate(row.label.split(' ')):\n        if (i % 6 == 0) | (i % 6 == 1):\n            continue\n        bbox.append(float(l))\n        if i % 6 == 5:\n            bboxes.append(bbox)\n            bbox = []  \n            \n    return bboxes\n\n# Scale the bounding boxes according to the size of the resized image. \ndef scale_bbox(row, bboxes):\n    # Get scaling factor\n    scale_x = IMGSIZE/row.dim1\n    scale_y = IMGSIZE/row.dim0\n    \n    scaled_bboxes = []\n    for bbox in bboxes:\n        x = int(np.round(bbox[0]*scale_x, 4))\n        y = int(np.round(bbox[1]*scale_y, 4))\n        x1 = int(np.round(bbox[2]*(scale_x), 4))\n        y1 = int(np.round(bbox[3]*scale_y, 4))\n\n        scaled_bboxes.append([x, y, x1, y1]) # xmin, ymin, xmax, ymax\n        \n    return scaled_bboxes\n\n# Convert the bounding boxes in YOLO format.\n# def get_yolo_format_bbox(img_w, img_h, bboxes):\n#     yolo_boxes = []\n#     for bbox in bboxes:\n#         w = bbox[2] - bbox[0] # xmax - xmin\n#         h = bbox[3] - bbox[1] # ymax - ymin\n#         xc = bbox[0] + int(np.round(w/2)) # xmin + width/2\n#         yc = bbox[1] + int(np.round(h/2)) # ymin + height/2\n        \n#         yolo_boxes.append([xc/img_w, yc/img_h, w/img_w, h/img_h]) # x_center y_center width height\n    \n#     return yolo_boxes","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.255427Z","iopub.execute_input":"2021-07-23T08:17:06.255848Z","iopub.status.idle":"2021-07-23T08:17:06.266043Z","shell.execute_reply.started":"2021-07-23T08:17:06.25581Z","shell.execute_reply":"2021-07-23T08:17:06.264919Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = df.merge(metadf,how='left',on='id')","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.268236Z","iopub.execute_input":"2021-07-23T08:17:06.269029Z","iopub.status.idle":"2021-07-23T08:17:06.310814Z","shell.execute_reply.started":"2021-07-23T08:17:06.268962Z","shell.execute_reply":"2021-07-23T08:17:06.309727Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def voc_classes():\n    return ['opacity']\nlabel_ids = {name: i for i, name in enumerate(voc_classes())}\nimport os.path as osp","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.31418Z","iopub.execute_input":"2021-07-23T08:17:06.314451Z","iopub.status.idle":"2021-07-23T08:17:06.322584Z","shell.execute_reply.started":"2021-07-23T08:17:06.314424Z","shell.execute_reply":"2021-07-23T08:17:06.321304Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.326498Z","iopub.execute_input":"2021-07-23T08:17:06.32693Z","iopub.status.idle":"2021-07-23T08:17:06.351831Z","shell.execute_reply.started":"2021-07-23T08:17:06.3269Z","shell.execute_reply":"2021-07-23T08:17:06.350644Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def traindf_to_annotations(args):\n    img_path, bboxes_inp = args\n    w = str(IMGSIZE)\n    h = str(IMGSIZE)\n    bboxes = []\n    labels = []\n    bboxes_ignore = []\n    labels_ignore = []\n    difficult = False\n    for obj in bboxes_inp:\n        name = 'opacity'\n        label = 0\n        bbox = obj\n        if difficult:\n            bboxes_ignore.append(bbox)\n            labels_ignore.append(label)\n        else:\n            bboxes.append(bbox)\n            labels.append(label)\n    if not bboxes:\n        bboxes = np.zeros((0, 4))\n        labels = np.zeros((0, ))\n    else:\n        bboxes = np.array(bboxes, ndmin=2) - 1\n        labels = np.array(labels)\n    if not bboxes_ignore:\n        bboxes_ignore = np.zeros((0, 4))\n        labels_ignore = np.zeros((0, ))\n    else:\n        bboxes_ignore = np.array(bboxes_ignore, ndmin=2) - 1\n        labels_ignore = np.array(labels_ignore)\n    annotation = {\n        'filename': img_path,\n        'width': w,\n        'height': h,\n        'ann': {\n            'bboxes': bboxes.astype(np.float32),\n            'labels': labels.astype(np.int64),\n            'bboxes_ignore': bboxes_ignore.astype(np.float32),\n            'labels_ignore': labels_ignore.astype(np.int64)\n        }\n    }\n    return annotation","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.355786Z","iopub.execute_input":"2021-07-23T08:17:06.356283Z","iopub.status.idle":"2021-07-23T08:17:06.368795Z","shell.execute_reply.started":"2021-07-23T08:17:06.356251Z","shell.execute_reply":"2021-07-23T08:17:06.367329Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def cvt_to_coco_json(annotations):\n    image_id = 0\n    annotation_id = 0\n    coco = dict()\n    coco['images'] = []\n    coco['type'] = 'instance'\n    coco['categories'] = []\n    coco['annotations'] = []\n    image_set = set()\n\n    def addAnnItem(annotation_id, image_id, category_id, bbox, difficult_flag):\n        annotation_item = dict()\n        annotation_item['segmentation'] = []\n\n        seg = []\n        # bbox[] is x1,y1,x2,y2\n        # left_top\n        seg.append(int(bbox[0]))\n        seg.append(int(bbox[1]))\n        # left_bottom\n        seg.append(int(bbox[0]))\n        seg.append(int(bbox[3]))\n        # right_bottom\n        seg.append(int(bbox[2]))\n        seg.append(int(bbox[3]))\n        # right_top\n        seg.append(int(bbox[2]))\n        seg.append(int(bbox[1]))\n\n        annotation_item['segmentation'].append(seg)\n\n        xywh = np.array(\n            [bbox[0], bbox[1], bbox[2] - bbox[0], bbox[3] - bbox[1]])\n        annotation_item['area'] = int(xywh[2] * xywh[3])\n        if difficult_flag == 1:\n            annotation_item['ignore'] = 0\n            annotation_item['iscrowd'] = 1\n        else:\n            annotation_item['ignore'] = 0\n            annotation_item['iscrowd'] = 0\n        annotation_item['image_id'] = int(image_id)\n        annotation_item['bbox'] = xywh.astype(int).tolist()\n        annotation_item['category_id'] = int(category_id)\n        annotation_item['id'] = int(annotation_id)\n        coco['annotations'].append(annotation_item)\n        return annotation_id + 1\n\n    for category_id, name in enumerate(voc_classes()):\n        category_item = dict()\n        category_item['supercategory'] = str('none')\n        category_item['id'] = int(category_id)\n        category_item['name'] = str(name)\n        coco['categories'].append(category_item)\n\n    for ann_dict in annotations:\n        file_name = ann_dict['filename']\n        ann = ann_dict['ann']\n        assert file_name not in image_set\n        image_item = dict()\n        image_item['id'] = int(image_id)\n        image_item['file_name'] = str(file_name)\n        image_item['height'] = int(ann_dict['height'])\n        image_item['width'] = int(ann_dict['width'])\n        coco['images'].append(image_item)\n        image_set.add(file_name)\n\n        bboxes = ann['bboxes'][:, :4]\n        labels = ann['labels']\n        for bbox_id in range(len(bboxes)):\n            bbox = bboxes[bbox_id]\n            label = labels[bbox_id]\n            annotation_id = addAnnItem(\n                annotation_id, image_id, label, bbox, difficult_flag=0)\n\n        bboxes_ignore = ann['bboxes_ignore'][:, :4]\n        labels_ignore = ann['labels_ignore']\n        for bbox_id in range(len(bboxes_ignore)):\n            bbox = bboxes_ignore[bbox_id]\n            label = labels_ignore[bbox_id]\n            annotation_id = addAnnItem(\n                annotation_id, image_id, label, bbox, difficult_flag=1)\n\n        image_id += 1\n\n    return coco","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.3734Z","iopub.execute_input":"2021-07-23T08:17:06.374302Z","iopub.status.idle":"2021-07-23T08:17:06.395466Z","shell.execute_reply.started":"2021-07-23T08:17:06.374239Z","shell.execute_reply":"2021-07-23T08:17:06.394184Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(len(os.listdir('/kaggle/working/train')))","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.397861Z","iopub.execute_input":"2021-07-23T08:17:06.398385Z","iopub.status.idle":"2021-07-23T08:17:06.418743Z","shell.execute_reply.started":"2021-07-23T08:17:06.398325Z","shell.execute_reply":"2021-07-23T08:17:06.417406Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def cvt_annotations(devkit_path, years, split, out_file):\n    annosArray = []\n    devkitpath = 'pascalvocdevkitpath' # has to be changed later.\n    years = '2012'\n    if not isinstance(years, list):\n        years = [years]\n    annotations = []\n    if split =='train':   \n        target_df = train\n    else:\n        target_df = val\n    for year in years:\n        img_names = os.listdir(f'/kaggle/working/train')\n        img_paths = [\n            f'/kaggle/working/train/{img_name}.jpg' for img_name in img_names\n        ]\n        for i,row in tqdm(target_df.iterrows()):\n#             row = target_df.loc[i]\n            # Get image id\n            img_id = row.id\n            label = row.image_level\n\n            if label=='opacity':\n                # Get bboxes\n                bboxes = get_bbox(row)\n                # Scale bounding boxes\n                scale_bboxes = scale_bbox(row, bboxes)\n                args = (f'/kaggle/working/train/{img_id}.jpg',scale_bboxes)\n                part_annotations = traindf_to_annotations(args)\n                annosArray.append(part_annotations)\n                \n        annotations.extend(annosArray)\n    if out_file.endswith('json'):\n        annotations = cvt_to_coco_json(annotations)\n    mmcv.dump(annotations, out_file)\n    return annotations","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:06.420613Z","iopub.execute_input":"2021-07-23T08:17:06.421729Z","iopub.status.idle":"2021-07-23T08:17:06.432909Z","shell.execute_reply.started":"2021-07-23T08:17:06.421664Z","shell.execute_reply":"2021-07-23T08:17:06.431199Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import mmcv\nfrom sklearn.model_selection import train_test_split\n\ntrain=df.sample(frac=0.8,random_state=200) #random state is a seed value\nval=df.drop(train.index)\n\ndataset_name = 'instances_train2017'\nout_dir = '/kaggle/working'\noutfile = osp.join(out_dir, dataset_name + '.json')\ncvt_annotations('ya','2-2','train',outfile)\ndataset_name = 'instances_val2017'\noutfile = osp.join(out_dir, dataset_name + '.json')\ncvt_annotations('ya','2-2','val',outfile)\n# !mv instances_train2017.json #path to swin transformer data/coco/annotations","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%cd covid-detection","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:13.270733Z","iopub.execute_input":"2021-07-23T08:17:13.271201Z","iopub.status.idle":"2021-07-23T08:17:13.280608Z","shell.execute_reply.started":"2021-07-23T08:17:13.271149Z","shell.execute_reply":"2021-07-23T08:17:13.279273Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%mkdir data\n%cd data\n%mkdir coco\n%cd coco\n%mkdir annotations\n%cd annotations\n%cd ../../..\n%mv ../instances_val2017.json data/coco/annotations/instances_val2017.json\n%mv ../instances_train2017.json data/coco/annotations/instances_train2017.json","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:13.282571Z","iopub.execute_input":"2021-07-23T08:17:13.283247Z","iopub.status.idle":"2021-07-23T08:17:17.258533Z","shell.execute_reply.started":"2021-07-23T08:17:13.28319Z","shell.execute_reply":"2021-07-23T08:17:17.257073Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pwd","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:17.260777Z","iopub.execute_input":"2021-07-23T08:17:17.261213Z","iopub.status.idle":"2021-07-23T08:17:18.052388Z","shell.execute_reply.started":"2021-07-23T08:17:17.261167Z","shell.execute_reply":"2021-07-23T08:17:18.051201Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install -r requirements/build.txt","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:17:18.05443Z","iopub.execute_input":"2021-07-23T08:17:18.055087Z","iopub.status.idle":"2021-07-23T08:17:27.60475Z","shell.execute_reply.started":"2021-07-23T08:17:18.055011Z","shell.execute_reply":"2021-07-23T08:17:27.60322Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install -v -e .","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!git clone https://github.com/NVIDIA/apex\n%cd apex\n!pip install -v --disable-pip-version-check --no-cache-dir --global-option=\"--cpp_ext\" --global-option=\"--cuda_ext\" ./\n%cd ..","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!python tools/train.py configs/swin/mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco.py","metadata":{"execution":{"iopub.status.busy":"2021-07-23T08:45:05.363088Z","iopub.execute_input":"2021-07-23T08:45:05.363511Z","iopub.status.idle":"2021-07-23T11:11:51.952946Z","shell.execute_reply.started":"2021-07-23T08:45:05.363478Z","shell.execute_reply":"2021-07-23T11:11:51.951702Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!tar -czvf work_dirs.tar.gz work_dirs\n%mv work_dirs.tar.gz /kaggle/working","metadata":{"execution":{"iopub.status.busy":"2021-07-23T11:12:09.910914Z","iopub.execute_input":"2021-07-23T11:12:09.911294Z","iopub.status.idle":"2021-07-23T11:19:46.054323Z","shell.execute_reply.started":"2021-07-23T11:12:09.911259Z","shell.execute_reply":"2021-07-23T11:19:46.052879Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%cd mask_rcnn_swin_tiny_patch4_window7_mstrain_480-800_adamw_3x_coco","metadata":{"execution":{"iopub.status.busy":"2021-07-23T11:28:14.717943Z","iopub.execute_input":"2021-07-23T11:28:14.718314Z","iopub.status.idle":"2021-07-23T11:28:14.7297Z","shell.execute_reply.started":"2021-07-23T11:28:14.718279Z","shell.execute_reply":"2021-07-23T11:28:14.728509Z"},"trusted":true},"execution_count":null,"outputs":[]}]}