{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from fastai import *\n", "from fastai.vision import *\n", "from fastai.vision.models import efficientnet\n", "from fastai.utils.ipython import *\n", "from fastai.callbacks.tracker import SaveModelCallback\n", "from sklearn.model_selection import StratifiedKFold\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[PosixPath('../../../Dataset/Sipakmed Dataset/wsi_dataset/train'),\n", " PosixPath('../../../Dataset/Sipakmed Dataset/wsi_dataset/test')]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "path = Path(\".\")\n", "data_path = path / \"..\" / \"..\" / \"..\" / \"Dataset\" / \"Sipakmed Dataset\" / \"wsi_dataset\"\n", "data_path.ls()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LabelLists;\n", "\n", "Train: LabelList (966 items)\n", "x: ImageList\n", "Image (3, 1536, 2048),Image (3, 1536, 2048),Image (3, 1536, 2048),Image (3, 1536, 2048),Image (3, 1536, 2048)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (0 items)\n", "x: ImageList\n", "\n", "y: CategoryList\n", "\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_init = (ImageList.from_folder(data_path / \"train\")\n", " .split_none()\n", " .label_from_folder())\n", "data_init" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "StratifiedKFold(n_splits=5, random_state=0, shuffle=True)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)\n", "skf" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "tfms = get_transforms(flip_vert=True, max_warp=0.0, max_rotate=60.0, max_zoom=1.0)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def model_callback(model, model_name):\n", " return [SaveModelCallback(model, every=\"improvement\", monitor=\"accuracy\", name=model_name)]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[ .new_type at 0x7f832959bc80>>,\n", " Precision(average='macro', pos_label=1, eps=1e-09),\n", " Recall(average='macro', pos_label=1, eps=1e-09),\n", " FBeta(average='macro', pos_label=1, eps=1e-09, beta=2),\n", " KappaScore(weights='quadratic')]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "our_metrics = [accuracy, Precision(average=\"macro\"), Recall(average=\"macro\"), FBeta(average=\"macro\"), KappaScore(weights=\"quadratic\")]\n", "our_metrics" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "idxs = [[train_idx, val_idx] for train_idx, val_idx in skf.split(data_init.x.items, data_init.y.items)]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def get_fold_data(fold_idxs, img_size, bs=16):\n", " return (ImageList.from_folder(data_path / \"train\")\n", " .split_by_idxs(fold_idxs[0], fold_idxs[1])\n", " .label_from_folder()\n", " .transform(tfms, size=img_size)\n", " .databunch(bs=bs)\n", " .normalize(imagenet_stats))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-1" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (772 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (194 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_data = get_fold_data(idxs[0], img_size=224, bs=16)\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Learner(data=ImageDataBunch;\n", "\n", "Train: LabelList (772 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (194 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None, model=Sequential(\n", " (0): Sequential(\n", " (0): Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (22): ReLU(inplace=True)\n", " (23): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (24): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (25): ReLU(inplace=True)\n", " (26): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (27): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (32): ReLU(inplace=True)\n", " (33): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (34): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (35): ReLU(inplace=True)\n", " (36): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (37): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (38): ReLU(inplace=True)\n", " (39): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (42): ReLU(inplace=True)\n", " (43): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (44): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (45): ReLU(inplace=True)\n", " (46): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (47): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (48): ReLU(inplace=True)\n", " (49): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (50): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (51): ReLU(inplace=True)\n", " (52): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (1): AdaptiveAvgPool2d(output_size=(7, 7))\n", " )\n", " (1): Sequential(\n", " (0): AdaptiveConcatPool2d(\n", " (ap): AdaptiveAvgPool2d(output_size=1)\n", " (mp): AdaptiveMaxPool2d(output_size=1)\n", " )\n", " (1): Flatten()\n", " (2): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): Dropout(p=0.25, inplace=False)\n", " (4): Linear(in_features=1024, out_features=512, bias=True)\n", " (5): ReLU(inplace=True)\n", " (6): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): Dropout(p=0.5, inplace=False)\n", " (8): Linear(in_features=512, out_features=5, bias=True)\n", " )\n", "), opt_func=functools.partial(, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[, Precision(average='macro', pos_label=1, eps=1e-09), Recall(average='macro', pos_label=1, eps=1e-09), FBeta(average='macro', pos_label=1, eps=1e-09, beta=2), KappaScore(weights='quadratic')], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('../../../Dataset/Sipakmed Dataset/wsi_dataset/train'), model_dir='models', callback_fns=[functools.partial(, add_time=True, silent=False)], callbacks=[MixedPrecision\n", "learn: Learner(data=ImageDataBunch;\n", "\n", "Train: LabelList (772 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (194 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None, model=Sequential(\n", " (0): Sequential(\n", " (0): Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (22): ReLU(inplace=True)\n", " (23): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (24): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (25): ReLU(inplace=True)\n", " (26): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (27): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (32): ReLU(inplace=True)\n", " (33): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (34): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (35): ReLU(inplace=True)\n", " (36): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (37): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (38): ReLU(inplace=True)\n", " (39): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (42): ReLU(inplace=True)\n", " (43): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (44): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (45): ReLU(inplace=True)\n", " (46): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (47): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (48): ReLU(inplace=True)\n", " (49): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (50): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (51): ReLU(inplace=True)\n", " (52): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (1): AdaptiveAvgPool2d(output_size=(7, 7))\n", " )\n", " (1): Sequential(\n", " (0): AdaptiveConcatPool2d(\n", " (ap): AdaptiveAvgPool2d(output_size=1)\n", " (mp): AdaptiveMaxPool2d(output_size=1)\n", " )\n", " (1): Flatten()\n", " (2): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): Dropout(p=0.25, inplace=False)\n", " (4): Linear(in_features=1024, out_features=512, bias=True)\n", " (5): ReLU(inplace=True)\n", " (6): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): Dropout(p=0.5, inplace=False)\n", " (8): Linear(in_features=512, out_features=5, bias=True)\n", " )\n", "), opt_func=functools.partial(, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[, Precision(average='macro', pos_label=1, eps=1e-09), Recall(average='macro', pos_label=1, eps=1e-09), FBeta(average='macro', pos_label=1, eps=1e-09, beta=2), KappaScore(weights='quadratic')], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('../../../Dataset/Sipakmed Dataset/wsi_dataset/train'), model_dir='models', callback_fns=[functools.partial(, add_time=True, silent=False)], callbacks=[...], layer_groups=[Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "), Sequential(\n", " (0): ReLU(inplace=True)\n", " (1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (5): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (6): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): ReLU(inplace=True)\n", " (8): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (9): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (10): ReLU(inplace=True)\n", " (11): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (12): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (13): ReLU(inplace=True)\n", " (14): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (18): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (19): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (20): ReLU(inplace=True)\n", " (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (22): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (23): ReLU(inplace=True)\n", " (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (26): ReLU(inplace=True)\n", " (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (31): AdaptiveAvgPool2d(output_size=(7, 7))\n", "), Sequential(\n", " (0): AdaptiveAvgPool2d(output_size=1)\n", " (1): AdaptiveMaxPool2d(output_size=1)\n", " (2): Flatten()\n", " (3): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (4): Dropout(p=0.25, inplace=False)\n", " (5): Linear(in_features=1024, out_features=512, bias=True)\n", " (6): ReLU(inplace=True)\n", " (7): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (8): Dropout(p=0.5, inplace=False)\n", " (9): Linear(in_features=512, out_features=5, bias=True)\n", ")], add_time=True, silent=False)\n", "loss_scale: 65536\n", "max_noskip: 1000\n", "dynamic: True\n", "clip: None\n", "flat_master: False\n", "max_scale: 16777216\n", "loss_fp32: True], layer_groups=[Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "), Sequential(\n", " (0): ReLU(inplace=True)\n", " (1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (5): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (6): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): ReLU(inplace=True)\n", " (8): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (9): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (10): ReLU(inplace=True)\n", " (11): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (12): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (13): ReLU(inplace=True)\n", " (14): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (18): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (19): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (20): ReLU(inplace=True)\n", " (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (22): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (23): ReLU(inplace=True)\n", " (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (26): ReLU(inplace=True)\n", " (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (31): AdaptiveAvgPool2d(output_size=(7, 7))\n", "), Sequential(\n", " (0): AdaptiveAvgPool2d(output_size=1)\n", " (1): AdaptiveMaxPool2d(output_size=1)\n", " (2): Flatten()\n", " (3): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (4): Dropout(p=0.25, inplace=False)\n", " (5): Linear(in_features=1024, out_features=512, bias=True)\n", " (6): ReLU(inplace=True)\n", " (7): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (8): Dropout(p=0.5, inplace=False)\n", " (9): Linear(in_features=512, out_features=5, bias=True)\n", ")], add_time=True, silent=False)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "learner = cnn_learner(fold_data, models.vgg19_bn, metrics=our_metrics).to_fp16()\n", "learner" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:13<00:27]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
02.668150#na#00:13

\n", "\n", "

\n", " \n", " \n", " 83.33% [40/48 00:09<00:01 8.0904]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
01.9016690.9517880.6443300.6708110.6274270.6255380.59382200:13
11.4434850.5013310.8144330.8162350.8326060.8262900.77341400:12
21.1245470.4245590.8298970.8407930.8527820.8501170.82274200:13
30.9815650.3294850.8608250.8781760.8711090.8704570.86984000:13
40.8236810.3643170.8711340.8907220.8808190.8819550.88675700:13
50.7976720.2881160.8814430.9145500.8830230.8870460.88607400:12
60.7345180.3346750.8865980.8866560.8988140.8952630.87780200:12
70.7449660.3350780.8608250.8708770.8881800.8826820.91820600:13
80.6221100.3316820.8917530.8994680.9021560.8998450.90309100:12
90.6198490.2155480.9175260.9280680.9236210.9241090.92166100:13
100.6050510.2861610.8917530.8991950.9114250.9077590.91333000:13
110.5680700.1833360.9123710.9238840.9316940.9298570.95414400:13
120.4769040.1319300.9329900.9454040.9419690.9420750.95929600:13
130.4358050.1440430.9536080.9641210.9519430.9537370.95717900:13
140.4651710.1241500.9484540.9564120.9565790.9561740.96098900:13
150.3705090.1677960.9329900.9429630.9414170.9406460.94161000:13
160.3620010.1160920.9690720.9669540.9759340.9737050.97051400:13
170.3611340.1092620.9587630.9642330.9637970.9635680.96384400:14
180.3495490.1169560.9484540.9579140.9509350.9518180.96354700:13
190.3158030.1262150.9536080.9626780.9599040.9595490.96208900:14
200.3089840.1149210.9639180.9685220.9713160.9704110.97330900:12
210.2859200.1368710.9484540.9554620.9516760.9519240.95218100:14
220.2821600.1063270.9639180.9675010.9678790.9676880.96118100:13
230.2870820.1168110.9587630.9633090.9636240.9633030.95982900:13
240.2558200.1113430.9587630.9629300.9639860.9636730.95525600:13
250.2509690.1140320.9587630.9637970.9636240.9634620.95966700:13
260.2175800.1082480.9690720.9718570.9721340.9720500.96254300:13
270.2134220.1091460.9587630.9637970.9636240.9634620.95966700:12
280.2217860.1143640.9587630.9650000.9630720.9629460.95962500:12
290.2255210.1102110.9639180.9676900.9676900.9676900.96090700:13
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.6443299055099487.\n", "Better model found at epoch 1 with accuracy value: 0.8144329786300659.\n", "Better model found at epoch 2 with accuracy value: 0.8298969268798828.\n", "Better model found at epoch 3 with accuracy value: 0.8608247637748718.\n", "Better model found at epoch 4 with accuracy value: 0.8711340427398682.\n", "Better model found at epoch 5 with accuracy value: 0.8814433217048645.\n", "Better model found at epoch 6 with accuracy value: 0.8865979313850403.\n", "Better model found at epoch 8 with accuracy value: 0.8917526006698608.\n", "Better model found at epoch 9 with accuracy value: 0.9175257682800293.\n", "Better model found at epoch 12 with accuracy value: 0.9329897165298462.\n", "Better model found at epoch 13 with accuracy value: 0.9536082744598389.\n", "Better model found at epoch 16 with accuracy value: 0.969072163105011.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(4e-03), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold1-stage1\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold1-stage1\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:09<00:19]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.296756#na#00:09

\n", "\n", "

\n", " \n", " \n", " 12.50% [6/48 00:04<00:29 0.3939]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold1-stage1\")\n", "learner = to_fp16(learner)\n", "learner.unfreeze()\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.3043700.1047380.9690720.9688010.9753820.9738680.97482700:14
10.3681500.1074330.9639180.9649740.9711270.9696670.97333300:13
20.3385890.1161980.9639180.9650660.9709380.9695610.96877900:13
30.3187340.1153770.9587630.9636090.9639860.9638160.96395200:14
40.3700230.1108660.9690720.9729850.9764850.9753400.97907600:14
50.3014360.1200440.9690720.9729850.9764850.9753400.97907600:13
60.3244700.1132240.9587630.9612700.9668720.9654420.97183600:14
70.2935270.1099850.9639180.9676350.9716780.9707680.97763600:13
80.3073580.1032700.9690720.9716090.9753820.9745710.97911600:13
90.3032560.1116250.9536080.9577920.9624270.9611450.96577000:13
100.2651210.1104390.9639180.9685340.9675010.9675170.96519000:13
110.2354600.1109170.9587630.9621080.9650890.9638410.95966700:13
120.2642530.1048540.9484540.9560850.9547350.9549360.95619500:13
130.2702220.1007680.9690720.9715370.9719450.9717670.96695600:13
140.3115350.0993100.9742270.9756480.9796380.9787370.98061800:14
150.2957590.1028230.9742270.9763080.9762010.9760430.96834600:13
160.2600680.1028690.9536080.9577920.9624270.9611450.96577000:13
170.2602050.0965140.9742270.9756480.9796380.9787370.98061800:13
180.2464000.0988220.9690720.9716090.9753820.9745710.97911600:13
190.2652530.1043980.9690720.9696110.9753820.9740250.97472600:13
200.2538150.1001930.9587630.9646890.9636240.9637420.96387600:13
210.2423310.1016580.9587630.9638970.9668720.9660800.97172700:14
220.2599990.0962130.9742270.9763080.9762010.9760430.96834600:13
230.2777500.0988200.9742270.9763190.9796380.9788880.98054000:13
240.2661240.0992430.9639180.9649740.9711270.9696670.97333300:13
250.2575860.1019040.9536080.9595630.9591790.9592320.96239100:13
260.2747180.0961750.9639180.9674230.9676900.9676130.96543600:13
270.3136140.0954260.9742270.9756480.9796380.9787370.98061800:13
280.2817800.0960480.9690720.9715370.9719450.9717670.96695600:13
290.2764870.1003640.9587630.9602900.9634350.9627490.95970300:13
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.969072163105011.\n", "Better model found at epoch 14 with accuracy value: 0.9742268323898315.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(1e-05), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold1-stage2\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold1-stage2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-2" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (773 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (193 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_data = get_fold_data(idxs[1], img_size=224, bs=16)\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:09<00:18]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.321287#na#00:09

\n", "\n", "

\n", " \n", " \n", " 60.42% [29/48 00:07<00:04 0.9995]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold1-stage2\")\n", "learner = to_fp16(learner)\n", "learner.data = fold_data\n", "learner.freeze()\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2685510.0527470.9844560.9841440.9884260.9874630.98321200:13
10.2915760.0522020.9896370.9881410.9921300.9912720.98473000:12
20.3170810.0566310.9792750.9770220.9838800.9822480.97719900:13
30.3078480.0518090.9948190.9923080.9958330.9950650.98625000:12
40.2949680.0654400.9844560.9882350.9872050.9872170.99535000:12
50.2808130.0724900.9844560.9841440.9875840.9868070.98314300:13
60.2841930.0789800.9792750.9836900.9843430.9839970.98924000:13
70.2942190.0738430.9844560.9882350.9880470.9879080.99537000:13
80.2643780.0873160.9792750.9836900.9789560.9796760.98150700:14
90.2619270.1152590.9585490.9638020.9634650.9634550.96602600:13
100.2613840.1033180.9637310.9680320.9663270.9663410.97964100:13
110.2665450.0735370.9740930.9793460.9752530.9757730.97544400:13
120.2263320.0838400.9740930.9789010.9751680.9756660.98018000:12
130.2243020.0782350.9740930.9756570.9793350.9784380.97549300:13
140.1890120.0859530.9585490.9680560.9538650.9560940.95284900:12
150.2261160.0812020.9689120.9753130.9698650.9706260.97370700:13
160.2305700.0791620.9689120.9697500.9755470.9742060.98171400:13
170.2148850.0729570.9689120.9748500.9717140.9722170.98152600:13
180.2042790.1001270.9585490.9606120.9677610.9659800.96657600:12
190.1878350.0768770.9740930.9800700.9763430.9767350.97521600:13
200.2011850.0692430.9740930.9805400.9793350.9793850.99225100:13
210.1977220.0926410.9637310.9730160.9672520.9677550.97191500:12
220.1677280.0678800.9792750.9797000.9847220.9835400.97720000:13
230.1719800.0683720.9844560.9875560.9888890.9884530.99081000:13
240.1732750.0635530.9792750.9836900.9843430.9839970.98924000:13
250.1634340.0580390.9896370.9914740.9925930.9922950.99233800:13
260.1603370.0604680.9844560.9875560.9888890.9884530.99081000:13
270.1899980.0623300.9844560.9875560.9888890.9884530.99081000:12
280.1794300.0656210.9844560.9875560.9888890.9884530.99081000:12
290.1557700.0640420.9844560.9875560.9888890.9884530.99081000:12
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.984455943107605.\n", "Better model found at epoch 1 with accuracy value: 0.9896373152732849.\n", "Better model found at epoch 3 with accuracy value: 0.9948186278343201.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(1.9e-03), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold2-stage1\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold2-stage1\")" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:10<00:20]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.294549#na#00:10

\n", "\n", "

\n", " \n", " \n", " 20.83% [10/48 00:04<00:18 0.8170]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold2-stage1\")\n", "learner = to_fp16(learner)\n", "learner.unfreeze()\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2917760.0619890.9740930.9766210.9784930.9777940.97993400:14
10.2945730.0558310.9844560.9841440.9875840.9868070.98314300:13
20.2707920.0605300.9792750.9803080.9830390.9823140.98154400:13
30.2658620.0567840.9844560.9841440.9875840.9868070.98314300:13
40.2204540.0567660.9896370.9920000.9917510.9917200.99691100:13
50.2137070.0583190.9844560.9841440.9875840.9868070.98314300:13
60.2463520.0535470.9844560.9882350.9880470.9879080.99537000:13
70.2324890.0532880.9844560.9882350.9880470.9879080.99537000:13
80.2298770.0608810.9844560.9882350.9880470.9879080.99537000:13
90.2566730.0521530.9844560.9882350.9872050.9872170.99535000:14
100.2169300.0741940.9792750.9846150.9835020.9834120.99380400:14
110.1955790.0612710.9740930.9797680.9758810.9764480.97985200:13
120.2102100.0553740.9792750.9846150.9792050.9799560.98125700:14
130.1913170.0549990.9844560.9841440.9875840.9868070.98314300:13
140.1609310.0608870.9792750.9803080.9838800.9830040.98162000:14
150.1404050.0441940.9896370.9913890.9921300.9919540.99693400:13
160.1317390.0619840.9792750.9803080.9838800.9830040.98162000:13
170.1375770.0466430.9844560.9841440.9875840.9868070.98314300:13
180.1369960.0452490.9844560.9841440.9875840.9868070.98314300:13
190.1230720.0557650.9844560.9882350.9837510.9844520.98288100:13
200.1598970.0493260.9844560.9873920.9841300.9846900.98300500:13
210.1329960.0459310.9792750.9794290.9834180.9825600.98167600:13
220.1266070.0470130.9896370.9920000.9917510.9917200.99691100:14
230.1270490.0559390.9792750.9827780.9834180.9832630.99386700:13
240.1414330.0411330.9792750.9794290.9834180.9825600.98167600:13
250.1307480.0508920.9844560.9872910.9875840.9875010.99538400:13
260.1280820.0468170.9792750.9803080.9830390.9823140.98154400:13
270.1619760.0446750.9792750.9827780.9834180.9832630.99386700:14
280.1132640.0500590.9896370.9920000.9917510.9917200.99691100:14
290.1065420.0437140.9844560.9841440.9875840.9868070.98314300:14
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.9740932583808899.\n", "Better model found at epoch 1 with accuracy value: 0.984455943107605.\n", "Better model found at epoch 4 with accuracy value: 0.9896373152732849.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(1e-04), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold2-stage2\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold2-stage2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-3" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (773 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (193 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_data = get_fold_data(idxs[2], img_size=224, bs=16)\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:09<00:18]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.216237#na#00:09

\n", "\n", "

\n", " \n", " \n", " 50.00% [24/48 00:06<00:06 0.3942]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold2-stage2\")\n", "learner = to_fp16(learner)\n", "learner.data = fold_data\n", "learner.freeze()\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2609280.0631340.9844560.9884370.9871210.9872880.99070600:12
10.2906870.0717310.9844560.9884370.9871210.9872880.99070600:13
20.2803500.0701840.9844560.9884370.9871210.9872880.99070600:12
30.2823340.0606080.9844560.9884370.9871210.9872880.99070600:13
40.2712940.0656890.9844560.9884370.9871210.9872880.99070600:13
50.2227910.0710610.9740930.9807660.9734310.9745930.98762000:13
60.2621510.0741650.9792750.9851100.9775970.9788810.98912900:13
70.2305970.0660230.9844560.9884370.9871210.9872880.99070600:12
80.2392120.0660350.9792750.9851100.9775970.9788810.98912900:13
90.2515330.0746870.9740930.9772360.9739610.9743980.98305700:13
100.2406240.0737940.9792750.9840560.9834850.9835750.98916200:12
110.2730390.0666590.9792750.9806190.9834850.9827970.98463700:12
120.2504920.0710730.9844560.9884370.9871210.9872880.99070600:12
130.2457610.0690690.9792750.9851100.9775970.9788810.98912900:13
140.2368850.0663620.9792750.9840560.9834850.9835750.98916200:13
150.2788990.0660880.9792750.9840560.9834850.9835750.98916200:12
160.2827760.0638170.9844560.9884370.9871210.9872880.99070600:13
170.2690270.0657870.9844560.9884370.9871210.9872880.99070600:13
180.2376140.0656790.9792750.9840560.9834850.9835750.98916200:12
190.2554160.0647430.9844560.9884370.9871210.9872880.99070600:13
200.2447800.0709380.9844560.9884370.9871210.9872880.99070600:13
210.2652500.0656220.9844560.9884370.9871210.9872880.99070600:13
220.2703280.0659750.9844560.9884370.9871210.9872880.99070600:13
230.2503710.0680700.9844560.9884370.9871210.9872880.99070600:13
240.2532790.0705140.9792750.9851100.9775970.9788810.98912900:12
250.2691880.0681030.9844560.9884370.9871210.9872880.99070600:12
260.2660350.0680360.9844560.9884370.9871210.9872880.99070600:13
270.2771480.0665380.9844560.9884370.9871210.9872880.99070600:12
280.2359020.0692610.9792750.9840560.9834850.9835750.98916200:13
290.2307040.0656340.9844560.9884370.9871210.9872880.99070600:13
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.984455943107605.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(2.2e-06), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold3-stage1\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold3-stage1\")" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:10<00:21]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.343578#na#00:10

\n", "\n", "

\n", " \n", " \n", " 20.83% [10/48 00:04<00:18 0.6408]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold3-stage1\")\n", "learner = to_fp16(learner)\n", "learner.unfreeze()\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2159120.0640390.9844560.9884370.9871210.9872880.99070600:14
10.2734680.0705290.9792750.9806190.9834850.9827970.98463700:13
20.2219460.0660280.9740930.9798480.9798480.9798490.98762000:15
30.2289620.0621670.9844560.9884370.9871210.9872880.99070600:14
40.2407970.0686680.9792750.9851100.9775970.9788810.98912900:14
50.2367320.0714470.9844560.9884370.9871210.9872880.99070600:13
60.2704620.0741760.9740930.9798480.9798480.9798490.98762000:14
70.2398670.0783800.9689120.9762300.9756820.9757680.98606600:14
80.2332680.0771040.9740930.9798480.9798480.9798490.98762000:14
90.2275680.0727570.9740930.9806730.9739610.9751770.98758200:14
100.2515930.0783830.9792750.9840560.9834850.9835750.98916200:14
110.2221920.0773680.9740930.9798480.9798480.9798490.98762000:13
120.2237040.0775890.9844560.9884370.9871210.9872880.99070600:14
130.2335780.0768670.9689120.9764070.9703250.9714580.98603700:14
140.2247710.0879920.9585490.9695180.9619910.9632840.98291600:13
150.2157490.0794190.9689120.9762300.9756820.9757680.98606600:14
160.2075950.0779220.9740930.9798480.9798480.9798490.98762000:13
170.1860110.0800490.9792750.9851100.9829550.9831700.98915100:13
180.2542700.0798160.9740930.9772360.9793180.9786870.98309200:13
190.2194990.0783810.9792750.9851100.9829550.9831700.98915100:13
200.2116910.0793700.9740930.9772360.9793180.9786870.98309200:14
210.2209110.0759890.9689120.9727000.9756820.9749720.98156400:13
220.2034440.0802670.9740930.9805800.9793180.9794760.98760800:14
230.1898530.0820930.9740930.9772360.9793180.9786870.98309200:14
240.2096430.0770240.9792750.9806190.9834850.9827970.98463700:13
250.2120280.0768650.9792750.9840560.9834850.9835750.98916200:13
260.1964020.0867300.9689120.9739690.9751510.9745530.98154600:13
270.2196530.0795410.9689120.9762300.9756820.9757680.98606600:14
280.1947690.0743140.9792750.9806190.9834850.9827970.98463700:13
290.2056680.0805320.9689120.9762300.9756820.9757680.98606600:14
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.984455943107605.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(1.7e-05), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold3-stage2\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold3-stage2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-4" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (773 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (193 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_data = get_fold_data(idxs[3], img_size=224, bs=16)\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:09<00:18]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.234530#na#00:09

\n", "\n", "

\n", " \n", " \n", " 52.08% [25/48 00:07<00:07 0.6159]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold3-stage2\")\n", "learner = to_fp16(learner)\n", "learner.data = fold_data\n", "learner.freeze()\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2326770.0557720.9792750.9806870.9784390.9786850.97717500:13
10.2289640.0555730.9792750.9806870.9784390.9786850.97717500:13
20.2312310.0565850.9792750.9841160.9781610.9792690.98922700:14
30.2179930.0555820.9844560.9883790.9826060.9836470.99079900:13
40.2268670.0569580.9844560.9842560.9879630.9871010.97875200:13
50.2406160.0600830.9844560.9883790.9826060.9836470.99079900:13
60.2509520.0578670.9792750.9841160.9781610.9792690.98922700:12
70.2449950.0590760.9896370.9919480.9921300.9920640.99235200:13
80.2311270.0602670.9896370.9914740.9918520.9917520.99232900:13
90.2482140.0536010.9844560.9883790.9826060.9836470.99079900:13
100.2490950.0507640.9896370.9914740.9918520.9917520.99232900:13
110.2598110.0574530.9844560.9883790.9826060.9836470.99079900:12
120.2585970.0594660.9844560.9883790.9826060.9836470.99079900:12
130.2196270.0600850.9844560.9842560.9879630.9871010.97875200:13
140.2288920.0582380.9844560.9842560.9879630.9871010.97875200:13
150.2340490.0525510.9948190.9956520.9962960.9961410.99388500:12
160.2410890.0570150.9792750.9841160.9781610.9792690.98922700:13
170.2311420.0590090.9844560.9883790.9826060.9836470.99079900:13
180.2524680.0612980.9844560.9842560.9879630.9871010.97875200:13
190.2571290.0531240.9896370.9919480.9921300.9920640.99235200:13
200.2612280.0544010.9844560.9883790.9826060.9836470.99079900:13
210.2561900.0580900.9792750.9806870.9784390.9786850.97717500:14
220.2528040.0562550.9792750.9806870.9784390.9786850.97717500:13
230.2555510.0577450.9792750.9841160.9781610.9792690.98922700:12
240.2427520.0563230.9844560.9883790.9826060.9836470.99079900:13
250.2305320.0573590.9896370.9879600.9921300.9912070.98027800:13
260.2640930.0583880.9844560.9883790.9826060.9836470.99079900:13
270.2638460.0551220.9792750.9806870.9784390.9786850.97717500:12
280.3093710.0527390.9844560.9876850.9876850.9876850.99079000:12
290.2773080.0538050.9792750.9841160.9781610.9792690.98922700:12
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.9792746305465698.\n", "Better model found at epoch 3 with accuracy value: 0.984455943107605.\n", "Better model found at epoch 7 with accuracy value: 0.9896373152732849.\n", "Better model found at epoch 15 with accuracy value: 0.9948186278343201.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(7e-07), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold4-stage1\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold4-stage1\")" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:10<00:21]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.281937#na#00:10

\n", "\n", "

\n", " \n", " \n", " 22.92% [11/48 00:05<00:17 0.8042]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold4-stage1\")\n", "learner = to_fp16(learner)\n", "learner.unfreeze()\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2092360.0632400.9844560.9883790.9826060.9836470.99079900:14
10.2968160.0534810.9896370.9919480.9921300.9920640.99235200:13
20.2181050.0591900.9792750.9806870.9784390.9786850.97717500:13
30.2278270.0573030.9792750.9806870.9784390.9786850.97717500:13
40.2247750.0577010.9792750.9799040.9835180.9827330.97715400:13
50.2645070.0511000.9948190.9956520.9962960.9961410.99388500:14
60.2214960.0594450.9844560.9876850.9876850.9876850.99079000:14
70.2283360.0572330.9844560.9877700.9823280.9833300.99077100:14
80.2490380.0615580.9844560.9883790.9826060.9836470.99079900:13
90.2508260.0547940.9792750.9841160.9781610.9792690.98922700:13
100.2493690.0627290.9792750.9806870.9784390.9786850.97717500:14
110.2318070.0554260.9792750.9806870.9784390.9786850.97717500:13
120.2516350.0592070.9792750.9806870.9784390.9786850.97717500:14
130.2742750.0570720.9896370.9919480.9921300.9920640.99235200:13
140.2430170.0556170.9896370.9919480.9921300.9920640.99235200:13
150.2618400.0595190.9792750.9841160.9781610.9792690.98922700:13
160.2424820.0531810.9896370.9879600.9921300.9912070.98027800:13
170.2480560.0616600.9792750.9842170.9784390.9793950.98930300:14
180.2315280.0558940.9844560.9883790.9826060.9836470.99079900:13
190.2235940.0564540.9844560.9876850.9876850.9876850.99079000:13
200.2165950.0546800.9896370.9914740.9918520.9917520.99232900:14
210.2545160.0591610.9844560.9842560.9879630.9871010.97875200:13
220.2585500.0610600.9792750.9806870.9784390.9786850.97717500:14
230.2399290.0610760.9792750.9840150.9832410.9833700.98458900:13
240.2270560.0578000.9844560.9842560.9879630.9871010.97875200:13
250.2378370.0534410.9844560.9836970.9876850.9868280.97868700:13
260.2017950.0602560.9792750.9841160.9781610.9792690.98922700:13
270.2646210.0540010.9844560.9842560.9879630.9871010.97875200:13
280.2329260.0538040.9896370.9914740.9918520.9917520.99232900:13
290.2643280.0567920.9740930.9763350.9739950.9743170.97556800:14
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.984455943107605.\n", "Better model found at epoch 1 with accuracy value: 0.9896373152732849.\n", "Better model found at epoch 5 with accuracy value: 0.9948186278343201.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(2.5e-06), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold4-stage2\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold4-stage2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Fold-5" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (773 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (193 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_data = get_fold_data(idxs[4], img_size=224, bs=16)\n", "fold_data" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:09<00:19]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.235573#na#00:09

\n", "\n", "

\n", " \n", " \n", " 58.33% [28/48 00:07<00:05 0.7712]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold4-stage2\")\n", "learner = to_fp16(learner)\n", "learner.data = fold_data\n", "learner.freeze()\n", "learner = to_fp16(learner)\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2599220.0382730.9896370.9881410.9925930.9915950.99242300:13
10.2666760.0573070.9844560.9810190.9888890.9870140.98647100:13
20.2621970.0365630.9896370.9881410.9925930.9915950.99242300:13
30.2721380.0417710.9896370.9881410.9925930.9915950.99242300:13
40.2611290.0340810.9896370.9881410.9925930.9915950.99242300:14
50.2470490.0436300.9896370.9881410.9925930.9915950.99242300:14
60.2608200.0458940.9896370.9881410.9925930.9915950.99242300:13
70.2437500.0418110.9896370.9881410.9925930.9915950.99242300:14
80.2386090.0440030.9896370.9881410.9925930.9915950.99242300:13
90.2288580.0403710.9896370.9881410.9925930.9915950.99242300:13
100.2599540.0378030.9896370.9881410.9925930.9915950.99242300:13
110.2603980.0478980.9896370.9881410.9925930.9915950.99242300:13
120.2558870.0424010.9896370.9881410.9925930.9915950.99242300:14
130.2587030.0564140.9896370.9881410.9925930.9915950.99242300:13
140.2321650.0487480.9896370.9881410.9925930.9915950.99242300:12
150.2280000.0435560.9896370.9881410.9925930.9915950.99242300:13
160.2326100.0559990.9844560.9841440.9888890.9877360.99091200:12
170.2542540.0407750.9896370.9881410.9925930.9915950.99242300:13
180.2654160.0495730.9896370.9881410.9925930.9915950.99242300:13
190.2505720.0450460.9896370.9881410.9925930.9915950.99242300:14
200.2617800.0420910.9896370.9881410.9925930.9915950.99242300:13
210.2778820.0398520.9896370.9881410.9925930.9915950.99242300:13
220.2770600.0379610.9896370.9881410.9925930.9915950.99242300:13
230.2540910.0507020.9896370.9881410.9925930.9915950.99242300:13
240.2354280.0573100.9896370.9881410.9925930.9915950.99242300:13
250.2616610.0433500.9896370.9881410.9925930.9915950.99242300:13
260.2895970.0526220.9896370.9881410.9925930.9915950.99242300:14
270.2513260.0448940.9896370.9881410.9925930.9915950.99242300:13
280.2068010.0469580.9896370.9881410.9925930.9915950.99242300:13
290.2288510.0438750.9896370.9881410.9925930.9915950.99242300:13
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.9896373152732849.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(2.5e-05), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold5-stage1\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold5-stage1\")" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 33.33% [1/3 00:10<00:21]\n", "
\n", " \n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.292189#na#00:10

\n", "\n", "

\n", " \n", " \n", " 14.58% [7/48 00:05<00:31 0.5552]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learner.load(\"best-vgg19-sipak-multiclass-fold5-stage1\")\n", "learner = to_fp16(learner)\n", "learner.unfreeze()\n", "learner.lr_find()\n", "learner.recorder.plot()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracyprecisionrecallf_betakappa_scoretime
00.2861010.0451960.9896370.9881410.9925930.9915950.99242300:13
10.2661570.0436910.9896370.9881410.9925930.9915950.99242300:14
20.2977750.0448750.9896370.9881410.9925930.9915950.99242300:15
30.2592950.0468300.9896370.9881410.9925930.9915950.99242300:14
40.2699740.0445450.9896370.9881410.9925930.9915950.99242300:13
50.2595520.0427580.9896370.9881410.9925930.9915950.99242300:14
60.2550860.0474570.9896370.9881410.9925930.9915950.99242300:12
70.2295170.0420290.9896370.9881410.9925930.9915950.99242300:13
80.2462490.0508440.9896370.9881410.9925930.9915950.99242300:13
90.2329010.0437000.9896370.9881410.9925930.9915950.99242300:14
100.2487040.0472890.9896370.9881410.9925930.9915950.99242300:14
110.2311030.0501550.9844560.9810190.9888890.9870140.98647100:13
120.2418150.0557200.9844560.9841440.9888890.9877360.99091200:13
130.2377320.0500820.9896370.9881410.9925930.9915950.99242300:14
140.2472460.0517120.9896370.9881410.9925930.9915950.99242300:14
150.2125640.0521150.9896370.9881410.9925930.9915950.99242300:14
160.2223880.0509030.9844560.9841440.9888890.9877360.99091200:14
170.2522740.0493970.9896370.9881410.9925930.9915950.99242300:15
180.2568730.0462070.9896370.9881410.9925930.9915950.99242300:13
190.2438690.0632330.9844560.9841440.9888890.9877360.99091200:13
200.2316780.0495710.9844560.9841440.9888890.9877360.99091200:13
210.2174930.0528830.9844560.9841440.9888890.9877360.99091200:14
220.1987550.0505600.9896370.9881410.9925930.9915950.99242300:14
230.2138660.0462860.9896370.9881410.9925930.9915950.99242300:13
240.2220380.0474150.9896370.9881410.9925930.9915950.99242300:13
250.2083440.0499360.9896370.9881410.9925930.9915950.99242300:14
260.2324670.0529290.9896370.9881410.9925930.9915950.99242300:13
270.2300880.0490750.9844560.9841440.9888890.9877360.99091200:13
280.2278330.0479970.9896370.9881410.9925930.9915950.99242300:14
290.2329480.0531970.9896370.9881410.9925930.9915950.99242300:14
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Better model found at epoch 0 with accuracy value: 0.9896373152732849.\n" ] } ], "source": [ "learner.fit_one_cycle(30, max_lr=slice(1.3e-05), callbacks=model_callback(learner, \"best-vgg19-sipak-multiclass-fold5-stage2\"))\n", "learner.save(\"last-vgg19-sipak-multiclass-fold5-stage2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Testing on 30 images (in valid folder)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ImageDataBunch;\n", "\n", "Train: LabelList (966 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset;\n", "\n", "Valid: LabelList (29 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset;\n", "\n", "Test: None" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "all_data = (ImageList.from_folder(data_path)\n", " .split_by_folder(train=\"train\", valid=\"test\")\n", " .label_from_folder()\n", " .transform(None, size=224)\n", " .databunch(bs=1)\n", " .normalize(imagenet_stats))\n", "all_data" ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "imgs, labels = all_data.valid_ds.x, all_data.valid_ds.y\n", "binary_classes = [\"Abnormal\", \"Benign\", \"Normal\"]" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [], "source": [ "def get_label(label):\n", " if \"abnormal\" in label:\n", " return \"Abnormal\"\n", " elif \"normal\" in label:\n", " return \"Normal\"\n", " elif \"benign\" in label:\n", " return \"Benign\"\n", "\n", "y_preds, y_true = [], []\n", "for img, label in zip(imgs, labels):\n", " y_true.append(get_label(str(label)))\n", " y_preds.append(get_label(str(learner.predict(img)[0])))" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [], "source": [ "multi_y_preds, multi_y_true = [], []\n", "for img, label in zip(imgs, labels):\n", " multi_y_true.append(str(label))\n", " multi_y_preds.append(str(learner.predict(img)[0]))" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['abnormal_Dyskeratotic',\n", " 'abnormal_Koilocytotic',\n", " 'benign_Metaplastic',\n", " 'normal_Parabasal',\n", " 'normal_Superficial-Intermediate']" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "multi_classes = all_data.classes\n", "multi_classes" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import confusion_matrix\n", "\n", "np.set_printoptions(precision=2)\n", "\n", "def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, title=\"Confusion matrix\", cmap=plt.cm.Blues):\n", " cm = confusion_matrix(y_true, y_pred)\n", " if normalize:\n", " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", " fig, ax = plt.subplots()\n", " im = ax.imshow(cm, interpolation='nearest', cmap=cmap)\n", " # We want to show all ticks...\n", " ax.set(xticks=np.arange(cm.shape[1]),\n", " yticks=np.arange(cm.shape[0]),\n", " # ... and label them with the respective list entries\n", " xticklabels=classes, yticklabels=classes,\n", " title=title,\n", " ylabel='Actual',\n", " xlabel='Predicted')\n", "\n", " # Rotate the tick labels and set their alignment.\n", " plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\",\n", " rotation_mode=\"anchor\")\n", "\n", " # Loop over data dimensions and create text annotations.\n", " fmt = '.2f' if normalize else 'd'\n", " thresh = cm.max() / 2.\n", " for i in range(cm.shape[0]):\n", " for j in range(cm.shape[1]):\n", " ax.text(j, i, format(cm[i, j], fmt),\n", " ha=\"center\", va=\"center\",\n", " color=\"white\" if cm[i, j] > thresh else \"black\")\n", " return ax" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot non-normalized confusion matrix\n", "plot_confusion_matrix(y_true, y_preds, classes=binary_classes, title='Binary Confusion Matrix')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot normalized confusion matrix\n", "plot_confusion_matrix(y_true, y_preds, normalize=True, classes=binary_classes, \n", " title='Normalized Binary Confusion Matrix')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot normalized confusion matrix\n", "plot_confusion_matrix(multi_y_true, multi_y_preds, normalize=False, classes=multi_classes, \n", " title='Multi-class Confusion Matrix')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot normalized confusion matrix\n", "plot_confusion_matrix(multi_y_true, multi_y_preds, normalize=True, classes=multi_classes, \n", " title='Normalized Multi-class Confusion Matrix')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Results (first save results.csv)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " accuracy precision recall f_beta kappa_score\n", "0 0.974227 0.975648 0.979638 0.978737 0.980618\n", "1 0.989637 0.992000 0.991751 0.991720 0.996911\n", "2 0.984456 0.988437 0.987121 0.987288 0.990706\n", "3 0.994819 0.995652 0.996296 0.996141 0.993885\n", "4 0.989637 0.988141 0.992593 0.991595 0.992423\n", "*-**-**-**-**-**-**-**-**-**-*\n", "Results :-\n", "Accuracy : 98.6555 % | 0.5771 %\n", "Precision : 98.7976 % | 0.4931 %\n", "Recall : 98.9480 % | 0.4880 %\n", "F_beta : 98.9096 % | 0.4867 %\n", "Kappa_score : 99.0909 % | 0.4197 %\n" ] } ], "source": [ "def compute_results(fname):\n", " df = pd.read_csv(fname)\n", " print(df)\n", " print(\"*-*\" * 10)\n", " print(\"Results :-\")\n", " mean_df = np.mean(df, axis=0)\n", " mean_error_df = np.mean(np.abs(mean_df - df), axis=0)\n", " for col, mean, error in zip(list(df.columns), list(mean_df.values), list(mean_error_df.values)):\n", " print(f\"{col.capitalize()} : {mean * 100:.4f} % | { error * 100:.4f} %\")\n", "\n", "compute_results(\"results.csv\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Export Model" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Learner(data=ImageDataBunch;\n", "\n", "Train: LabelList (773 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (193 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None, model=Sequential(\n", " (0): Sequential(\n", " (0): Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (22): ReLU(inplace=True)\n", " (23): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (24): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (25): ReLU(inplace=True)\n", " (26): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (27): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (32): ReLU(inplace=True)\n", " (33): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (34): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (35): ReLU(inplace=True)\n", " (36): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (37): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (38): ReLU(inplace=True)\n", " (39): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (42): ReLU(inplace=True)\n", " (43): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (44): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (45): ReLU(inplace=True)\n", " (46): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (47): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (48): ReLU(inplace=True)\n", " (49): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (50): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (51): ReLU(inplace=True)\n", " (52): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (1): AdaptiveAvgPool2d(output_size=(7, 7))\n", " )\n", " (1): Sequential(\n", " (0): AdaptiveConcatPool2d(\n", " (ap): AdaptiveAvgPool2d(output_size=1)\n", " (mp): AdaptiveMaxPool2d(output_size=1)\n", " )\n", " (1): Flatten()\n", " (2): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): Dropout(p=0.25, inplace=False)\n", " (4): Linear(in_features=1024, out_features=512, bias=True)\n", " (5): ReLU(inplace=True)\n", " (6): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): Dropout(p=0.5, inplace=False)\n", " (8): Linear(in_features=512, out_features=5, bias=True)\n", " )\n", "), opt_func=functools.partial(, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[, Precision(average='macro', pos_label=1, eps=1e-09), Recall(average='macro', pos_label=1, eps=1e-09), FBeta(average='macro', pos_label=1, eps=1e-09, beta=2), KappaScore(weights='quadratic')], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('../../../Dataset/Sipakmed Dataset/wsi_dataset/train'), model_dir='models', callback_fns=[functools.partial(, add_time=True, silent=False)], callbacks=[MixedPrecision\n", "learn: Learner(data=ImageDataBunch;\n", "\n", "Train: LabelList (773 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Valid: LabelList (193 items)\n", "x: ImageList\n", "Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224),Image (3, 224, 224)\n", "y: CategoryList\n", "normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate,normal_Superficial-Intermediate\n", "Path: ../../../Dataset/Sipakmed Dataset/wsi_dataset/train;\n", "\n", "Test: None, model=Sequential(\n", " (0): Sequential(\n", " (0): Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (22): ReLU(inplace=True)\n", " (23): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (24): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (25): ReLU(inplace=True)\n", " (26): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (27): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (31): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (32): ReLU(inplace=True)\n", " (33): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (34): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (35): ReLU(inplace=True)\n", " (36): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (37): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (38): ReLU(inplace=True)\n", " (39): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (40): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (41): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (42): ReLU(inplace=True)\n", " (43): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (44): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (45): ReLU(inplace=True)\n", " (46): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (47): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (48): ReLU(inplace=True)\n", " (49): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (50): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (51): ReLU(inplace=True)\n", " (52): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " )\n", " (1): AdaptiveAvgPool2d(output_size=(7, 7))\n", " )\n", " (1): Sequential(\n", " (0): AdaptiveConcatPool2d(\n", " (ap): AdaptiveAvgPool2d(output_size=1)\n", " (mp): AdaptiveMaxPool2d(output_size=1)\n", " )\n", " (1): Flatten()\n", " (2): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): Dropout(p=0.25, inplace=False)\n", " (4): Linear(in_features=1024, out_features=512, bias=True)\n", " (5): ReLU(inplace=True)\n", " (6): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): Dropout(p=0.5, inplace=False)\n", " (8): Linear(in_features=512, out_features=5, bias=True)\n", " )\n", "), opt_func=functools.partial(, betas=(0.9, 0.99)), loss_func=FlattenedLoss of CrossEntropyLoss(), metrics=[, Precision(average='macro', pos_label=1, eps=1e-09), Recall(average='macro', pos_label=1, eps=1e-09), FBeta(average='macro', pos_label=1, eps=1e-09, beta=2), KappaScore(weights='quadratic')], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('../../../Dataset/Sipakmed Dataset/wsi_dataset/train'), model_dir='models', callback_fns=[functools.partial(, add_time=True, silent=False)], callbacks=[...], layer_groups=[Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "), Sequential(\n", " (0): ReLU(inplace=True)\n", " (1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (5): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (6): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): ReLU(inplace=True)\n", " (8): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (9): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (10): ReLU(inplace=True)\n", " (11): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (12): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (13): ReLU(inplace=True)\n", " (14): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (18): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (19): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (20): ReLU(inplace=True)\n", " (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (22): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (23): ReLU(inplace=True)\n", " (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (26): ReLU(inplace=True)\n", " (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (31): AdaptiveAvgPool2d(output_size=(7, 7))\n", "), Sequential(\n", " (0): AdaptiveAvgPool2d(output_size=1)\n", " (1): AdaptiveMaxPool2d(output_size=1)\n", " (2): Flatten()\n", " (3): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (4): Dropout(p=0.25, inplace=False)\n", " (5): Linear(in_features=1024, out_features=512, bias=True)\n", " (6): ReLU(inplace=True)\n", " (7): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (8): Dropout(p=0.5, inplace=False)\n", " (9): Linear(in_features=512, out_features=5, bias=True)\n", ")], add_time=True, silent=False)\n", "loss_scale: 65536\n", "max_noskip: 1000\n", "dynamic: True\n", "clip: None\n", "flat_master: False\n", "max_scale: 16777216\n", "loss_fp32: True], layer_groups=[Sequential(\n", " (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): ReLU(inplace=True)\n", " (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (7): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (8): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (9): ReLU(inplace=True)\n", " (10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (11): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (12): ReLU(inplace=True)\n", " (13): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (14): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (18): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (19): ReLU(inplace=True)\n", " (20): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (21): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "), Sequential(\n", " (0): ReLU(inplace=True)\n", " (1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (5): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (6): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (7): ReLU(inplace=True)\n", " (8): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (9): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (10): ReLU(inplace=True)\n", " (11): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (12): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (13): ReLU(inplace=True)\n", " (14): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (15): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (16): ReLU(inplace=True)\n", " (17): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (18): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (19): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (20): ReLU(inplace=True)\n", " (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (22): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (23): ReLU(inplace=True)\n", " (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (25): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (26): ReLU(inplace=True)\n", " (27): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n", " (28): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (29): ReLU(inplace=True)\n", " (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (31): AdaptiveAvgPool2d(output_size=(7, 7))\n", "), Sequential(\n", " (0): AdaptiveAvgPool2d(output_size=1)\n", " (1): AdaptiveMaxPool2d(output_size=1)\n", " (2): Flatten()\n", " (3): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (4): Dropout(p=0.25, inplace=False)\n", " (5): Linear(in_features=1024, out_features=512, bias=True)\n", " (6): ReLU(inplace=True)\n", " (7): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (8): Dropout(p=0.5, inplace=False)\n", " (9): Linear(in_features=512, out_features=5, bias=True)\n", ")], add_time=True, silent=False)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fold_data = get_fold_data(idxs[4], img_size=224, bs=16)\n", "export_learner = cnn_learner(fold_data, models.vgg19_bn, metrics=our_metrics).to_fp16()\n", "export_learner.load(\"best-vgg19-sipak-multiclass-fold5-stage2\")\n", "export_learner" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "export_learner.freeze()\n", "export_learner.export(\"best-vgg19-multiclass-sipak.pkl\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.9" } }, "nbformat": 4, "nbformat_minor": 4 }