{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Installations\n"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"!pip install mrcnn","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"from shutil import copyfile\ncopyfile(src = \"../input/nucleus-py/nucleus.py\", dst = \"../working/nucleus.py\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Import Packages\n\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"import os\nimport sys\nimport itertools\nimport math\nimport logging\nimport json\nimport re\nimport random\nimport time\nimport concurrent.futures\nimport numpy as np\nimport pandas as pd\nimport matplotlib\nimport matplotlib.pyplot as plt\nimport matplotlib.patches as patches\nimport matplotlib.lines as lines\nfrom matplotlib.patches import Polygon\nimport imgaug\nfrom imgaug import augmenters as iaa\n\n#Import Mask-RCNN\nfrom mrcnn import utils\nfrom mrcnn import visualize\nfrom mrcnn.visualize import display_images\nfrom mrcnn import model as modellib\nfrom mrcnn.model import log\nfrom mrcnn.config import Config\n\nimport nucleus\n#from \"../input/nucleuspyfile\" import nucleus\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Runline Script\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"def rle_decode(mask_rle, shape=(768, 768)):\n   \n    #mask_rle: run-length as string formated (start length)\n    #shape: (height,width) of array to return\n    #Returns numpy array, 1 - mask, 0 - background\n    \n    s = mask_rle.split()\n    starts, lengths = [np.asarray(x, dtype=int) for x in (s[0:][::2], s[1:][::2])]\n    starts -= 1\n    ends = starts + lengths\n    img = np.zeros(shape[0]*shape[1], dtype=np.uint8)\n    \n    for lo, hi in zip(starts, ends):\n        img[lo:hi] = 1\n        \n    return img.reshape(shape).T  # Needed to align to RLE direction","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_masks = pd.read_csv('../input/2019-fire171-asn11-image-segmentation-challenge-v2/train_masks.csv')\nimages = np.array(os.listdir('../input/2019-fire171-asn11-image-segmentation-challenge-v2/train_images/train_images'))\ndf_masks.head()\n\nmask_ids = np.array(df_masks['ImageId'])\nmask_pixels = np.array(df_masks['EncodedPixels'])\n\ndata_dir = \"../input/2019-fire171-asn11-image-segmentation-challenge-v2/train_images/train_images\"\n\nfor p in range(images.shape[0]):\n    img_dir = data_dir + images[p]\n    \n    os.mkdir(img_dir + \"/masks/\")\n    img_dir = data_dir + images[p] + \"/images/\" + images[p] + \".png\"\n    img = plt.imread(img_dir)\n    \n    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"images = np.array(os.listdir('../input/2019-fire171-asn11-image-segmentation-challenge-v2/train_images/train_images/44afae184c89e6ba55985b4d341acc1ae1e8b6ef96312064e0e6e630e022b078/images'))\nimages[0]\n\nimg = plt.imread('../input/2019-fire171-asn11-image-segmentation-challenge-v2/train_images/train_images/44afae184c89e6ba55985b4d341acc1ae1e8b6ef96312064e0e6e630e022b078/images/44afae184c89e6ba55985b4d341acc1ae1e8b6ef96312064e0e6e630e022b078.png')\nplt.imshow(img)\nimg.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Configurations\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"# Dataset directory\nDATASET_DIR = \"../input/2019-fire171-asn11-image-segmentation-challenge-v2/\"\n\n# Use configuation from nucleus.py, but override\n# image resizing so we see the real sizes here\nclass NoResizeConfig(nucleus.NucleusConfig):\n    IMAGE_RESIZE_MODE = \"none\"\n    \nconfig = NoResizeConfig()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_ax(rows=1, cols=1, size=16):\n    \"\"\"Return a Matplotlib Axes array to be used in\n    all visualizations in the notebook. Provide a\n    central point to control graph sizes.\n    \n    Adjust the size attribute to control how big to render images\n    \"\"\"\n    _, ax = plt.subplots(rows, cols, figsize=(size*cols, size*rows))\n    return ax","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Load Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"#os.listdir(\"../input/umd-fire171-asn6-image-segmentation-challenge-2019/\")\nos.listdir(\"../input\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Training dataset\ndataset_train = nucleus.NucleusDataset()\ndataset_train.load_nucleus(DATASET_DIR, subset=\"train\")\ndataset_train.prepare()\n\nprint(\"Image Count: {}\".format(len(dataset_train.image_ids)))\nprint(\"Class Count: {}\".format(dataset_train.num_classes))\nfor i, info in enumerate(dataset_train.class_info):\n    print(\"{:3}. {:50}\".format(i, info['name']))\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Validation dataset\ndataset_val = ShapesDataset()\ndataset_val.load_shapes(50, config.IMAGE_SHAPE[0], config.IMAGE_SHAPE[1])\ndataset_val.prepare()","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}