{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport csv\nimport random\nimport pydicom\nimport numpy as np\nimport pandas as pd\nfrom skimage import io\nfrom skimage import measure\nfrom skimage.transform import resize\n\nimport tensorflow as tf\nfrom tensorflow import keras\n\nfrom matplotlib import pyplot as plt\nimport matplotlib.patches as patches","execution_count":1,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e08496a85ef9b0823595c3745d2677c6e84b6a3a"},"cell_type":"code","source":"# empty dictionary\npneumonia_locations = {}\n# load table\nwith open(os.path.join('../input/stage_2_train_labels.csv'), mode='r') as infile:\n    # open reader\n    reader = csv.reader(infile)\n    # skip header\n    next(reader, None)\n    # loop through rows\n    for rows in reader:\n        # retrieve information\n        filename = rows[0]\n        location = rows[1:5]\n        pneumonia = rows[5]\n        # if row contains pneumonia add label to dictionary\n        # which contains a list of pneumonia locations per filename\n        if pneumonia == '1':\n            # convert string to float to int\n            location = [int(float(i)) for i in location]\n            # save pneumonia location in dictionary\n            if filename in pneumonia_locations:\n                pneumonia_locations[filename].append(location)\n            else:\n                pneumonia_locations[filename] = [location]","execution_count":3,"outputs":[]},{"metadata":{"_uuid":"5a4fa6da9833fd7cbd476d19584ba35695b38ddb"},"cell_type":"markdown","source":"# Load filenames"},{"metadata":{"trusted":true,"_uuid":"ccd0b0d52cafd125558ed5560a9cc8fa15760bc5"},"cell_type":"code","source":"# load and shuffle filenames\nfolder = '../input/stage_2_train_images'\nfilenames = os.listdir(folder)\nrandom.shuffle(filenames)\n# split into train and validation filenames\nn_valid_samples = 2560\ntrain_filenames = filenames[n_valid_samples:]\nvalid_filenames = filenames[:n_valid_samples]\nprint('n train samples', len(train_filenames))\nprint('n valid samples', len(valid_filenames))\nn_train_samples = len(filenames) - n_valid_samples","execution_count":4,"outputs":[{"output_type":"stream","text":"n train samples 24124\nn valid samples 2560\n","name":"stdout"}]},{"metadata":{"_uuid":"bd0633867d9d32180eb776703205767e8e891c50"},"cell_type":"markdown","source":"# Exploration"},{"metadata":{"trusted":true,"_uuid":"daa7156380489227e510e8ef086b55c58b4b3ad8"},"cell_type":"code","source":"print('Total train images:',len(filenames))\nprint('Images with pneumonia:', len(pneumonia_locations))\n\nns = [len(value) for value in pneumonia_locations.values()]\nplt.figure()\nplt.hist(ns)\nplt.xlabel('Pneumonia per image')\nplt.xticks(range(1, np.max(ns)+1))\nplt.show()\n\nheatmap = np.zeros((1024, 1024))\nws = []\nhs = []\nfor values in pneumonia_locations.values():\n    for value in values:\n        x, y, w, h = value\n        heatmap[y:y+h, x:x+w] += 1\n        ws.append(w)\n        hs.append(h)\nplt.figure()\nplt.title('Pneumonia location heatmap')\nplt.imshow(heatmap)\nplt.figure()\nplt.title('Pneumonia height lengths')\nplt.hist(hs, bins=np.linspace(0,1000,50))\nplt.show()\nplt.figure()\nplt.title('Pneumonia width lengths')\nplt.hist(ws, bins=np.linspace(0,1000,50))\nplt.show()\nprint('Minimum pneumonia height:', np.min(hs))\nprint('Minimum pneumonia width: ', np.min(ws))\n","execution_count":5,"outputs":[{"output_type":"stream","text":"Total train images: 26684\nImages with pneumonia: 6012\n","name":"stdout"},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}},{"output_type":"stream","text":"Minimum pneumonia height: 45\nMinimum pneumonia width:  40\n","name":"stdout"}]},{"metadata":{"trusted":true,"_uuid":"86b3f780a03cddda78c6adfde461d6ff8dad5672"},"cell_type":"code","source":"class generator(keras.utils.Sequence):\n    \n    def __init__(self, folder, filenames, pneumonia_locations=None, batch_size=32, image_size=256, shuffle=True, augment=False, predict=False):\n        self.folder = folder\n        self.filenames = filenames\n        self.pneumonia_locations = pneumonia_locations\n        self.batch_size = batch_size\n        self.image_size = image_size\n        self.shuffle = shuffle\n        self.augment = augment\n        self.predict = predict\n        self.on_epoch_end()\n        \n    def __load__(self, filename):\n        # load dicom file as numpy array\n        img = pydicom.dcmread(os.path.join(self.folder, filename)).pixel_array\n        # create empty mask\n        msk = np.zeros(img.shape)\n        # get filename without extension\n        filename = filename.split('.')[0]\n        # if image contains pneumonia\n        if filename in self.pneumonia_locations:\n            # loop through pneumonia\n            for location in self.pneumonia_locations[filename]:\n                # add 1's at the location of the pneumonia\n                x, y, w, h = location\n                msk[y:y+h, x:x+w] = 1\n        # resize both image and mask\n        img = resize(img, (self.image_size, self.image_size), mode='reflect')\n        msk = resize(msk, (self.image_size, self.image_size), mode='reflect') > 0.5\n        # if augment then horizontal flip half the time\n        if self.augment and random.random() > 0.5:\n            img = np.fliplr(img)\n            msk = np.fliplr(msk)\n        # add trailing channel dimension\n        img = np.expand_dims(img, -1)\n        msk = np.expand_dims(msk, -1)\n        return img, msk\n    \n    def __loadpredict__(self, filename):\n        # load dicom file as numpy array\n        img = pydicom.dcmread(os.path.join(self.folder, filename)).pixel_array\n        # resize image\n        img = resize(img, (self.image_size, self.image_size), mode='reflect')\n        # add trailing channel dimension\n        img = np.expand_dims(img, -1)\n        return img\n        \n    def __getitem__(self, index):\n        # select batch\n        filenames = self.filenames[index*self.batch_size:(index+1)*self.batch_size]\n        # predict mode: return images and filenames\n        if self.predict:\n            # load files\n            imgs = [self.__loadpredict__(filename) for filename in filenames]\n            # create numpy batch\n            imgs = np.array(imgs)\n            return imgs, filenames\n        # train mode: return images and masks\n        else:\n            # load files\n            items = [self.__load__(filename) for filename in filenames]\n            # unzip images and masks\n            imgs, msks = zip(*items)\n            # create numpy batch\n            imgs = np.array(imgs)\n            msks = np.array(msks)\n            return imgs, msks\n        \n    def on_epoch_end(self):\n        if self.shuffle:\n            random.shuffle(self.filenames)\n        \n    def __len__(self):\n        if self.predict:\n            # return everything\n            return int(np.ceil(len(self.filenames) / self.batch_size))\n        else:\n            # return full batches only\n            return int(len(self.filenames) / self.batch_size)","execution_count":6,"outputs":[]},{"metadata":{"_uuid":"ebc622a4b406354cc4ef28801eab72346a724d8b"},"cell_type":"markdown","source":"# Network"},{"metadata":{"trusted":true,"_uuid":"9fc2b108689637a6037b48ebab3f7659b8704bf9"},"cell_type":"code","source":"def create_downsample(channels, inputs):\n    x = keras.layers.BatchNormalization(momentum=0.9)(inputs)\n    x = keras.layers.LeakyReLU(0)(x)\n    x = keras.layers.Conv2D(channels, 1, padding='same', use_bias=False)(x)\n    x = keras.layers.MaxPool2D(2)(x)\n    return x\n\ndef create_resblock(channels, inputs):\n    x = keras.layers.BatchNormalization(momentum=0.9)(inputs)\n    x = keras.layers.LeakyReLU(0)(x)\n    x = keras.layers.Conv2D(channels, 3, padding='same', use_bias=False)(x)\n    x = keras.layers.BatchNormalization(momentum=0.9)(x)\n    x = keras.layers.LeakyReLU(0)(x)\n    x = keras.layers.Conv2D(channels, 3, padding='same', use_bias=False)(x)\n    return keras.layers.add([x, inputs])\n\ndef create_network(input_size, channels, n_blocks=2, depth=4):\n    # input\n    inputs = keras.Input(shape=(input_size, input_size, 1))\n    x = keras.layers.Conv2D(channels, 3, padding='same', use_bias=False)(inputs)\n    # residual blocks\n    for d in range(depth):\n        channels = channels * 2\n        x = create_downsample(channels, x)\n        for b in range(n_blocks):\n            x = create_resblock(channels, x)\n    # output\n    x = keras.layers.BatchNormalization(momentum=0.9)(x)\n    x = keras.layers.LeakyReLU(0)(x)\n    x = keras.layers.Conv2D(1, 1, activation='sigmoid')(x)\n    outputs = keras.layers.UpSampling2D(2**depth)(x)\n    model = keras.Model(inputs=inputs, outputs=outputs)\n    return model","execution_count":7,"outputs":[]},{"metadata":{"_uuid":"bee3bc9363e9c1829eadf17da7a67fbd1a6a369e"},"cell_type":"markdown","source":"# Train network\n"},{"metadata":{"trusted":true,"_uuid":"4369be30f61440eb6858d57829fa541c4ee893bf"},"cell_type":"code","source":"# define iou or jaccard loss function\ndef iou_loss(y_true, y_pred):\n    y_true = tf.reshape(y_true, [-1])\n    y_pred = tf.reshape(y_pred, [-1])\n    intersection = tf.reduce_sum(y_true * y_pred)\n    score = (intersection + 1.) / (tf.reduce_sum(y_true) + tf.reduce_sum(y_pred) - intersection + 1.)\n    return 1 - score\n\n# combine bce loss and iou loss\ndef iou_bce_loss(y_true, y_pred):\n    return 0.5 * keras.losses.binary_crossentropy(y_true, y_pred) + 0.5 * iou_loss(y_true, y_pred)\n\n# mean iou as a metric\ndef mean_iou(y_true, y_pred):\n    y_pred = tf.round(y_pred)\n    intersect = tf.reduce_sum(y_true * y_pred, axis=[1, 2, 3])\n    union = tf.reduce_sum(y_true, axis=[1, 2, 3]) + tf.reduce_sum(y_pred, axis=[1, 2, 3])\n    smooth = tf.ones(tf.shape(intersect))\n    return tf.reduce_mean((intersect + smooth) / (union - intersect + smooth))\n\n# create network and compiler\nmodel = create_network(input_size=256, channels=32, n_blocks=2, depth=4)\nmodel.compile(optimizer='adam',\n              loss=iou_bce_loss,\n              metrics=['accuracy', mean_iou])\n\n# cosine learning rate annealing\ndef cosine_annealing(x):\n    lr = 0.001\n    epochs = 2\n    return lr*(np.cos(np.pi*x/epochs)+1.)/2\nlearning_rate = tf.keras.callbacks.LearningRateScheduler(cosine_annealing)\n\n# create train and validation generators\nfolder = '../input/stage_2_train_images'\ntrain_gen = generator(folder, train_filenames, pneumonia_locations, batch_size=32, image_size=256, shuffle=True, augment=True, predict=False)\nvalid_gen = generator(folder, valid_filenames, pneumonia_locations, batch_size=32, image_size=256, shuffle=False, predict=False)\n\nhistory = model.fit_generator(train_gen, validation_data=valid_gen, callbacks=[learning_rate], epochs=2, workers=4, use_multiprocessing=True)","execution_count":null,"outputs":[{"output_type":"stream","text":"Epoch 1/2\n80/80 [==============================] - 230s 3s/step - loss: 15.0879 - acc: 0.9689 - mean_iou: 0.6346\n753/753 [==============================] - 2168s 3s/step - loss: 15.5724 - acc: 0.9595 - mean_iou: 0.6043 - val_loss: 15.0879 - val_acc: 0.9689 - val_mean_iou: 0.6346\nEpoch 2/2\n25/80 [========>.....................] - ETA: 3:39 - loss: 15.3472 - acc: 0.9609 - mean_iou: 0.6416","name":"stdout"}]},{"metadata":{"trusted":true,"_uuid":"3666ba4cac9ed2c3029b824af220404bfcc16f23"},"cell_type":"code","source":"plt.figure(figsize=(12,4))\nplt.subplot(131)\nplt.plot(history.epoch, history.history[\"loss\"], label=\"Train loss\")\nplt.plot(history.epoch, history.history[\"val_loss\"], label=\"Valid loss\")\nplt.legend()\nplt.subplot(132)\nplt.plot(history.epoch, history.history[\"acc\"], label=\"Train accuracy\")\nplt.plot(history.epoch, history.history[\"val_acc\"], label=\"Valid accuracy\")\nplt.legend()\nplt.subplot(133)\nplt.plot(history.epoch, history.history[\"mean_iou\"], label=\"Train iou\")\nplt.plot(history.epoch, history.history[\"val_mean_iou\"], label=\"Valid iou\")\nplt.legend()\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fbbf7546d396560d21b7af17d4c959713f425d8e","collapsed":true},"cell_type":"code","source":"for imgs, msks in valid_gen:\n    # predict batch of images\n    preds = model.predict(imgs)\n    # create figure\n    f, axarr = plt.subplots(4, 8, figsize=(20,15))\n    axarr = axarr.ravel()\n    axidx = 0\n    # loop through batch\n    for img, msk, pred in zip(imgs, msks, preds):\n        # plot image\n        axarr[axidx].imshow(img[:, :, 0])\n        # threshold true mask\n        comp = msk[:, :, 0] > 0.5\n        # apply connected components\n        comp = measure.label(comp)\n        # apply bounding boxes\n        predictionString = ''\n        for region in measure.regionprops(comp):\n            # retrieve x, y, height and width\n            y, x, y2, x2 = region.bbox\n            height = y2 - y\n            width = x2 - x\n            axarr[axidx].add_patch(patches.Rectangle((x,y),width,height,linewidth=2,edgecolor='b',facecolor='none'))\n        # threshold predicted mask\n        comp = pred[:, :, 0] > 0.5\n        # apply connected components\n        comp = measure.label(comp)\n        # apply bounding boxes\n        predictionString = ''\n        for region in measure.regionprops(comp):\n            # retrieve x, y, height and width\n            y, x, y2, x2 = region.bbox\n            height = y2 - y\n            width = x2 - x\n            axarr[axidx].add_patch(patches.Rectangle((x,y),width,height,linewidth=2,edgecolor='r',facecolor='none'))\n        axidx += 1\n    plt.show()\n    # only plot one batch\n    break","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"25dc7ad848190bb37349a80f96ed2bdb5c3821b0"},"cell_type":"markdown","source":"# Predict test images"},{"metadata":{"trusted":true,"_uuid":"2c9277e4ec9f12712dd690002c540b396278c504","scrolled":false,"collapsed":true},"cell_type":"code","source":"# load and shuffle filenames\nfolder = '../input/stage_2_test_images'\ntest_filenames = os.listdir(folder)\nprint('n test samples:', len(test_filenames))\n\n# create test generator with predict flag set to True\ntest_gen = generator(folder, test_filenames, None, batch_size=25, image_size=256, shuffle=False, predict=True)\n\n# create submission dictionary\nsubmission_dict = {}\n# loop through testset\nfor imgs, filenames in test_gen:\n    # predict batch of images\n    preds = model.predict(imgs)\n    # loop through batch\n    for pred, filename in zip(preds, filenames):\n        # resize predicted mask\n        pred = resize(pred, (1024, 1024), mode='reflect')\n        # threshold predicted mask\n        comp = pred[:, :, 0] > 0.5\n        # apply connected components\n        comp = measure.label(comp)\n        # apply bounding boxes\n        predictionString = ''\n        for region in measure.regionprops(comp):\n            # retrieve x, y, height and width\n            y, x, y2, x2 = region.bbox\n            height = y2 - y\n            width = x2 - x\n            # proxy for confidence score\n            conf = np.mean(pred[y:y+height, x:x+width])\n            # add to predictionString\n            predictionString += str(conf) + ' ' + str(x) + ' ' + str(y) + ' ' + str(width) + ' ' + str(height) + ' '\n        # add filename and predictionString to dictionary\n        filename = filename.split('.')[0]\n        submission_dict[filename] = predictionString\n    # stop if we've got them all\n    if len(submission_dict) >= len(test_filenames):\n        break\n\n# save dictionary as csv file\nsub = pd.DataFrame.from_dict(submission_dict,orient='index')\nsub.index.names = ['patientId']\nsub.columns = ['PredictionString']\nsub.to_csv('submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"6b7bbc372fddde87f95660b79482d58137ff4ff3"},"cell_type":"code","source":"","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}