{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"\n<h1 style=\"background-color:Gold;\" > <style=\"font-family:verdana;\"> <center> Melanoma Image Classification </center> </h1>\n","metadata":{}},{"cell_type":"markdown","source":"![national-cancer-institute-LnvCEXQwC-o-unsplash1.jpg](attachment:617d1236-b5af-493e-bf7c-743ca2f3f2c2.jpg)\n\nPhoto by <a href=\"https://unsplash.com/@nci?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText\">National Cancer Institute</a> on <a href=\"https://unsplash.com/s/photos/cancer?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText\">Unsplash</a>","metadata":{},"attachments":{"617d1236-b5af-493e-bf7c-743ca2f3f2c2.jpg":{"image/jpeg":"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"}}},{"cell_type":"markdown","source":"<h1 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Table of Contents </h1>\n\n#### 1. Brief Introduction of Melanoma\n#### 2. Problem Statement\n#### 3. Import necessary Libraries\n#### 4. About the datasets\n##### 4.1. Files\n#### 5. Load the datasets\n##### 5.1.  Preprocessing the Images\n##### 5.2.  Autotuning\n##### 5.3.  Normalize \n#### 6. Train the Model with CNN\n#### 7. Visualize the model performance\n#### 8. Boost Model performance with Augmentation\n#### 9. Train the model using the augmented images\n#### 9. Visualize the augmented model's performance\n#### 10.Make predictions\n#### References","metadata":{}},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Brief introduction of Melanoma</h2>\n\nThe most common form of cancer is skin cancer. Despite being the least prevalent skin cancer, melanoma is responsible for 75 percent of skin cancer deaths. According to the American Cancer Society, over 100,000 new cases of melanoma will be diagnosed in 2020. Nearly 7,000 people are estimated to die as a result of the outbreak. Early and reliable identification, as with other cancers, will improve treatment effectiveness, which could be aided by data science.\n\nDermatologists currently examine each of a patient's moles to spot outlier lesions or \"ugly ducklings\" that are most likely to be melanoma. \n\n<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Problem Statement</h2>\n\nUsing patient-level contextual knowledge in the creation of image analysis tools to help clinical dermatologists better on how to spot outlier lesions.\nThe problem is to predict a binary target for each image. The model should predict the probability (floating point) between 0.0 and 1.0 that the lesion in the image is malignant (the target). In the training data, train.csv, the value 0 denotes benign, and 1 indicates malignant.","metadata":{}},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Import necessary libraries</h2>","metadata":{}},{"cell_type":"code","source":"from keras.models import Model, Sequential\nfrom keras.layers import Activation, Dense, BatchNormalization, concatenate, Dropout, Conv2D, Conv2DTranspose, MaxPooling2D, UpSampling2D, Input, Reshape\nfrom keras.callbacks import EarlyStopping\nfrom keras.layers.core import SpatialDropout2D\nfrom keras import backend as K\nfrom keras.optimizers import Adam\nimport tensorflow as tf\nimport numpy as np\nimport pandas as pd\nimport glob\nimport PIL\nfrom PIL import Image\nimport matplotlib.pyplot as plt\nimport cv2\n%matplotlib inline\n\nfrom keras.preprocessing.image import ImageDataGenerator\nfrom sklearn.model_selection import train_test_split\nfrom warnings import filterwarnings\n\nfilterwarnings('ignore')\nnp.random.seed(123)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:12.228314Z","iopub.execute_input":"2021-07-02T08:01:12.228895Z","iopub.status.idle":"2021-07-02T08:01:20.39169Z","shell.execute_reply.started":"2021-07-02T08:01:12.228802Z","shell.execute_reply":"2021-07-02T08:01:20.390788Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np\nimport os\nimport PIL\nimport tensorflow as tf\n\nfrom tensorflow import keras\nfrom tensorflow.keras import layers\nfrom tensorflow.keras.models import Sequential","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.393017Z","iopub.execute_input":"2021-07-02T08:01:20.393522Z","iopub.status.idle":"2021-07-02T08:01:20.400498Z","shell.execute_reply.started":"2021-07-02T08:01:20.393487Z","shell.execute_reply":"2021-07-02T08:01:20.399619Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import re\nnumbers = re.compile(r'(\\d+)')\ndef numericalSort(value):\n    parts = numbers.split(value)\n    parts[1::2] = map(int, parts[1::2])\n    return parts","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.402175Z","iopub.execute_input":"2021-07-02T08:01:20.402665Z","iopub.status.idle":"2021-07-02T08:01:20.416974Z","shell.execute_reply.started":"2021-07-02T08:01:20.402631Z","shell.execute_reply":"2021-07-02T08:01:20.415872Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> About the datasets</h2>\n​\nThe datasets was publicly made available by Kaggle but provided by the International Skin Imaging Collaboration (ISIC), funded by the International Society for Digital Imaging of the Skin, is an international initiative to improve melanoma diagnosis (ISDIS). The ISIC Archive houses the world's largest collection of high-resolution dermoscopic photographs of skin lesions. Contributors to the images include:\n​\n1. Dermatology Service, Melanoma Unit, Hospital Clínic de Barcelona, IDIBAPS, Universitat de Barcelona, Barcelona, Spain\n2. Memorial Sloan Kettering Cancer Center New York, NY\n3. Department of Dermatology, Medical University of Vienna. Vienna, Austria\n4. Melanoma Institute Australia. Sydney, Australia\n5. The University of Queensland, Brisbane, Australia\n6. Department of Dermatology, University of Athens Medical School\n​\nIt has 9 classes of Skin diseases which are pigmented benign keratosis, melanoma,vascular lesion,actinic keratosis,squamous cell carcinoma,basal cell carcinoma,seborrheic keratosis,dermatofibroma and nevus.\n​\nOur focus in this Notebook is Melanoma.\n\n<h3 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Files</h3>\n\ntrain.csv - the training set\ntest.csv - the test set\nsample_submission.csv - a sample submission file in the correct format\nColumns\nimage_name - unique identifier, points to filename of related DICOM image\npatient_id - unique patient identifier\nsex - the sex of the patient (when unknown, will be blank)\nage_approx - approximate patient age at time of imaging\nanatom_site_general_challenge - location of imaged site\ndiagnosis - detailed diagnosis information (train only)\nbenign_malignant - indicator of malignancy of imaged lesion\ntarget - binarized version of the target variable","metadata":{}},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Load datasets</h2>","metadata":{}},{"cell_type":"code","source":"BASEPATH = \"../input/siim-isic-melanoma-classification\"\ndf_train_full = pd.read_csv(os.path.join(BASEPATH, 'train.csv'))\ndf_test  = pd.read_csv(os.path.join(BASEPATH, 'test.csv'))\ndf_sub   = pd.read_csv(os.path.join(BASEPATH, 'sample_submission.csv'))","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.418343Z","iopub.execute_input":"2021-07-02T08:01:20.418833Z","iopub.status.idle":"2021-07-02T08:01:20.595709Z","shell.execute_reply.started":"2021-07-02T08:01:20.418799Z","shell.execute_reply":"2021-07-02T08:01:20.595006Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_path = '../input/skin-cancer9-classesisic/Skin cancer ISIC The International Skin Imaging Collaboration/Train'\ntest_path = '../input/skin-cancer9-classesisic/Skin cancer ISIC The International Skin Imaging Collaboration/Test'","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.596703Z","iopub.execute_input":"2021-07-02T08:01:20.597145Z","iopub.status.idle":"2021-07-02T08:01:20.600894Z","shell.execute_reply.started":"2021-07-02T08:01:20.597111Z","shell.execute_reply":"2021-07-02T08:01:20.599929Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.601897Z","iopub.execute_input":"2021-07-02T08:01:20.602323Z","iopub.status.idle":"2021-07-02T08:01:20.63898Z","shell.execute_reply.started":"2021-07-02T08:01:20.602292Z","shell.execute_reply":"2021-07-02T08:01:20.63813Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_full.head()\ndf_train_full.tail()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.639957Z","iopub.execute_input":"2021-07-02T08:01:20.640375Z","iopub.status.idle":"2021-07-02T08:01:20.65587Z","shell.execute_reply.started":"2021-07-02T08:01:20.640345Z","shell.execute_reply":"2021-07-02T08:01:20.655052Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_full.tail()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.657754Z","iopub.execute_input":"2021-07-02T08:01:20.658195Z","iopub.status.idle":"2021-07-02T08:01:20.673135Z","shell.execute_reply.started":"2021-07-02T08:01:20.658162Z","shell.execute_reply":"2021-07-02T08:01:20.672248Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_full['target'].sum()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.674577Z","iopub.execute_input":"2021-07-02T08:01:20.674979Z","iopub.status.idle":"2021-07-02T08:01:20.68298Z","shell.execute_reply.started":"2021-07-02T08:01:20.674947Z","shell.execute_reply":"2021-07-02T08:01:20.682126Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_full['target'].count()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.684057Z","iopub.execute_input":"2021-07-02T08:01:20.684449Z","iopub.status.idle":"2021-07-02T08:01:20.699663Z","shell.execute_reply.started":"2021-07-02T08:01:20.684419Z","shell.execute_reply":"2021-07-02T08:01:20.697915Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_full[df_train_full.target==0].count()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.701416Z","iopub.execute_input":"2021-07-02T08:01:20.701869Z","iopub.status.idle":"2021-07-02T08:01:20.751751Z","shell.execute_reply.started":"2021-07-02T08:01:20.701811Z","shell.execute_reply":"2021-07-02T08:01:20.750705Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_full[df_train_full.target==1].count()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.752827Z","iopub.execute_input":"2021-07-02T08:01:20.753138Z","iopub.status.idle":"2021-07-02T08:01:20.764777Z","shell.execute_reply.started":"2021-07-02T08:01:20.753108Z","shell.execute_reply":"2021-07-02T08:01:20.763468Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_sub.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.766297Z","iopub.execute_input":"2021-07-02T08:01:20.766618Z","iopub.status.idle":"2021-07-02T08:01:20.782283Z","shell.execute_reply.started":"2021-07-02T08:01:20.766587Z","shell.execute_reply":"2021-07-02T08:01:20.781146Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Preprocess the images</h2>","metadata":{}},{"cell_type":"code","source":"from PIL import Image\nimport os, sys\npath = \"../input/skin-cancer9-classesisic/Skin cancer ISIC The International Skin Imaging Collaboration/Train\"\ndirs = os.listdir( path )\n\ndef resize():\n    for item in dirs:\n        if os.path.isfile(path+item):\n            im = Image.open(path+item)\n            f, e = os.path.splitext(path+item)\n            imResize = im.resize((200,200), Image.ANTIALIAS)\n            imResize.save(f + ' resized.jpg', 'JPEG', quality=90)\n\nresize()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.783835Z","iopub.execute_input":"2021-07-02T08:01:20.784299Z","iopub.status.idle":"2021-07-02T08:01:20.813304Z","shell.execute_reply.started":"2021-07-02T08:01:20.784252Z","shell.execute_reply":"2021-07-02T08:01:20.812178Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pathlib\ntrain_dir = pathlib.Path(train_path)\ntest_dir = pathlib.Path(test_path)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.814899Z","iopub.execute_input":"2021-07-02T08:01:20.815228Z","iopub.status.idle":"2021-07-02T08:01:20.820229Z","shell.execute_reply.started":"2021-07-02T08:01:20.815195Z","shell.execute_reply":"2021-07-02T08:01:20.818768Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"image_count1 = len(list(train_dir.glob('*/*.jpg')))\nprint(image_count1)\nimage_count2 = len(list(test_dir.glob('*/*.jpg')))\nprint(image_count2)\n","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:20.821972Z","iopub.execute_input":"2021-07-02T08:01:20.822394Z","iopub.status.idle":"2021-07-02T08:01:21.256941Z","shell.execute_reply.started":"2021-07-02T08:01:20.822269Z","shell.execute_reply":"2021-07-02T08:01:21.255798Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"batch_size = 32\nimg_height = 180\nimg_width = 180","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.258157Z","iopub.execute_input":"2021-07-02T08:01:21.25843Z","iopub.status.idle":"2021-07-02T08:01:21.262449Z","shell.execute_reply.started":"2021-07-02T08:01:21.258403Z","shell.execute_reply":"2021-07-02T08:01:21.261626Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"classes=['pigmented benign keratosis',\n 'melanoma',\n 'vascular lesion',\n 'actinic keratosis',\n 'squamous cell carcinoma',\n 'basal cell carcinoma',\n 'seborrheic keratosis',\n 'dermatofibroma',\n 'nevus']","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.263787Z","iopub.execute_input":"2021-07-02T08:01:21.264368Z","iopub.status.idle":"2021-07-02T08:01:21.277891Z","shell.execute_reply.started":"2021-07-02T08:01:21.264324Z","shell.execute_reply":"2021-07-02T08:01:21.276734Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img = Image.open(train_path+'/melanoma/ISIC_0000139.jpg')\nprint(img.size) ","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.279285Z","iopub.execute_input":"2021-07-02T08:01:21.279855Z","iopub.status.idle":"2021-07-02T08:01:21.331203Z","shell.execute_reply.started":"2021-07-02T08:01:21.279812Z","shell.execute_reply":"2021-07-02T08:01:21.330155Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img_count_train = len(list(train_dir.glob('*/*.jpg')))\nimg_count_test  = len(list(test_dir.glob('*/*.jpg')))\nprint('{} train images'.format(img_count_train))\nprint('{} test  images'.format(img_count_test))","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.33243Z","iopub.execute_input":"2021-07-02T08:01:21.332758Z","iopub.status.idle":"2021-07-02T08:01:21.522308Z","shell.execute_reply.started":"2021-07-02T08:01:21.332727Z","shell.execute_reply":"2021-07-02T08:01:21.521079Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"SEED=123\nnp.random.seed(SEED)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.523607Z","iopub.execute_input":"2021-07-02T08:01:21.523904Z","iopub.status.idle":"2021-07-02T08:01:21.528184Z","shell.execute_reply.started":"2021-07-02T08:01:21.523873Z","shell.execute_reply":"2021-07-02T08:01:21.527062Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_ds = tf.keras.preprocessing.image_dataset_from_directory(\n  train_dir,\n  validation_split=0.2,\n  subset=\"training\",\n  seed=123,\n  image_size=(img_height, img_width),\n  batch_size=batch_size)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.529556Z","iopub.execute_input":"2021-07-02T08:01:21.530146Z","iopub.status.idle":"2021-07-02T08:01:21.780577Z","shell.execute_reply.started":"2021-07-02T08:01:21.530101Z","shell.execute_reply":"2021-07-02T08:01:21.779543Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"val_ds = tf.keras.preprocessing.image_dataset_from_directory(\n  train_dir,\n  validation_split=0.2,\n  subset=\"validation\",\n  seed=123,\n  image_size=(img_height, img_width),\n  batch_size=batch_size)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.784107Z","iopub.execute_input":"2021-07-02T08:01:21.784467Z","iopub.status.idle":"2021-07-02T08:01:21.908852Z","shell.execute_reply.started":"2021-07-02T08:01:21.784432Z","shell.execute_reply":"2021-07-02T08:01:21.907805Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_ds  = tf.keras.preprocessing.image_dataset_from_directory(test_dir,image_size=(img_height, img_width), seed=SEED)\n\nclass_names = train_ds.class_names\nnum_classes = len(class_names)\nprint('\\n{} classes:\\n{}'.format(num_classes,class_names))\n\nplt.figure(figsize=(23, 12))\nfor images, labels in train_ds.take(1):\n    for i in range(18):\n        ax = plt.subplot(3, 6, i + 1)\n        plt.imshow(images[i].numpy().astype(\"uint8\"))\n        plt.title(class_names[labels[i]])\n        plt.axis(\"off\")","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:21.910678Z","iopub.execute_input":"2021-07-02T08:01:21.910981Z","iopub.status.idle":"2021-07-02T08:01:29.260406Z","shell.execute_reply.started":"2021-07-02T08:01:21.910947Z","shell.execute_reply":"2021-07-02T08:01:29.259476Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for image_batch, labels_batch in train_ds:\n  print(image_batch.shape)\n  print(labels_batch.shape)\n  break","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:29.261877Z","iopub.execute_input":"2021-07-02T08:01:29.262506Z","iopub.status.idle":"2021-07-02T08:01:31.689185Z","shell.execute_reply.started":"2021-07-02T08:01:29.262459Z","shell.execute_reply":"2021-07-02T08:01:31.687827Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h4 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Autotune the images</h4>","metadata":{}},{"cell_type":"code","source":"AUTOTUNE = tf.data.AUTOTUNE\n\ntrain_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)\nval_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:31.690778Z","iopub.execute_input":"2021-07-02T08:01:31.691589Z","iopub.status.idle":"2021-07-02T08:01:31.701462Z","shell.execute_reply.started":"2021-07-02T08:01:31.691538Z","shell.execute_reply":"2021-07-02T08:01:31.700073Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h5 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Normalize the images</h5>","metadata":{}},{"cell_type":"code","source":"normalization_layer = layers.experimental.preprocessing.Rescaling(1./255)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:31.703156Z","iopub.execute_input":"2021-07-02T08:01:31.703927Z","iopub.status.idle":"2021-07-02T08:01:31.719081Z","shell.execute_reply.started":"2021-07-02T08:01:31.703883Z","shell.execute_reply":"2021-07-02T08:01:31.717948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"normalized_ds = train_ds.map(lambda x, y: (normalization_layer(x), y))\nimage_batch, labels_batch = next(iter(normalized_ds))\nfirst_image = image_batch[0]\n# Notice the pixels values are now in `[0,1]`.\nprint(np.min(first_image), np.max(first_image))","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:31.720719Z","iopub.execute_input":"2021-07-02T08:01:31.721294Z","iopub.status.idle":"2021-07-02T08:01:56.377698Z","shell.execute_reply.started":"2021-07-02T08:01:31.721244Z","shell.execute_reply":"2021-07-02T08:01:56.376764Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Train the Model with CNN</h2>","metadata":{}},{"cell_type":"markdown","source":"![image.png](attachment:7c1a3dfc-2a9e-417c-88f5-03c55455a681.png)\n[https://medium.com/techiepedia/binary-image-classifier-cnn-using-tensorflow-a3f5d6746697](http://)","metadata":{},"attachments":{"7c1a3dfc-2a9e-417c-88f5-03c55455a681.png":{"image/png":"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"}}},{"cell_type":"code","source":"num_classes = 9\n\nmodel = Sequential([\n  layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 3)),\n  layers.Conv2D(16, 3, padding='same', activation='relu'),\n  layers.MaxPooling2D(),\n  layers.Conv2D(32, 3, padding='same', activation='relu'),\n  layers.MaxPooling2D(),\n  layers.Flatten(),\n  layers.Dense(64, activation='relu'),\n  layers.Dense(num_classes)\n])","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:56.378881Z","iopub.execute_input":"2021-07-02T08:01:56.379208Z","iopub.status.idle":"2021-07-02T08:01:56.48966Z","shell.execute_reply.started":"2021-07-02T08:01:56.379178Z","shell.execute_reply":"2021-07-02T08:01:56.488565Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(optimizer='adam',\n              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n              metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:56.490762Z","iopub.execute_input":"2021-07-02T08:01:56.491051Z","iopub.status.idle":"2021-07-02T08:01:56.510846Z","shell.execute_reply.started":"2021-07-02T08:01:56.491013Z","shell.execute_reply":"2021-07-02T08:01:56.509717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:56.512427Z","iopub.execute_input":"2021-07-02T08:01:56.512856Z","iopub.status.idle":"2021-07-02T08:01:56.522397Z","shell.execute_reply.started":"2021-07-02T08:01:56.512807Z","shell.execute_reply":"2021-07-02T08:01:56.521316Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tf.keras.utils.plot_model(model = model , rankdir=\"TB\", dpi=72, show_shapes=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:56.523813Z","iopub.execute_input":"2021-07-02T08:01:56.524133Z","iopub.status.idle":"2021-07-02T08:01:57.089263Z","shell.execute_reply.started":"2021-07-02T08:01:56.524089Z","shell.execute_reply":"2021-07-02T08:01:57.087898Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"epochs=15\nhistory = model.fit(\n  train_ds,\n  validation_data=val_ds,\n  epochs=epochs\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:01:57.090862Z","iopub.execute_input":"2021-07-02T08:01:57.091213Z","iopub.status.idle":"2021-07-02T08:08:21.117574Z","shell.execute_reply.started":"2021-07-02T08:01:57.091174Z","shell.execute_reply":"2021-07-02T08:08:21.116649Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Visualize Model Performance</h2>\n\nUsing accuracy as the metrics ","metadata":{}},{"cell_type":"code","source":"acc = history.history['accuracy']\nval_acc = history.history['val_accuracy']\n\nloss = history.history['loss']\nval_loss = history.history['val_loss']\n\nepochs_range = range(epochs)\n\nplt.figure(figsize=(8, 8))\nplt.subplot(1, 2, 1)\nplt.plot(epochs_range, acc, label='Training Accuracy')\nplt.plot(epochs_range, val_acc, label='Validation Accuracy')\nplt.legend(loc='lower right')\nplt.title('Training and Validation Accuracy')\n\nplt.subplot(1, 2, 2)\nplt.plot(epochs_range, loss, label='Training Loss')\nplt.plot(epochs_range, val_loss, label='Validation Loss')\nplt.legend(loc='upper right')\nplt.title('Training and Validation Loss')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:21.11917Z","iopub.execute_input":"2021-07-02T08:08:21.119563Z","iopub.status.idle":"2021-07-02T08:08:21.389822Z","shell.execute_reply.started":"2021-07-02T08:08:21.11952Z","shell.execute_reply":"2021-07-02T08:08:21.388869Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Boost Model Performance with Augmentation</h2>","metadata":{}},{"cell_type":"markdown","source":"As you can see, this has achieved a very good accuracy but it seems overfitted due to the size of the datasets, then we can try whether augmentation can boost the model accuracy knowing fully well that we are dealing with small image datasets.","metadata":{}},{"cell_type":"code","source":"data_augmentation = keras.Sequential(\n  [\n    layers.experimental.preprocessing.RandomFlip(\"horizontal\", \n                                                 input_shape=(img_height, \n                                                              img_width,\n                                                              3)),\n    layers.experimental.preprocessing.RandomRotation(0.1),\n    layers.experimental.preprocessing.RandomZoom(0.1),\n  ]\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:21.390808Z","iopub.execute_input":"2021-07-02T08:08:21.391094Z","iopub.status.idle":"2021-07-02T08:08:21.512769Z","shell.execute_reply.started":"2021-07-02T08:08:21.391064Z","shell.execute_reply":"2021-07-02T08:08:21.511625Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(10, 10))\nfor images, _ in train_ds.take(1):\n  for i in range(9):\n    augmented_images = data_augmentation(images)\n    ax = plt.subplot(3, 3, i + 1)\n    plt.imshow(augmented_images[0].numpy().astype(\"uint8\"))\n    plt.axis(\"off\")","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:21.514072Z","iopub.execute_input":"2021-07-02T08:08:21.514357Z","iopub.status.idle":"2021-07-02T08:08:23.358902Z","shell.execute_reply.started":"2021-07-02T08:08:21.514331Z","shell.execute_reply":"2021-07-02T08:08:23.357838Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Train the model using the augmented images</h2>","metadata":{}},{"cell_type":"code","source":"\n  aug_model = Sequential([\n      data_augmentation,\n      layers.experimental.preprocessing.Rescaling(1./255, input_shape=(img_height, img_width, 3)),\n      layers.Conv2D(16, 3, padding='same', activation='relu'),\n      layers.MaxPooling2D(),\n      layers.Conv2D(32, 3, padding='same', activation='relu'),\n      layers.MaxPooling2D(),\n      layers.Flatten(),\n      layers.Dense(64, activation='relu'),\n      layers.Dense(num_classes)])","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:23.360447Z","iopub.execute_input":"2021-07-02T08:08:23.360839Z","iopub.status.idle":"2021-07-02T08:08:23.541469Z","shell.execute_reply.started":"2021-07-02T08:08:23.360799Z","shell.execute_reply":"2021-07-02T08:08:23.540279Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"aug_model.compile(optimizer='adam',\n              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n              metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:23.542767Z","iopub.execute_input":"2021-07-02T08:08:23.543084Z","iopub.status.idle":"2021-07-02T08:08:23.555048Z","shell.execute_reply.started":"2021-07-02T08:08:23.543049Z","shell.execute_reply":"2021-07-02T08:08:23.554042Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"aug_model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:23.55631Z","iopub.execute_input":"2021-07-02T08:08:23.556611Z","iopub.status.idle":"2021-07-02T08:08:23.572539Z","shell.execute_reply.started":"2021-07-02T08:08:23.55658Z","shell.execute_reply":"2021-07-02T08:08:23.571136Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tf.keras.utils.plot_model(model = aug_model , rankdir=\"TB\", dpi=72, show_shapes=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:23.575204Z","iopub.execute_input":"2021-07-02T08:08:23.575933Z","iopub.status.idle":"2021-07-02T08:08:23.758916Z","shell.execute_reply.started":"2021-07-02T08:08:23.575882Z","shell.execute_reply":"2021-07-02T08:08:23.757844Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"epochs = 20\nhistory = aug_model.fit(\n  train_ds,\n  validation_data=val_ds,\n  epochs=epochs\n)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:08:23.760459Z","iopub.execute_input":"2021-07-02T08:08:23.760823Z","iopub.status.idle":"2021-07-02T08:18:18.340418Z","shell.execute_reply.started":"2021-07-02T08:08:23.760787Z","shell.execute_reply":"2021-07-02T08:18:18.339605Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Visualize the accuracy</h2>\nThe accuracy results keeps changing because of the randomly picked training data👌 \nThis also clearly indicates that sizes matters when training a model, so that the model can picked randomly from the available image dataset.","metadata":{}},{"cell_type":"code","source":"\nacc = history.history['accuracy']\nval_acc = history.history['val_accuracy']\n\nloss = history.history['loss']\nval_loss = history.history['val_loss']\n\nepochs_range = range(epochs)\n\nplt.figure(figsize=(8, 8))\nplt.subplot(1, 2, 1)\nplt.plot(epochs_range, acc, label='Training Accuracy')\nplt.plot(epochs_range, val_acc, label='Validation Accuracy')\nplt.legend(loc='lower right')\nplt.title('Training and Validation Accuracy')\n\nplt.subplot(1, 2, 2)\nplt.plot(epochs_range, loss, label='Training Loss')\nplt.plot(epochs_range, val_loss, label='Validation Loss')\nplt.legend(loc='upper right')\nplt.title('Training and Validation Loss')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.341636Z","iopub.execute_input":"2021-07-02T08:18:18.341899Z","iopub.status.idle":"2021-07-02T08:18:18.623942Z","shell.execute_reply.started":"2021-07-02T08:18:18.341872Z","shell.execute_reply":"2021-07-02T08:18:18.622833Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Plotting Model accuracy\n\ndef plot_history(history):\n    plt.plot(history.history[\"accuracy\"])\n    plt.plot(history.history[\"val_accuracy\"])\n    plt.title(\"model accuracy\")\n    plt.ylabel(\"accuracy\")\n    plt.xlabel(\"epoch\")\n    plt.legend([\"train\", \"validation\"], loc=\"upper left\")\n    plt.show()\n\n\nplot_history(history)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.625473Z","iopub.execute_input":"2021-07-02T08:18:18.625906Z","iopub.status.idle":"2021-07-02T08:18:18.791569Z","shell.execute_reply.started":"2021-07-02T08:18:18.625859Z","shell.execute_reply":"2021-07-02T08:18:18.790538Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import classification_report\npred = aug_model.predict(val_images_ds)\nprint(classification_report(pred))","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.792849Z","iopub.execute_input":"2021-07-02T08:18:18.793141Z","iopub.status.idle":"2021-07-02T08:18:18.818755Z","shell.execute_reply.started":"2021-07-02T08:18:18.793113Z","shell.execute_reply":"2021-07-02T08:18:18.817127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> Make predictions</h2>","metadata":{}},{"cell_type":"code","source":"for image_batch, labels_batch in test_ds:\n  print(image_batch.shape)\n  print(labels_batch.shape)\n  break","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.820121Z","iopub.status.idle":"2021-07-02T08:18:18.820953Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nval_images_ds = val_ds.map(lambda image, idnum: image)\nprobabilities = aug_model.predict(val_images_ds)\nprint('Predictions...')","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.82236Z","iopub.status.idle":"2021-07-02T08:18:18.823172Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred = model.predict_proba(val_images_ds)\nprint('Accuracy score of test data : ', probabilities)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.824483Z","iopub.status.idle":"2021-07-02T08:18:18.825274Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nfrom keras.preprocessing import image\n\n\nimg = image.load_img('../input/skin-cancer9-classesisic/Skin cancer ISIC The International Skin Imaging Collaboration/Train/melanoma/ISIC_0000139.jpg', target_size = (img_width, img_height))\nimg = image.img_to_array(img)\nimg = np.expand_dims(img, axis = 0)\n\nmodel.predict(img)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.826356Z","iopub.status.idle":"2021-07-02T08:18:18.826955Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nfrom keras.preprocessing import image\n\n\nimg = image.load_img('../input/skin-cancer9-classesisic/Skin cancer ISIC The International Skin Imaging Collaboration/Train/melanoma/ISIC_0000139.jpg', target_size = (img_width, img_height))\nimg = image.img_to_array(img)\nimg = np.expand_dims(img, axis = 0)\n\naug_model.predict(img)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.828067Z","iopub.status.idle":"2021-07-02T08:18:18.828693Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dataset = val_ds\ndataset = dataset.unbatch().batch(20)\nbatch = iter(dataset)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.829802Z","iopub.status.idle":"2021-07-02T08:18:18.830256Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plotImages(test_ds)\nprint(test_labels)","metadata":{"execution":{"iopub.status.busy":"2021-07-02T08:18:18.831378Z","iopub.status.idle":"2021-07-02T08:18:18.831819Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<h2 style=\"background-color:Gold; font-family:newtimeroman; font-size:200%; text-align:left;\"> References</h2>\n\n* Photo by National Cancer Institute on Unsplash\n\n* The ISIC 2020 Challenge Dataset https://doi.org/10.34970/2020-ds01 (c) by ISDIS, 2020\n\n* Creative Commons Attribution-Non Commercial 4.0 International License.\n\nThe dataset was generated by the International Skin Imaging Collaboration (ISIC) and images are from the following sources: Hospital Clínic de Barcelona, Medical University of Vienna, Memorial Sloan Kettering Cancer Center, Melanoma Institute Australia, The University of Queensland, and the University of Athens Medical School.\n\n* https://www.kaggle.com/shubhamksingh/create-beautiful-notebooks-formatting-tutorial","metadata":{}}]}