{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\nimport cv2\nimport keras\nfrom skimage.transform import resize\nfrom keras.layers import *\nfrom keras.models import *\nfrom keras.optimizers import *","execution_count":1,"outputs":[{"output_type":"stream","text":"Using TensorFlow backend.\n","name":"stderr"}]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"train_data = pd.read_csv('../input/train.csv')","execution_count":2,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Get the unique image ids"},{"metadata":{"trusted":true},"cell_type":"code","source":"unique_images = train_data.ImageId.unique()","execution_count":3,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"The following function get the mask for each of the 46 category"},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_masks(image_id, resized_shape=(128, 128)):\n  masks = dict()\n  temp = train_data[train_data.ImageId == image_id]\n  for i in range(temp.shape[0]):\n    width = temp.iloc[i].Width\n    height = temp.iloc[i].Height\n    class_id = temp.iloc[i].ClassId.split()[0]\n    mask_encoded = temp.iloc[i].EncodedPixels.split()\n    mask = [0] * (width*height)\n    for j in range(0, len(mask_encoded), 2):\n      mask[int(mask_encoded[j]): int(mask_encoded[j])+int(mask_encoded[j+1])] = [1]*int(mask_encoded[j+1])\n    mask = np.fliplr(np.flip(np.rot90(np.array(mask).reshape((width, height)))))\n    mask = resize(mask, resized_shape, anti_aliasing=True)\n    masks[int(class_id)] = mask\n  masks_classes = []\n  for i in range(46):\n    if i in masks:\n      masks_classes.append(masks[i])\n    else:\n      masks_classes.append(np.zeros(resized_shape))\n  masks_classes = np.array(masks_classes)\n  return masks_classes","execution_count":4,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data[train_data.ImageId == unique_images[1]]","execution_count":8,"outputs":[{"output_type":"execute_result","execution_count":8,"data":{"text/plain":"                                 ImageId   ...   ClassId\n9   0000fe7c9191fba733c8a69cfaf962b7.jpg   ...        33\n10  0000fe7c9191fba733c8a69cfaf962b7.jpg   ...         1\n\n[2 rows x 5 columns]","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>ImageId</th>\n      <th>EncodedPixels</th>\n      <th>Height</th>\n      <th>Width</th>\n      <th>ClassId</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>9</th>\n      <td>0000fe7c9191fba733c8a69cfaf962b7.jpg</td>\n      <td>2201176 1 2203623 3 2206071 5 2208518 8 221096...</td>\n      <td>2448</td>\n      <td>2448</td>\n      <td>33</td>\n    </tr>\n    <tr>\n      <th>10</th>\n      <td>0000fe7c9191fba733c8a69cfaf962b7.jpg</td>\n      <td>1343707 9 1346138 27 1348569 44 1351000 62 135...</td>\n      <td>2448</td>\n      <td>2448</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"resizing to the same size"},{"metadata":{"trusted":true},"cell_type":"code","source":"masks = get_masks(unique_images[1], (2448, 2448))","execution_count":9,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/skimage/util/dtype.py:135: UserWarning: Possible precision loss when converting from int64 to float64\n  .format(dtypeobj_in, dtypeobj_out))\n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.imshow(masks[33])","execution_count":10,"outputs":[{"output_type":"execute_result","execution_count":10,"data":{"text/plain":"<matplotlib.image.AxesImage at 0x7f9545e8ea90>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"resizing to the size we need for the model"},{"metadata":{"trusted":true},"cell_type":"code","source":"masks = get_masks(unique_images[1], (128, 128))","execution_count":11,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/skimage/util/dtype.py:135: UserWarning: Possible precision loss when converting from int64 to float64\n  .format(dtypeobj_in, dtypeobj_out))\n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.imshow(masks[33])","execution_count":12,"outputs":[{"output_type":"execute_result","execution_count":12,"data":{"text/plain":"<matplotlib.image.AxesImage at 0x7f9547342c18>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"Using Maxpooling for resizing not to lose the edges that are very thin"},{"metadata":{"trusted":true},"cell_type":"code","source":"model_resize = Sequential()\nmodel_resize.add(MaxPool2D((2, 2), data_format='channels_first', input_shape=(46, 1024, 1024)))\nmodel_resize.add(MaxPool2D((2, 2), data_format='channels_first'))\nmodel_resize.add(MaxPool2D((2, 2), data_format='channels_first'))","execution_count":13,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"resizing to 1024 using usual resizing then to 128 using maxpooling"},{"metadata":{"trusted":true},"cell_type":"code","source":"masks = get_masks(unique_images[1], (1024, 1024))\nmasks = model_resize.predict(np.array([masks]))[0]","execution_count":16,"outputs":[{"output_type":"stream","text":"/opt/conda/lib/python3.6/site-packages/skimage/util/dtype.py:135: UserWarning: Possible precision loss when converting from int64 to float64\n  .format(dtypeobj_in, dtypeobj_out))\n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.imshow(masks[33])","execution_count":19,"outputs":[{"output_type":"execute_result","execution_count":19,"data":{"text/plain":"<matplotlib.image.AxesImage at 0x7f95471a00f0>"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]}],"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}