{"cells":[{"metadata":{},"cell_type":"markdown","source":"Authors: [Davide](https://www.kaggle.com/daviderigon), [Pierfrancesco](https://www.kaggle.com/pier994), [Stefano](https://www.kaggle.com/stefanocallegaro)"},{"metadata":{},"cell_type":"markdown","source":"<a id = \"ToC\">Table of Contents</a>\n1. [Configuration](#step1)\n2. [Model Architecture](#step2)\n3. [DataSet and DataLoader](#step3)\n4. [Training](#step4)\n5. [Ensembling & Evaluation](#step5)\n5. [Submission](#step6)"},{"metadata":{"_uuid":"bc64de1d-e1bf-4360-8df4-f4c7570f84b3","_cell_guid":"47a0dc1e-e396-4448-9fe0-9c3aa6a41542","trusted":true},"cell_type":"code","source":"# 1. Standard Libraries\nimport time\nfrom collections import OrderedDict\nfrom pathlib import Path\nimport copy\n\n# 2. Third party modules\n\nimport numpy as np\nimport pandas as pd\nimport seaborn as sns\nfrom tqdm import tqdm\nfrom PIL import Image\n\n# 2.1 Deep Learning dependencies\n\nimport albumentations\nfrom albumentations.pytorch.transforms import ToTensorV2\nimport torch\nfrom torchvision import models, transforms\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torch.cuda.amp import autocast, GradScaler\n\n# 2.2 Machine Learning dependencies\n\nfrom sklearn.model_selection import StratifiedKFold","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### <a id = \"step1\">Step1. Configuration</a>\n<a style=\"font-size:12px;\" href=\"#ToC\">Back to Table of Contents</a>\n\nFirst thing first: let's define the parameters/hyperparameters that are going to be used in different stages of the script.\n\nIn particular:\n* **device:** it is used to define the device on which the model is going to be trained (GPU/CPU);  \n* **base_path:** the path to all the input of the competition;\n* **images_path:** the path to training images;\n* **size_crop:** the preprocessing of the images produces a cropped output. This parameter uniquely identifies the dimension of the images as input of the model. In particular, after data preprocessing, the image is described with the following number of features (pixels): $$size(processed\\_image) = num\\_channels (RGB) * height * width = 3 \\cdot size\\_crop\\cdot size\\_crop $$  \n* **num_epochs, folds, batch_size_train, batch_size_valid:** first thing first, let's visualize what the training process looks like\n![Training_Setup.png](attachment:Training_Setup.png)\nWhat is going on? First of all, images are shuffled and divided in a given number of folds, that is specified by **folds** parameter. Implicitly, this parameter tells us how many models are build in this script. This is because the algorithm iterates over all different folds, creating a different training-validation partitioning every time. In particular, for each iteration, the training set is built by selecting all folds but the selected one. On the other hand, the excluded fold is used as the validation set.  \n**Fine, and what about the training procedure of each model?** Once the *training* data have been defined, these have to be divided in small chunks called *batches*. This is crucial, since it allows to reduce the amount of information (data and gradients) to store in the RAM. In other words, if this step was skipped, the script would get an error because of memory issue. The size of these chunks is referred to as *batch_size*, and I decided to set a different value for training and validation. This is because validation set is not used to update parameters, thus storing the gradients is not needed. By saving memory, the validation batch size can be increased. **Epoch** parameter states how many times the model has to be trained on each batch![image.png](attachment:image.png)\n\n\n* **lr_transfer, lr_train:** this parameters are usually defined as a single one, the learning rate. Here we decided to define two different parameters in order to handle transfer learning properties correctly. For further information, please refer to [training section](#transfer_lr);\n\n* **num_workers:** even though the model should be trained using GPU, there is an important step in which the CPU plays a key role: feeding the GPU with new (augmented) data. This is achieved by using *DataLoader* PyTorch operator, and it is one of the slowest step of the entire script. Hence, it is important to speed it up as much as possible. I tried different strategies (you can play with *pin_memory* parameter as suggested by official documentation), and I rekon that increasing the number of workers as much as possible is the best (and most common) way to proceed.","attachments":{"Training_Setup.png":{"image/png":"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"},"image.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA+EAAAByCAYAAAA8o9CWAAAgAElEQVR4Ae2dC9hl1X3WaYqGCAFUEqIWQUkkQitoYom1BtJUQWIEG1OkUUGwKsUKVm1ibQVbGi3aQKqgVCokhAEmkBnuJASYBEi4TAIECHNj7vf7/cbMLJ/f/vJ+s2bPvp999rl873qe/exz9ll7XX7r9n/XWnufI4KdCZiACZiACZiACZiACZiACZiACZhAJwSO6CQWR2ICJmACJmACJmACJmACJmACJmACJhAswl0JTMAETMAETMAETMAETMAETMAETKAjAhbhHYF2NCZgAiZgAiZgAiZgAiZgAiZgAiZgEe46YAImYAImYAImYAImYAImYAImYAIdEbAI7wi0ozEBEzABEzABEzABEzABEzABEzABi3DXARMwARMwARMwARMwARMwARMwARPoiIBFeEegHY0JmIAJmIAJmIAJmIAJmIAJmIAJWIS7DpiACZiACZiACZiACZiACZiACZhARwQswjsC7WhMwARMwARMwARMwARMwARMwARMwCLcdcAETMAETMAETMAETMAETMAETMAEOiJgEd4RaEdjAiZgAiZgAiZgAiZgAiZgAiZgAhbhrgMmYAImYAImYAImYAImYAImYAIm0BEBi/COQDsaEzABEzABEzABEzABEzABEzABE7AIdx0wARMwARMwARMwARMwARMwARMwgY4IWIR3BNrRmIAJmIAJmIAJmIAJmIAJmIAJmIBFuOuACZiACZiACZiACZiACZiACZiACXREwCK8I9COxgRMwARMwARMwARMwARMwARMwAQswl0HTMAETMAETMAETMAETMAETMAETKAjAhbhHYF2NCZgAiZgAiZgAiZgAiZgAiZgAiZgEe46YAImYAImYAImYAJTnMDTTz8dLrroorBo0aIpTsLZNwETMIH+E7AI7z9jx2ACJmACJmACJmACmQQQv7NmzQrXXXdduOaaa5Jzpsc+Xzz55JPDEUccES699NI+x+TgTcAETMAELMJdB0zABEzABEzABIaGwO23354IUURp+pg5c2YiWDdt2jQ06a2TkJdffjnccccd4bLLLgtnnXVWInoRvvGBGM5y5Jl7xaRsxbouI6WBdNmZgAmYgAn0l4BFeH/5TtnQZ8yYETCk7ExgVAhgsGLc3nTTTX3bjkkcrHjFhwxq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BEzABExgtAi0JsLJNivivOWTF8Owiscbd59ZPfECJp7D5Y28EoC8qZfndRGA/IULApA3gfJiJ+7lTb8SgJsyBCAvirIzARMwARMwARMwARMwARMwARMwgVEi0KoIH6WMO60mYAImYAImYAImYAImYAImYAIm0DUBi/CuiTs+EzABEzABEzABEzABEzABEzCBKUvAInzKFr0zbgImYAImYAImYAImYAImYAIm0DUBi/CuiTs+EzABEzABEzABEzABEzABEzCBKUvAInzKFr0zbgImYAImYAImYAImYAImYAIm0DUBi/CuiTs+EzABEzABEzABEzABEzABEzCBKUvAInzKFr0zbgImYAImYAImYAImYAImYAIm0DUBi/CuiTs+EzABEzABEzABEzABEzABEzCBKUvAInzKFr0zbgImYAImYAImYAImYAImYAIm0DUBi/CuiU/x+F7esCvMWr0jcLbrH4FF2/aG615ZF+5YsLl/kThkEzABEzABEzABEzABEzCB2gQswmsj8w1VCCACEYDXvLgmnPv4knDEHW8edjy9akdhUJv27Aszl25LxCSCknA4LnpqeXLtph9uDMRjdziBC59cNsn72pfXHe7BV0zABEzABEzABEzABEzABAZCwCJ8INjHK1LEMqvbCGUE8vHT5k0KQInvcx5bEhCGCMKrX1gd+J4noAnvsmdXHhaGwkqfiZN7shxCn3RxaEJAYl7XEfOkPy+MrHCzrmmVX+HqXCfsPCZZ8RVdO27a3HDmgwvDyfctSDh650ERLf9mAiZgAiZgAiZgAiZgAt0RsAjvjvXYxISg0yr3WQ8uOkwsI/4ufWZluH3+5kbbzrkfoc35xjc2hKwVc9JA+Ih5/CL8JTQRsoj4rMmAtIBPf0fQV93CjWjHL/ekw0l/Jy2I8iLHBAX3kfZeHVyIE3aEycSDnQmYgAmYgAmYgAmYgAmYwOAJWIQPvgxGIgVanU4LW1ZctcKN4Ot1NVnbqFktr+oQ4whNJgRIg9LIKjDhzFiyNVPIk1b8cyCAJegJ65T7FmTeQ5oQ+ayqKx78cy9haNJA4XLmmlaki/LFxAVhcXBfL055IQyFCwc7EzABEzABEzABEzABEzCBwRKwCB8s/5GJXau0CMSfemBhuPnN/jyPrXgQuHWchOaxd80NTAw0FZwIbKWBvCK2Y4eglvhGWDMBUGXiAT8IY9KZ5zSZQLxF/vLuj68j9iXmyROfmViwMwETMAETMAETMAETMAETGCwBi/DB8h+Z2NnqrVVqBB2CsR+OFWDCl4AsiwOByTPdCOOjvzI3uU8imZVxtmE32d5NfrUtHuGNk9BHfDcV+WX50Yo5gr0XJ47ahq6096vcekmr7zUBEzABEzABEzABEzCBqUTAInwqlXYLedUKK4K8bYfwZcVYQpSVW67xYjMdCG6ereY5bH6XYGf1+9a5mya/E4ZENL81caSFexH1iG7iQhxXWfluEh/3SDwzgRA7JhvEIO+Mn9hp0oRJCK2GS5TH/vzZBEzABEzABEzABEzABEygOwIW4d2xHouY9KyxVofLMoVglWjU28I5I6Zjh9iWoK56RmSzwhuv7mqSABGbFqVxfFU/K79aSe6nAFeaFCeCXPFWZZLnDx4KC9Z2JmACJmACJmACJmACJmACgyFgET4Y7iMbKyKPVeYscc2KKyutHHliML4eC1oEM89iI0A5WIGWX77zGwfClCPPEabuZQUbwR/Hk3df3nUJYon7fm1Dj+PXqrXyD28EtBgUncVP5zgMrbITlp0JmIAJmIAJmIAJmIAJmMBgCFiED4b7yMWKkD3/iaWTwljiLu+McJQQRMAiHFk9l4guW40lPsIgfMR0HSEdv+CM+5tunZcYZsWdzxL3TDaUpb/XAoaX2MKvLQfTujzbitvhmIAJmIAJmIAJmIAJmIAJhGAR7lpQiQACWqIQMYrAlrhG9EpcVwqsoieEroRv3dVb0qR7EZ38n3cdIU/cbOEmz1r95pqeM+c6z6Tz9vSZS7fVCjsv+xL9xBdPQrT5VnOVY7yFPy89vm4CJmACJmACJmACJmACJtA+AYvw9pmOZYjxSvDlz3a3nVlbqBG9fK7jSLOeg9YEAoKWl7rp+XTEuZ5Z10vfJL65hxXptCMdhKuVeoWN2GcrPsKc8Am3zoo5ExtxPvUyOK61JZoR94RHHu1MwARMwARMwARMwARMwAS6J2AR3j3zkY1RW6TriuFeM4wARTg23VaO8GQFmPvTwplwsw78VsknIpuwEeUS0VnhcU3Py0ukayKAs56jT289V5htroZrYqJK/notO99vAiZgAiZgAiZgAiZgAiZwKAGL8EN5+FsBAW1lzlodLritlZ9YFa6zqlwWKQKUg3DJD4eu1dm2nhUPK/CEBS/CRUhzaHt8nkhPC3DCJhz5J7w2HBw1KdBGeA7DBEzABEzABEzABEzABEygOgGL8OqsprxPbUln2zWrt3XEKn7Z7s29CEBWduvcP07wybcEv86wzXNauW5zNVwr7MRvZwImYAImYAImYAImYAIm0B0Bi/DuWI9FTKwcxyu6PFvMVmreGB5vr+Yzz17zG+JRq7k6s917qorwuhVBkx+wa2s3AGFO9cmQuuVg/yZgAiZgAiZgAiZgAibQBgGL8DYoTrEwEM9sjdZqqoR13pnnsPHL1mxEvF19AjwX3/SZ+LzYKA/KzGWSR8jXTcAETMAETMAETMAETKB9Ahbh7TOdkiGysqqt1Tp7pXv4q4K3ow9/GTmFJmACJmACJmACJmAC40XAIny8ytO5MQETMAETMAETMAETMAETMAETGGICFuFDXDhOmgmYgAmYgAmYgAmYgAmYgAmYwHgRsAgfr/J0bkzABEzABEzABEzABEzABEzABIaYgEX4EBeOk2YCJmACJmACJmACJmACJmACJjBeBCzCx6s8nRsTMAETMAETMAETMAETMAETMIEhJmARPsSF46SZgAmYgAmYgAmYgAmYgAmYgAmMFwGL8PEqT+fGBEzABEzABEzABEzABEzABExgiAlYhA9x4ThpJmACJmACJmACJmACJmACJmAC40XAIny8ytO5MQETMAETMAETMAETMAETMAETGGICFuFDXDhOmgmYgAmYgAmYgAmYgAmYgAmYwHgRsAgfr/J0bkzABEzABEzABEzABEzABEzABIaYgEX4EBeOk2YCJmACJmACJmACJmACJmACJjBeBCzCx6s8nRsTMAETMAETMAETMAETMAETMIEhJmARPsSF46SZgAmYgAmYgAmYgAmYgAmYgAmMFwGL8PEqT+fGBEzABEzABEzABEzABEzABExgiAlYhA9x4ThpJmACJmACJmACJmACJmACJmAC40XAIny8ytO5MQETMAETMAETMAETMAETMAETGGICFuFDXDhOmgmYgAmYgAmYgAmYgAmYgAmYwHgRsAgfr/J0bkzABEzABEzABEzABEzABEzABIaYgEX4EBeOk2YCJmACJmACJmACJmACJmACJjBeBCzCx6s8nRsTMAETMAETMAETMAETMAETMIEhJvD/AStQ+kJjVLHIAAAAAElFTkSuQmCC"}}},{"metadata":{"trusted":true},"cell_type":"code","source":"CFG = {\"device\": torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\"),\n       \"base_path\": '/kaggle/input/cassava-leaf-disease-classification/',\n       \"images_path\": \"/kaggle/input/cassava-leaf-disease-classification/train_images\",\n       \"size_crop\": 500,\n       \"num_epochs\": 1, # this should be set as an integer greater than 0. I usually go for 8 in this king of notebook\n       \"folds\": 5,\n       \"lr_transfer\": 1e-4,\n       \"lr_train\": 5e-4,\n       \"batch_size_train\": 64,\n       \"batch_size_valid\": 300,\n       \"num_workers\": 4}","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## <a id = \"step2\">Step2. Model Architecture</a>\n<a style=\"font-size:12px;\" href=\"#ToC\">Back to Table of Contents</a>\n\n<a id = \"transfer_lr\"><b>Network Architecture:</b></a>\n\nIn order to understand how and why we decided to define the architecture of the model in this way, the concept of *transfer learning* needs to be clarified.  \n\nSuppose that we have access to a model that has been trained on a huge dataset with input data same structure similar to the structure of the data we are working with. Hence, for this particular competition, suppose we can pick a model that has been trained on images. Its structure is something like this:\n\n![Transfer_1.png](attachment:Transfer_1.png)\nWe can think of this architecture as splitted in two parts. The first one is a convolutional network catching primitive features from the image, like colors, corners, edges, gradients. Once this low level piece of information has been found, it can be represented as a vector by flattening or pooling. Eventually, a simple dense network takes this feature vector as input and computes an output accordingly.  \n\n\nBut why should we care about that? \nOf course, the dense network is task-specific, and it is not suitable for cassava leaf desease classification. However, the convolutional part is trained to catch low level features and this is not task-specific! Thus the idea is to take the first part of the baseline network and *transfer* it to our model. Afterward, a new (cassava leaf disease specific-) classification layer can be built on top of that. The new structure of the network will look like:\n\n![Transfer_2.png](attachment:Transfer_2.png)\n\n**Weights initialization:**\n\nWe create the classification sub-model by building a custom *Classifier* class. Here the deal is how the weights of the two linear layers are initialized. Bad initialization distribution will lead the model to poor performance. In particular, PyTorch library initialize all weight through the following distribution: $$U(-\\sqrt{InputFeatures}, \\sqrt{InputFeatures})$$\nBut there are other choices we can make for this initialization distribution. In particular in this notebook I would suggest to work with Kaiming normal distribution initialization for linear Layers.  \n  \n[For more in depth details, please refer to this wonderful post](https://towardsdatascience.com/weight-initialization-in-neural-networks-a-journey-from-the-basics-to-kaiming-954fb9b47c79)","attachments":{"Transfer_1.png":{"image/png":"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"},"Transfer_2.png":{"image/png":"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DQ2kQrj/448/PqcykaSnHGFGjRr1vve9jz6XO++8MxkvG9Kzj7Q/rCpTxfKyocHYaSN2ecbKe97zHqg9/LGce+65F1544ac+9Sn8vVx11VVlZWU333wz/mSgAtEMf0FQMOpimYP+thpV5TeRwJHGoNfRWMkYOQJTpBskIadYt+vgNbMMMXp/SDm3YWthNoCP/8T7+/u3bNnS2tq6bNmy+fPnv/zyy8899xzs95///Off//7399xzD2zG97///RtuuAH/yL74xS9ecsklH/nIR84880z67+aF9773vXl5eWefffbHP/5xfEW78sory8vLR4wYcdttt911111QLfjahys+//zzr7766oIFC1auXNne3r59+/aDBw+qUXoDXxNpUuDEE0+kSx977LH4EqkO5wbxCQuXsyZPnhx5lkGRDFXN8yOpdZDorhHnNTUDAwNQ+firbGtrW7Vq1eLFixsbG2fOnIk/kKeeegr6+w9/+MODDz4IrX/HHXd873vfw9/m1772tS996UuXXnrpBRdc8OEPfxh/Bccdd5x6vhYeeeQRdaXMgVf5+vW2Gh0IkUdaSql/KqNWFE7qqEqOGyZj5AigVaAXTW2bLd6RXGJcS+8J41vOmrzuH+vi/+85YcKE++67r6qq6gc/+MFNN9107bXXlpSU0P+ss84669RTT4VQUP+iPHDSSSd96EMfghaBIsH/PvSGPn/4wx/+/Oc/hzHD/7hx48bhitOnT8d/z6VLl65du3bz5s179iTp9xYSjbQIvnbTgPEtPNe0CPBdjixZsoTCpf0l8hEd8+lPfzoZX9Z1B0kKI0hYFaEEE8Rq5Z///OcVV1xBT/uWW27BR5y0P0kfYZs9ttXnfEvQInoCVr2gPtQbeO6iTJIj4OXOPZ9+yVjce887SQwBE1LE1n0DN71uxI58e17nu30JrUTgf/oMLPRpp51WUFBw8cUXf/7zn7/qqquuv/76iooKfM265557Hnrooccee+zJJ5+cMmXKrFmzFi5cCFPR0dHR29uLb2yq07SEtQhz8sknJ2MiIP3wXY74yKuvvnr55ZdHPp9jvvzlL+O7vjqQBHQpkJIlNnom1uAlUU9PD74hXHTRRXjUxx577C9/+cvW1lZ1LANhieD7shr9tTW2pakn2KneDJMjYOfBw3cuMiZuLnupfdE2WVmTtUwK7/rQpHUnP91S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"}}},{"metadata":{"trusted":true},"cell_type":"code","source":"# First of all, import the pre trained model\n\nmodel = models.resnet50(pretrained = True)\n\n# Then, define the two layers I am going to use for classification purpose\n\nclass AdaptiveConcatPool2d(nn.Module):\n    def __init__(self, sz=None):\n        super().__init__()\n        sz = sz or (1, 1)\n        self.ap = nn.AdaptiveAvgPool2d(sz)\n        self.mp = nn.AdaptiveMaxPool2d(sz)\n\n    def forward(self, x): return torch.cat([self.mp(x), self.ap(x)], 1)\n\n\nclass Classifier(nn.Module):\n    def __init__(self, sz=None):\n        super().__init__()\n        self.layer1 = nn.Flatten()\n        self.layer2 = nn.BatchNorm1d(4096, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n        self.layer3 = nn.Dropout(p=0.25, inplace=False)\n        self.layer4 = nn.Linear(in_features=4096, out_features=5, bias=True)\n\n    def forward(self, x):\n        x = self.layer1(x)\n        x = self.layer2(x)\n        x = self.layer3(x)\n        x = self.layer4(x)\n        return(x)\n\n# Definition of the function that initialize the weights for classification layer correctly\n    \ndef init_weights(m):\n    if type(m) == nn.Linear:\n        torch.nn.init.kaiming_normal_(m.weight)    \n    \n# Eventually, we can extrapolate the convolutional part of the transferred model\n\nlayers = list(model.children())[:-2]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Initialize the model\n\nnet = Classifier()\nnet.apply(init_weights)\n\nlayers_model = layers.copy()\n\nresnet = nn.Sequential(*layers_model)\n\nbase_model = nn.Sequential(OrderedDict([\n                                  (\"ResNet\", resnet),\n                                  (\"Pooling\", AdaptiveConcatPool2d()),\n                                  (\"Classifier\", net)\n                                  ])) ","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## <a id = \"step3\">Step 3. DataSet and DataLoader</a>\n<a style=\"font-size:12px;\" href=\"#ToC\">Back to Table of Contents</a>\n\n**Introduction:** in this section we are going to define and process everything concerned with data. The purpose of the this step is to import data and build utility functions for data ingestion.  \nThe steps are:\n* **Define a data augmentation framework:** we are going to build a function for data in the training set and one other for data in validation/test set. The reason is that we want to enlarge the variance of the data seen by the model as input, in order to reduce overfitting. On the other hand, we do not want the model to see a distort input when testing is coming in place;\n* **Create and assign a fold index to each data point** \n* **Define DataLoader:** every deep learning model wants two elements as input, that is a batch of input data and the corresponding labels. In order to do that, PyTorch provides us a nice functionality, the dataloader object, that receives as input the *data*, and returns a generator of (batch_input, batch_target) data. This is particularly helpful because in this way, data has not to be memorized in the RAM, but it stays *on the fly* and it is loaded for every batch iteration during training. In particular, think about this situation, where we have a lot of images and it is helpful to use them only when needed, for memory optimization reasons;\n* **Define a DataSet:** but there is one thing that I did not mention. What actually is *data*? It might seem a trivial question, but the data is usually preprocessed before being used as batch input. Moreover, DataLoader objects do not accept just *lists*, nor *arrays* and *tensors*. They require DataSet (that is, an object belonging to a subclass of *torch.utils.data.Dataset*) objects as input. And we could decide to use pre defined PyTorch datasets or to define a customized DataSet class. To do so, we need to instantiate a class with the __init__, __len__ and __getitem__ methods. In particular, in the getitem method we can specify how to preprocess the input (here is where we should define the data augmentation step).\n\n[For further information on Datasets and Dataloader](https://medium.com/swlh/pytorch-dataset-dataloader-b50193dc9855)  \n[Official PyTorch documentation](https://pytorch.org/docs/stable/data.html)\n\nNotice that the data is not directly generated in this section, but it is itertively defined in [training](#step4) section. This is because the data that need to be actually generated depend on which folds are used as training set and on the batch."},{"metadata":{"trusted":true},"cell_type":"code","source":"# Import the data frame containing indices and labels\n\ndf = pd.read_csv(CFG[\"base_path\"] + 'train.csv',\n                 dtype = {\"label\": \"str\"}\n                )\n\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Split data into folds\n\nsplitter = StratifiedKFold(n_splits = CFG[\"folds\"],\n                shuffle = True\n                )","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Assign a fold index to each data point\n\nfor k, (i,j) in enumerate(splitter.split(df.image_id, df.label)):\n    df.loc[j, \"fold\"] = k\n    print(df.loc[i, \"label\"].value_counts())\n    \ndf[\"fold\"] = df[\"fold\"].astype(\"int8\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Augmentation Transformation "},{"metadata":{"trusted":true},"cell_type":"code","source":"# Define data augmentation procedure. One for training and one for validation data\n\ndef get_train_aug(sz): return albumentations.Compose([\n            albumentations.RandomResizedCrop(sz,sz),\n            albumentations.Transpose(p=0.5),\n            albumentations.HorizontalFlip(p=0.5),\n            albumentations.VerticalFlip(p=0.5),\n            albumentations.ShiftScaleRotate(p=0.5),\n            albumentations.HueSaturationValue(\n                hue_shift_limit=0.2,\n                sat_shift_limit=0.2,\n                val_shift_limit=0.2,\n                p=0.5\n            ),\n            albumentations.RandomBrightnessContrast(\n                brightness_limit=(-0.1,0.1),\n                contrast_limit=(-0.1, 0.1),\n                p=0.5\n            ),\n            albumentations.CoarseDropout(p=0.5),\n            albumentations.Cutout(p=0.5),\n    albumentations.Normalize(\n        mean=[0.485, 0.456, 0.406],\n        std=[0.229, 0.224, 0.225]),\n    ToTensorV2()\n])\n\ndef get_valid_aug(sz): return albumentations.Compose([\n    albumentations.CenterCrop(sz,sz, p=1.),\n    albumentations.Normalize(\n        mean=[0.485, 0.456, 0.406],\n        std=[0.229, 0.224, 0.225]),\n    ToTensorV2()\n], p=1.)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"# This Dataset object allows to \n\nclass Dataset(torch.utils.data.Dataset):\n    \"\"\"Class built on top of torch Dataset class. It is required to build a data loader in PyTorch.\n       Dataset objects need to have a __len__ and a __getitem__ method\n    \"\"\"\n\n    def __init__(self, list_IDs, dataframe, base_path, transform=None):\n        self.dataframe = dataframe\n        self.list_IDs = list_IDs\n        self.base_path = base_path\n        self.transform = transform\n\n    def __len__(self):\n        return len(self.list_IDs)\n\n    def __getitem__(self, index):\n\n        ID = self.dataframe.loc[self.list_IDs[index], \"image_id\"]\n\n        if self.transform:\n            X = self.transform(image = np.array(Image.open(Path(self.base_path) / ID)))[\"image\"].reshape((3, CFG[\"size_crop\"], CFG[\"size_crop\"]))\n        else:\n            X = transforms.ToTensor()(Image.open(Path(self.base_path) / ID))\n        y = torch.tensor(np.array(self.dataframe.loc[self.list_IDs[index], \"label\"], dtype = \"int\"))\n\n        return X, y","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## <a id = \"step4\">Training</a>\n<a style=\"font-size:12px;\" href=\"#ToC\">Back to Table of Contents</a>\n\nIn the following two cells, the loss function, the optimizer and the learning rate scheduler are going to be defined.  \n* **Loss Function:** we are going to use gold old cross entropy loss function. However, we need to use weights because of class imbalance in this dataset. As we know, more than 60% of data points fall in one single class. This means that the model is able to achieve a quite low value of the loss function just by predicting always the same class. You can try, but without weight the model will almost always predict the same class. The mathematical formulation of the new loss function is: $$\\frac{weight\\cdot CrossEntropyLoss}{mean(weight)}$$ where $weight$ is the vector of weights and $CrossEntropyLoss$ if the vector of the Cross Entropy loss (it will be made up by 0s, except for the coordinate of the true target);\n* **Optimizer:** notice that it has been two set of parameters with different learning rates. This means that the algorithm is going to perform discriminative learning. In particular, the layers referred to the transfer learning part have been assigned a low learning rate, whereas the classification layers have an higher lr (*they have to be assessed*);\n* **Learning rate scheduler:** it is the framework that each learning rate must follow. The idea behing learning rate sceduling is that in the first epochs, the learning rate should be higher in order to be able to find a local minimum area. On the other hand, later epochs should have a lower learning rate in order to find more precisely where the local minimum exactly is. We decided to use a cyclic learning rate in order to find a bunch of local minima (possibily not that accurate) in order to use all intermediate parameters found to produce an ensemble of learners.\n\n[Refer to this post to have a look on other possible learning rate schedulers](https://www.kaggle.com/isbhargav/guide-to-pytorch-learning-rate-scheduling)"},{"metadata":{"trusted":true},"cell_type":"code","source":"for idx_fold in range(CFG[\"folds\"]):\n    \n    # Definition of training and validation set\n    \n    idxs_train = df[df.fold != idx_fold].index\n    idxs_valid = df[df.fold == idx_fold].index\n\n    training_set = Dataset(idxs_train, df, CFG['images_path'], get_train_aug(CFG[\"size_crop\"]))\n    training_generator = torch.utils.data.DataLoader(training_set, \n                                                     batch_size = CFG[\"batch_size_train\"], \n                                                     num_workers = CFG[\"num_workers\"])\n\n    validation_set = Dataset(idxs_valid, df, CFG[\"images_path\"], get_valid_aug(CFG[\"size_crop\"]))\n    validation_generator = torch.utils.data.DataLoader(validation_set, \n                                                       batch_size = CFG[\"batch_size_train\"],\n                                                       num_workers = CFG[\"num_workers\"])\n    generators = {\"train\": training_generator,\n              \"valid\": validation_generator}\n    \n    # Initialize the model\n\n    # I need to build a deep copy of the model. \n    # Otherwise, models of different folds are not \n    # independent from each other\n    \n    model = copy.deepcopy(base_model)   \n\n    # Since we are working with an imbalanced dataset, we assign a weight\n    # to the loss contribution of each class. In other words,\n    # classes with lower cardinality have an higher way, allowing\n    # each class to have the same impact on the loss function\n    \n    weights = torch.from_numpy(df.label.value_counts().min()/df.label.value_counts().reset_index().sort_values(\"index\")[\"label\"].values).float()\n    weights = weights.to(CFG[\"device\"])\n    loss_func = nn.CrossEntropyLoss(weight = weights, reduction = \"mean\")\n\n    ### Optimizer\n    \n    optimizer = torch.optim.Adam([\n                                     {\"params\": model.ResNet.parameters(), \"lr\": CFG[\"lr_transfer\"], \"weight_decay\": 1e-6}, # I should set an Hyperparameter for the learning rate\n                                     {\"params\": model.Classifier.parameters(), \"lr\": CFG[\"lr_train\"], \"weight_decay\": 1e-6}\n                                 ])\n    scaler = GradScaler()\n    \n    ### Learning Rate Scheduler\n    \n    lr_scheduler = optim.lr_scheduler.CosineAnnealingWarmRestarts(optimizer, T_0=CFG[\"num_epochs\"], T_mult=1, eta_min=0.00001, last_epoch=-1)\n\n    model = model.to(CFG[\"device\"])\n\n    for epoch in range(CFG[\"num_epochs\"]):\n\n\n        print(\"-\" * 15 + \"Epoch: \" + str(epoch + 1) + \" / \" + str(CFG[\"num_epochs\"]) + \"-\" * 15)\n\n        l = 0\n        for step in [\"train\", \"valid\"]:\n            if step == \"train\":\n                print(\"Computing training epoch\")\n                model = model.train()\n                for data, target in tqdm(generators[step], total = len(generators[step])):\n                    data = data.to(CFG[\"device\"])\n                    target = target.to(CFG[\"device\"])\n                    \n                    with autocast(): \n                        \n                        ## autocast + GradScaler allow the training phase to work on a float16 precision  \n                        ## This allows to double the batch size and speed up training\n                        \n                        pred = model(data)\n\n                        loss = loss_func(pred, target)\n\n                    # Back-propagation and gradient descent step\n                    \n                    for param in model.parameters():\n                        param.grad = None\n                    scaler.scale(loss).backward()\n\n                    scaler.step(optimizer)\n                    scaler.update()\n                    l += loss.item()\n                print(f\"Mean loss function on training set: {round(l/len(generators[step]), 5)}\")\n\n            else:\n\n                print(\"Computing validation accuracy\")\n\n                model = model.eval()\n                num_correct = 0\n                num_samples = 0\n\n                for data, target in tqdm(generators[step], total = len(generators[step])):\n\n                    data = data.to(CFG[\"device\"])\n                    target = target.to(CFG[\"device\"])\n\n                    with torch.no_grad():\n                        predictions = model(data).max(axis = 1)[1]\n                        num_correct += (predictions == target).sum().item()\n                        num_samples += predictions.size(0)\n\n                print(f\"Validation accuracy: {round(100 * num_correct/num_samples, 2)}%\")\n                \n                lr_scheduler.step()        \n                \n    checkpoint = {\"state_dict\": model.state_dict()}\n    torch.save(checkpoint, f\"checkpoint_fold_{idx_fold}.pth.tar\")\n    del model, optimizer, lr_scheduler\n    torch.cuda.empty_cache()\n    \ndel data, target\ntorch.cuda.empty_cache()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## <a id = \"step5\">Ensembling & Evalutation</a>\n<a style=\"font-size:12px;\" href=\"#ToC\">Back to Table of Contents</a>\n\nAn improvement to model performance can be achieved by combining the results of multiple (and independent) models. This technique is widely used in Machine Learning (you can think about XGBoost and Random Forest for example). Here you can find a simple ensembling of the models trained in the cell above. The output is computed by looking at the feature that has the overall higher shared confidence among models. However you can play around it. Here are a couple of suggestions:\n* use normalized (through softmax) predictions instead of the model outputs;\n* build a meta model (a dense neural network) that takes as input the stacked outputs of the models (normalized via softmax) and train it for leaf desease classification"},{"metadata":{"trusted":true},"cell_type":"code","source":"class Ensemble(nn.Module):\n    def __init__(self):\n        super(Ensemble, self).__init__()\n        \n        with open('checkpoint_fold_0.pth.tar', \"rb\") as f:\n            state = torch.load(f)\n        base_model.load_state_dict(state[\"state_dict\"])    \n        self.model1 = copy.deepcopy(base_model)\n        self.model1 = self.model1.eval()\n        with open('checkpoint_fold_1.pth.tar', \"rb\") as f:\n            state = torch.load(f)\n        base_model.load_state_dict(state[\"state_dict\"])\n        self.model2 = copy.deepcopy(base_model)\n        self.model2 = self.model2.eval()\n        with open('checkpoint_fold_2.pth.tar', \"rb\") as f:\n            state = torch.load(f)\n        base_model.load_state_dict(state[\"state_dict\"])\n        self.model3 = copy.deepcopy(base_model)\n        self.model3 = self.model3.eval()\n        with open('checkpoint_fold_3.pth.tar', \"rb\") as f:\n            state = torch.load(f)\n        base_model.load_state_dict(state[\"state_dict\"])\n        self.model4 = copy.deepcopy(base_model)\n        self.model4 = self.model4.eval()\n        with open('checkpoint_fold_4.pth.tar', \"rb\") as f:\n            state = torch.load(f)\n        base_model.load_state_dict(state[\"state_dict\"])\n        self.model5 = copy.deepcopy(base_model)\n        self.model5 = self.model5.eval()\n        \n    def forward(self, x): \n        o1 = self.model1(x)\n        o2 = self.model2(x)\n        o3 = self.model3(x)\n        o4 = self.model4(x)\n\n        return o1 + o2 + o3 + o4\n                                                     \nensemble = Ensemble()\nensemble = ensemble.to(CFG[\"device\"])\nemsemble = ensemble.eval()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## <a id = \"step6\"> Submission</a>  \n<a style=\"font-size:12px;\" href=\"#ToC\">Back to Table of Contents</a>"},{"metadata":{"trusted":true},"cell_type":"code","source":"class TestDataset(torch.utils.data.Dataset):\n    \"\"\"Class built on top of torch Dataset class. It is required to build a data loader in PyTorch.\n       Dataset objects need to have a __len__ and a __getitem__ method\n    \"\"\"\n\n    def __init__(self, list_IDs, transform=None):\n        self.list_IDs = list_IDs\n        self.transform = transform\n\n    def __len__(self):\n        return len(self.list_IDs)\n\n    def __getitem__(self, index):\n\n        ID = self.list_IDs[index]\n\n        if self.transform:\n            X = self.transform(image = np.array(Image.open(Path('/kaggle/input/cassava-leaf-disease-classification/test_images') / ID)))[\"image\"].reshape((3, CFG[\"size_crop\"], CFG[\"size_crop\"]))\n\n        else:\n            X = transforms.ToTensor()(Image.open(Path(ID)))\n\n        return X","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"img_path = list(Path('/kaggle/input/cassava-leaf-disease-classification/test_images').glob(\"*\"))\n\ndef clean_path(s):\n    path = str(s)\n    return path.split('/kaggle/input/cassava-leaf-disease-classification/test_images/')[1]\n\nimagesPath = list(map(clean_path, img_path))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_set = TestDataset(imagesPath, get_valid_aug(CFG[\"size_crop\"]))\ntest_generator = torch.utils.data.DataLoader(test_set, batch_size = CFG[\"batch_size_valid\"], num_workers = 2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"torch.cuda.empty_cache()\nfor i in test_generator:\n    with torch.no_grad():\n        i = i.to(CFG[\"device\"])\n        pred = ensemble(i)\n    try:\n        output = torch.cat((output, pred.max(axis = 1)[1].cpu()))\n    except:\n        output = pred.max(axis = 1)[1].cpu()\n        \noutput_df = pd.DataFrame({\n    'image_id' : imagesPath,\n    'label' : output.numpy()\n})\n\ncsv = output_df[['image_id', 'label']]\ncsv.to_csv('submission.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}