{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"!git clone https://github.com/fadamsyah/computer-vision-with-pytorch.git","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cd computer-vision-with-pytorch/Segmentation","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import zipfile\n\nwith zipfile.ZipFile('../../../input/carvana-image-masking-challenge/train.zip',\"r\") as zip_ref:\n    zip_ref.extractall(\".\")\n    \nwith zipfile.ZipFile('../../../input/carvana-image-masking-challenge/train_masks.zip',\"r\") as zip_ref:\n    zip_ref.extractall(\".\")\n    \nwith zipfile.ZipFile('../../../input/carvana-image-masking-challenge/train_masks.csv.zip',\"r\") as zip_ref:\n    zip_ref.extractall(\".\")\n    \nwith zipfile.ZipFile('../../../input/carvana-image-masking-challenge/metadata.csv.zip',\"r\") as zip_ref:\n    zip_ref.extractall(\".\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# TPU: Still fail\n# !curl https://raw.githubusercontent.com/pytorch/xla/master/contrib/scripts/env-setup.py -o pytorch-xla-env-setup.py\n# !python pytorch-xla-env-setup.py --version 1.7 --apt-packages libomp5 libopenblas-dev\n# !pip install pytorch-lightning==1.1.8","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!pip install git+https://github.com/qubvel/segmentation_models.pytorch","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport pytorch_lightning as pl\nimport segmentation_models_pytorch as smp\nimport albumentations as A\n\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport pandas as pd\nimport random\n\nimport os\nimport sys\n\nfrom torch.utils.data import Dataset, DataLoader\nfrom PIL import Image\nfrom albumentations.pytorch import ToTensorV2\n\nfrom lib.pl_datamodules import CarvanaDataModule\nfrom lib.pl_models import SegmentationModel\n\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Initialize the transformation of training and validation dataset\ntransform = {\n    'train': A.Compose([\n        A.Resize(256, 256, always_apply=True),\n        A.HorizontalFlip(p=0.5),\n        A.ShiftScaleRotate(scale_limit=0.2, rotate_limit=10., shift_limit=0.1, p=1., border_mode=0),\n        A.OneOf([\n            A.IAASharpen(p=1),\n            A.Blur(blur_limit=3, p=1),\n            A.MotionBlur(blur_limit=3, p=1)\n        ], p=0.9),\n        A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),\n        ToTensorV2()\n    ]),\n    'val': A.Compose([\n        A.Resize(256, 256, always_apply=True),\n        A.Normalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225)),\n        ToTensorV2()\n    ])\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Initialize a data module\ndm = CarvanaDataModule('train', 'train_masks', 0.2, transform)\ndm.configure_train_dataloader(batch_size=32)\ndm.configure_val_dataloader(batch_size=32)\n\n# Initialize a model\nmodel = SegmentationModel()\nmodel.freeze_encoder()\n\n# Initialize a trainer\ntrainer = pl.Trainer(gpus=1, max_epochs=10, progress_bar_refresh_rate=1,\n                     precision=16, amp_level='O2', benchmark=True)\n# trainer = pl.Trainer(tpu_cores=8, max_epochs=5, progress_bar_refresh_rate=20, precision=16)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Train the model\ntrainer.fit(model, dm)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}