{"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":"markdown","source":"ready to use useful pre-process functions like:\n- breast mask pixel prediction\n- breast box prediction\n- breast laterality (some of the laterality values in train.csv are wrong)","metadata":{}},{"cell_type":"code","source":"import sys\nsys.path.append('/kaggle/input/crop-breast-region-etc')\n\nfrom preprocess import *\n\nimport torch\nimport torch.cuda.amp as amp\n\nimport pandas as pd\nfrom glob import glob\n\nimport matplotlib\nimport matplotlib.pyplot as plt\n\nimport timm\nprint (timm.__version__)\nprint('import ok')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-01-08T14:15:51.837446Z","iopub.execute_input":"2023-01-08T14:15:51.837919Z","iopub.status.idle":"2023-01-08T14:15:51.845813Z","shell.execute_reply.started":"2023-01-08T14:15:51.837882Z","shell.execute_reply":"2023-01-08T14:15:51.844739Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#create some dummy images for demo\nimage_dir = f'/kaggle/input/crop-breast-region-etc/example-image'\n\npng_file = glob(f'{image_dir}/**/*.png',recursive=True)\ndf = pd.DataFrame({\n    'png_file': png_file,\n})\nprint(df)\n\ndataset = PreprocessDataset(df)\nloader = DataLoader(\n    dataset,\n    sampler = SequentialSampler(dataset),\n    batch_size  = 8,\n    drop_last   = False,\n    num_workers = 0,\n    pin_memory  = False,\n    collate_fn = proprocess_collate,\n)","metadata":{"execution":{"iopub.status.busy":"2023-01-08T14:14:12.853618Z","iopub.execute_input":"2023-01-08T14:14:12.854974Z","iopub.status.idle":"2023-01-08T14:14:12.915628Z","shell.execute_reply.started":"2023-01-08T14:14:12.85492Z","shell.execute_reply":"2023-01-08T14:14:12.914366Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"checkpoint = f'/kaggle/input/crop-breast-region-etc/00000387.model.pth'  \n\nnet = PreprocessNet()\nf = torch.load(checkpoint, map_location=lambda storage, loc: storage)\nnet.load_state_dict(f['state_dict'],strict=True)\n#net.cuda()\nnet.eval()\nfor t, batch in enumerate(loader):\n    batch_size = len(batch['index'])\n    for k in ['image']: batch[k] = batch[k]#.cuda()\n\n    with torch.no_grad():\n        with amp.autocast(enabled = True):\n            output = net(batch)\n\n    output = post_process(batch, output)\n    for b in range(batch_size):\n        overlay = draw_preprocess_overlay(\n            output['image'][b],\n            output['mask'][b],\n            output['box'][b],\n            output['laterality'][b],\n        )\n\n        #image_show('overlay', overlay)\n        #cv2.waitKey(0)\n        plt.imshow(overlay[...,::-1])\n        plt.show()","metadata":{"execution":{"iopub.status.busy":"2023-01-08T14:16:59.092746Z","iopub.execute_input":"2023-01-08T14:16:59.093724Z","iopub.status.idle":"2023-01-08T14:17:11.087621Z","shell.execute_reply.started":"2023-01-08T14:16:59.093672Z","shell.execute_reply":"2023-01-08T14:17:11.086117Z"},"trusted":true},"execution_count":null,"outputs":[]}]}