{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Understanding the dataset"},{"metadata":{},"cell_type":"markdown","source":"# The dataset provided for this competition is as follows"},{"metadata":{},"cell_type":"markdown","source":"# ![Screenshot%202020-11-04%20at%203.02.16%20PM.png](attachment:Screenshot%202020-11-04%20at%203.02.16%20PM.png)","attachments":{"Screenshot%202020-11-04%20at%203.02.16%20PM.png":{"image/png":"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"}}},{"metadata":{},"cell_type":"markdown","source":"You can read more about the dataset\n[here](http://https://www.kaggle.com/c/siim-isic-melanoma-classification/data)"},{"metadata":{},"cell_type":"markdown","source":"Let us print the dataset "},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"There are following directories and files in this dataset\")\nprint(*list(os.listdir(\"../input/siim-isic-melanoma-classification\")),sep = \"\\n\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Choosing the data for model training"},{"metadata":{},"cell_type":"markdown","source":"We will now count the number of images in the following directories:\n\n1. jpeg -> train\n2. train\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"import glob\ntrain_images_jpg_format = glob.glob('../input/siim-isic-melanoma-classification/jpeg/train/*.jpg')\nlen(train_images_jpg_format)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import glob\ntrain_images_dcm_format = glob.glob('../input/siim-isic-melanoma-classification/train/*.dcm')\nlen(train_images_dcm_format)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"As we can see above the number of images in the DICOM format and JPEG format are same. So we will be using JPEG format images in this notebook for training and prediction purpose."},{"metadata":{},"cell_type":"markdown","source":"# We will use JPEG format of images and treat this problem as an image classification problem with 2 cateories."},{"metadata":{},"cell_type":"markdown","source":"# Importing necessary libraries\n"},{"metadata":{},"cell_type":"markdown","source":"Import Pandas - For data analysis\nImport Fastai - For training of deep learning model and predictions.\n\n**Note**: We are using Fastai version 2 (Not previous version of Fastai- which is version 1).\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\n\nimport fastai\nfrom fastai.vision.all import *","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Defining the variables and assigning the paths for this notebook\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"path = Path('../input/input/siim-isic-melanoma-classification/')\nimage_path = Path('../input/siim-isic-melanoma-classification/jpeg/train')\ntraining_data_file = Path('../input/siim-isic-melanoma-classification/train.csv')\nsample_submission_file = Path('../input/siim-isic-melanoma-classification/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Analysing the data"},{"metadata":{"trusted":true},"cell_type":"code","source":"train_df = pd.read_csv(training_data_file)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(\"Size of Training data \\n\", train_df.shape)\nprint(\"----------------------------------------------------------\")\nprint(\"\\nFirst few samples of data are \\n\",train_df.head())","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let us print the number of data samples with output as category \"1\"  "},{"metadata":{"trusted":true},"cell_type":"code","source":"train_df_output_1 = train_df[train_df['target']==1]\ntrain_df_output_1.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let us print the number of data samples with output as category \"0\"  "},{"metadata":{"trusted":true},"cell_type":"code","source":"train_df_output_0 = train_df[train_df['target']==0]\ntrain_df_output_0.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Selecting a subset of data for training purpose"},{"metadata":{},"cell_type":"markdown","source":"We will select all the training data which has the output category as \"1\" and 0.3 % of training data which has the output category as \"0\" to have equal number of inputs with the same category of output."},{"metadata":{"trusted":true},"cell_type":"code","source":"train_df_output_0 = train_df[train_df['target']==0].sample(frac=0.03,random_state=111)\ntrain_df_output_0.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let us join the inputs selected from both the categories and call it a \"new_df\"."},{"metadata":{"trusted":true},"cell_type":"code","source":"new_df = pd.concat([train_df_output_0,train_df_output_1]).reset_index(drop=True)\nnew_df.shape","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Creating the image data loader"},{"metadata":{"trusted":true},"cell_type":"code","source":"image_data_loader = ImageDataLoaders.from_df(new_df, path=image_path,\n                               seed=42, fn_col=0, \n                               suff='.jpg', label_col=7, \n                               item_tfms=Resize(128), \n                               batch_tfms=aug_transforms(flip_vert=True, max_warp=0.), \n                               bs=128, val_bs=None, shuffle_train=True)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let us check the device type of our \"ImageDataLoader\" to make sure that we are using \"GPU\" "},{"metadata":{"trusted":true},"cell_type":"code","source":"image_data_loader.device","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let us check few random images from our ImageDataLoader's batch to make sure that images and labels appears correctly in it."},{"metadata":{"trusted":true},"cell_type":"code","source":"image_data_loader.show_batch()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Trainnig the image recognizer model"},{"metadata":{},"cell_type":"markdown","source":"We create a CNN (convolutional neural network) with the following specific details:\n\n* What data we want to train it on?\n</br>\n  Our data to be used for training is \"image_data_loader\"\n  \n* Which architecture to use?\n</br>\n  We are using Resnet34 \n  \n* what metric to use for our training evaluation?\n  </br>\n  We have specified it as \"error_rate\""},{"metadata":{"trusted":true},"cell_type":"code","source":"learn = cnn_learner(image_data_loader, resnet34, metrics=error_rate)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let us train the model for 4 epochs"},{"metadata":{"trusted":true},"cell_type":"code","source":"learn.fine_tune(2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub = pd.read_csv(sample_submission_file)\nsub.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true},"cell_type":"code","source":"for i in range(10982):\n    x = sub.at[i,'image_name']\n    test_image = Path(\"../input/siim-isic-melanoma-classification/jpeg/test/\" + x + \".jpg\")\n    pr1,_,pr2 = learn.predict(test_image)\n    sub.at[i,'target'] = float(pr2[int(pr1)])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub.head()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sub.to_csv('my_submission_file.csv', index=False)","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}