├── README.md ├── LICENSE └── PH2_aug_drop_TL.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # Automatic Skin Lesion Segmentation and Melanoma Detection: Transfer Learning approach with U-Net and DCNN-SVM 2 | 3 | *URL:* [Springer](https://link.springer.com/chapter/10.1007/978-981-13-7564-4_32) 4 | 5 | *PDF:* [ResearchGate](https://www.researchgate.net/profile/Zabir-Al-Nazi-2/publication/330564744_Automatic_Skin_Lesion_Segmentation_and_Melanoma_Detection_Transfer_Learning_approach_with_U-Net_and_DCNN-SVM/links/5c488dfd92851c22a38ad608/Automatic-Skin-Lesion-Segmentation-and-Melanoma-Detection-Transfer-Learning-approach-with-U-Net-and-DCNN-SVM.pdf) 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Zabir Al Nazi Nabil 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PH2_aug_drop_TL.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "PH2_aug_drop_TL.ipynb", 7 | "version": "0.3.2", 8 | "provenance": [], 9 | "collapsed_sections": [] 10 | }, 11 | "kernelspec": { 12 | "name": "python3", 13 | "display_name": "Python 3" 14 | }, 15 | "accelerator": "GPU" 16 | }, 17 | "cells": [ 18 | { 19 | "metadata": { 20 | "id": "FX6wdZdoz0qI", 21 | "colab_type": "text" 22 | }, 23 | "cell_type": "markdown", 24 | "source": [ 25 | "### author: zabiralnazi@yahoo.com\n", 26 | "> 0.40 Dropout, Transfer Learning" 27 | ] 28 | }, 29 | { 30 | "metadata": { 31 | "id": "bLYKNAT3FvKz", 32 | "colab_type": "code", 33 | "colab": {} 34 | }, 35 | "cell_type": "code", 36 | "source": [ 37 | "## data_seg.zip URL: https://drive.google.com/open?id=15Bav4EU2fEKMB76zerubFNIUkJjqy7V2" 38 | ], 39 | "execution_count": 0, 40 | "outputs": [] 41 | }, 42 | { 43 | "metadata": { 44 | "id": "cFLrGFDv1zW3", 45 | "colab_type": "code", 46 | "outputId": "9e75bcd5-e2e6-4469-e27f-bb2cd5f9f27e", 47 | "colab": { 48 | "base_uri": "https://localhost:8080/", 49 | "height": 128 50 | } 51 | }, 52 | "cell_type": "code", 53 | "source": [ 54 | "# Load the Drive helper and mount\n", 55 | "from google.colab import drive\n", 56 | "\n", 57 | "# This will prompt for authorization.\n", 58 | "drive.mount('/content/drive')" 59 | ], 60 | "execution_count": 0, 61 | "outputs": [ 62 | { 63 | "output_type": "stream", 64 | "text": [ 65 | "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdocs.test%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.photos.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fpeopleapi.readonly&response_type=code\n", 66 | "\n", 67 | "Enter your authorization code:\n", 68 | "··········\n", 69 | "Mounted at /content/drive\n" 70 | ], 71 | "name": "stdout" 72 | } 73 | ] 74 | }, 75 | { 76 | "metadata": { 77 | "id": "aZrnwzi0CIgp", 78 | "colab_type": "code", 79 | "outputId": "2692a1c4-2ae5-4ad8-b382-af8397207b96", 80 | "colab": { 81 | "base_uri": "https://localhost:8080/", 82 | "height": 35 83 | } 84 | }, 85 | "cell_type": "code", 86 | "source": [ 87 | "% cd /content/drive/My Drive" 88 | ], 89 | "execution_count": 0, 90 | "outputs": [ 91 | { 92 | "output_type": "stream", 93 | "text": [ 94 | "/content/drive/My Drive\n" 95 | ], 96 | "name": "stdout" 97 | } 98 | ] 99 | }, 100 | { 101 | "metadata": { 102 | "id": "cn5MQIp9CM1e", 103 | "colab_type": "code", 104 | "colab": {} 105 | }, 106 | "cell_type": "code", 107 | "source": [ 108 | "# ! ls" 109 | ], 110 | "execution_count": 0, 111 | "outputs": [] 112 | }, 113 | { 114 | "metadata": { 115 | "id": "WGvz1ZQjBg33", 116 | "colab_type": "code", 117 | "outputId": "8bb3c32a-b107-469b-8d71-addc8e8585fd", 118 | "colab": { 119 | "base_uri": "https://localhost:8080/", 120 | "height": 35 121 | } 122 | }, 123 | "cell_type": "code", 124 | "source": [ 125 | "import os\n", 126 | "print(os.stat('/content/drive/My Drive/data_seg.zip').st_size/1000000000) # GigaBytes (approx)" 127 | ], 128 | "execution_count": 0, 129 | "outputs": [ 130 | { 131 | "output_type": "stream", 132 | "text": [ 133 | "0.019925205\n" 134 | ], 135 | "name": "stdout" 136 | } 137 | ] 138 | }, 139 | { 140 | "metadata": { 141 | "id": "g4N5lrF0Cmmt", 142 | "colab_type": "code", 143 | "outputId": "d9d48d57-936a-4dd8-a481-197eb711cafa", 144 | "colab": { 145 | "base_uri": "https://localhost:8080/", 146 | "height": 35 147 | } 148 | }, 149 | "cell_type": "code", 150 | "source": [ 151 | "% cd /content/" 152 | ], 153 | "execution_count": 0, 154 | "outputs": [ 155 | { 156 | "output_type": "stream", 157 | "text": [ 158 | "/content\n" 159 | ], 160 | "name": "stdout" 161 | } 162 | ] 163 | }, 164 | { 165 | "metadata": { 166 | "id": "41mpm780Cpkt", 167 | "colab_type": "code", 168 | "outputId": "a6cf7eb8-450c-4b4e-8a20-7979b379bfbc", 169 | "colab": { 170 | "base_uri": "https://localhost:8080/", 171 | "height": 35 172 | } 173 | }, 174 | "cell_type": "code", 175 | "source": [ 176 | "! ls" 177 | ], 178 | "execution_count": 0, 179 | "outputs": [ 180 | { 181 | "output_type": "stream", 182 | "text": [ 183 | "drive sample_data\n" 184 | ], 185 | "name": "stdout" 186 | } 187 | ] 188 | }, 189 | { 190 | "metadata": { 191 | "id": "FKtdCB6xCG1o", 192 | "colab_type": "code", 193 | "colab": {} 194 | }, 195 | "cell_type": "code", 196 | "source": [ 197 | "# unzip to train_imgs folder\n", 198 | "data_seg = '/content/drive/My Drive/data_seg.zip'\n", 199 | "import zipfile\n", 200 | "zip_ref = zipfile.ZipFile(data_seg, 'r')\n", 201 | "zip_ref.extractall('img_seg')\n", 202 | "zip_ref.close()" 203 | ], 204 | "execution_count": 0, 205 | "outputs": [] 206 | }, 207 | { 208 | "metadata": { 209 | "id": "2ddKV2GkC0oo", 210 | "colab_type": "code", 211 | "outputId": "c4806776-de76-4e50-8d2e-5abbd0a7a453", 212 | "colab": { 213 | "base_uri": "https://localhost:8080/", 214 | "height": 35 215 | } 216 | }, 217 | "cell_type": "code", 218 | "source": [ 219 | "! ls" 220 | ], 221 | "execution_count": 0, 222 | "outputs": [ 223 | { 224 | "output_type": "stream", 225 | "text": [ 226 | "drive img_seg\tsample_data\n" 227 | ], 228 | "name": "stdout" 229 | } 230 | ] 231 | }, 232 | { 233 | "metadata": { 234 | "id": "W9Bh39DXGUyh", 235 | "colab_type": "code", 236 | "outputId": "b8520e62-34ff-49dd-80c5-7d84640c4fc4", 237 | "colab": { 238 | "base_uri": "https://localhost:8080/", 239 | "height": 35 240 | } 241 | }, 242 | "cell_type": "code", 243 | "source": [ 244 | "% cd /content/img_seg/data_seg" 245 | ], 246 | "execution_count": 0, 247 | "outputs": [ 248 | { 249 | "output_type": "stream", 250 | "text": [ 251 | "/content/img_seg/data_seg\n" 252 | ], 253 | "name": "stdout" 254 | } 255 | ] 256 | }, 257 | { 258 | "metadata": { 259 | "id": "R7Kr4Oa7GiRK", 260 | "colab_type": "code", 261 | "outputId": "3288f0bd-b961-4022-9738-b6c114824c54", 262 | "colab": { 263 | "base_uri": "https://localhost:8080/", 264 | "height": 35 265 | } 266 | }, 267 | "cell_type": "code", 268 | "source": [ 269 | "! ls" 270 | ], 271 | "execution_count": 0, 272 | "outputs": [ 273 | { 274 | "output_type": "stream", 275 | "text": [ 276 | "test train\n" 277 | ], 278 | "name": "stdout" 279 | } 280 | ] 281 | }, 282 | { 283 | "metadata": { 284 | "id": "vYvQLEWOC2NJ", 285 | "colab_type": "code", 286 | "colab": {} 287 | }, 288 | "cell_type": "code", 289 | "source": [ 290 | "import glob\n", 291 | "img_files_tv = [] # train, validation\n", 292 | "for files in glob.glob('/content/img_seg/data_seg/train/image/*.png'):\n", 293 | " img_files_tv.append(files)\n", 294 | "\n", 295 | "mask_files_tv = []\n", 296 | "for files in glob.glob('/content/img_seg/data_seg/train/label/*.png'):\n", 297 | " mask_files_tv.append(files)" 298 | ], 299 | "execution_count": 0, 300 | "outputs": [] 301 | }, 302 | { 303 | "metadata": { 304 | "id": "iJrm1qngF7LR", 305 | "colab_type": "code", 306 | "outputId": "ceaae684-e625-453e-ca03-16b23fc8307b", 307 | "colab": { 308 | "base_uri": "https://localhost:8080/", 309 | "height": 53 310 | } 311 | }, 312 | "cell_type": "code", 313 | "source": [ 314 | "print(len(img_files_tv))\n", 315 | "print(len(mask_files_tv))" 316 | ], 317 | "execution_count": 0, 318 | "outputs": [ 319 | { 320 | "output_type": "stream", 321 | "text": [ 322 | "170\n", 323 | "170\n" 324 | ], 325 | "name": "stdout" 326 | } 327 | ] 328 | }, 329 | { 330 | "metadata": { 331 | "id": "F3PWREZhGCdY", 332 | "colab_type": "code", 333 | "colab": {} 334 | }, 335 | "cell_type": "code", 336 | "source": [ 337 | "img_files_tst = [] # train, validation\n", 338 | "for files in glob.glob('/content/img_seg/data_seg/test/image/*.png'):\n", 339 | " img_files_tst.append(files)\n", 340 | "\n", 341 | "mask_files_tst = []\n", 342 | "for files in glob.glob('/content/img_seg/data_seg/test/label/*.png'):\n", 343 | " mask_files_tst.append(files)" 344 | ], 345 | "execution_count": 0, 346 | "outputs": [] 347 | }, 348 | { 349 | "metadata": { 350 | "id": "S-KCL-GjHkDj", 351 | "colab_type": "code", 352 | "outputId": "69881405-6c37-4ea4-8615-128e6dd8e611", 353 | "colab": { 354 | "base_uri": "https://localhost:8080/", 355 | "height": 53 356 | } 357 | }, 358 | "cell_type": "code", 359 | "source": [ 360 | "print(len(img_files_tst))\n", 361 | "print(len(mask_files_tst))" 362 | ], 363 | "execution_count": 0, 364 | "outputs": [ 365 | { 366 | "output_type": "stream", 367 | "text": [ 368 | "30\n", 369 | "30\n" 370 | ], 371 | "name": "stdout" 372 | } 373 | ] 374 | }, 375 | { 376 | "metadata": { 377 | "id": "mSJD9L3XHnGd", 378 | "colab_type": "code", 379 | "colab": {} 380 | }, 381 | "cell_type": "code", 382 | "source": [ 383 | "# To reproduce the results later\n", 384 | "from numpy.random import seed\n", 385 | "seed(1997)\n", 386 | "from tensorflow import set_random_seed\n", 387 | "set_random_seed(1997)" 388 | ], 389 | "execution_count": 0, 390 | "outputs": [] 391 | }, 392 | { 393 | "metadata": { 394 | "id": "wmVc9hNqH2TV", 395 | "colab_type": "code", 396 | "outputId": "5e50ff30-4028-4869-f719-ff38c2d4c263", 397 | "colab": { 398 | "base_uri": "https://localhost:8080/", 399 | "height": 35 400 | } 401 | }, 402 | "cell_type": "code", 403 | "source": [ 404 | "# reference: https://github.com/ZFTurbo/ZF_UNET_224_Pretrained_Model\n", 405 | "from keras.models import Model\n", 406 | "from keras.layers import Input, Conv2D, MaxPooling2D, UpSampling2D\n", 407 | "from keras.layers.normalization import BatchNormalization\n", 408 | "from keras.layers.core import SpatialDropout2D, Activation\n", 409 | "from keras import backend as K\n", 410 | "from keras.layers.merge import concatenate\n", 411 | "from keras.utils.data_utils import get_file\n", 412 | "\n", 413 | "# Number of image channels (for example 3 in case of RGB, or 1 for grayscale images)\n", 414 | "INPUT_CHANNELS = 3\n", 415 | "# Number of output masks (1 in case you predict only one type of objects)\n", 416 | "OUTPUT_MASK_CHANNELS = 1\n", 417 | "# Pretrained weights\n", 418 | "\n", 419 | "\n", 420 | "def preprocess_input(x):\n", 421 | " x /= 255.\n", 422 | " # not sure about the mean of the image distribution\n", 423 | " return x\n", 424 | "\n", 425 | "\n", 426 | "def dice_coef(y_true, y_pred):\n", 427 | " y_true_f = K.flatten(y_true)\n", 428 | " y_pred_f = K.flatten(y_pred)\n", 429 | " intersection = K.sum(y_true_f * y_pred_f)\n", 430 | " # +1 added to avoid 0/0 division\n", 431 | " return (2.0 * intersection + 1.0) / (K.sum(y_true_f) + K.sum(y_pred_f) + 1.0)\n", 432 | " \n", 433 | "\n", 434 | "\n", 435 | "def jacard_coef(y_true, y_pred):\n", 436 | " y_true_f = K.flatten(y_true)\n", 437 | " y_pred_f = K.flatten(y_pred)\n", 438 | " intersection = K.sum(y_true_f * y_pred_f)\n", 439 | " return (intersection + 1.0) / (K.sum(y_true_f) + K.sum(y_pred_f) - intersection + 1.0)\n", 440 | "\n", 441 | "\n", 442 | "def jacard_coef_loss(y_true, y_pred):\n", 443 | " return -jacard_coef(y_true, y_pred)\n", 444 | "\n", 445 | "\n", 446 | "def dice_coef_loss(y_true, y_pred):\n", 447 | " return -dice_coef(y_true, y_pred)\n", 448 | "\n", 449 | "\n", 450 | "def double_conv_layer(x, size, dropout=0.5, batch_norm=True):\n", 451 | " if K.image_dim_ordering() == 'th':\n", 452 | " axis = 1\n", 453 | " else:\n", 454 | " axis = 3\n", 455 | " conv = Conv2D(size, (3, 3), padding='same')(x)\n", 456 | " if batch_norm is True:\n", 457 | " conv = BatchNormalization(axis=axis)(conv)\n", 458 | " conv = Activation('relu')(conv)\n", 459 | " conv = Conv2D(size, (3, 3), padding='same')(conv)\n", 460 | " if batch_norm is True:\n", 461 | " conv = BatchNormalization(axis=axis)(conv)\n", 462 | " conv = Activation('relu')(conv)\n", 463 | " if dropout > 0:\n", 464 | " conv = SpatialDropout2D(dropout)(conv)\n", 465 | " return conv\n", 466 | "\n", 467 | "\n", 468 | "def UNET_224(dropout_val=0.5, weights=None): # No dropout by default\n", 469 | " if K.image_dim_ordering() == 'th':\n", 470 | " inputs = Input((INPUT_CHANNELS, 224, 224))\n", 471 | " axis = 1\n", 472 | " else:\n", 473 | " inputs = Input((224, 224, INPUT_CHANNELS))\n", 474 | " axis = 3\n", 475 | " filters = 32\n", 476 | "\n", 477 | " conv_224 = double_conv_layer(inputs, filters)\n", 478 | " pool_112 = MaxPooling2D(pool_size=(2, 2))(conv_224)\n", 479 | "\n", 480 | " conv_112 = double_conv_layer(pool_112, 2*filters)\n", 481 | " pool_56 = MaxPooling2D(pool_size=(2, 2))(conv_112)\n", 482 | "\n", 483 | " conv_56 = double_conv_layer(pool_56, 4*filters)\n", 484 | " pool_28 = MaxPooling2D(pool_size=(2, 2))(conv_56)\n", 485 | "\n", 486 | " conv_28 = double_conv_layer(pool_28, 8*filters)\n", 487 | " pool_14 = MaxPooling2D(pool_size=(2, 2))(conv_28)\n", 488 | "\n", 489 | " conv_14 = double_conv_layer(pool_14, 16*filters)\n", 490 | " pool_7 = MaxPooling2D(pool_size=(2, 2))(conv_14)\n", 491 | "\n", 492 | " conv_7 = double_conv_layer(pool_7, 32*filters)\n", 493 | "\n", 494 | " up_14 = concatenate([UpSampling2D(size=(2, 2))(conv_7), conv_14], axis=axis)\n", 495 | " up_conv_14 = double_conv_layer(up_14, 16*filters)\n", 496 | "\n", 497 | " up_28 = concatenate([UpSampling2D(size=(2, 2))(up_conv_14), conv_28], axis=axis)\n", 498 | " up_conv_28 = double_conv_layer(up_28, 8*filters)\n", 499 | "\n", 500 | " up_56 = concatenate([UpSampling2D(size=(2, 2))(up_conv_28), conv_56], axis=axis)\n", 501 | " up_conv_56 = double_conv_layer(up_56, 4*filters)\n", 502 | "\n", 503 | " up_112 = concatenate([UpSampling2D(size=(2, 2))(up_conv_56), conv_112], axis=axis)\n", 504 | " up_conv_112 = double_conv_layer(up_112, 2*filters)\n", 505 | "\n", 506 | " up_224 = concatenate([UpSampling2D(size=(2, 2))(up_conv_112), conv_224], axis=axis)\n", 507 | " up_conv_224 = double_conv_layer(up_224, filters, dropout_val)\n", 508 | "\n", 509 | " conv_final = Conv2D(OUTPUT_MASK_CHANNELS, (1, 1))(up_conv_224)\n", 510 | " conv_final = Activation('sigmoid')(conv_final)\n", 511 | "\n", 512 | " model = Model(inputs, conv_final, name=\"UNET_224\")\n", 513 | "\n", 514 | "\n", 515 | " return model" 516 | ], 517 | "execution_count": 0, 518 | "outputs": [ 519 | { 520 | "output_type": "stream", 521 | "text": [ 522 | "Using TensorFlow backend.\n" 523 | ], 524 | "name": "stderr" 525 | } 526 | ] 527 | }, 528 | { 529 | "metadata": { 530 | "id": "73p9yWxtI1qz", 531 | "colab_type": "code", 532 | "outputId": "61ce202f-9ec6-40bc-c757-6f6853dd9e2b", 533 | "colab": { 534 | "base_uri": "https://localhost:8080/", 535 | "height": 35 536 | } 537 | }, 538 | "cell_type": "code", 539 | "source": [ 540 | "import cv2\n", 541 | "import random\n", 542 | "import numpy as np\n", 543 | "import pandas as pd\n", 544 | "from keras.optimizers import Adam, SGD\n", 545 | "from keras.callbacks import ModelCheckpoint, EarlyStopping, ReduceLROnPlateau\n", 546 | "from keras import __version__\n", 547 | "\n", 548 | "img_files_tv.sort()\n", 549 | "mask_files_tv.sort()\n", 550 | "\n", 551 | "img_files_tst.sort()\n", 552 | "mask_files_tst.sort()\n", 553 | "\n", 554 | "print('Updated States ...')\n", 555 | "img_arr = []\n", 556 | "mask_arr = []\n", 557 | "num_train = len(img_files_tv)\n", 558 | "global gen_batch " 559 | ], 560 | "execution_count": 0, 561 | "outputs": [ 562 | { 563 | "output_type": "stream", 564 | "text": [ 565 | "Updated States ...\n" 566 | ], 567 | "name": "stdout" 568 | } 569 | ] 570 | }, 571 | { 572 | "metadata": { 573 | "id": "PIOlzja4JZSE", 574 | "colab_type": "code", 575 | "outputId": "ac803bae-5207-45ef-f6b4-3677005b14c8", 576 | "colab": { 577 | "base_uri": "https://localhost:8080/", 578 | "height": 53 579 | } 580 | }, 581 | "cell_type": "code", 582 | "source": [ 583 | "import random\n", 584 | "random.seed(1997) # same seed again\n", 585 | "for i in range(num_train):\n", 586 | " a = cv2.imread(img_files_tv[i])\n", 587 | " #a = cv2.resize(a, (224, 224)) \n", 588 | " a = np.array(a,dtype=np.uint8)\n", 589 | " img_arr.append(a)\n", 590 | "\n", 591 | " b = cv2.imread(mask_files_tv[i],0)\n", 592 | " b = cv2.resize(b, (224, 224)) \n", 593 | " b = np.array(b,dtype=np.uint8)\n", 594 | " mask_arr.append(b)\n", 595 | " \n", 596 | " \n", 597 | "for i in range(len(img_files_tst)):\n", 598 | " a = cv2.imread(img_files_tst[i])\n", 599 | " #a = cv2.resize(a, (224, 224)) \n", 600 | " a = np.array(a,dtype=np.uint8)\n", 601 | " img_arr.append(a)\n", 602 | "\n", 603 | " b = cv2.imread(mask_files_tst[i],0)\n", 604 | " b = cv2.resize(b, (224, 224)) \n", 605 | " b = np.array(b,dtype=np.uint8)\n", 606 | " mask_arr.append(b)\n", 607 | " \n", 608 | "print(len(img_arr))\n", 609 | "print(len(mask_arr))\n", 610 | " \n", 611 | "gen_batch = 0\n", 612 | "\n", 613 | "fin_arr = list(zip(img_arr,mask_arr))\n", 614 | "random.shuffle(fin_arr)\n", 615 | "img_arr = [x[0] for x in fin_arr]\n", 616 | "mask_arr = [x[1] for x in fin_arr]" 617 | ], 618 | "execution_count": 0, 619 | "outputs": [ 620 | { 621 | "output_type": "stream", 622 | "text": [ 623 | "200\n", 624 | "200\n" 625 | ], 626 | "name": "stdout" 627 | } 628 | ] 629 | }, 630 | { 631 | "metadata": { 632 | "id": "ioGkCZOBKHMi", 633 | "colab_type": "code", 634 | "outputId": "0514e787-c7ee-4b8a-b4ce-938af299a3a6", 635 | "colab": { 636 | "base_uri": "https://localhost:8080/", 637 | "height": 144 638 | } 639 | }, 640 | "cell_type": "code", 641 | "source": [ 642 | "tot_data = len(img_arr)\n", 643 | "print(tot_data)\n", 644 | "train_split = 0.5\n", 645 | "validation_split = 0.5 + 0.2\n", 646 | "test_split = 0.5 + 0.2 + 0.3\n", 647 | "\n", 648 | "train_img = img_arr[:int(tot_data*train_split)]\n", 649 | "validation_img = img_arr[int(tot_data*train_split):int(tot_data*validation_split)]\n", 650 | "test_img = img_arr[int(tot_data*validation_split):]\n", 651 | "\n", 652 | "train_mask = mask_arr[:int(tot_data*train_split)]\n", 653 | "validation_mask = mask_arr[int(tot_data*train_split):int(tot_data*validation_split)]\n", 654 | "test_mask = mask_arr[int(tot_data*validation_split):]\n", 655 | "\n", 656 | "print(len(train_img))\n", 657 | "print(len(train_mask))\n", 658 | "\n", 659 | "print(len(validation_img))\n", 660 | "print(len(validation_mask))\n", 661 | "\n", 662 | "print(len(test_img))\n", 663 | "print(len(test_mask))" 664 | ], 665 | "execution_count": 0, 666 | "outputs": [ 667 | { 668 | "output_type": "stream", 669 | "text": [ 670 | "200\n", 671 | "100\n", 672 | "100\n", 673 | "40\n", 674 | "40\n", 675 | "60\n", 676 | "60\n" 677 | ], 678 | "name": "stdout" 679 | } 680 | ] 681 | }, 682 | { 683 | "metadata": { 684 | "id": "xUW2_DXMKi4b", 685 | "colab_type": "code", 686 | "colab": {} 687 | }, 688 | "cell_type": "code", 689 | "source": [ 690 | "train_img = np.array(train_img, dtype = 'float32')\n", 691 | "train_img = preprocess_input(train_img)\n", 692 | "validation_img = np.array(validation_img, dtype = 'float32')\n", 693 | "validation_img = preprocess_input(validation_img)\n", 694 | "test_img = np.array(test_img, dtype = 'float32')\n", 695 | "test_img = preprocess_input(test_img)" 696 | ], 697 | "execution_count": 0, 698 | "outputs": [] 699 | }, 700 | { 701 | "metadata": { 702 | "id": "k39m5yNeK3pb", 703 | "colab_type": "code", 704 | "outputId": "20db6f35-ab06-4f15-a18c-f66f2e545e30", 705 | "colab": { 706 | "base_uri": "https://localhost:8080/", 707 | "height": 126 708 | } 709 | }, 710 | "cell_type": "code", 711 | "source": [ 712 | "print(np.max(train_img[0]))\n", 713 | "print(np.max(validation_img[0]))\n", 714 | "print(np.max(test_img[0]))\n", 715 | "\n", 716 | "print(np.min(train_img[0]))\n", 717 | "print(np.min(validation_img[0]))\n", 718 | "print(np.min(test_img[0]))" 719 | ], 720 | "execution_count": 0, 721 | "outputs": [ 722 | { 723 | "output_type": "stream", 724 | "text": [ 725 | "1.0\n", 726 | "1.0\n", 727 | "1.0\n", 728 | "0.003921569\n", 729 | "0.0\n", 730 | "0.019607844\n" 731 | ], 732 | "name": "stdout" 733 | } 734 | ] 735 | }, 736 | { 737 | "metadata": { 738 | "id": "kIunBVBMLXqs", 739 | "colab_type": "code", 740 | "colab": {} 741 | }, 742 | "cell_type": "code", 743 | "source": [ 744 | "train_mask = np.array(train_mask, dtype = 'float32')\n", 745 | "train_mask = preprocess_input(train_mask)\n", 746 | "validation_mask = np.array(validation_mask, dtype = 'float32')\n", 747 | "validation_mask = preprocess_input(validation_mask)\n", 748 | "test_mask = np.array(test_mask, dtype = 'float32')\n", 749 | "test_mask = preprocess_input(test_mask)" 750 | ], 751 | "execution_count": 0, 752 | "outputs": [] 753 | }, 754 | { 755 | "metadata": { 756 | "id": "XegQ5MjWLjVW", 757 | "colab_type": "code", 758 | "outputId": "27bd127e-ad36-479c-d952-3b1394c1ba10", 759 | "colab": { 760 | "base_uri": "https://localhost:8080/", 761 | "height": 126 762 | } 763 | }, 764 | "cell_type": "code", 765 | "source": [ 766 | "print(np.max(train_mask[0]))\n", 767 | "print(np.max(validation_mask[0]))\n", 768 | "print(np.max(test_mask[0]))\n", 769 | "\n", 770 | "print(np.min(train_mask[0]))\n", 771 | "print(np.min(validation_mask[0]))\n", 772 | "print(np.min(test_mask[0]))" 773 | ], 774 | "execution_count": 0, 775 | "outputs": [ 776 | { 777 | "output_type": "stream", 778 | "text": [ 779 | "1.0\n", 780 | "1.0\n", 781 | "1.0\n", 782 | "0.0\n", 783 | "0.0\n", 784 | "0.0\n" 785 | ], 786 | "name": "stdout" 787 | } 788 | ] 789 | }, 790 | { 791 | "metadata": { 792 | "id": "pUEg698vLqDb", 793 | "colab_type": "code", 794 | "outputId": "6e47b45c-4139-4858-c98f-b5c3ec368852", 795 | "colab": { 796 | "base_uri": "https://localhost:8080/", 797 | "height": 53 798 | } 799 | }, 800 | "cell_type": "code", 801 | "source": [ 802 | "print(train_img[0].shape)\n", 803 | "print(train_mask[0].shape)" 804 | ], 805 | "execution_count": 0, 806 | "outputs": [ 807 | { 808 | "output_type": "stream", 809 | "text": [ 810 | "(224, 224, 3)\n", 811 | "(224, 224)\n" 812 | ], 813 | "name": "stdout" 814 | } 815 | ] 816 | }, 817 | { 818 | "metadata": { 819 | "id": "GwNdLKyFLtVd", 820 | "colab_type": "code", 821 | "outputId": "1712045a-0523-4715-bd89-007e0895cfb2", 822 | "colab": { 823 | "base_uri": "https://localhost:8080/", 824 | "height": 53 825 | } 826 | }, 827 | "cell_type": "code", 828 | "source": [ 829 | "print(train_mask.shape)\n", 830 | "n_s, r, c = train_mask.shape\n", 831 | "train_mask = train_mask.reshape(n_s, r, c, 1)\n", 832 | "print(train_mask.shape)" 833 | ], 834 | "execution_count": 0, 835 | "outputs": [ 836 | { 837 | "output_type": "stream", 838 | "text": [ 839 | "(100, 224, 224)\n", 840 | "(100, 224, 224, 1)\n" 841 | ], 842 | "name": "stdout" 843 | } 844 | ] 845 | }, 846 | { 847 | "metadata": { 848 | "id": "OtExY_AfLwp1", 849 | "colab_type": "code", 850 | "outputId": "72bb18fb-4182-4d3e-fd89-9be6bc2a1809", 851 | "colab": { 852 | "base_uri": "https://localhost:8080/", 853 | "height": 53 854 | } 855 | }, 856 | "cell_type": "code", 857 | "source": [ 858 | "print(validation_mask.shape)\n", 859 | "n_s, r, c = validation_mask.shape\n", 860 | "validation_mask = validation_mask.reshape(n_s, r, c, 1)\n", 861 | "print(validation_mask.shape)" 862 | ], 863 | "execution_count": 0, 864 | "outputs": [ 865 | { 866 | "output_type": "stream", 867 | "text": [ 868 | "(40, 224, 224)\n", 869 | "(40, 224, 224, 1)\n" 870 | ], 871 | "name": "stdout" 872 | } 873 | ] 874 | }, 875 | { 876 | "metadata": { 877 | "id": "FLTtYDckL0ed", 878 | "colab_type": "code", 879 | "outputId": "aba2757d-8741-423f-934a-593597cf6b0b", 880 | "colab": { 881 | "base_uri": "https://localhost:8080/", 882 | "height": 53 883 | } 884 | }, 885 | "cell_type": "code", 886 | "source": [ 887 | "print(test_mask.shape)\n", 888 | "n_s, r, c = test_mask.shape\n", 889 | "test_mask = test_mask.reshape(n_s, r, c, 1)\n", 890 | "print(test_mask.shape)" 891 | ], 892 | "execution_count": 0, 893 | "outputs": [ 894 | { 895 | "output_type": "stream", 896 | "text": [ 897 | "(60, 224, 224)\n", 898 | "(60, 224, 224, 1)\n" 899 | ], 900 | "name": "stdout" 901 | } 902 | ] 903 | }, 904 | { 905 | "metadata": { 906 | "id": "lrBV-XA0NUfI", 907 | "colab_type": "code", 908 | "outputId": "acf85c1a-da26-407f-f4b9-9a655d1e1bf2", 909 | "colab": { 910 | "base_uri": "https://localhost:8080/", 911 | "height": 35 912 | } 913 | }, 914 | "cell_type": "code", 915 | "source": [ 916 | "print(os.stat('/content/drive/My Drive/unet_224_best_weight_drop_aug.h5').st_size/1000000000) # GigaBytes (approx)" 917 | ], 918 | "execution_count": 0, 919 | "outputs": [ 920 | { 921 | "output_type": "stream", 922 | "text": [ 923 | "0.377860192\n" 924 | ], 925 | "name": "stdout" 926 | } 927 | ] 928 | }, 929 | { 930 | "metadata": { 931 | "id": "hlGowSMbMqFd", 932 | "colab_type": "code", 933 | "outputId": "6b545422-e46e-4605-85ef-9d4b11dae2ce", 934 | "colab": { 935 | "base_uri": "https://localhost:8080/", 936 | "height": 1602 937 | } 938 | }, 939 | "cell_type": "code", 940 | "source": [ 941 | "from keras.models import load_model\n", 942 | "import os\n", 943 | "\n", 944 | "out_model_path = 'unet_224_final_model_tf_ph2.h5'\n", 945 | "\n", 946 | "pretrained_weights = '/content/drive/My Drive/unet_224_best_weight_drop_aug.h5'\n", 947 | "epochs = 20\n", 948 | "patience = 20\n", 949 | "batch_size = 32\n", 950 | "optim_type = 'Adam'\n", 951 | "learning_rate = 0.001\n", 952 | "model = UNET_224()\n", 953 | "\n", 954 | "#if os.path.isfile(out_model_path):\n", 955 | "\n", 956 | "model.load_weights(pretrained_weights)\n", 957 | "\n", 958 | "if optim_type == 'SGD':\n", 959 | " optim = SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)\n", 960 | "else:\n", 961 | " optim = Adam(lr=learning_rate)\n", 962 | "model.compile(optimizer=optim, loss=dice_coef_loss, metrics=[dice_coef, jacard_coef])\n", 963 | "\n", 964 | "callbacks = [\n", 965 | " ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=5, min_lr=1e-9, epsilon=0.00001, verbose=1, mode='min'),\n", 966 | " #EarlyStopping(monitor='val_loss', patience=patience, verbose=0),\n", 967 | " ModelCheckpoint('unet_224_best_weight.h5', monitor='val_loss', save_best_only=True, verbose=1),\n", 968 | "]\n", 969 | "\n", 970 | "print('Training Init()')\n", 971 | "history = model.fit(\n", 972 | " x = train_img,\n", 973 | " y = train_mask,\n", 974 | " batch_size = batch_size,\n", 975 | " epochs=epochs,\n", 976 | " #steps_per_epoch= 1815//batch_size,\n", 977 | " validation_data= (validation_img, validation_mask),\n", 978 | " #validation_steps= 389//16,\n", 979 | " verbose=1,\n", 980 | " callbacks=callbacks)\n", 981 | "\n", 982 | "model.save(out_model_path)" 983 | ], 984 | "execution_count": 0, 985 | "outputs": [ 986 | { 987 | "output_type": "stream", 988 | "text": [ 989 | "/usr/local/lib/python3.6/dist-packages/keras/callbacks.py:928: UserWarning: `epsilon` argument is deprecated and will be removed, use `min_delta` insted.\n", 990 | " warnings.warn('`epsilon` argument is deprecated and '\n" 991 | ], 992 | "name": "stderr" 993 | }, 994 | { 995 | "output_type": "stream", 996 | "text": [ 997 | "Training Init()\n", 998 | "Train on 100 samples, validate on 40 samples\n", 999 | "Epoch 1/20\n", 1000 | "100/100 [==============================] - 23s 234ms/step - loss: -0.9029 - dice_coef: 0.9029 - jacard_coef: 0.8234 - val_loss: -0.8242 - val_dice_coef: 0.8242 - val_jacard_coef: 0.7010\n", 1001 | "\n", 1002 | "Epoch 00001: val_loss improved from inf to -0.82420, saving model to unet_224_best_weight.h5\n", 1003 | "Epoch 2/20\n", 1004 | "100/100 [==============================] - 6s 57ms/step - loss: -0.9156 - dice_coef: 0.9156 - jacard_coef: 0.8445 - val_loss: -0.8627 - val_dice_coef: 0.8627 - val_jacard_coef: 0.7586\n", 1005 | "\n", 1006 | "Epoch 00002: val_loss improved from -0.82420 to -0.86267, saving model to unet_224_best_weight.h5\n", 1007 | "Epoch 3/20\n", 1008 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9351 - dice_coef: 0.9351 - jacard_coef: 0.8781 - val_loss: -0.8454 - val_dice_coef: 0.8454 - val_jacard_coef: 0.7321\n", 1009 | "\n", 1010 | "Epoch 00003: val_loss did not improve from -0.86267\n", 1011 | "Epoch 4/20\n", 1012 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9331 - dice_coef: 0.9331 - jacard_coef: 0.8748 - val_loss: -0.8407 - val_dice_coef: 0.8407 - val_jacard_coef: 0.7251\n", 1013 | "\n", 1014 | "Epoch 00004: val_loss did not improve from -0.86267\n", 1015 | "Epoch 5/20\n", 1016 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9396 - dice_coef: 0.9396 - jacard_coef: 0.8861 - val_loss: -0.8655 - val_dice_coef: 0.8655 - val_jacard_coef: 0.7632\n", 1017 | "\n", 1018 | "Epoch 00005: val_loss improved from -0.86267 to -0.86551, saving model to unet_224_best_weight.h5\n", 1019 | "Epoch 6/20\n", 1020 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9259 - dice_coef: 0.9259 - jacard_coef: 0.8624 - val_loss: -0.8795 - val_dice_coef: 0.8795 - val_jacard_coef: 0.7853\n", 1021 | "\n", 1022 | "Epoch 00006: val_loss improved from -0.86551 to -0.87953, saving model to unet_224_best_weight.h5\n", 1023 | "Epoch 7/20\n", 1024 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9223 - dice_coef: 0.9223 - jacard_coef: 0.8564 - val_loss: -0.8791 - val_dice_coef: 0.8791 - val_jacard_coef: 0.7846\n", 1025 | "\n", 1026 | "Epoch 00007: val_loss did not improve from -0.87953\n", 1027 | "Epoch 8/20\n", 1028 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9255 - dice_coef: 0.9255 - jacard_coef: 0.8616 - val_loss: -0.8715 - val_dice_coef: 0.8715 - val_jacard_coef: 0.7724\n", 1029 | "\n", 1030 | "Epoch 00008: val_loss did not improve from -0.87953\n", 1031 | "Epoch 9/20\n", 1032 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9312 - dice_coef: 0.9312 - jacard_coef: 0.8717 - val_loss: -0.8637 - val_dice_coef: 0.8637 - val_jacard_coef: 0.7602\n", 1033 | "\n", 1034 | "Epoch 00009: val_loss did not improve from -0.87953\n", 1035 | "Epoch 10/20\n", 1036 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9406 - dice_coef: 0.9406 - jacard_coef: 0.8880 - val_loss: -0.8610 - val_dice_coef: 0.8610 - val_jacard_coef: 0.7560\n", 1037 | "\n", 1038 | "Epoch 00010: val_loss did not improve from -0.87953\n", 1039 | "Epoch 11/20\n", 1040 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9418 - dice_coef: 0.9418 - jacard_coef: 0.8901 - val_loss: -0.8714 - val_dice_coef: 0.8714 - val_jacard_coef: 0.7722\n", 1041 | "\n", 1042 | "Epoch 00011: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n", 1043 | "\n", 1044 | "Epoch 00011: val_loss did not improve from -0.87953\n", 1045 | "Epoch 12/20\n", 1046 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9424 - dice_coef: 0.9424 - jacard_coef: 0.8911 - val_loss: -0.8729 - val_dice_coef: 0.8729 - val_jacard_coef: 0.7745\n", 1047 | "\n", 1048 | "Epoch 00012: val_loss did not improve from -0.87953\n", 1049 | "Epoch 13/20\n", 1050 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9452 - dice_coef: 0.9452 - jacard_coef: 0.8962 - val_loss: -0.8744 - val_dice_coef: 0.8744 - val_jacard_coef: 0.7769\n", 1051 | "\n", 1052 | "Epoch 00013: val_loss did not improve from -0.87953\n", 1053 | "Epoch 14/20\n", 1054 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9365 - dice_coef: 0.9365 - jacard_coef: 0.8807 - val_loss: -0.8744 - val_dice_coef: 0.8744 - val_jacard_coef: 0.7769\n", 1055 | "\n", 1056 | "Epoch 00014: val_loss did not improve from -0.87953\n", 1057 | "Epoch 15/20\n", 1058 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9474 - dice_coef: 0.9474 - jacard_coef: 0.9001 - val_loss: -0.8737 - val_dice_coef: 0.8737 - val_jacard_coef: 0.7759\n", 1059 | "\n", 1060 | "Epoch 00015: val_loss did not improve from -0.87953\n", 1061 | "Epoch 16/20\n", 1062 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9415 - dice_coef: 0.9415 - jacard_coef: 0.8898 - val_loss: -0.8820 - val_dice_coef: 0.8820 - val_jacard_coef: 0.7892\n", 1063 | "\n", 1064 | "Epoch 00016: val_loss improved from -0.87953 to -0.88201, saving model to unet_224_best_weight.h5\n", 1065 | "Epoch 17/20\n", 1066 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9350 - dice_coef: 0.9350 - jacard_coef: 0.8781 - val_loss: -0.8940 - val_dice_coef: 0.8940 - val_jacard_coef: 0.8085\n", 1067 | "\n", 1068 | "Epoch 00017: val_loss improved from -0.88201 to -0.89402, saving model to unet_224_best_weight.h5\n", 1069 | "Epoch 18/20\n", 1070 | "100/100 [==============================] - 5s 55ms/step - loss: -0.9492 - dice_coef: 0.9492 - jacard_coef: 0.9034 - val_loss: -0.8965 - val_dice_coef: 0.8965 - val_jacard_coef: 0.8126\n", 1071 | "\n", 1072 | "Epoch 00018: val_loss improved from -0.89402 to -0.89650, saving model to unet_224_best_weight.h5\n", 1073 | "Epoch 19/20\n", 1074 | "100/100 [==============================] - 5s 55ms/step - loss: -0.9488 - dice_coef: 0.9488 - jacard_coef: 0.9026 - val_loss: -0.8988 - val_dice_coef: 0.8988 - val_jacard_coef: 0.8164\n", 1075 | "\n", 1076 | "Epoch 00019: val_loss improved from -0.89650 to -0.89884, saving model to unet_224_best_weight.h5\n", 1077 | "Epoch 20/20\n", 1078 | "100/100 [==============================] - 6s 55ms/step - loss: -0.9470 - dice_coef: 0.9470 - jacard_coef: 0.8994 - val_loss: -0.8978 - val_dice_coef: 0.8978 - val_jacard_coef: 0.8148\n", 1079 | "\n", 1080 | "Epoch 00020: val_loss did not improve from -0.89884\n" 1081 | ], 1082 | "name": "stdout" 1083 | } 1084 | ] 1085 | }, 1086 | { 1087 | "metadata": { 1088 | "id": "5DcJTK_ZN88V", 1089 | "colab_type": "code", 1090 | "colab": {} 1091 | }, 1092 | "cell_type": "code", 1093 | "source": [ 1094 | "predicted_mask = model.predict(test_img)" 1095 | ], 1096 | "execution_count": 0, 1097 | "outputs": [] 1098 | }, 1099 | { 1100 | "metadata": { 1101 | "id": "AWoSXVYeQxGD", 1102 | "colab_type": "code", 1103 | "outputId": "7d677d3b-6499-4018-9a73-1274ba89fecc", 1104 | "colab": { 1105 | "base_uri": "https://localhost:8080/", 1106 | "height": 35 1107 | } 1108 | }, 1109 | "cell_type": "code", 1110 | "source": [ 1111 | "predicted_mask.shape" 1112 | ], 1113 | "execution_count": 0, 1114 | "outputs": [ 1115 | { 1116 | "output_type": "execute_result", 1117 | "data": { 1118 | "text/plain": [ 1119 | "(60, 224, 224, 1)" 1120 | ] 1121 | }, 1122 | "metadata": { 1123 | "tags": [] 1124 | }, 1125 | "execution_count": 32 1126 | } 1127 | ] 1128 | }, 1129 | { 1130 | "metadata": { 1131 | "id": "u3pHXqeFQ0Ji", 1132 | "colab_type": "code", 1133 | "colab": {} 1134 | }, 1135 | "cell_type": "code", 1136 | "source": [ 1137 | "def dice_coef_eval(y_true, y_pred):\n", 1138 | " y_p = y_pred.flatten()\n", 1139 | " #print(y_p.shape)\n", 1140 | " y_b = y_true.flatten()\n", 1141 | " #print(y_b.shape)\n", 1142 | " cc = np.dot(y_p,y_b)\n", 1143 | " #print(cc)\n", 1144 | " ps = np.sum(y_p)\n", 1145 | " pb = np.sum(y_b)\n", 1146 | " ds = (2.0*cc + 1.0)/(ps+pb+1.0)\n", 1147 | " #print(type(ds))\n", 1148 | " return ds\n", 1149 | " \n", 1150 | "def jacard_coef_eval(y_true, y_pred):\n", 1151 | " y_p = y_pred.flatten()\n", 1152 | " #print(y_p.shape)\n", 1153 | " y_b = y_true.flatten()\n", 1154 | " #print(y_b.shape)\n", 1155 | " cc = np.dot(y_p,y_b)\n", 1156 | " #print(cc)\n", 1157 | " ps = np.sum(y_p)\n", 1158 | " pb = np.sum(y_b)\n", 1159 | " js = (cc + 1.0)/(ps+pb-cc+1.0)\n", 1160 | " #print(type(ds))\n", 1161 | " return js" 1162 | ], 1163 | "execution_count": 0, 1164 | "outputs": [] 1165 | }, 1166 | { 1167 | "metadata": { 1168 | "id": "lmKSHT-uVt-E", 1169 | "colab_type": "code", 1170 | "colab": {} 1171 | }, 1172 | "cell_type": "code", 1173 | "source": [ 1174 | "# binary conversion\n", 1175 | "predicted_mask[predicted_mask<0.5] = 0.0\n", 1176 | "predicted_mask[predicted_mask>=0.5] = 1.0" 1177 | ], 1178 | "execution_count": 0, 1179 | "outputs": [] 1180 | }, 1181 | { 1182 | "metadata": { 1183 | "id": "zQbi7yUKV2T6", 1184 | "colab_type": "code", 1185 | "colab": {} 1186 | }, 1187 | "cell_type": "code", 1188 | "source": [ 1189 | "dice_score_test = []\n", 1190 | "jacard_score_test = []\n", 1191 | "\n", 1192 | "n_s, r, c, ch = predicted_mask.shape\n", 1193 | "for i in range(n_s):\n", 1194 | " dice_score_test.append(dice_coef_eval(predicted_mask[i,:,:,:], test_mask[i,:,:,:]))\n", 1195 | " jacard_score_test.append(jacard_coef_eval(predicted_mask[i,:,:,:], test_mask[i,:,:,:]))" 1196 | ], 1197 | "execution_count": 0, 1198 | "outputs": [] 1199 | }, 1200 | { 1201 | "metadata": { 1202 | "id": "1MJwiNpgWEok", 1203 | "colab_type": "code", 1204 | "outputId": "74be6122-97f0-4c21-8829-6be9e4069a0f", 1205 | "colab": { 1206 | "base_uri": "https://localhost:8080/", 1207 | "height": 90 1208 | } 1209 | }, 1210 | "cell_type": "code", 1211 | "source": [ 1212 | "print(np.mean(dice_score_test))\n", 1213 | "print(2.0*np.std(dice_score_test))\n", 1214 | "\n", 1215 | "print(np.mean(jacard_score_test))\n", 1216 | "print(2.0*np.std(jacard_score_test))" 1217 | ], 1218 | "execution_count": 0, 1219 | "outputs": [ 1220 | { 1221 | "output_type": "stream", 1222 | "text": [ 1223 | "0.9275341766948207\n", 1224 | "0.12618068346026734\n", 1225 | "0.8704893363514875\n", 1226 | "0.19190177857078056\n" 1227 | ], 1228 | "name": "stdout" 1229 | } 1230 | ] 1231 | }, 1232 | { 1233 | "metadata": { 1234 | "id": "32MPop50Wsro", 1235 | "colab_type": "code", 1236 | "colab": {} 1237 | }, 1238 | "cell_type": "code", 1239 | "source": [ 1240 | "# Install the PyDrive wrapper & import libraries.\n", 1241 | "# This only needs to be done once in a notebook.\n", 1242 | "!pip install -U -q PyDrive" 1243 | ], 1244 | "execution_count": 0, 1245 | "outputs": [] 1246 | }, 1247 | { 1248 | "metadata": { 1249 | "id": "CioN1yDVZugt", 1250 | "colab_type": "code", 1251 | "colab": {} 1252 | }, 1253 | "cell_type": "code", 1254 | "source": [ 1255 | "np.save('img_test.npy', test_img)\n", 1256 | "np.save('img_mask.npy', test_mask)\n", 1257 | "np.save('y_predicted_test.npy', predicted_mask)\n", 1258 | "np.save('model.hist.npy', history.history)" 1259 | ], 1260 | "execution_count": 0, 1261 | "outputs": [] 1262 | }, 1263 | { 1264 | "metadata": { 1265 | "id": "A1tsIv7FZdlK", 1266 | "colab_type": "code", 1267 | "outputId": "96833891-7e68-45e8-8efe-b058a1297175", 1268 | "colab": { 1269 | "base_uri": "https://localhost:8080/", 1270 | "height": 35 1271 | } 1272 | }, 1273 | "cell_type": "code", 1274 | "source": [ 1275 | "# saving to google drive for backup\n", 1276 | "\n", 1277 | "\n", 1278 | "from pydrive.auth import GoogleAuth\n", 1279 | "from pydrive.drive import GoogleDrive\n", 1280 | "from google.colab import auth\n", 1281 | "from oauth2client.client import GoogleCredentials\n", 1282 | "\n", 1283 | "# Authenticate and create the PyDrive client.\n", 1284 | "# This only needs to be done once in a notebook.\n", 1285 | "auth.authenticate_user()\n", 1286 | "gauth = GoogleAuth()\n", 1287 | "gauth.credentials = GoogleCredentials.get_application_default()\n", 1288 | "drive = GoogleDrive(gauth)\n", 1289 | "\n", 1290 | "# Create & upload a file.\n", 1291 | "uploaded = drive.CreateFile({'title': 'img_mask_ph2_tl.npy'})\n", 1292 | "uploaded.SetContentFile('img_mask.npy')\n", 1293 | "uploaded.Upload()\n", 1294 | "print('Uploaded file with ID {}'.format(uploaded.get('id')))" 1295 | ], 1296 | "execution_count": 0, 1297 | "outputs": [ 1298 | { 1299 | "output_type": "stream", 1300 | "text": [ 1301 | "Uploaded file with ID 18ayvAUBCTmxnKuW4D06PB7ERN6MdC1dq\n" 1302 | ], 1303 | "name": "stdout" 1304 | } 1305 | ] 1306 | }, 1307 | { 1308 | "metadata": { 1309 | "id": "6Cs_blHcaLAb", 1310 | "colab_type": "code", 1311 | "outputId": "377f1555-eb70-4e95-c057-cd4f2c0e0488", 1312 | "colab": { 1313 | "base_uri": "https://localhost:8080/", 1314 | "height": 35 1315 | } 1316 | }, 1317 | "cell_type": "code", 1318 | "source": [ 1319 | "# Create & upload a file.\n", 1320 | "uploaded = drive.CreateFile({'title': 'img_test_ph2_tl.npy'})\n", 1321 | "uploaded.SetContentFile('img_test.npy')\n", 1322 | "uploaded.Upload()\n", 1323 | "print('Uploaded file with ID {}'.format(uploaded.get('id')))" 1324 | ], 1325 | "execution_count": 0, 1326 | "outputs": [ 1327 | { 1328 | "output_type": "stream", 1329 | "text": [ 1330 | "Uploaded file with ID 1sdMO6dSdY33Fi36URsKctQviDHfFQxzb\n" 1331 | ], 1332 | "name": "stdout" 1333 | } 1334 | ] 1335 | }, 1336 | { 1337 | "metadata": { 1338 | "id": "i-gmLOBLaZ5B", 1339 | "colab_type": "code", 1340 | "outputId": "4efe3c4f-c870-4455-b7d7-a65e8dea6e6d", 1341 | "colab": { 1342 | "base_uri": "https://localhost:8080/", 1343 | "height": 35 1344 | } 1345 | }, 1346 | "cell_type": "code", 1347 | "source": [ 1348 | "# Create & upload a file.\n", 1349 | "uploaded = drive.CreateFile({'title': 'y_predicted_ph2_tl.npy'})\n", 1350 | "uploaded.SetContentFile('y_predicted_test.npy')\n", 1351 | "uploaded.Upload()\n", 1352 | "print('Uploaded file with ID {}'.format(uploaded.get('id')))" 1353 | ], 1354 | "execution_count": 0, 1355 | "outputs": [ 1356 | { 1357 | "output_type": "stream", 1358 | "text": [ 1359 | "Uploaded file with ID 1aNSIYWoOAKDVc6x-am5zcHMrvSjGPf09\n" 1360 | ], 1361 | "name": "stdout" 1362 | } 1363 | ] 1364 | }, 1365 | { 1366 | "metadata": { 1367 | "id": "op1ffeFIagla", 1368 | "colab_type": "code", 1369 | "outputId": "4dbb0466-c2d3-4d67-f1ae-dd3c66059f59", 1370 | "colab": { 1371 | "base_uri": "https://localhost:8080/", 1372 | "height": 35 1373 | } 1374 | }, 1375 | "cell_type": "code", 1376 | "source": [ 1377 | "# Create & upload a file.\n", 1378 | "uploaded = drive.CreateFile({'title': 'model.hist_ph2_tl.npy'})\n", 1379 | "uploaded.SetContentFile('model.hist.npy')\n", 1380 | "uploaded.Upload()\n", 1381 | "print('Uploaded file with ID {}'.format(uploaded.get('id')))" 1382 | ], 1383 | "execution_count": 0, 1384 | "outputs": [ 1385 | { 1386 | "output_type": "stream", 1387 | "text": [ 1388 | "Uploaded file with ID 11o3uiC9UA2UMqrqygJlxxECRMRQv7rep\n" 1389 | ], 1390 | "name": "stdout" 1391 | } 1392 | ] 1393 | }, 1394 | { 1395 | "metadata": { 1396 | "id": "TLP_oQZVcfW4", 1397 | "colab_type": "code", 1398 | "colab": {} 1399 | }, 1400 | "cell_type": "code", 1401 | "source": [ 1402 | "" 1403 | ], 1404 | "execution_count": 0, 1405 | "outputs": [] 1406 | }, 1407 | { 1408 | "metadata": { 1409 | "id": "AbOVMAmaamaV", 1410 | "colab_type": "code", 1411 | "outputId": "a80fee36-6b50-47d2-9fa2-57243c4e7135", 1412 | "colab": { 1413 | "base_uri": "https://localhost:8080/", 1414 | "height": 35 1415 | } 1416 | }, 1417 | "cell_type": "code", 1418 | "source": [ 1419 | "a = history.history\n", 1420 | "np.save('a.npy', a)\n", 1421 | "# a = [()]\n", 1422 | "a = np.load('a.npy')\n", 1423 | "print(type(a))" 1424 | ], 1425 | "execution_count": 0, 1426 | "outputs": [ 1427 | { 1428 | "output_type": "stream", 1429 | "text": [ 1430 | "\n" 1431 | ], 1432 | "name": "stdout" 1433 | } 1434 | ] 1435 | }, 1436 | { 1437 | "metadata": { 1438 | "id": "hwJM83D3drK3", 1439 | "colab_type": "code", 1440 | "outputId": "648c557f-aa2e-428e-c223-c9fc119b116e", 1441 | "colab": { 1442 | "base_uri": "https://localhost:8080/", 1443 | "height": 35 1444 | } 1445 | }, 1446 | "cell_type": "code", 1447 | "source": [ 1448 | "a = a[()]\n", 1449 | "print(type(a))" 1450 | ], 1451 | "execution_count": 0, 1452 | "outputs": [ 1453 | { 1454 | "output_type": "stream", 1455 | "text": [ 1456 | "\n" 1457 | ], 1458 | "name": "stdout" 1459 | } 1460 | ] 1461 | }, 1462 | { 1463 | "metadata": { 1464 | "id": "n-ERjiwFcGaX", 1465 | "colab_type": "code", 1466 | "colab": {} 1467 | }, 1468 | "cell_type": "code", 1469 | "source": [ 1470 | "# a['loss']" 1471 | ], 1472 | "execution_count": 0, 1473 | "outputs": [] 1474 | }, 1475 | { 1476 | "metadata": { 1477 | "id": "Pb5Y3D30bZD6", 1478 | "colab_type": "code", 1479 | "outputId": "fd66291c-8d88-4d2b-c4fa-68560eab78ed", 1480 | "colab": { 1481 | "base_uri": "https://localhost:8080/", 1482 | "height": 735 1483 | } 1484 | }, 1485 | "cell_type": "code", 1486 | "source": [ 1487 | "import matplotlib.pyplot as plt\n", 1488 | "\n", 1489 | "# plot_init()\n", 1490 | "plt.title('Dropout U-Net, Transfer Learning')\n", 1491 | "plt.xlabel('epochs')\n", 1492 | "plt.ylabel('jaccard index')\n", 1493 | "plt.plot(range(len(a['val_jacard_coef'])), a['val_jacard_coef'], \n", 1494 | " label = 'validation', linewidth=2.0)\n", 1495 | "plt.plot(range(len(a['jacard_coef'])), a['jacard_coef'],\n", 1496 | " label = 'train', linewidth=2.0)\n", 1497 | "plt.legend()\n", 1498 | "# save_plot('unet_jaccard')\n", 1499 | "plt.show()\n", 1500 | "\n", 1501 | "\n", 1502 | "\n", 1503 | "\n", 1504 | "\n", 1505 | "# plot_init()\n", 1506 | "plt.title('Dropout U-Net, Transfer Learning')\n", 1507 | "plt.xlabel('epochs')\n", 1508 | "plt.ylabel('dice loss')\n", 1509 | "plt.plot(range(len(a['val_loss'])), a['val_loss'], \n", 1510 | " label = 'validation', linewidth=2.0)\n", 1511 | "plt.plot(range(len(a['loss'])), a['loss'],\n", 1512 | " label = 'train', linewidth=2.0)\n", 1513 | "plt.legend()\n", 1514 | "# save_plot('unet_loss')\n", 1515 | "plt.show()\n" 1516 | ], 1517 | "execution_count": 0, 1518 | "outputs": [ 1519 | { 1520 | "output_type": "display_data", 1521 | "data": { 1522 | "image/png": "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\nX9h8bgc/pu7lx7S9xGTHMSF09C07/tUVg9HA6oRvMGFisH80LV2aWzukBqlRFvuarsBvpLYf0bCz\nswNg585tFBUVsXjxfykqKmL69InXfVamohWNQZVRT7m+nFJ9mfnfMn05ZVf+rSqjzFBOadVV75n/\nvX6KUgUKgtwC6eQdTsemYbU2brqznRPPdXqSJTHLOVuYwvuXm/SbNbn1yJ53K6s0h+Wx/8NoMvJA\nwEC6NOtU68ewV9kzqs2DdPHuyKqEdVzQZfDB8U/o0SKK0W0eBKw3VO6u1J+5WHKJpk6eDG01yGpx\nNHSNsthbi1KpvG4K2oKCAlq0aIlSqWTPnh+pqqqyUnRCWIbBaCC/ooCcsjxyynLN/+qMOorKSi4X\n7DKqjDee5vlOOKkdaeXqTyevcCK8wu65qftWx5nVcTpLT3zKmYJzvHfsI2Z3mlHrV51l+nKWnVhB\nqb6MDk3b8WDr+2t1/38U4OrHy1Gz2Zm6h63ndnIg4zBxuQk8GTWeIMe6v8rPLs3l+/M7ARgfMgp7\nlV2dx2ArpNjXoYCAQBITE2jRoiXu7tUDWkRHD+SVV/5CfHwsw4c/hLe3N5999omVIxXizpRWlVYX\n8fIrBf1KUc8jv6IAo8lY4z6UCiXOaicc1Y44qx1xUjvhdM2/1a9v9hlHtUOd3st1VDvwTMdpLDux\ngsT8Myw8toznOj2Jl1dIrezfaDKyIm41l0qzaNGkGZPbj6+T/FRKFUNaDaSTVzhfJqwjufA8C379\nhF4tujKm7Yg6u5dvMplYk7ieKqOers0614tbCg2ZjKB3m2xtpCWwzZzANvOydk5XX51nl+WSe+Uq\nvby6oJdd1bv9jxQocHdwo6mTFk8nLU0dPWnqpKV185ZUllRfJTurnbBT2jXIYVwrDVV8cvJz4vMS\naaJ25u8DnkdjuPde+t8mb2VHyk80UTvzt6jn8HL2rIVo74zRZOTnC/vZeGYLVUY9zZ29mRr+GD4u\nLSx+7EOXjrIyfk31d9rjrxYZzMja/1/VNhlBTwhxV0qryvg0bhWJ+WdueXXuoLKvnufb8XJBd6ou\n6E0dtWidtDd8RMzLS0M2Df8Prb3KjhkRk1ke+wUnc07xf7vf55mIafc0ycnhS8fYkfITSoWSqeGP\nWaXQQ3VrS7Rvb7oFhvPO3k+4VJrFfw5/wOjgh+jTsrvFTs50VSV8c/o7AB5uM7xejFrY0EmxF0Lc\n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\n", 1523 | "text/plain": [ 1524 | "" 1525 | ] 1526 | }, 1527 | "metadata": { 1528 | "tags": [] 1529 | } 1530 | }, 1531 | { 1532 | "output_type": "display_data", 1533 | "data": { 1534 | "image/png": "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\nrkJggg==\n", 1535 | "text/plain": [ 1536 | "" 1537 | ] 1538 | }, 1539 | "metadata": { 1540 | "tags": [] 1541 | } 1542 | } 1543 | ] 1544 | }, 1545 | { 1546 | "metadata": { 1547 | "id": "C-667PEDb-c8", 1548 | "colab_type": "code", 1549 | "colab": {} 1550 | }, 1551 | "cell_type": "code", 1552 | "source": [ 1553 | "" 1554 | ], 1555 | "execution_count": 0, 1556 | "outputs": [] 1557 | } 1558 | ] 1559 | } --------------------------------------------------------------------------------