Rafa-bork commited on
Commit
4d6400d
·
1 Parent(s): b2af6b5
Files changed (4) hide show
  1. .gitattributes +2 -0
  2. Model_resnet.ipynb +0 -429
  3. Model_v2.ipynb +0 -447
  4. app.py +35 -34
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ *.jpg filter=lfs diff=lfs merge=lfs -text
37
+ *.jpeg filter=lfs diff=lfs merge=lfs -text
Model_resnet.ipynb DELETED
@@ -1,429 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": 15,
6
- "id": "ebeb7e8a",
7
- "metadata": {},
8
- "outputs": [],
9
- "source": [
10
- "import os\n",
11
- "from PIL import Image\n",
12
- "from collections import Counter\n",
13
- "from sklearn.model_selection import train_test_split\n",
14
- "from sklearn.preprocessing import LabelEncoder\n",
15
- "from sklearn.utils.class_weight import compute_class_weight\n",
16
- "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay, classification_report\n",
17
- "import torch\n",
18
- "from torch.utils.data import Dataset, DataLoader\n",
19
- "from torchvision import transforms\n",
20
- "import torch.nn as nn\n",
21
- "import torch.nn.functional as F\n",
22
- "import torch.optim as optim\n",
23
- "import matplotlib.pyplot as plt\n",
24
- "import numpy as np\n",
25
- "import torchvision.models as models"
26
- ]
27
- },
28
- {
29
- "cell_type": "code",
30
- "execution_count": null,
31
- "id": "6f2b7a68",
32
- "metadata": {},
33
- "outputs": [],
34
- "source": [
35
- "# Config\n",
36
- "image_dir = './data_images'\n",
37
- "img_size = (128, 128)\n",
38
- "classes = ['Pinus_pinaster', 'Eucalyptus_globulus', 'Quercus_suber']\n",
39
- "batch_size = 16\n",
40
- "epochs = 10\n",
41
- "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")"
42
- ]
43
- },
44
- {
45
- "cell_type": "code",
46
- "execution_count": 17,
47
- "id": "83e19fd7",
48
- "metadata": {},
49
- "outputs": [],
50
- "source": [
51
- "# Custom Dataset\n",
52
- "class TreeDataset(Dataset):\n",
53
- " def __init__(self, file_paths, labels, transform=None):\n",
54
- " self.file_paths = file_paths\n",
55
- " self.labels = labels\n",
56
- " self.transform = transform\n",
57
- "\n",
58
- " def __len__(self):\n",
59
- " return len(self.file_paths)\n",
60
- "\n",
61
- " def __getitem__(self, idx):\n",
62
- " image = Image.open(self.file_paths[idx]).convert(\"RGB\")\n",
63
- " if self.transform:\n",
64
- " image = self.transform(image)\n",
65
- " label = self.labels[idx]\n",
66
- " return image, label"
67
- ]
68
- },
69
- {
70
- "cell_type": "code",
71
- "execution_count": 18,
72
- "id": "e51254b8",
73
- "metadata": {},
74
- "outputs": [
75
- {
76
- "name": "stdout",
77
- "output_type": "stream",
78
- "text": [
79
- "Dataset class distribution:\n",
80
- "Eucalyptus_globulus: 146\n",
81
- "Quercus_suber: 230\n",
82
- "Pinus_pinaster: 217\n"
83
- ]
84
- }
85
- ],
86
- "source": [
87
- "# Load file paths and labels\n",
88
- "all_paths = []\n",
89
- "all_labels = []\n",
90
- "\n",
91
- "for filename in os.listdir(image_dir):\n",
92
- " if filename.lower().endswith((\".jpg\", \".jpeg\")):\n",
93
- " label = \"_\".join(filename.split(\"_\")[:2])\n",
94
- " if label in classes:\n",
95
- " path = os.path.join(image_dir, filename)\n",
96
- " all_paths.append(path)\n",
97
- " all_labels.append(label)\n",
98
- "\n",
99
- "# Show dataset distribution\n",
100
- "label_counts = Counter(all_labels)\n",
101
- "print(\"Dataset class distribution:\")\n",
102
- "for k, v in label_counts.items():\n",
103
- " print(f\"{k}: {v}\")"
104
- ]
105
- },
106
- {
107
- "cell_type": "code",
108
- "execution_count": 19,
109
- "id": "3a39c03c",
110
- "metadata": {},
111
- "outputs": [],
112
- "source": [
113
- "# Encode labels\n",
114
- "label_encoder = LabelEncoder()\n",
115
- "labels_encoded = label_encoder.fit_transform(all_labels)\n",
116
- "\n",
117
- "# Compute class weights\n",
118
- "class_weights = compute_class_weight(class_weight='balanced', classes=np.unique(labels_encoded), y=labels_encoded)\n",
119
- "weights_tensor = torch.tensor(class_weights, dtype=torch.float).to(device)"
120
- ]
121
- },
122
- {
123
- "cell_type": "code",
124
- "execution_count": 20,
125
- "id": "ef2f416a",
126
- "metadata": {},
127
- "outputs": [],
128
- "source": [
129
- "# Dataset class\n",
130
- "class TreeDataset(Dataset):\n",
131
- " def __init__(self, file_paths, labels, transform=None):\n",
132
- " self.file_paths = file_paths\n",
133
- " self.labels = labels\n",
134
- " self.transform = transform\n",
135
- "\n",
136
- " def __len__(self):\n",
137
- " return len(self.file_paths)\n",
138
- "\n",
139
- " def __getitem__(self, idx):\n",
140
- " image = Image.open(self.file_paths[idx]).convert(\"RGB\")\n",
141
- " if self.transform:\n",
142
- " image = self.transform(image)\n",
143
- " label = self.labels[idx]\n",
144
- " return image, label"
145
- ]
146
- },
147
- {
148
- "cell_type": "code",
149
- "execution_count": 21,
150
- "id": "62d984bd",
151
- "metadata": {},
152
- "outputs": [],
153
- "source": [
154
- "# Transforms\n",
155
- "train_transform = transforms.Compose([\n",
156
- " transforms.Resize(img_size),\n",
157
- " transforms.RandomHorizontalFlip(),\n",
158
- " transforms.RandomRotation(15),\n",
159
- " transforms.ColorJitter(brightness=0.2, contrast=0.2),\n",
160
- " transforms.ToTensor(),\n",
161
- "])\n",
162
- "\n",
163
- "val_transform = transforms.Compose([\n",
164
- " transforms.Resize(img_size),\n",
165
- " transforms.ToTensor(),\n",
166
- "])"
167
- ]
168
- },
169
- {
170
- "cell_type": "code",
171
- "execution_count": 22,
172
- "id": "84e23857",
173
- "metadata": {},
174
- "outputs": [],
175
- "source": [
176
- "# Split dataset\n",
177
- "X_train, X_test, y_train, y_test = train_test_split(\n",
178
- " all_paths, labels_encoded, test_size=0.2, random_state=42, stratify=labels_encoded\n",
179
- ")\n",
180
- "\n",
181
- "train_dataset = TreeDataset(X_train, y_train, transform=train_transform)\n",
182
- "test_dataset = TreeDataset(X_test, y_test, transform=val_transform)\n",
183
- "\n",
184
- "train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n",
185
- "test_loader = DataLoader(test_dataset, batch_size=batch_size)"
186
- ]
187
- },
188
- {
189
- "cell_type": "code",
190
- "execution_count": 23,
191
- "id": "24a29895",
192
- "metadata": {},
193
- "outputs": [
194
- {
195
- "name": "stderr",
196
- "output_type": "stream",
197
- "text": [
198
- "/Users/diogogomes/.pyenv/versions/3.12.0/lib/python3.12/site-packages/torchvision/models/_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
199
- " warnings.warn(\n",
200
- "/Users/diogogomes/.pyenv/versions/3.12.0/lib/python3.12/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.\n",
201
- " warnings.warn(msg)\n"
202
- ]
203
- }
204
- ],
205
- "source": [
206
- "# Initialize model\n",
207
- "model = models.resnet18(pretrained=True)\n",
208
- "num_ftrs = model.fc.in_features\n",
209
- "model.fc = nn.Linear(num_ftrs, len(classes))\n",
210
- "model = model.to(device)\n",
211
- "criterion = nn.CrossEntropyLoss(weight=weights_tensor)\n",
212
- "optimizer = optim.Adam(model.parameters(), lr=0.00001)"
213
- ]
214
- },
215
- {
216
- "cell_type": "code",
217
- "execution_count": 24,
218
- "id": "a8dcb931",
219
- "metadata": {},
220
- "outputs": [
221
- {
222
- "name": "stdout",
223
- "output_type": "stream",
224
- "text": [
225
- "Epoch 1/20 - Loss: 36.3155 - Train Acc: 0.35 - Val Acc: 0.31\n",
226
- "Epoch 2/20 - Loss: 29.4184 - Train Acc: 0.45 - Val Acc: 0.50\n",
227
- "Epoch 3/20 - Loss: 25.9127 - Train Acc: 0.56 - Val Acc: 0.62\n",
228
- "Epoch 4/20 - Loss: 22.6049 - Train Acc: 0.66 - Val Acc: 0.69\n",
229
- "Epoch 5/20 - Loss: 20.8318 - Train Acc: 0.72 - Val Acc: 0.72\n",
230
- "Epoch 6/20 - Loss: 17.9279 - Train Acc: 0.76 - Val Acc: 0.80\n",
231
- "Epoch 7/20 - Loss: 16.8400 - Train Acc: 0.80 - Val Acc: 0.81\n",
232
- "Epoch 8/20 - Loss: 15.1061 - Train Acc: 0.82 - Val Acc: 0.82\n",
233
- "Epoch 9/20 - Loss: 13.3389 - Train Acc: 0.85 - Val Acc: 0.84\n",
234
- "Epoch 10/20 - Loss: 12.9343 - Train Acc: 0.86 - Val Acc: 0.83\n",
235
- "Epoch 11/20 - Loss: 10.6057 - Train Acc: 0.91 - Val Acc: 0.83\n",
236
- "Epoch 12/20 - Loss: 9.9804 - Train Acc: 0.88 - Val Acc: 0.84\n",
237
- "Epoch 13/20 - Loss: 10.7929 - Train Acc: 0.87 - Val Acc: 0.85\n"
238
- ]
239
- },
240
- {
241
- "ename": "KeyboardInterrupt",
242
- "evalue": "",
243
- "output_type": "error",
244
- "traceback": [
245
- "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
246
- "\u001b[31mKeyboardInterrupt\u001b[39m Traceback (most recent call last)",
247
- "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[24]\u001b[39m\u001b[32m, line 11\u001b[39m\n\u001b[32m 8\u001b[39m correct_train = \u001b[32m0\u001b[39m\n\u001b[32m 9\u001b[39m total_train = \u001b[32m0\u001b[39m\n\u001b[32m---> \u001b[39m\u001b[32m11\u001b[39m \u001b[43m\u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mimages\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlabels\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mtrain_loader\u001b[49m\u001b[43m:\u001b[49m\n\u001b[32m 12\u001b[39m \u001b[43m \u001b[49m\u001b[43mimages\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlabels\u001b[49m\u001b[43m \u001b[49m\u001b[43m=\u001b[49m\u001b[43m \u001b[49m\u001b[43mimages\u001b[49m\u001b[43m.\u001b[49m\u001b[43mto\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdevice\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlabels\u001b[49m\u001b[43m.\u001b[49m\u001b[43mto\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdevice\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 14\u001b[39m \u001b[43m \u001b[49m\u001b[43moptimizer\u001b[49m\u001b[43m.\u001b[49m\u001b[43mzero_grad\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
248
- "\u001b[36mFile \u001b[39m\u001b[32m~/.pyenv/versions/3.12.0/lib/python3.12/site-packages/torch/utils/data/dataloader.py:733\u001b[39m, in \u001b[36m_BaseDataLoaderIter.__next__\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 730\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._sampler_iter \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 731\u001b[39m \u001b[38;5;66;03m# TODO(https://github.com/pytorch/pytorch/issues/76750)\u001b[39;00m\n\u001b[32m 732\u001b[39m \u001b[38;5;28mself\u001b[39m._reset() \u001b[38;5;66;03m# type: ignore[call-arg]\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m733\u001b[39m data = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_next_data\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 734\u001b[39m \u001b[38;5;28mself\u001b[39m._num_yielded += \u001b[32m1\u001b[39m\n\u001b[32m 735\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m (\n\u001b[32m 736\u001b[39m \u001b[38;5;28mself\u001b[39m._dataset_kind == _DatasetKind.Iterable\n\u001b[32m 737\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m._IterableDataset_len_called \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 738\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m._num_yielded > \u001b[38;5;28mself\u001b[39m._IterableDataset_len_called\n\u001b[32m 739\u001b[39m ):\n",
249
- "\u001b[36mFile \u001b[39m\u001b[32m~/.pyenv/versions/3.12.0/lib/python3.12/site-packages/torch/utils/data/dataloader.py:789\u001b[39m, in \u001b[36m_SingleProcessDataLoaderIter._next_data\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 787\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_next_data\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[32m 788\u001b[39m index = \u001b[38;5;28mself\u001b[39m._next_index() \u001b[38;5;66;03m# may raise StopIteration\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m789\u001b[39m data = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_dataset_fetcher\u001b[49m\u001b[43m.\u001b[49m\u001b[43mfetch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mindex\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# may raise StopIteration\u001b[39;00m\n\u001b[32m 790\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._pin_memory:\n\u001b[32m 791\u001b[39m data = _utils.pin_memory.pin_memory(data, \u001b[38;5;28mself\u001b[39m._pin_memory_device)\n",
250
- "\u001b[36mFile \u001b[39m\u001b[32m~/.pyenv/versions/3.12.0/lib/python3.12/site-packages/torch/utils/data/_utils/fetch.py:52\u001b[39m, in \u001b[36m_MapDatasetFetcher.fetch\u001b[39m\u001b[34m(self, possibly_batched_index)\u001b[39m\n\u001b[32m 50\u001b[39m data = \u001b[38;5;28mself\u001b[39m.dataset.__getitems__(possibly_batched_index)\n\u001b[32m 51\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m---> \u001b[39m\u001b[32m52\u001b[39m data = [\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mdataset\u001b[49m\u001b[43m[\u001b[49m\u001b[43midx\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m idx \u001b[38;5;129;01min\u001b[39;00m possibly_batched_index]\n\u001b[32m 53\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 54\u001b[39m data = \u001b[38;5;28mself\u001b[39m.dataset[possibly_batched_index]\n",
251
- "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[20]\u001b[39m\u001b[32m, line 12\u001b[39m, in \u001b[36mTreeDataset.__getitem__\u001b[39m\u001b[34m(self, idx)\u001b[39m\n\u001b[32m 11\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__getitem__\u001b[39m(\u001b[38;5;28mself\u001b[39m, idx):\n\u001b[32m---> \u001b[39m\u001b[32m12\u001b[39m image = \u001b[43mImage\u001b[49m\u001b[43m.\u001b[49m\u001b[43mopen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mfile_paths\u001b[49m\u001b[43m[\u001b[49m\u001b[43midx\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mconvert\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mRGB\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 13\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.transform:\n\u001b[32m 14\u001b[39m image = \u001b[38;5;28mself\u001b[39m.transform(image)\n",
252
- "\u001b[36mFile \u001b[39m\u001b[32m~/.pyenv/versions/3.12.0/lib/python3.12/site-packages/PIL/Image.py:984\u001b[39m, in \u001b[36mImage.convert\u001b[39m\u001b[34m(self, mode, matrix, dither, palette, colors)\u001b[39m\n\u001b[32m 981\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m mode \u001b[38;5;129;01min\u001b[39;00m (\u001b[33m\"\u001b[39m\u001b[33mBGR;15\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mBGR;16\u001b[39m\u001b[33m\"\u001b[39m, \u001b[33m\"\u001b[39m\u001b[33mBGR;24\u001b[39m\u001b[33m\"\u001b[39m):\n\u001b[32m 982\u001b[39m deprecate(mode, \u001b[32m12\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m984\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mload\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 986\u001b[39m has_transparency = \u001b[33m\"\u001b[39m\u001b[33mtransparency\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.info\n\u001b[32m 987\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m mode \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m.mode == \u001b[33m\"\u001b[39m\u001b[33mP\u001b[39m\u001b[33m\"\u001b[39m:\n\u001b[32m 988\u001b[39m \u001b[38;5;66;03m# determine default mode\u001b[39;00m\n",
253
- "\u001b[36mFile \u001b[39m\u001b[32m~/.pyenv/versions/3.12.0/lib/python3.12/site-packages/PIL/ImageFile.py:300\u001b[39m, in \u001b[36mImageFile.load\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 297\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m(msg)\n\u001b[32m 299\u001b[39m b = b + s\n\u001b[32m--> \u001b[39m\u001b[32m300\u001b[39m n, err_code = \u001b[43mdecoder\u001b[49m\u001b[43m.\u001b[49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 301\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m n < \u001b[32m0\u001b[39m:\n\u001b[32m 302\u001b[39m \u001b[38;5;28;01mbreak\u001b[39;00m\n",
254
- "\u001b[31mKeyboardInterrupt\u001b[39m: "
255
- ]
256
- }
257
- ],
258
- "source": [
259
- "# Training loop with accuracy tracking\n",
260
- "train_accuracies = []\n",
261
- "val_accuracies = []\n",
262
- "\n",
263
- "for epoch in range(epochs):\n",
264
- " model.train()\n",
265
- " running_loss = 0.0\n",
266
- " correct_train = 0\n",
267
- " total_train = 0\n",
268
- "\n",
269
- " for images, labels in train_loader:\n",
270
- " images, labels = images.to(device), labels.to(device)\n",
271
- "\n",
272
- " optimizer.zero_grad()\n",
273
- " outputs = model(images)\n",
274
- " loss = criterion(outputs, labels)\n",
275
- " loss.backward()\n",
276
- " optimizer.step()\n",
277
- "\n",
278
- " _, preds = torch.max(outputs, 1)\n",
279
- " correct_train += (preds == labels).sum().item()\n",
280
- " total_train += labels.size(0)\n",
281
- " running_loss += loss.item()\n",
282
- "\n",
283
- " train_acc = correct_train / total_train\n",
284
- " train_accuracies.append(train_acc)\n",
285
- "\n",
286
- " # Validation\n",
287
- " model.eval()\n",
288
- " correct_val = 0\n",
289
- " total_val = 0\n",
290
- " with torch.no_grad():\n",
291
- " for images, labels in test_loader:\n",
292
- " images, labels = images.to(device), labels.to(device)\n",
293
- " outputs = model(images)\n",
294
- " _, preds = torch.max(outputs, 1)\n",
295
- " correct_val += (preds == labels).sum().item()\n",
296
- " total_val += labels.size(0)\n",
297
- "\n",
298
- " val_acc = correct_val / total_val\n",
299
- " val_accuracies.append(val_acc)\n",
300
- "\n",
301
- " print(f\"Epoch {epoch+1}/{epochs} - Loss: {running_loss:.4f} - Train Acc: {train_acc:.2f} - Val Acc: {val_acc:.2f}\")"
302
- ]
303
- },
304
- {
305
- "cell_type": "code",
306
- "execution_count": null,
307
- "id": "4ba832dd",
308
- "metadata": {},
309
- "outputs": [],
310
- "source": [
311
- "# saving model\n",
312
- "import torch\n",
313
- "torch.save(model, \"resnet_model.pth\")"
314
- ]
315
- },
316
- {
317
- "cell_type": "code",
318
- "execution_count": null,
319
- "id": "f064e892",
320
- "metadata": {},
321
- "outputs": [
322
- {
323
- "data": {
324
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAHqCAYAAACZcdjsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAg3ZJREFUeJzt3Qd0VNXaBuA3k56QBFIhoYTeSUIvoihNQBQFpSmI7VpQ7ApXRGxYEUXUq7/YkCICVkARRFR6CYTeCSSkEdL7zPzr28OESQESUs6U91lrVuacaTszJ3De2fvb28loNBpBRERERERUBbqqPJiIiIiIiEgwWBARERERUZUxWBARERERUZUxWBARERERUZUxWBARERERUZUxWBARERERUZUxWBARERERUZUxWBARERERUZUxWBARERERUZUxWBCRQ7j77rsRHh5+VY996aWX4OTkVO1tchTr169X75/8rOzncfLkSfXYL7/8slrbJK8tbSAiourDYEFEmpKTxopcLE9KqeZ06tQJjRs3htFovOR9+vTpg5CQEBQVFcGabdy4UYXCtLQ0WKOPPvpIHds9evTQuilERNXCpXqehojo6nzzzTcltr/++musWbOmzP62bdtW6XU+++wzGAyGq3rsCy+8gOeffx6OYPz48ep3/fvvv3HttdeW24OwadMmTJ48GS4uLpp8HpUJFjNnzlQ9E3Xr1i1x26FDh6DTafvd2rfffqt6TrZu3YqjR4+iRYsWmraHiKiqGCyISFN33nlnie3NmzerYFF6f2k5OTnw8vKq8Ou4urpedRvlBLoqJ9G2ZNy4cZg6dSoWLlxYbrBYtGiR6s2QAFIVVfk8qoO7u7umr3/ixAkVfJYvX47//Oc/KmTMmDED1ig7Oxve3t5aN4OIbACHQhGR1evXrx86dOiAHTt2qJNdCRTTpk1Tt/34448YNmwYQkND1cli8+bN8corr0Cv15d4jtJj+s1j99955x18+umn6nHy+G7dumHbtm1XrLGQbfnW/ocfflBtk8e2b98eq1evLtN+GcbVtWtXeHh4qNf53//+V6G6DXn+OnXqqBBV2tixY1G/fv3i33P79u0YPHgwAgMD4enpiaZNm+Kee+5BZTVq1Ei9x99//z0KCwvL3C6BQ34HGb5z6tQpPPzww2jdurV6zYCAANx+++3qvb2S8mosZMiS7Pfz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Bguq9WPI09NT/ZRwIcc6h0URERFRdeBZrQVzTYX0VBDZM/MxXlN1REREROR4GCzKwXHnZO94jBMREVF1Y7AgIiIiIqIqY7CgSwoPD8ecOXO0bgYRERER2QAGCzsZ1nK5y0svvXRVz7tt2zY88MAD1dLGRYsWqSLhRx55pFqej4iIiIisC4OFHTh79mzxRXoYfH19S+x7+umnS0w3WlRUVKHnDQoKqrZC9s8//xzPPvusChiyqJuWZDYlIiIiIqpeDBZ2QBY6M1/8/PxUL4V5++DBg/Dx8cGqVavQpUsXuLu7459//sGxY8dwyy23ICQkRK2F0K1bN/zxxx+XHQolz/t///d/uPXWW1XgaNmyJX766acrtu/EiRPYuHEjnn/+ebRq1QrLly8vc5/58+ejffv2qn2ytsLkyZOLb5MpgP/zn/+otsr0qh06dMAvv/yibpPemMjIyBLPJW2WtpvdfffdGDFiBF577TWEhoaidevWav8333yDrl27qvdH3qtx48YVr+9gtm/fPtx0000qrMn9+vbtq967DRs2qBWsZd0TS48//ri6DxEREZGjYbCoyIJiBUXVfskt0F/xPvLa1UVO6t944w0cOHAAnTp1UourDR06FGvXrsWuXbtw4403Yvjw4YiNjb3s88ycORN33HEH9uzZox4/fvx4pKamXvYxX3zxBYYNG6ZCz5133ql6Lyx9/PHHaoiUDLuKiYlRYaVFixbF6zUMGTIE//77LxYsWID9+/er36Oyay/I73no0CGsWbOmOJTIVKuvvPIKdu/ejR9++AEnT55UIcQsLi4O1157rQo769atw44dO3DPPfeoHh/Z36xZMxVOzOT5vv32W3UfIiIioqoo1BuwLz4dS7bFIjFD29EeFcUF8q4gt1CPdi/+pslr7395MLzcqucjevnllzFw4MDibX9/f0RERBRvywn2ihUr1Em9ZW9BaXLiPXbsWHX99ddfxwcffICtW7eqYFIeCQZffvkl5s6dq7bHjBmDp556SvViNG3aVO179dVX1b4pU6YUP056UIT0osjzSyCS3g4hJ/SV5e3trXpb3NzcivdZBgB5Tvld5HXNK1rPmzdPhaHFixer3glhboO49957VWh65pln1PbPP/+shnlJ8CIiIiKqTIg4nJiJmDPpiIlLx964dBxIyERBkUHd/v6YSNwSGQZrx2DhIGTIjyU5eZZhRL/++quqw5Bv4XNzc6/YYyG9HZYn6zJEqPTwIUvSQ5Cdna16N0RgYKAKODL0ScKMPDY+Ph79+/cv9/HR0dFo2LBhiRP6q9GxY8cSoUJID4S8B9Jjcf78eRWChLwH7dq1U68tw5rMoaK8kPXCCy9g8+bN6NmzpwpQEirkfSEiIiIqj4QFCRESHsoLEZZ8PFzQIdQPddxt45TdNlqpIU9XZ9VzUJ3kBDYzIxM+vj7Q6XSXfe3qUvpkVwq65aT/nXfeUcOOPD09MWrUqCsWNpc+yZa6C/MJeXlk2JMMlZLnN5P7y1AqGVZlub88V7pd3r/SQ8bKW0269O8vYWfw4MHqIsOXpFBdAoVsm9+DK712cHCwGj4mvRbS+yJ1LOvXr7/sY4iIiMjxQkSMRYg4eDYTBfryQ0THMD916XDhZ2N/L+h0trOoLYPFFciJc3UNR7I8sS5yc1bPe7lgUZOkZkG+cZdCbHMPhtQYVKdz587hxx9/VEOJpDDbTK/X45prrsHvv/+uhlBJobXUQFx//fXl9pCcOXMGhw8fLrfXQgKBFFBLuDCvJi09DVciRe3SPqnXaNSokdq3ffv2Mq/91VdfqaByqV6L++67Tw0Nk16V5s2bo0+fPhV4Z4iIiMiRQ4Sv9ERcCA8dG14MEeZzGVvFYOGgZEYnmZ1JvnGXg3j69OmX7Xm4GlLYHBAQoIYHlf5DkaFR0pshwUKGIz344IOqB0AKtTMzM1XwefTRR3HdddepQumRI0di9uzZqndFQoE8nzy2X79+SE5OxltvvaV6XFavXq16DmSI1uU0btxYDY2S2g957b1796qhWZak1kRul7qQqVOnqnoLGfbUvXv34pmlpIdDXkvqRKSOhYiIiBwnROyxqIk4lHDpECHhoThIXC5E6IuA7GQgKwHITAQyzwJZiUC7EUBwG1g7BgsHJSfpUrzcu3dvVffw3HPPISMjo1pfQ+oopEekvD8cCQp33XUXUlJSMHHiRFX0/N5776khWtIeCQlmy5YtU/ulZ0CGMEm4kJ4G0bZtW3z00UeqkFyCgTyv3PfTTz+9bNukp0NqIqZNm6aKtjt37qyGhd18883F95FQJLNBSXG2BByZiUqmtrXslZAeJ+n5kdefMGFCNb1zRERkq6QH/VhyNtYeSMS6g0lIysxHaF0PNKzrhYb1PNHQ3xMN65muB/t4wNmGhrk4qvwiPQ4nZJXoibhUiPDzdEWHMF90DKtbHCIa+XvCyaAHspNMQSE5Gjh+ITBkSoBIuBAkEkyhwljOF711G9tEsHAyVuecpjZATp7lm+f09PQy32rLya15tiJZL6GmSM+AtENeX6uhUFR9ZHYo6TWpyJoe1nIM1daxTtZLhvitXLlS9R5eaqgf0ZXwOLo4o8+2E6n440AS1h1MxMlzORV6nKuzE0LrStDwRJj6eSF8XPgZ4mv/wcPajiFziNgTl1ZcXC0holBvLDdERIZ6o3tQESLq5qG1VxYCcR5O5pCggsNZU8+DBAZU8JTbSQd4BwM+9S9eOo0BmvSCtZ07l8YeC6KrJH9gsu7GwoULazVUEBGR9s5nF2D94SQVJjYcSkZmflHxbW7OOvRo5o8BbUPQMqQOEtLzcOZ8Ls6cz7nwMxfxabnqZPXUuRx1KY+L7mLwsAwcjhQ8ajpESGgw90JYhghXFCEIaQhxOo8bnNIQ7pmBdj45aOqeifq6dNTVp8I1JxFOcSlAXAVf0MkZqBMC+MilwYXrDUpt1we8gwBd9U3gU5sYLIiukqxcLmtsSI2G5RohRERkf2SAx9GkLKw9mKSGOe04dR4Giy+gA7zdcH2bYAxoG4xrWgZdcXpQvcGoFj0rGThMP+PSchF3PhdFBiNiU3PU5XLBw9TbYRk8ZMiVF+ozeJQIEVJIve90Mk6fOo6k+FPIPx8Hf+N5FR46Iw1DnM4jyDkN9V3TUA+ZJZ9APutLjRjXuQB1pGch5MJPi4vltleAzQaGimKwILpKnFqWiMj+C3S3nkjF2oOJWHsgqcwJfpv6PqpX4oa2wYhsWLdS04I6XwgFcune1L/c4JGUaRE8Uk09HWfSckr0eFwpeDSwrO8oFTxCfNzh4mwnQ7ILc4uHHxWkxSM5/hTOJ55W4cEpKxF1CpLR2CkNEU5ZFT8L1rlaBISQUmHBoqfB01+KLkEMFkRERETFUrML8OdBqZVIwobDZYc49WoeoHolpHdCTtRrigSPBn6e6tItvOLBQ3o7ZDvuQvA4nZqrLpd+DY9yh1nJRXo8NA8eBTkXC5tL1y1knoUhMwGGjLNwKbjYnSDL4coa1SXWqbb4NYqcXFHgGQxnvwZwqxsKpxKBwTwsSXoY/GXdgVr9dW0dgwURERE59BCnI0lZ+ENmcTqQhJ2xJYc4BdZxxw1tgtC/bQiuaREIbytZAbkiwSM5M7/MMCvzdXPwMO8DUms3eBRkq6DglHYGYec3Q7flFJCTXHKGJAkP+emXfRp5dXML8oyuSDLWRSLqIU3nD0Od+vDwD0W9kMZoEBaOwAaN4eTTAC6e9eDCwFAjrOOvg4iIiKgWhzhtOXFODW+SYU6lv9Fv18AX/dsGqzDRKczPplY+tgwF9f081KVreNnbDarHwxQ8TL0cJcOH1HjIdKpXCh4SLiwDR7iPAeFumQhzSUeAMRXO2ZZTqlpcL8gsPhHtKlcus0ZvgZM7Upz8EVfki0RjPVN4MP9EPeR7BCEoNBwtGoaiQ8O6as2Irn4eNr/YnC1isCAiIiK7dy4rH38eSlaF138fSUGW5RAnFx36NA/ADW1D0L9NsKp7sHc6y+CB8oNHctaFHo/UHCSlJCMz+YyqWTBkJMAlJ0kFh+DsNITknEdQnGkGJW+n/Aq3wejqDdQJRkqBG3RBLVRYOJHng32ZXtiT7oGzhrpIMkoZtXweTsVF8uaF5gZfWLU6lCHCajBYEBERkV0OcTqUmGnqlTiQiF2n02C5cleQj7sKETe0kVmcAuHl5oCnRPKG5KWXGn5kuuiyEhCSmYiQzLPoIj0NhaUKxC8zuVE2PJEovQmGekjCxd4FCQmybe5xyM33RBDckZyZB8O5ssFAQkTnMD90sli1WoZmMURYLwf8KyIiIiJ7nVJ08/FUFSQkUMgQH0vtQ2WIk6lXoqONDnGqcGDIPV82MJQqfFbbRXkVf153vwvFzaULnc3rMZhmT/J2r4NwgxF1svLhJsOozueg8Hwuss/nwvV8DiD1HedzYSgyIDFTejicVIiQ3gf5XBgibBeDBRXr168fIiMjMWfOHLUdHh6Oxx9/XF0uRf7gV6xYgREjRlTptavreYiIyLGkZOWrGZzMQ5xyCvTFt7nLEKcWgapeQnompNDZ5gNDTuqFsFAqIJi31W2JgL7iQ5Lg4Xf5BdvMQcKt4rNgSWgL9vVQly5N6pU71ColOx+xKVnYt+1fjB0xEG5uMp8T2TIGCzswfPhwFBYWYvXq1WVu+/vvv3Httddi9+7d6NSpU6Wed9u2bfD29q7GlgIvvfQSfvjhB0RHR5fYf/bsWdSrV/YfnpqQm5uLsLAw6HQ6xMXFwd3dvVZel4iIqmeI08EEGeKUqFa93n2m5BCnYBniJIXXbUJUqPB0s4EFyQwGIOdcqd6FkkOTigufDYUVf17PeuUHhBILuIUArrUfuFTw8PFAPQ9nxO0xfcFIto/Bwg7ce++9GDlyJM6cOYOGDRuWuO2LL75A165dKx0qRFBQEGpL/fr1a+21li1bhvbt26v/nCTkjB49GlqRNuj1eri48E+RiGxQUR6c9XlAQRZgcK2xl8kr0mPbiVSsP5SMvw4nIz794vAdzwtDnPq1DkK/VsFoF+oDpwuFvjDmApX44r5GyLSq5l6EcnsXLoQGw8Vi8iuSFZzLXeHZoqdBBQaPmvzNiMrg2YwduOmmm1QI+PLLL/HCCy8U78/KysLSpUvx9ttv49y5c5g8eTI2bNiA8+fPo3nz5pg2bRrGjh17yectPRTqyJEjKsRs3boVzZo1w/vvv1/mMc8995wa0iQhR8LC+PHj8eKLL8LV1VW1b+bMmep+5m8mJPjcfffdZYZCxcTEYMqUKdi0aRO8vLxUcJo9ezbq1KmjbpfHpKWl4ZprrsG7776LgoICjBkzRg3jkte6nM8//xx33nmnOqmX66WDxb59+9TvIe+V3EeGh0nb5T0T8+fPV6959OhR+Pv7q7Z9+OGHOHnyJJo2bYpdu3apxwhpo/TE/Pnnn2qomazWff3112PlypXqs5Lf8/fff0ejRo3w5JNPYvPmzcjOzkbbtm0xa9YsDBgwoLhd+fn56r1cuHAhkpKSVK/L1KlTcd9996Fly5Z48MEH8fTTTxffX3qFoqKi1OfWokWLy74nRERXJENwzkYD8dHFP13TTuEmuW1Pzb60nB73vXCZbt5hSWZC3XThYsu8gywCQuneBYvA4MIhQ2SdGCyuRPpXS8+EUB1dnvKcBc6XXwLe1atCKz7Kt90TJkxQJ7///e9/i0/aJVTIt+ESHiRkdOnSRZ0w+/r64tdff8Vdd92lTpa7d+9egSYbcNtttyEkJARbtmxBenp6ubUXPj4+qh2hoaHqpPn+++9X+5599ll1Ar937141ZOuPP/5Q9/fz8yvzHHJiPXjwYPTq1UsNx5KTaDl5lmAkz20mJ+sNGjRQP+UkX55fTujlNS/l2LFjKqwsX75chYYnnngCp06dQpMmTdTtMjRKho5JCFi3bp16r/79918UFZm+Sfr4449VAHjjjTcwZMgQ9T7I7ZX1/PPP45133lEBTYLH6dOnMXToULz22mtqaNbXX3+thrgdOnQIjRs3Vo+Rz1ja/sEHH6Bjx44qAOXk5KjP+5577lEhzTJYyLb8LgwVRFRp2eeAs7suhIjdpiCRFqt1q2yUkykwlOldKHW9TjDgXHO9PkS1gcHiSiQAvB5arU8pUaJuRe44LR5wq1iNg5xYSs/EX3/9pU6KzSeW8m26nLzLxfKk89FHH8Vvv/2G7777rkLBQoLAwYMH1WMkNIjXX39dnVxbsuwxkR4Pec3FixerYOHp6al6HCQIXW7ok3wjn5eXp06uzTUe0iMgJ9pvvvmmCjdCTshlv7OzM9q0aYNhw4Zh7dq1lw0W0tsgbTbXc0iAkfdJaj/EvHnz1HslbTb3fLRq1ar48a+++iqeeuop1Zti1q1bN1TWyy+/jIEDBxZvS89HRERE8fYrr7yienB++uknFagOHz6sPqs1a9aoXgwJeoGBgSr4mHtwpDdDepPk85SaG3kfJbwQEV1WdsqFAGERJNJPl3/fek2BBhFAaCTQIBKFAW3w259/q39LXV1cr2qI05bjqfjzUJIa5pSQUXKGog5hvri+VQj6tQlCuwYWQ5xsibMb4MzTLXIMPNLthJxY9+7dW504S7CQb/ClcFtOYIX0XEgQkJNT+VZehg7J0BoZZlQRBw4cUMN1zKFCSI9CaUuWLFHfqEvPgPSSyDf95pPfipLXkpNsy8LxPn36qJNp+QbfHCykTkJChZn0XkgvyaXIe/DVV1+VGMIlQ6Ik/MhJuRRzy/Chvn37ljucSnpO4uPj0b9/f1SV1L1YkvdKwo30JEkhu7xvUmQeG2v6hlDaJb/rddddV+7zyeciwUo+fwkWP//8s/p8b7/99iq3lYjsSFZSiaFM6mdGXPn39W+mwoM5RKBBJ1MxsKXCQuh17qYe9isMQzVLyshTszhJ4fW/R1OQW3hxFidPVy+1poR5fQmZUYiIbAeDxZXIP5bSc1CN5AQ5IzMTvj4+6mT2sq9dCVL/ID0R8q27fAsvw5zMJ6LSmyEn1FKDIMNo5KRdhjJJwKguMkxHaiqkjkK+vTJ/8y/1CDWh9Mm/DAmS9/ZSpLdFQlXpmgoJHNLTIT0I0qtyKZe7TZg/SxliZSY9B+UpPduWhBvpjZAeBhm6JK81atSo4s/nSq8tZLiYDG9777331Ocvv2dFgyMR2SEpCpbeB8sgkXmJ/88CWliEiAigvoSICvWtX5H8m7gvPsO0UN3BROw5k17idlmrQM3i1DYEvZoFwMPVBmZxIqJyMVhcidQrVHA4UoXJya+r3vS8lwsWlXTHHXeoIToyBEaGET300EPF9RZSB3DLLbeob+hNTTCo4TXt2rWr0HNLMbHUAci36dIzIKTQ2NLGjRtVrYLUeZhJ/YIlmaNaTuSv9FpSSyG1FuYTcGm/nLi3bt0aV0sKtaXA27J9Quoa5DYJFjJ7lvRqSCAoHVykVkSGd0kIkQLsS82iJe+RFE2L0tPqXor8fjKc6dZbby3uwZBicDMJg/KZyVA3y4JuS1KjIe+X1IFIHYsUnxORg8g4W6awWs04VIYTENjSFB7MQUJChEflepavJK9Qr3oj1h5MwroDSWWGOEU0qosBbUxhoq0MceJUo0R2gcHCjkj9gnxLLTMFZWRkqBNVM5k16Pvvv1cn/1JfIDMsJSYmVjhYyMms1BpMnDhR9X7I85c+QZfXkKE70kshdQcyrEfqBCzJifmJEyfUCbdMjSsn66XXkZBejxkzZqjXkuFBycnJqidGvo03D4OqLHkOGR4kNQsdOnQocZsURcsJfWpqqqpnmDt3rgog8j5Kr4sEKBleJKFG2iOzLwUHB6tajczMTBUKpH3Sq9CzZ09V2C2zQ8nQKcuak8uR904KyqWORP6DnT59eoneF3nf5P2QWhpz8bYMGZMAIm0VMlRKPnNptzxfeUPViMjGSY9oRrxFiLhQWC3TlZYbIlpdHMqkQkRHwN2nRpqWmJGneiXWHUzEP0dTkFd48d8wLzdnXNMiEAPamuolZP0CIrI/DBZ2RoZDybfv8u21ZT2EnOAeP35cDVGS4TEPPPCAmtpVZjWqCOktkJAgzy8n2XKiKye4N954Y/F9br75ZjXLkpycy/h+GfMvJ8jmwmghxeRyAi3f+MtUrObpZi1J+2TYkvS+SECxnG72apkLwcurj5B9EgoWLFiAxx57TM0G9cwzz6hhZHKyLjNNSY2HkJN7KSyX4UYyfEkKqGXIkpnUOMh7JDNwSRB56623MGjQoCu2T343CQ1SJyPPKbN3SXizJD0RMkXwww8/rKYPlmAm25bktaWWZtKkSVf9XhGRNYWIuLI1EdnJZe/rpAMCW1vUQ0RcCBF1arB5piFOq07r8NnHm7E3vuS/WaFqiFOIGubUk0OciByCk9FyQLgDkJM1+RZaTqhLFxXLCaN8my7fNnt41Ny3KarGIiNDvf5layyIKnkMScG+BCUZtna53p3aOtbJeslwP1lPRb6EuNLaL1QL5L9imYnJHB7MtRE5KWXv6+QMBLUpMTsT6neo/mG7l5BboMeP0XH4atMpHDh7MUzIaKZIGeLUNkQVXrepzyFOdGX8t8i2z51LY48FkR2QHiIZ7iW9QzIT1NUOGSOiWgoRsiaEZS+EBImcc+WHiOC2JWdnCmkPuNX+xAynU3PwzeZTWLLtNNJzTRNTeLjq0MqnCOOu64gB7RsgsE7Joa1E5FgYLIjswKJFi9QwKBm2JcO+iMiKQsT5k2VDRO75svfVuZQfIlyvPCtcTZFBDVIv8dXGk6oQ2zzGoZG/Jyb0DMetkfXx759rMLRzGL9tJiIGCyJ7IHUqpWtViKiWyVl36vGLBdXm4uq8tLL31bkCIe1Kzs4ULCHCOoYmZuYVYvlOGe50EseTs4v3X9sqCBN7NUG/1sFw1jldckptInJMDBZERESVJbO2nT8BxO+yCBF7gPz08ldeDm5XcnYm2XaxvmFDR5Oy8M2mk/h+xxlkF5imBq/j7oJRXRrirl5N0Dyo5orBicj2MVgQERFdKUSkHis5lEku+SVnQVKc3U3DlyxDRFBbwMUN1kpvMOLPg0mqd+LvIxeLxVsE11G9E7d2bqjCBRHRlfBfinJcbvVmInvAY5zoCmRIU/RC4NRGU09EQWbZ+7h4ACEdLq5WLUFCaiScbaPWIC2nAN9tP60Ksk+n5qp9OieoKWIn9gpHnxYBnNWJiCqFwaLUqtAydWd8fLxaRVm2a+IfVTmpKygoUFN+crpZqs1jSAox5XEyg5Q8To5xIrqgqAA4+Auw40vgxF8lb3PxNE3pallYHdTaZkKEpf3xGfh600n8EB1XvIhdXS9XjO7WCHf2aIJG/rU/4xQR2QcGCwtyoiXz+p89e1aFi5oiJ3e5ublqUTZ+G0RaHEOy6GDjxo0ZbIlEylFg55dA9CKLdSOcgBb9gfa3AqFRpsXnnG33v8xCvQG/7UvA1xtPYevJ1OL97Rr44u7e4bg5MpQL2BFRlWn+r+S8efPw9ttvIyEhAREREZg7d65a2flS5syZo1Ygjo2NLV71eNasWdW2yJd8gysnXEVFRdDrTYVr1U1m0diwYQOuvfZaTs9HtX4MyWriLi4uDLXk2ArzLvZOnPz74n6fBkDUnUDUXUC9JrB1yZn5WLQ1Ft9uOYXEjHy1z0XnhBs71MfE3uHo2qQe/y0gIvsIFkuWLMGTTz6JTz75BD169FChYfDgwTh06BCCg4PL3H/hwoV4/vnnMX/+fPTu3RuHDx9WU2zKP4qzZ8+utnbJ88nJWk2d9MuJnQQXCUMMFnQ1eAwRXaXkQ8COr4Ddi4DcC9/cO+mAFgOBLncDLQfZdM+E2a7Y82rtiV9jzqJQb1p8QhavG9ejMcb3aIwQX+uY1paI7Ium/3pKGLj//vsxadIktS0B49dff1XBQQJEaRs3bkSfPn0wbtw4tR0eHo6xY8diy5Yttd52IiKyEYW5wP6fTL0TsRsv7vcNAzpPMPVQ+DWErcsv0uOX3WdV/cTuMxenvY1qXFcNdxrSoQHcXDj8kYjsMFhIAemOHTswderU4n0y3nvAgAHYtGlTuY+RXooFCxZg69atarjU8ePHsXLlStx1112XfJ38/Hx1McvIyCgeSqLVwj7m1+XCQnS1eAxRVTnEMZR0ALrob6CLWQKnPNOJttHJGcYWA2GImgBj8/6A7kJdgQ2/D2fT87Bo62ks2XEGqdmm30MCxLCO9XFXj0boGOZnuqNRj8LC6h3i6xDHEdUoHkPWrzKfjWbBIiUlRdUwhISElNgv2wcPHiz3MdJTIY+75pprVPGqDAV58MEHMW3atEu+jtRfzJw5s8z+33//XRWwamnNmjWavj7ZPh5DVFX2dgw5G/IRen4rmpxbj4DsI8X7c9wCcSrgOsT690Wemz9wpAg48htseZHvYxnAhgQdYlKdYJBic5ndyc2Ia+ob0Cu4CHVcY3F6t1xqvj32dhxR7eMxZL1ycnIqfF+bGki6fv16vP766/joo49UTcbRo0cxZcoUvPLKK5g+fXq5j5EeEanjsOyxaNSoEQYNGgRfX19olfzkD2jgwIEcH09XhccQVZXdHUOJe6Hb9Q10+5fC6cLCdap3otUQGKLugmvTfmihc0YL2LacgiL8tDsBC7bE4lBiVvH+nk3r4c4ejdG/TRBcnGtvuJPdHUdU63gMWT/zaB+rDhYyo5MUoCYmJpbYL9v169cv9zESHmTY03333ae2O3bsiOzsbDzwwAP473//W+7Ume7u7upSWk0WZ1eUNbSBbBuPIXLoYyg/C9i33FQ7Ebfj4v66TYAuE+EUOR5OPvVhD1UFsedyVO2ELGiXkVek9nm6OuPWzmFqMbvW9X00bZ9NH0dkFXgMWa/KfC6aBQuZ1rVLly5Yu3YtRowYUbzol2xPnjz5kl0xpcODhBMhQ6OIiMgBxEebwkTM9xdXxNa5AG1uMs3s1PQ6KdqDrTMYjPj7aIqa3enPQ0lq+JNoEuCFu3o2we1dG8HPkydiRGQ9NB0KJUOUJk6ciK5du6pibJluVnogzLNETZgwAWFhYapOQgwfPlzNJBUVFVU8FEp6MWS/OWAQEZEdys80BQkJFGejL+73bwZ0nghEjgPqlJ2m3BZl5BVi2Y4z+GbTKRxPyS7e3691kOqduK5VEHQ6rj1BRNZH02AxevRoJCcn48UXX1QL5EVGRmL16tXFBd2yCJ5lD8ULL7yg1piQn3FxcQgKClKh4rXXXtPwtyAiohohX9HH77zQO7EMKLxwku3sBrQdbuqdCO8riw/BHhxNysRXG09h+c4zyC4wzd7k4+6CUV0bYkKvcDQN9Na6iURE1l28LcOeLjX0SYq1LclqwTNmzFAXIiKyUzI17J7vgJ1fAQkxF/cHtDSFiYixgHcA7IHeYMTaA4n4atNJ/Hv0XPH+lsF1MKF3OG6LCoO3u+b/VRMRVQj/tSIiIuvonTiz3dQ7IQXZhRemN3R2B9qPMA13atLbbnonzmcXYMn202q4U1xartono5sGtgtRw516NQ9QPfRERLaEwYKIiLSTe97UOyGBImn/xf1BbUy9E51GA17+sBd749LV7E4/Rscjv8ig9tXzcsWY7o0xvkdjNKyn7fpKRERVwWBBRES13ztxesuF3okVQFGeab+LB9D+NlOgaNTdbnonCvUGrN6boGZ32n7qfPH+9qG+mNg7HDdHhMLDlROQEJHtY7AgIqLakZMK7F5sChQphy7uD25/oXfidsCzHuxFUmYeFm05jW+3nEJSZr7a56JzwtCODTCxdxN0blyPw52IyK4wWBARUc32Tpz61xQm9v8E6E0n2HD1AjpI78QkIKyL3fROyJpKO2PT1HCnlTFnUag3LT4R5OOuhjqN694Ywb4eWjeTiKhGMFgQEVH1y04Bdi8yBYpzRy/ur9/RFCY63g54+MJe5BXq8fPueHy96RRi4tKL93dpUg8TejXBkA4N4OZi+4v2ERFdDoMFERFVD4MBOPm3KUwc+BkwFJr2u9UBOo4yzewUGmU3vRNCZnRasPkUFm+Nxfkc0+8rAeKWiFBVP9EhzE/rJhIR1RoGCyIiqpqsJCD6W2Dn10Dq8Yv7JURI7USHkYC7D+yFDHfadPwcvt54Cr/vT4DBNNoJYXU9cWfPJhjdrRH8vd20biYRUa1jsCAioqvrnTix3tQ7cfBXwFBk2u/mA3S6A+gyEWgQAXuSnV+EFbviVP3E4cSs4v29mweo3on+bYLh4szhTkTkuBgsiIio4jITgF0LTL0Taacu7g/reqF34jbAzRv25GRKtqqdWLrjNDLzTAHKy80Zt3UOU4vZtQyxn94YIqKqYLAgIqLLM+iBY+tMvROHVgFGvWm/ux8QMdpUO1G/A+xJfpEefx9OUVPFrj+crCa3EuEBXpjQKxwjuzSEn6er1s0kIrIqDBZERFS+jPiLvRPppy/ub9TTNNSp3QjAzX5Wis4t0OOvw0lYtTcB6w4kITPf1DshtebXtw5Sw52ubRkEnc5+is+JiKoTgwUREV2kLwKO/mHqnTjyG2A0mPZ71AUixpoCRXBb2IvMvEKsO5ikVsZefygZuYUXemMAhPi6Y3inUFWQHR5oX8O7iIhqAoMFEREBaaeBXd+Yeigy4i7ub9LHVDvR9mbA1T4WdkvLKcCa/YkqTPx9JAUF+gvhCUDDep4Y0qE+buzQAFGN6rJ3goioEhgsiIgclJNRD6dDK4HdC4Aja2QiVdMNnv5A5DhT7URQK9iD5Mx8NTWshIlNx86hyDxHLIBmQd4qTMgidu1DfeFkR+tsEBHVJgYLIiIH5BTzHQbtnQaX6LSLO8P7XuidGA64uMPWnU3PVUFCaia2n0wtXm9CtKnvgxs71MfQjg3QMrgOwwQRUTVgsCAiciQyvdGGd+Dy56vqPwCjVyCcosabeicCmsPWxZ7Lwaq9Z1WYiD5tEZoAdGrop8KE9Ew0Zc0EEVG1Y7AgInKkaWNXPgNs/1xtHgkehvB7PoOrh22fZB9NysSqGFPPxP6zGcX7pROiS+N6KkzIpWE9+5nBiojIGjFYEBE5gsJcYNl9wMFf5JQb+kGzsD85FOHObrA1RqNRBQjzMKejSRdXwXbWOaFHU39VMzG4fX0E+9pHwTkRkS1gsCAisnc5qcCiscDpzYCzO3DbpzC0GgasXAlbChMytEnCxOp9CTh1Lqf4NldnJ/RpEajCxMB29eHvbXthiYjIHjBYEBHZ+zSyC0YCKYdMK2WPXQSE9wEKC2Ht9AajKrqWXonf9iXgbHpe8W3uLjpc1yoIQzrWxw1tQrgKNhGRFWCwICKyV4n7TKEi8yzgEwrcuQwIaQdrVqg3YMvxVKzcexa/70tESlZ+8W3ebs64vk2wKr7u1zoI3u78L4yIyJrwX2UiInt04m9g8TggPwMIagvc+T3g1xDWKL9Ij3+OpKhhTmsOJCIt52Jviq+HCwa0C1Fhom/LQHi4OmvaViIiujQGCyIie7N3ObDiP4C+AGjcGxi7EPCsB2uSW6DHX4eT1DCntQeSkJVfVHxbgLcbBrUPUatf92oWADcXnaZtJSKiimGwICKyJ5s/BlZPNa2i3fZm4LbPAFfrmBkpM68Q6w4mqZ6J9YeSkVuoL74txNcdN7aXaWEboFt4Pbg4M0wQEdkaBgsiIntgMAB/zAA2fmDa7nY/MORNQKft0KG0nAKs2Z+owsTfR1JQoDcU39awnqeayUnCRFSjutDpuPo1EZEtY7AgIrJ1RQXAj48AMd+ZtvvPAK55wrRCnAaSM/Px+/4EFSY2HTuHIoOx+LZmQd4qTEjNRPtQXzhp1EYiIqp+DBZERLYsPxNYcidwfD2gcwFu/hCIHFvrzTibnlu8YN22k6kwXswSaFPfRwUJmRq2ZXAdhgkiIjvFYEFEZKsyE4FvRwEJewBXb+COr4GWA2rt5WPP5WDV3rMqTMjidZYiGvqpIU43dqiPpoHetdYmIiLSDoMFEZEtSjkKLLgNSDsFeAcB474DwjrX+MseTcrEqhhTz8T+sxnF+6UTokvjeipIyKVhPa8abwsREVkXBgsiIltzZjuw8A4g5xxQrylw13LAv1mNvJTRaFQBwjzM6WhSVvFtzjon9Gjqr2omBrevj2Bf65h9ioiItMFgQURkSw6tBpbeDRTlAqFRwLilQJ2gag8TMrTJHCZiU3OKb3N1dkKfFoEqTAxsVx/+3m7V+tpERGS7GCyIiGzFzq+Bnx8HjHqgxQDg9q8A9zrV8tR6gxHbT6aqIPHbvgScTc8rvs3dRYfrWgWp4usb2oTAz9O1Wl6TiIjsC4MFEZG1kymWNrwN/PmaaTtyPDD8fcC5aif4sqTEP0fPYc3BZPy+LxEpWfnFt3m7OeP6NsFqNqd+rYPg7c7/LoiI6PL4PwURkTXTFwErnwZ2fGHa7vs0cMMLVVqjYn98Br7dfBIrdjojZ8uO4v2+Hi4Y0C5EhYm+LQPh4art4npERGRbGCyIiKxVQQ6w7F7g0EqZdwkY+jbQ/f6reqrs/CL8siceC7eexu7iqWGd4O/tqgqvZWrYXs0C4Oaiq9ZfgYiIHAeDBRGRNcpJBRaOBs5sBZzdgZH/B7S7udJPsy8+HYu2xuKHXfHIyi8qLsAe2DYYTfTxeGz0AHh6uNfAL0BERI6GwYKIyNqkxQILRgIphwEPP2DsEqBJr0r1Tvy8O14Fit1n0ov3NwnwwtjujTGqS0P4ueuwcmUcXJzZQ0FERNWDwYKIyJokxAALRgFZCYBvQ+DOZUBwmwo9dG9cOhZujcWPu+KQXaAv7p0Y1L4+xndvjJ7NAqDTmWozCgsLa/TXICIix8NgQURkLY7/BSy5E8jPAILbAeO/B/zCLvuQLIveiT0WvRPhF3onRnZpiMA6HOpEREQ1j8GCiMgaxHwPrHgQMBQCTa4BxnwLeNa99N3PmHonfoou2TshRdhjuzdShdhOVZg5ioiIqLIYLIiItLZpHvDbNNP1diOAW/8HuHqU2zvxU7SpdyIm7mLvRNNAbxUmRnZuiAD2ThARkUYYLIiItGIwAGumA5s+NG33eBAYPAvQlSyo3nMmTYWJH6PjkXOhd8LNWYcbO9RXw516NvNn7wQREWmOwYKISAtFBcAPDwF7vzdtD5gJ9JlSvPBdZl4hfrpQO7E3LqP4Yc1U74SpdsLf202r1hMREZXBYEFEVNvyMkxF2if+AnQuwC3zgIgxMBqN2HPa1DshocKyd2JIR1PvRI+m7J0gIiLrxGBBRFSbMhNM08kmxgBudYA7vkZmw2vx4+ZTWLglFvvPWvROBHljXPfGuK0zeyeIiMj6MVgQEdWWlCPAN7cB6bEwegfh8IAvMD/aDz99tRa5hRd6J1x0GHqhdqI7eyeIiMiGMFgQEdWG01uBhXcAueeR4dUYjzu/iHVLpHfC1EPRXHonejTBbVFhqMfeCSIiskEMFkRENcx4cCWMSydBp8/DbmMLTEp9GqnwUr0TwzrKuhON0S28HnsniIjIpjFYEBHVkPTcQuz/+QN03/8qnGHAOn0kHil8DGHBgZisaifCUNeLvRNERGQfGCyIiKqRzOy0S2Z22nwKTfZ+gMm6ZWr/UkM/bGk/HV/3bIauTdg7QURE9ofBgoiomnonftgVp6aKPZKQhldc5mOcy5/qtuim92PgqNdwuzdXxSYiIvvFYEFEVIXeiZ2xpnUnftkTj7xCAzyQj8/cPsQNuh0wOumAoe8gstu9WjeViIioxjFYEBFVUnpOIVbsOoNFW0/jUGJm8f5uQQbM072H4PQ9gIsHnEZ+DrS9SdO2EhER1RYGCyKiCvdOnMfCLadV70R+kUHt93DV4aZOoZjY1gkd/pwEp3NHAY+6wLglQOOeWjebiIio1jBYEBFdoXdiueqdiMXhxKzi/a1DfDCuR2OMiAqDX9oB4NtRQFYi4NcIuHMZENRa03YTERHVNgYLIqJyeid2nJLeiVj8GnO2RO/E8E6hGNujMaIa1TXN7HR8PbD4TqAgEwjpAIxfCviGav0rEBER1ToGCyKiC9JyCrB854WZnZIu9k60qW/qnbglMgx+nq4XH7BnKfDDQ4ChEAjvC4z5FvDw06bxREREGmOwICI4eu/EtpPnVZiQ3omCC70Tnq7OGB5hWhU70tw7YWnjXOD3F0zX298K3Po/wIXTyRIRkeNisCAih3Q+uwDLL6w7cdSid6JtA98LvROh8PWw6J0wMxhMgWLzPNN2z4eBQa8BOl0ttp6IiMj6MFgQkUP1Tmw9karCxMq9CSV6J26OMNVORDT0u/Sq2EX5wIoHgX3LTduDXgV6P1qLvwEREZH1YrAgIofonVi20zSz07Hk7OL97Sx6J3zK652wlJcOLB4PnPwb0LkCIz4COt1R840nIiKyEQwWRGS3vRNbLvROrIpJQIHe1Dvh5Xahd6J7Y3S6XO+EpYyzpulkE/cCbnWA0QuA5tfX/C9BRERkQxgsiMjunDmfg/u+2o6DCRdXxW4fauqdkFBxxd4JS8mHgAUjgfTTQJ0Q03SyDSJqpuFEREQ2jMGCiOyK1E08snCXChXSOyHDnEy9E3Ur/2SxW4BFo4Hc80BAC9PCd/XCa6LZRERENo/BgojsyqxVB7D7dJpab+KXR69BI3+vq3uig78C398DFOUBYV2Bcd8B3gHV3VwiIiK7wWBBRHZjVcxZfPHvSXX93dsjrj5UbJ8P/PoUYDQArW4ERs0H3Lyrt7FERER2hsGCiOzCqXPZePb7Per6f65thgHtQir/JEYj8OfrwIa3TNudJwDD3gOc+U8lERHRlfB/SyKyeXmFejz87U5k5heha5N6eHpw68o/ib4I+GUKsGuBafu654F+zwMVmTWKiIiIGCyIyPa98st+7IvPgL+3G+aOi4KrcyVXwS7IBpZOAo78BjjpgGGzga6Taqq5REREdonBgohs2o/Rcfh2S6zqWJh9RwQa+HlW7gmyU4CFdwBxOwAXD2DUF0CboTXVXCIiIrvFYEFENutoUhamLo9R1ydf3wL9WgdX7glST5jWqEg9BnjWM8381Kh7zTSWiIjIzjFYEJFNyi3Q45FvdyKnQI+ezfzx+IBWlXuC+Gjg29uB7CTAr7FpjYqgSj4HERERFWOwICKbNOOnvTiUmInAOu74YEwUnHWVKLI+tg5YchdQkAWEdDStpu3boCabS0REZPcYLIjI5izdfhrfbT8DyRIfjI1EsK9HxR+8ewnw48OAoQhoei0wegHg4VeTzSUiInIIlZw6pWbMmzcP4eHh8PDwQI8ePbB169ZL3rdfv35wcnIqcxk2bFittpmItHEoIRPTf9yrrsvwp97NAyu+RsU/c4AVD5hCRYdRwPjvGSqIiIjsJVgsWbIETz75JGbMmIGdO3ciIiICgwcPRlJSUrn3X758Oc6ePVt82bt3L5ydnXH77bfXetuJqHZl5xfh4W93IK/QgL4tA1XBdoUYDMDq54E/Zpi2e00GbvsMcHGv0fYSERE5Es2DxezZs3H//fdj0qRJaNeuHT755BN4eXlh/vz55d7f398f9evXL76sWbNG3Z/Bgsi+GY1GTFsRg2PJ2Qjxdcec0ZHQVaSuojAP+H4SsOUT0/ag14DBrwE6zf/5IyIisiua1lgUFBRgx44dmDp1avE+nU6HAQMGYNOmTRV6js8//xxjxoyBt7d3ubfn5+eri1lGRob6WVhYqC5aML+uVq9Pts8Rj6HF287gx+h4VaT93u2d4Ouuu/Lvn5cO56V3QRe7EUadK/Q3z4Ox/W3yxsHROeIxRNWPxxFVFY8h61eZz0bTYJGSkgK9Xo+QkJAS+2X74MGDV3y81GLIUCgJF5cya9YszJw5s8z+33//XfV0aEl6W4iqwlGOoTPZwHsxzgCcMKxhEZL3b8LK/Zd/jEdBKnoeexd+eadRqPPA1maPI+WUB3BqZW012yY4yjFENYvHEVUVjyHrlZOT4xizQkmg6NixI7p3v/SCVtIbIjUclj0WjRo1wqBBg+Dr6wutkp/8AQ0cOBCurq6atIFsmyMdQ5l5Rbj1480oMuagX6tAvD0+6opDoJyOrYPzyrfhlBcHY50QYMwSdA/pUGtttgWOdAxRzeFxRFXFY8j6mUf7WH2wCAwMVIXXiYmJJfbLttRPXE52djYWL16Ml19++bL3c3d3V5fS5ODV+gC2hjaQbbP3Y0jqKqb/FINTqTkIq+uJ90ZHwd3d7dIPOH8K+G0acPAX03ZASzjduQyu9ZrUWpttjb0fQ1Q7eBxRVfEYsl6V+Vw0rV50c3NDly5dsHbt2uJ9BoNBbffq1euyj126dKmqnbjzzjtroaVEpIWvN53CrzFn4ershA/HRaGet9ulC7TXvwnM624KFU7Oppmf7l8HMFQQERHVCs2HQskwpYkTJ6Jr165qSNOcOXNUb4TMEiUmTJiAsLAwVStRehjUiBEjEBAQoFHLiagm7T6dhld/NRVSPD+kLaIa1yv/jodWA6ufA86fNG2H9wWGvg0Et63F1hIREZHmwWL06NFITk7Giy++iISEBERGRmL16tXFBd2xsbFqpihLhw4dwj///KMKsInI/qTnFOKRhTtRqDdicPsQ3NMnvOydUo8Dq54Hjvxm2vYJBQa/CsisT04VmIaWiIiI7CtYiMmTJ6tLedavX19mX+vWrdXYayKyP/K3/dTS3ThzPheN/b3w1qgIOFkGhYIc4J/3gH/fB/T5gM4V6PUwcO2zgHsdLZtORETk0KwiWBARmf3f3yfwx4FEuDnr8NH4zvDzvFA0Jl8mSP3E6mlAeqxpX7PrgSFvAUGtNG0zERERMVgQkRXZcSoVb642rWEzfXg7dAjzM92QchRY9QxwbJ1p268RMPh1oO1wDnsiIiKyEgwWRGQVUrMLMHnhLhQZjBgeEYo7ezQG8rOAv98BNn4IGAoBZzeg92NA36cAN20XuCQiIqKSGCyISHMGgxFPfheNs+l5aBbojVm3doDTvhXA7y8AGXGmO7UcBNz4BhDQXOvmEhERUTkYLIhIcx//dQzrDyXD3UWHz4bWQZ0ltwEnNphurNsEGPIm0OpGDnsiIiKyYgwWRKSpzcfP4d3fD6EOcrCs5QY0/34hYCgCXDyAa54A+kwBXD21biYRERFdAYMFEWkmOTMfjy3cieFO/+Bl7yXwO3HOdEPrYcCNrwP1ylm/goiIiKwSgwURaUJvMOLdb5ZhbsH76OF2ECgC4N/MNH1sy4FaN4+IiIgqicGCiGpfbhr2fP0sXk1cChedAQYXD+iufQbo/Sjg4q5164iIiOgqMFgQUe0xGIDdi1Dw23RE5Z0DnIC40EEIu2M2ULeR1q0jIiKiKmCwIKLaER8NrHwGOLMVbgCOGkLxV/Once/Ee7VuGREREVUDBgsiqlk5qcC6V4Ht8wEYkefkgdkFt2JT0B1YOu46rVtHRERE1YTBgohqbtjTrq+BP2YCualq1/6AQZgUdzOy3YPx0/ju8HB11rqVREREVE0YLIio+p3ZAax8GojfadoOaotdHf6LW1fp1OaHIzuiWVAdbdtIRERE1YrBgoiqT/Y5YO1LwM5v1LAnuPsC/aYivtWdmDRvM4BCTOjVBDd1CtW6pURERFTNGCyIqOoMelMNhdRS5KWZ9kWMBQbMRIFnEB75dBPScgrRMcwP/x3WVuvWEhERUQ1gsCCiqondAqx8CkiIMW2HdASGvQM07qk23/plP3bFpsHHwwUfje8MdxfWVRAREdkjBgsiujpZScCaGcDuhaZtDz/ghulAl0mAs+mflt/3JeD//jmhrr9zewQa+Xtp2WIiIiKqQQwWRFQ5+iJg22fAn68D+RmmfVF3AQNeArwDi+92OjUHTy3dra7fd01TDG5fX6sWExERUS1gsCCiijv5r2mRu6R9pu0GkcCwd4GGXUvcLb9Ij0cW7kRmXhGiGtfFc0PaaNNeIiIiqjUMFkR0ZRlngTXTgZilpm3PekD/GUDnCYCubM3E678ewJ4z6ajr5YoPx3WGq7NpmlkiIiKyXwwWRHRp+kJg88fAX28CBVkAnICuk0y1FF7+5T7klz3x+GrTKXX9vTsiEVbXs5YbTURERDYRLMLDw3HPPffg7rvvRuPGjWumVUSkvePrgZXPAimHTNthXU2zPYVGXfIhJ1Ky8fwy0+xQD/VrjuvbBNdWa4mIiEhjlR6f8Pjjj2P58uVo1qwZBg4ciMWLFyM/P79mWkdEtS/9DPDdRODrW0yhwisQuGUecO+ay4aKvEI9Hv52J7Lyi9A93B9PDWxVq80mIiIiGwwW0dHR2Lp1K9q2bYtHH30UDRo0wOTJk7Fz586aaSUR1byifODvd4EPuwH7fwCcdED3/wCPbgei7gR0l//nYubP+3DgbAYCvN0wd1wUXFhXQURE5FCu+n/+zp0744MPPkB8fDxmzJiB//u//0O3bt0QGRmJ+fPnw2g0Vm9LiajmHP0D+KgXsPZloDAHaNwL+M8GYOhbpkLtK1ix6wwWbT0NJyfg/TFRCPH1qJVmExERkR0UbxcWFmLFihX44osvsGbNGvTs2RP33nsvzpw5g2nTpuGPP/7AwoUXFs4iIut0/hTw2zTg4C+m7TohwMBXgE53QKWECjialIlpy/eq64/d0BLXtLy4lgURERE5jkoHCxnuJGFi0aJF0Ol0mDBhAt577z20aXNxnvpbb71V9V4QkZUqzAP+fR/4ZzZQlAc4OQM9HwKuew7w8K3w0+QUFKm6itxCPfq0CMBj/VvWaLOJiIjIjoKFBAYp2v74448xYsQIuLq6lrlP06ZNMWbMmOpqIxFVp0OrgdXPAedPmrbD+wJD3waC21bqaWS44ws/7MXhxCwE+bhjzugoOOsq1stBRERE9qfSweL48eNo0qTJZe/j7e2tejWIyIqkHgdWPQ8c+c207RMKDH4VaH9bhYc9WVq6/QyW74yDZIm5Y6NUuCAiIiLHVelgkZSUhISEBPTo0aPE/i1btsDZ2Rldu3atzvYRUVUV5AD/vGca+qTPB3SuQK+HgWufBdzrXNVTyuxP03801VU8Nag1ejYLqOZGExERkd3PCvXII4/g9OnTZfbHxcWp24jISsjMbAd+Bub1ADa8ZQoVza4HHtoIDHz5qkOFrFPxyLc7kV9kwHWtgvDQdc2rvelERETkAD0W+/fvV1PNlhYVFaVuIyIrkHIUWPUMcGydaduvETD4daDt8Ksa9mRZVzF1eQyOp2SjgZ8H3hsdCR3rKoiIiOhqgoW7uzsSExPVytuWzp49CxeXq569loiqQ34W8Pc7wMYPAUMh4OwG9H4M6PsU4OZV5af/dkssft4dDxedEz4cFwV/b7dqaTYRERE54FCoQYMGYerUqUhPTy/el5aWptaukNmiiEijYU97lwPzupvqKSRUtBwEPLwZ6D+9WkLF3rh0vPyzqVfyuRvboEsT/2poOBEREdmLSncxvPPOO7j22mvVzFAy/ElER0cjJCQE33zzTU20kYguJ+mgadjTiQ2m7bqNgRvfBFoPqdKwJ0sZeYVqvYoCvQED24Xgvr5Nq+V5iYiIyIGDRVhYGPbs2YNvv/0Wu3fvhqenJyZNmoSxY8eWu6YFEdUMF30udH9MB7Z9BhiKABcP4JongD5TAFfPansdqat4dukexKbmoGE9T7wzKgJO1RRYiIiIyH5cVVGErFPxwAMPVH9riOjKjEY47V2K/vunwrkozbSv9TDgxteBeuHV/nJf/HsSq/clwNXZCfPGdYafF79AICIiorKuutpaZoCKjY1FQUFBif0333zz1T4lEV1Jwl5g5TNwid2o/niN9ZrCSVbNblkz9U27Ys9j1qoD6voLw9oholHdGnkdIiIictCVt2+99VbExMSo4RAyTEKYh0bo9frqbyWRo8tNA9bPArZ+Bhj1MLp44kDQMLSc8D5cPa9uPYorScspwOSFu1CoN2JYxwaY0KtJjbwOEREROeisUFOmTEHTpk3VCtxeXl7Yt28fNmzYoFbcXr9+fc20kshRGQzArm+BD7sCWz5RoQLtbkHRg5twpP7NgIt7Db2sEU99txtxabkID/DCrJEdWVdBRERE1dtjsWnTJqxbtw6BgYHQ6XTqcs0112DWrFl47LHHsGvXrso+JRGVJz5aDXvCma2m7cBWwJA3geY3AIWFAPbU2Et/9vdxrD2YBDcXHeaN7wxfD9ZVEBERUTUHCxnq5OPjo65LuIiPj0fr1q3V9LOHDh2q7NMRUWk5qcC6V4Ht86WKAnD1Bvo9B/R4CHCp+QXptp1MxVu/mf6WXxreHu1D/Wr8NYmIiMgBg0WHDh3UNLMyHKpHjx5466234Obmhk8//bTMatxEVNlhT18Df8wEclNN+zqMAga9AviG1koTzmXl49GFu6A3GDEiMhRjuzeqldclIiIiBwwWL7zwArKzs9X1l19+GTfddBP69u2LgIAALFmypCbaSGT/zuwAVj4NxO80bQe1BWS2p6Z9a60JUlfx+JJoJGTkoXmQN167lXUVREREVIPBYvDgwcXXW7RogYMHDyI1NRX16tXjSQhRZWWfA9a+BOyUVeuNgLsv0G8q0P1+wLl26xrm/XkUfx9JgYerDh+N7wJv96uejZqIiIgcUKXOHAoLC9VK29HR0WpIlJm/v39NtI3Ifhn0phoKqaXIu7DIXcRYYMBMwCek1puz8VgK3vvjsLr+6oiOaF3fVEdFREREVCPBwtXVFY0bN+ZaFURVEbsFWPkUkBBj2g7pCAx7B2jcU5PmJGXm4bFF0TAYgdu7NMSoLg01aQcRERE52DoW//3vfzFt2jQ1/ImIKiErCVjxEDB/kClUePgBQ98BHlivWaiQIu0pi6KRkpWP1iE+ePmWiz2RRERERJVR6UHUH374IY4ePYrQ0FA1xay3t3eJ23fuvFB8SkQm+iJg22fAn68D+RmmfVF3AQNeArwDNW3a+38cxqbj5+Dt5oyP7uwMTzdnTdtDREREDhQsRowYUTMtIbJHJ/81zfaUtN+03SASGPYu0LCr1i3DhsPJmPvnUXX99ds6onlQHa2bRERERI4ULGbMmFEzLSGyJxlngTXTgZilpm3PekD/GUDnCYBO+16BhPQ8NbWs0QiM79EYt0SGad0kIiIisnGcT5KoOukLgc0fA3+9CRRkAXACuk4CbpgOeFnH7GmFegMeXbQTqdkFaB/qi+k3tdO6SUREROSIwUKn0112vQrOGEUO6/h6YOWzQMoh03ZYV9NsT6FRsCbv/H4I206eh4+7Cz4a3xkertr3oBAREZEDBosVK1aUWdti165d+OqrrzBz5szqbBuRbUg/A/z2X2D/D6Ztr0Bg4EwgYpwkcViTtQcS8b+/jqvrb43qhCYBJSdfICIiIqq1YHHLLbeU2Tdq1Ci0b98eS5Yswb333nvVjSGyKUX5wKYPgQ3vAIU5gJMO6HY/cP1UU02FlTlzPgdPfrdbXb+7dziGdGygdZOIiIjIjlRbjUXPnj3xwAMPVNfTEVm3I38Aq54FUo+Zthv3Aoa+DdTvCGtUUGTAIwt3IT23EBGN6mLa0LZaN4mIiIjsTLUEi9zcXHzwwQcIC+PMMmTnzp8CfpsGHPzFtF0nBBj4CtDpDuAytUdae2PVQew+nQY/T1d8ODYKbi7WNUSLiIiIHDBY1KtXr0TxttFoRGZmJry8vLBgwYLqbh+RdSjMA/59H/hnNlCUBzg5Az0fAq57DvDwhTVbvfcs5v97Ql1/9/YINPL30rpJREREZIcqHSzee++9EsFCZokKCgpCjx49VOggsjuHVgOrnwPOnzRth/c1DXsKtv7hRKfOZeOZ7/eo6/+5thkGtAvRuklERERkpyodLO6+++6aaQmRtUk9Dqx6Hjjym2nbJxQY/CrQ/jarHvZklleoxyMLdyIzrwhdm9TD04Nba90kIiIismOVDhZffPEF6tSpg9tvv73E/qVLlyInJwcTJ06szvYR1b6CHOCf90xDn/T5gM4V6PUwcO2zgHsd2IpXf92PvXEZ8Pd2w9xxUXB1Zl0FERER1ZxKn2nMmjULgYGBZfYHBwfj9ddfr652EdU+oxE48DMwrwew4S1TqGh2PfDQRmDgyzYVKn7aHY8Fm2NVx8rsOyLQwM9T6yYRERGRnat0j0VsbCyaNm1aZn+TJk3UbUQ2KeUosOoZ4Ng607ZfI2Dw60Db4TYx7MnSseQsTF1mqquYfH0L9GsdrHWTiIiIyAFUOlhIz8SePXsQHh5eYv/u3bsREBBQnW0jqnn5WcDf7wAbPwQMhYCzG9D7MaDvU4Cb7c2elFugxyPf7kR2gR49m/nj8QGttG4SEREROYhKB4uxY8fiscceg4+PD6699lq176+//sKUKVMwZsyYmmgjUc0Me9q3Avj9BSAjzrSv5SDgxjeAgOawVS/9tA8HEzIRWMcdH4yJgrPOtnpbiIiIyIGCxSuvvIKTJ0+if//+cHExPdxgMGDChAmssSDbkHTQNOzpxAbTdt0mwJA3gVY32tywJ0vf7ziDJdtPQ7LEB2MiEezroXWTiIiIyIFUOli4ublhyZIlePXVVxEdHQ1PT0907NhR1VgQWbW8DOCvN4EtnwCGIsDFA7jmCaDPFMDVtoubDydm4oUfYtR1Gf7Uu0XZCRaIiIiIrCpYmLVs2VJdiGxi2FPMUuD36UBWgmlf62HAja8D9UrWCtmi7PwiPPztTuQVGtC3ZaAq2CYiIiKy+ulmR44ciTfffLPM/rfeeqvM2hZEmkvYC3wxFFh+vylU+DcDxn8PjF1oF6HCaDTihR/24mhSFkJ83TFndCR0rKsgIiIiWwgWGzZswNChQ8vsHzJkiLqNyCrkpgGrngP+dy0QuxFw8QRumA48vBloORD2YumOOKzYFaeKtOeO7YyAOu5aN4mIiIgcVKWHQmVlZak6i9JcXV2RkZFRXe0iujoGA7B7EfDHDCA72bSv3S3AoNeAuo1gT85kA+//elBdf2Zwa3Rv6q91k4iIiMiBVbrHQgq1pXi7tMWLF6Ndu3bV1S6iyouPBuYPBn582BQqAlsBd60A7vja7kJFZl4RvjjsjIIiA25oE4wH+jbTuklERETk4CrdYzF9+nTcdtttOHbsGG644Qa1b+3atVi4cCG+//77mmgj0eXlpALrXgW2z5eqA8DVG+j3HNDjIcClbO+arcsr1OPp72OQkueEUD8PvHt7BOsqiIiIyPZ6LIYPH44ffvgBR48excMPP4ynnnoKcXFxWLduHVq0qPxsNPPmzVOreHt4eKBHjx7YunXrZe+flpaGRx55BA0aNIC7uztatWqFlStXVvp1yU6GPe34EpjbBdj+uSlUdBgFPLrdNIWsHYaK5Mx8jP1sM9YdSoazkxFzRndCPW/7+z2JiIjIQaabHTZsmLoIqatYtGgRnn76aezYsQN6vb7CzyNDqp588kl88sknKlTMmTMHgwcPxqFDhxAcHFzm/gUFBRg4cKC6TXpHwsLCcOrUKdStW/dqfg2yZWd2ACufBuJ3mraD2gJD3waa9oW9OpSQiXu+3Ia4tFz4ebrgrqb5iGrEY5+IiIhsfB0LmQHq888/x7JlyxAaGqqGR0nvQ2XMnj0b999/PyZNmqS2JWD8+uuvmD9/Pp5//vky95f9qamp2LhxoyoWF9LbQQ4kOwVYOxPY+Y2ph8LdF+g3Feh+P+BsOibs0fpDSZi8cBey8osQHuCFT++MwoGtf2ndLCIiIqKrGwqVkJCAN954Qy2MJ2tW+Pr6Ij8/Xw2Nkv3dunWr8HNJ74P0cAwYMOBiY3Q6tb1p06ZyH/PTTz+hV69eaihUSEgIOnTogNdff71SvSRkowx6YOtnpmFPO782hYqIscDk7UCvh+06VHy96aTqqZBQ0aOpP1Y83AdNA721bhYRERHR1fVYSG2F9FLIECgZsnTjjTfC2dlZ9TJcjZSUFBUIJCBYku2DB01TaJZ2/PhxVcsxfvx4VVdhrvMoLCzEjBkzyn2MBB+5mJmnxJXHyEUL5tfV6vVtjdOZrXBe/RycEmPUtjG4A/Q3vgljox6mO9jp+1ikN+D11YfxzeZYtX1bVCheubkd3FyceAxRlfEYourA44iqiseQ9avMZ1PhYLFq1So89thjeOihh1SPhRYMBoOqr/j0009VqOnSpYsqHH/77bcvGSxmzZqFmTNnltn/+++/w8vLC1pas2aNpq9v7dwL09Eufgkap/6jtgucvXCwwSicDLwexphzQIz9Fu3nFQFfHtHhQJqpU/Gmxnpc6x6LP343hQwzHkNUVTyGqDrwOKKq4jFkvXJycqo/WPzzzz+qpkJO5tu2bYu77roLY8aMudo2IjAwUIWDxMTEEvtlu379+uU+RmaCktoKeZyZtEWGaMnQqvIW7ps6daoqELfssWjUqBEGDRqkhnJplfzkD0gK0c21ImShKA+6nV9Bt+ENOOVnql2GiPFwun462noHoi3smxRnP/DNLhxOy4KHqw5vj+yIG9uX7NnjMURVxWOIqgOPI6oqHkPWrzILYFc4WPTs2VNdZBiUzOYkhdRywi69CHJAyMm6j49PhV9YQoCEFFkDY8SIEWqfPJdsT548udzH9OnTR62XIfeTegxx+PBhFTjKCxVCpqSVS2ly8Gp9AFtDG6xK8iFgx1emlbNzU037GkQCw96FrmHXys+NbIN2xZ7H/V/vQEpWPoJ83PF/E7oi4jIzP/EYoqriMUTVgccRVRWPIetVmc+l0udq3t7euOeee1QPRkxMjFrHQgq3ZYjSzTffXKnnkmDy2Wef4auvvsKBAwfUMKvs7OziWaImTJigehzM5HaZFWrKlCkqUMgMUlK8LcXcZKMKc4HdS4D5Q4B53YHN80yhwjcMuOk94P51QMOucAS/7InHmE83q1DRtoEvfnykz2VDBREREZFdTDcrWrdujbfeekvVMfz888+qF6MyRo8ejeTkZLz44otqOFNkZCRWr15dXNAdGxtb3DMhpFfkt99+wxNPPIFOnTqpdSwkZDz33HNV+TVIC4n7gZ0Xeify0k37nJyBVoOBLncDLQYAuotD3uyZ0WjEh+uO4t01h9V2/zbBeH9sFOq4V+nPk4iIiKhWVcuZi9Q8yHAm85CmypBhT5ca+rR+/foy+2S62c2bN19VO0ljBTnAvhWm1bLPWKyw7tcY6DwBiBoP+IbCkeQX6TF1WQyW74pT2/de0xTThraFs85J66YRERERVQq/EqWalxBjqp3Y8x2Qb9E70WYo0PluoPn1DtM7YSk1uwAPfrMDW0+mqiAx8+b2uLNnE62bRURERHRVGCyoZuRnAfuWm3on4nZc3F+3CdBlIhA5HvApf/YvR3A0KQv3frUNp87lwMfdBR/d2Rl9WwZp3SwiIiKiq8ZgQdUrPtoUJmK+BwpMU8VC5wK0uclUO9H0OlliHY7s36MpeGjBDmTkFaGRvyfmT+yGliEVn1GNiIiIyBoxWFDVyVoTEiQkUJyNvrjfvxnQWXonxgF1grVsodVYtDUW03/YiyKDEV2a1MOnd3VBQJ2y0yETERER2RoGC7o6RiMQv/NC78QyoDDbtN/ZDWg73NQ70eQah++dMNMbjHhj1QF89vcJtX1LZCjeHNkJHq6OV1tCRERE9onBgipHpoaVImyZKlaKss0CWprCRMRYwDtAyxZanZyCIkxZHI01+02rzD8xoBUe698CTk6c+YmIiIjsB4MFVax34sw208xOUpBdmGPa7+wOtB9hGu7UpDfAE+UyEtLzVJH2vvgMuLno8M7tEbg5wrGm1CUiIiLHwGBBl5Z73tQ7IcOdkvZf3B/UxtQ70Wk04OWvZQut2t64dBUqEjPyEeDthk8ndFV1FURERET2iMGCyvZOxG42hYn9PwBFeab9Lh5A+9tMgaJRd/ZOXMFv+xLw+OJo5Bbq0TK4Dubf3Q2N/L20bhYRERFRjWGwIJOcVGD3YlOgSDl0cX9w+wu9E7cDnvy2/UqMRiM+3XAcb6w+qDJa35aBmDe+M3w9XLVuGhEREVGNYrBwZHLme+rfC70TPwH6fNN+Vy+gg/ROTALCurB3ooIKigxqKtkl20+r7bt6NsGM4e3g4syZsYiIiMj+MVg4ouwUYPciU6A4d/Ti/vodTb0THW8HPPy0bKHNSc8pxIMLdmDT8XPQOQHTb2qHu3uHc+YnIiIichgMFo7CYABO/m0KEwd+BgyFpv2u3kDHUaZAERrF3omrcDIlG/d8uQ3HU7Lh7eaMueOicEObEK2bRURERFSrGCzsXVYSEP2taarY86bF2RQJERImOowE3H20bKFN23L8HP6zYAfScgoR6ueBz+/uhrYNfLVuFhEREVGtY7Cw196J43+aeicOrQQMRab9bj5ApzuALhOBBhFat9LmLdtxBs8v34NCvRERDf3w2cSuCPbx0LpZRERERJpgsLAnmQnArgXAzq+BtFMX94d1vdA7cRvg5q1lC+2CwWDEu2sOYd6fx9T20I718e7tkfB0c9a6aURERESaYbCwdQY9cGzdhd6JVYBRb9rv7gdEjDatil2/g9attBu5BXo8tTQaK2MS1PYj1zfHUwNbQycV20REREQOjMHCVmXEX+ydSDdNb6o06mka6tRuBODGBdmqU1JmHu7/ajt2n0mHq7MTZt3WCaO6NNS6WURERERWgcHCluiLgKN/mHonjvwGGA2m/R51gYixpkAR3FbrVtqlA2czcO+X2xCfnoe6Xq74351d0KNZgNbNIiIiIrIaDBa2IO00sOsbUw9FRtzF/U36mGon2g4HXD21bKFdW3cwEY8u3IXsAj2aBXpj/t3dEB7IWhUiIiIiSwwW1tw7Ib0SqndijSyTbdrv6Q9EjjPVTgS10rqVds1oNOLLjSfxyi/7YTACvZoF4JM7u8DPy1XrphERERFZHQYLa3P+JLDzQu9ElqlAWAnve7F3wsVdyxY6hCK9ATN/3o9vNptm1xrdtRFeGdEBbi46rZtGREREZJUYLKyBvtC03oT0Thz782LvhFcgEDXe1DsR0FzrVjqMjLxCTF64CxsOJ6uFyJ+/sQ0euLYZnLgqOREREdElMVhoSVbC3rMQ2PUtkJ10cX+z602F2K2HAS5uWrbQ4ZxOzcE9X27DkaQseLo6Y86YSAxuX1/rZhERERFZPQaL2lZUAKf9P6L3kdlw3bX/4n7vYCDqTqDzXYB/My1b6LB2nDqPB77ejnPZBQjxdcfnE7uhQ5if1s0iIiIisgkMFrXtbDRcVtyHIDXgyQlOLfqbhjq1HgI4syhYKz9Gx+GZ7/egoMiA9qG+KlTU9/PQullERERENoPBorY17AZDsxtwJLsOmo16Ca5BrJ3Qeuan99cewZw/jqjtAW1D8P6YSHi780+DiIiIqDJ49lTbnJygH/sdDq5ciWZ1G2vdGoeWV6jH88v24IfoeLV9f9+meH5IWzjrWKRNREREVFkMFuSQzmXl44Fvdqi6Chedk5pKdmx3Bj0iIiKiq8VgQQ7nSGIm7vlqG06n5sLHw0UtetenRaDWzSIiIiKyaQwW5FD+PpKMhxfsRGZ+ERr7e2H+3d3QIriO1s0iIiIisnkMFuQwFmw+hRk/7YPeYES38Hr4311d4e/NdUKIiIiIqgODBdk9CRKv/XoA8/89obZviwrDrJEd4e7irHXTiIiIiOwGgwXZtaz8IkxZtAtrD5pWNn96UCs8cn0LODlx5iciIiKi6sRgQXYrPi0X9361HQfOZsDdRYd374jATZ1CtW4WERERkV1isCC7tPt0Gu77ejuSM/MRWMcNn03oiqjG9bRuFhEREZHdYrAgu7Mq5iye+C4aeYUGtA7xwed3d0XDel5aN4uIiIjIrjFYkN0wGo34aP0xvP3bIbXdr3UQ5o6Ngo+Hq9ZNIyIiIrJ7DBZkFwqKDJi2Igbf7zijtu/uHY4XhrWFi7NO66YREREROQQGC7J557ML8J8FO7D1RCp0TsCM4e0xsXe41s0iIiIicigMFmTTjidn4Z4vt+HkuRzUcXfB3HFRuL51sNbNIiIiInI4DBZkszYdO4cHF+xAem4hwup6Yv7d3dC6vo/WzSIiIiJySAwWZJO+23Za1VQUGYyIbFRXTScb5OOudbOIiIiIHBaDBdkUg8GIN387iP/9dVxt39SpAd65PQIers5aN42IiIjIoTFYkM3IKSjCE0ui8du+RLX92A0t8PiAVtBJxTYRERERaYrBgmxCYkYe7vtqO2Li0uHmrMObozri1qiGWjeLiIiIiC5gsCCrtzcuXYWKhIw8+Hu74X93dUG3cH+tm0VEREREFhgsyKr9sT8Rjy3ehZwCPZoHeauZn5oEeGvdLCIiIiIqhcGCrJLRaMTn/5zAaysPwGgE+rQIwEfju8DP01XrphERERFRORgsyOoU6g148cd9WLQ1Vm2P7d4YL9/SHq7OOq2bRkRERESXwGBBVue1Xw+oUOHkBPx3aFvce01TOMkGEREREVktBguyKmv2J+LLjSfV9XnjOmNoxwZaN4mIiIiIKoBjS8hqnE3PxTPf71bX7+/blKGCiIiIyIYwWJBV0BuMeHxxNNJyCtExzA/PDG6jdZOIiIiIqBIYLMgqzPvzKLacSIW3mzM+GBsFNxcemkRERES2hGdvpLltJ1Mx54/D6vorIzqgaSDXqSAiIiKyNQwWpKn0nEJMWbQLBiNwW1QYbuvcUOsmEREREdFVYLAgTRfBe27ZHsSn5yE8wAsvj+igdZOIiIiI6CoxWJBmFm6Nxep9CXB1dsLcsZ1Rx52zHxMRERHZKgYL0sShhEy8/PN+df25G9ugY0M/rZtERERERFXAYEG1LrdAj0cX7UR+kQHXtQrCPX2aat0kIiIiIqoiBguqda/+uh+HE7MQWMcd794RAZ3OSesmEREREVEVMVhQrVoVcxbfbolV198bHaHCBRERERHZPgYLqjVxablqFijx4HXN0bdlkNZNIiIiIqJqwmBBtaJIb1DrVWTkFSGiUV08NaiV1k0iIiIiomrEYEG14oO1R7D91Hn4uLtg7pgouDrz0CMiIiKyJzy7oxq36dg5zP3zqLr+6q0d0DjAS+smEREREVE1Y7CgGnU+uwBPLImG0Qjc3qUhbokM07pJRERERFQDGCyoxhiNRjzz/R4kZOShWZA3Zt7SXusmEREREVENYbCgGvP1plP440Ai3Jx1mDs2Cl5uLlo3iYiIiIhqCIMF1Yj98Rl4beUBdX3q0DZoH+qndZOIiIiIqAYxWFC1yykowqOLdqKgyID+bYJxd+9wrZtERERERDWMwYKq3cyf9uNYcjZCfN3x9u0RcHJy0rpJRERERFTDGCyoWv28Ox5Ltp+GZIn3RkfC39tN6yYRERERUS1gsKBqczo1B9OWx6jrj/Rrgd7NA7VuEhERERE5UrCYN28ewsPD4eHhgR49emDr1q2XvO+XX36phtZYXuRxpK1CvQGPLd6FzPwidGlSD48PaKl1k4iIiIjIkYLFkiVL8OSTT2LGjBnYuXMnIiIiMHjwYCQlJV3yMb6+vjh79mzx5dSpU7XaZirrvTWHsSs2DT4eLnh/TCRcnDU/tIiIiIioFml+9jd79mzcf//9mDRpEtq1a4dPPvkEXl5emD9//iUfI70U9evXL76EhITUapuppH+PpuDjv46p62+O7ISG9by0bhIREREROVKwKCgowI4dOzBgwICLDdLp1PamTZsu+bisrCw0adIEjRo1wi233IJ9+/bVUouptHNZ+Xh8STSMRmBs98YY2rGB1k0iIiIiIg1ouhRySkoK9Hp9mR4H2T548GC5j2ndurXqzejUqRPS09PxzjvvoHfv3ipcNGzYsMz98/Pz1cUsIyND/SwsLFQXLZhfV6vXry4GgxFPfheN5Mx8tAjyxtTBLW3+d7IV9nIMkXZ4DFF14HFEVcVjyPpV5rNxMhrlu2ZtxMfHIywsDBs3bkSvXr2K9z/77LP466+/sGXLlgr9sm3btsXYsWPxyiuvlLn9pZdewsyZM8vsX7hwoRpyRVdv/VknrDjpDFcnI57sqEeot9YtIiIiIqLqlJOTg3Hjxqkv9KXO2Wp7LAIDA+Hs7IzExMQS+2VbaicqwtXVFVFRUTh69Gi5t0+dOlUVh1v2WMgQqkGDBl3xzakpEobWrFmDgQMHqvbbon3xGfhlqwQ/I/57UzuM795I6yY5FHs4hkhbPIaoOvA4oqriMWT9zKN9KkLTYOHm5oYuXbpg7dq1GDFihNpnMBjU9uTJkyv0HDKUKiYmBkOHDi33dnd3d3UpTQ5erQ9ga2jD1cjKL8ITS2NQqDdicPsQTOzdlKtra8RWjyGyHjyGqDrwOKKq4jFkvSrzuWgaLIT0JkycOBFdu3ZF9+7dMWfOHGRnZ6tZosSECRPUcKlZs2ap7Zdffhk9e/ZEixYtkJaWhrfffltNN3vfffdp/Js4jhk/7sOJlGw08PNQs0AxVBARERGR5sFi9OjRSE5OxosvvoiEhARERkZi9erVxQXdsbGxaqYos/Pnz6vpaeW+9erVUz0eUqMhU9VSzfthVxyW7TwDnRPw/pgo1PVy07pJRERERGQFNA8WQoY9XWro0/r160tsv/fee+pCte/UuWz8d0WMuv5Y/5bo3tRf6yYRERERkZXQfIE8sg0FRQY8umgXsgv0KlA8ekNLrZtERERERFaEwYIq5J3fD2HPmXT4ebpizuhIOMtYKCIiIiKiCxgs6Ir+OpyMTzccV9ffGtUJoXU9tW4SEREREVkZBgu6rKTMPDz1XbS6flfPJhjcvmLrixARERGRY2GwoEsyGIx46rvdSMkqQJv6PvjvsLZaN4mIiIiIrBSDBV3SZ38fx99HUuDhqsPcsVHwcHXWuklEREREZKUYLKhc0afT8PZvh9T1GcPbo2WIj9ZNIiIiIiIrxmBBZWTmFeKxRbtQZDBiWMcGGNOtkdZNIiIiIiIrx2BBJRiNRrzww17EpuYgrK4nXr+tI5ycOLUsEREREV0egwWVsGxnHH6MjlfrVHwwNlKtW0FEREREdCUMFlTseHIWXvxxr7r+xICW6NLEX+smEREREZGNYLAgJb9Ij0cX7UJOgR69mgXgoX4ttG4SEREREdkQBgtS3lx1CPviM1DPyxVzxkSqoVBERERERBXFYEFYdzAR8/89oa6/c3sEQnw9tG4SEREREdkYBgsHl5iRh6eX7lHXJ/UJR/+2IVo3iYiIiIhsEIOFA9MbjHhiSTRSswvQroEvnh/SRusmEREREZGNYrBwYJ/8dQwbj52Dl5sz5o6LgruLs9ZNIiIiIiIbxWDhoHacOo/Zaw6r6zNvbo/mQXW0bhIRERER2TAGCweUnluIxxbtUkOhbo4IxaguDbVuEhERERHZOAYLB2M0GjFteQzi0nLRyN8Tr93aAU5OnFqWiIiIiKqGwcLBLNl2Gr/GnIWLzglzx3aGj4er1k0iIiIiIjvAYOFAjiZl4qWf96nrTw9ujchGdbVuEhERERHZCQYLB5FXqMfkhbuQV2hA35aBeKBvM62bRERERER2hMHCQby+8gAOJmQisI4b3r0jAjod6yqIiIiIqPowWDiA3/cl4OtNp9T1d26PQLCPh9ZNIiIiIiI7w2Bh586m5+LZZXvU9fv7NkW/1sFaN4mIiIiI7BCDhR2TdSqmLI5GWk4hOob54ZnBbbRuEhERERHZKQYLO/bhuqPYeiIV3m7OmDs2Cm4u/LiJiIiIqGbwTNNObTuZivfXHlbXX721A8IDvbVuEhERERHZMQYLO5SWU4Api3bBYARu6xyGW6Maat0kIiIiIrJzDBZ2xmg04rllexCfnofwAC+8fEsHrZtERERERA6AwcLOfLslFr/tS4SrsxPmju2MOu4uWjeJiIiIiBwAg4UdOZSQiVd+2a+uP3djG3Rs6Kd1k4iIiIjIQTBY2IncAj0eXbQT+UUG9GsdhHv6NNW6SURERETkQBgs7MQrv+7H4cQsBPm4q9W1dTonrZtERERERA6EwcIOrIo5i4VbYuHkBLx3RyQC67hr3SQiIiIicjAMFjbuzPkcNQuUePC65rimZaDWTSIiIiIiB8RgYcOK9AY8vjgaGXlFiGxUF08ObKV1k4iIiIjIQTFY2LAP1h7B9lPn4ePugrljo+DqzI+TiIiIiLTBM1EbtenYOcz986i6/vptHdHI30vrJhERERGRA2OwsEGp2QV4fMkuGI3AHV0bYnhEqNZNIiIiIiIHx2BhY4xGI579fjcSM/LRLMgbL93cXusmERERERExWNiarzaexB8HkuDmrFN1FV5uLlo3iYiIiIiIwcKW7I/PwOsrD6rr04a2QftQP62bRERERESkMFjYiJyCIkxetBMFegMGtA3GxN7hWjeJiIiIiKgYg4WNmPnTfhxPzkaIrzveGhUBJ1lmm4iIiIjISjBY2ICfd8djyfbTkCwxZ3QU/L3dtG4SEREREVEJDBZW7nRqDqYtj1HXJ1/fAr2aB2jdJCIiIiKiMhgsrFih3oBHF+1CZn4RujSphyn9W2rdJCIiIiKicjFYWLHZaw4j+nQafD1c8P6YSLg48+MiIiIiIuvEM1Ur9c+RFHzy1zF1/c2RndCwnpfWTSIiIiIiuiQGCyuUkpWPJ76LhtEIjOvRGEM6NtC6SUREREREl8VgYWUMBiOeXrobyZn5aBVSB9OHtdO6SUREREREV8RgYWXm/3sC6w8lw91Fh7ljO8PTzVnrJhERERERXRGDhRWJOZOON1cfVNdfuKkdWtf30bpJREREREQVwmBhJbLyi/Doop0o1BsxuH0I7uzRWOsmERERERFVGIOFlXjxx704eS4HoX4eahYoJ1lmm4iIiIjIRjBYWIEVu85g+c446JyAOWOiUNfLTesmERERERFVCoOFxk6mZOOFFXvV9Sn9W6F7U3+tm0REREREVGkMFhoqKDLgscW7kF2gV4Fi8g0ttG4SEREREdFVYbDQ0Ow/jmDPmXTU9XLF+2Mi4SxjoYiIiIiIbJCL1g1wVAfOO+Hzg6fU9bdGdkIDP0+tm0REREREdNXYY6EBWVV7wTHTWz+hVxMMal9f6yYREREREVUJg0UtMxiMeGbZXmQVOqF1SB1MG9pW6yYREREREVUZg0Ut+/dYCv49dg6uOiPm3NEJHq7OWjeJiIiIiKjKGCxqWd+WQfh4XCRGNzOgRXAdrZtDRERERFQtWLytgQFtg1Fwwqh1M4iIiIiIqg17LIiIiIiIqMoYLIiIiIiIqMoYLIiIiIiIqMoYLIiIiIiIqMoYLIiIiIiIqMoYLIiIiIiIqMoYLIiIiIiIqMoYLIiIiIiIyD6Cxbx58xAeHg4PDw/06NEDW7durdDjFi9eDCcnJ4wYMaLG20hERERERFYcLJYsWYInn3wSM2bMwM6dOxEREYHBgwcjKSnpso87efIknn76afTt27fW2kpERERERFYaLGbPno37778fkyZNQrt27fDJJ5/Ay8sL8+fPv+Rj9Ho9xo8fj5kzZ6JZs2a12l4iIiIiIrKyYFFQUIAdO3ZgwIABFxuk06ntTZs2XfJxL7/8MoKDg3HvvffWUkuJiIiIiOhyXKChlJQU1fsQEhJSYr9sHzx4sNzH/PPPP/j8888RHR1dodfIz89XF7OMjAz1s7CwUF20YH5drV6fbB+PIaoqHkNUHXgcUVXxGLJ+lflsNA0WlZWZmYm77roLn332GQIDAyv0mFmzZqkhU6X9/vvvasiVltasWaPp65Pt4zFEVcVjiKoDjyOqKh5D1isnJ8c2goWEA2dnZyQmJpbYL9v169cvc/9jx46pou3hw4cX7zMYDOqni4sLDh06hObNm5d4zNSpU1VxuGWPRaNGjTBo0CD4+vpCq+Qnf0ADBw6Eq6urJm0g28ZjiKqKxxBVBx5HVFU8hqyfebSP1QcLNzc3dOnSBWvXri2eMlaCgmxPnjy5zP3btGmDmJiYEvteeOEF1ZPx/vvvq8BQmru7u7qYGY1G9TM3N1ezA1j+iCT9SRuKioo0aQPZNh5DVFU8hqg68DiiquIxZP3ks7E8h7bqoVDSmzBx4kR07doV3bt3x5w5c5Cdna1miRITJkxAWFiYGtIk61x06NChxOPr1q2rfpbefykSQkR5IYSIiIiIiMo/h/bz84NVB4vRo0cjOTkZL774IhISEhAZGYnVq1cXF3THxsaqmaKqS2hoKE6fPg0fHx+1uJ4WzMOxpB1aDcci28ZjiKqKxxBVBx5HVFU8hqyf9FRIqJBz6CtxMlakX4Oq/Y9IEl96ejr/iOiq8BiiquIxRNWBxxFVFY8h+6L5AnlERERERGT7GCyIiIiIiKjKGCw0ILNUzZgxo8RsVUSVwWOIqorHEFUHHkdUVTyG7AtrLIiIiIiIqMrYY0FERERERFXGYEFERERERFXGYEFERERERFXGYFHL5s2bh/DwcLWKeI8ePbB161atm0Q2RFag79atm1rgMTg4GCNGjMChQ4e0bhbZsDfeeEMtFvr4449r3RSyIXFxcbjzzjsREBAAT09PdOzYEdu3b9e6WWQj9Ho9pk+fjqZNm6rjp3nz5njllVfUQmxk2xgsatGSJUvw5JNPqtkPdu7ciYiICAwePBhJSUlaN41sxF9//YVHHnkEmzdvxpo1a1BYWIhBgwYhOztb66aRDdq2bRv+97//oVOnTlo3hWzI+fPn0adPH7i6umLVqlXYv38/3n33XdSrV0/rppGNePPNN/Hxxx/jww8/xIEDB9T2W2+9hblz52rdNKoizgpVi6SHQr5tlj8kYTAY1DL2jz76KJ5//nmtm0c2KDk5WfVcSOC49tprtW4O2ZCsrCx07twZH330EV599VVERkZizpw5WjeLbID8f/Xvv//i77//1ropZKNuuukmhISE4PPPPy/eN3LkSNV7sWDBAk3bRlXDHotaUlBQgB07dmDAgAHF+3Q6ndretGmTpm0j25Wenq5++vv7a90UsjHS8zVs2LAS/yYRVcRPP/2Erl274vbbb1dfbERFReGzzz7TullkQ3r37o21a9fi8OHDanv37t34559/MGTIEK2bRlXkUtUnoIpJSUlRYwoloVuS7YMHD2rWLrJd0uMl4+JlSEKHDh20bg7ZkMWLF6vhmDIUiqiyjh8/roaxyNDeadOmqePoscceg5ubGyZOnKh188hGer0yMjLQpk0bODs7q/Oj1157DePHj9e6aVRFDBZENvyN8969e9W3PEQVdfr0aUyZMkXV6MgkEkRX86WG9Fi8/vrralt6LOTfok8++YTBgirku+++w7fffouFCxeiffv2iI6OVl+UhYaG8hiycQwWtSQwMFCl8sTExBL7Zbt+/fqatYts0+TJk/HLL79gw4YNaNiwodbNIRsiQzJlwgiprzCTbwvlWJL6r/z8fPVvFdGlNGjQAO3atSuxr23btli2bJlmbSLb8swzz6heizFjxqhtmVXs1KlTauZDBgvbxhqLWiJdxF26dFFjCi2/9ZHtXr16ado2sh0y14KEihUrVmDdunVqqj6iyujfvz9iYmLUN4Tmi3z7LEMQ5DpDBV2JDL8sPc21jJVv0qSJZm0i25KTk6PqTC3Jvz1yXkS2jT0WtUjGo0oSl//Eu3fvrmZgkWlCJ02apHXTyIaGP0nX8Y8//qjWskhISFD7/fz81GwaRFcix03pmhxvb2+1HgFrdaginnjiCVV8K0Oh7rjjDrUe06effqouRBUxfPhwVVPRuHFjNRRq165dmD17Nu655x6tm0ZVxOlma5kMNXj77bfVCaFM7/jBBx+oaWiJKkIWMivPF198gbvvvrvW20P2oV+/fpxulipFhmJOnToVR44cUT2n8sXZ/fffr3WzyEZkZmaqBfKk912GZkptxdixY/Hiiy+qER5kuxgsiIiIiIioylhjQUREREREVcZgQUREREREVcZgQUREREREVcZgQUREREREVcZgQUREREREVcZgQUREREREVcZgQUREREREVcZgQUREREREVcZgQURENr8i/Q8//KB1M4iIHB6DBRERXbW7775bndiXvtx4441aN42IiGqZS22/IBER2RcJEV988UWJfe7u7pq1h4iItMEeCyIiqhIJEfXr1y9xqVevnrpNei8+/vhjDBkyBJ6enmjWrBm+//77Eo+PiYnBDTfcoG4PCAjAAw88gKysrBL3mT9/Ptq3b69eq0GDBpg8eXKJ21NSUnDrrbfCy8sLLVu2xE8//VQLvzkREVlisCAioho1ffp0jBw5Ert378b48eMxZswYHDhwQN2WnZ2NwYMHqyCybds2LF26FH/88UeJ4CDB5JFHHlGBQ0KIhIYWLVqUeI2ZM2fijjvuwJ49ezB06FD1OqmpqbX+uxIROTIno9Fo1LoRRERkuzUWCxYsgIeHR4n906ZNUxfpsXjwwQdVODDr2bMnOnfujI8++gifffYZnnvuOZw+fRre3t7q9pUrV2L48OGIj49HSEgIwsLCMGnSJLz66qvltkFe44UXXsArr7xSHFbq1KmDVatWsdaDiKgWscaCiIiq5Prrry8RHIS/v3/x9V69epW4Tbajo6PVdem5iIiIKA4Vok+fPjAYDDh06JAKDRIw+vfvf9k2dOrUqfi6PJevry+SkpKq/LsREVHFMVgQEVGVyIl86aFJ1UXqLirC1dW1xLYEEgknRERUe1hjQURENWrz5s1lttu2bauuy0+pvZDhS2b//vsvdDodWrduDR8fH4SHh2Pt2rW13m4iIqoc9lgQEVGV5OfnIyEhocQ+FxcXBAYGqutSkN21a1dcc801+Pbbb7F161Z8/vnn6jYpsp4xYwYmTpyIl156CcnJyXj00Udx1113qfoKIfulTiM4OFjNLpWZmanCh9yPiIisB4MFERFVyerVq9UUsJakt+HgwYPFMzYtXrwYDz/8sLrfokWL0K5dO3WbTA/722+/YcqUKejWrZvalhmkZs+eXfxcEjry8vLw3nvv4emnn1aBZdSoUbX8WxIR0ZVwVigiIqoxUuuwYsUKjBgxQuumEBFRDWONBRERERERVRmDBRERERERVRlrLIiIqMZwtC0RkeNgjwUREREREVUZgwUREREREVUZgwUREREREVUZgwUREREREVUZgwUREREREVUZgwUREREREVUZgwUREREREVUZgwUREREREVUZgwUREREREaGq/h8i61GD8nZSFQAAAABJRU5ErkJggg==",
325
- "text/plain": [
326
- "<Figure size 800x500 with 1 Axes>"
327
- ]
328
- },
329
- "metadata": {},
330
- "output_type": "display_data"
331
- }
332
- ],
333
- "source": [
334
- "# Plot accuracy\n",
335
- "plt.figure(figsize=(8, 5))\n",
336
- "plt.plot(train_accuracies, label='Train Accuracy')\n",
337
- "plt.plot(val_accuracies, label='Validation Accuracy')\n",
338
- "plt.xlabel('Epoch')\n",
339
- "plt.ylabel('Accuracy')\n",
340
- "plt.title('Training vs. Validation Accuracy')\n",
341
- "plt.legend()\n",
342
- "plt.grid(True)\n",
343
- "plt.tight_layout()\n",
344
- "plt.show()"
345
- ]
346
- },
347
- {
348
- "cell_type": "code",
349
- "execution_count": null,
350
- "id": "b6df79f8",
351
- "metadata": {},
352
- "outputs": [
353
- {
354
- "name": "stdout",
355
- "output_type": "stream",
356
- "text": [
357
- "\n",
358
- "Classification Report:\n",
359
- " precision recall f1-score support\n",
360
- "\n",
361
- "Eucalyptus_globulus 0.69 0.76 0.72 29\n",
362
- " Pinus_pinaster 0.97 0.84 0.90 44\n",
363
- " Quercus_suber 0.84 0.89 0.86 46\n",
364
- "\n",
365
- " accuracy 0.84 119\n",
366
- " macro avg 0.83 0.83 0.83 119\n",
367
- " weighted avg 0.85 0.84 0.84 119\n",
368
- "\n"
369
- ]
370
- },
371
- {
372
- "data": {
373
- "image/png": "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2QmZPAAAELe8GM7kEeQBAIC45cVwnzzKtQAAADGITB4AAIhbHuVaAACA2ONRrgUAAEB2QiYPAADELY9yLQAAQOzxIlBuzZohHuVaAACAmESQBwAA4laC50VkSYsRI0bY6aefboUKFbLSpUtbx44dbdWqVSGPadGiRaCU7F969uyZtmNL06MBAABicHStl84lLebNm2e33367LV682GbNmmWHDh2yNm3a2N69e0Me16NHD9u8eXNgeeyxx9K0H/rkAQAAZKJPPvkk5PakSZNcRm/p0qV23nnnBdbnz5/fypYte8L7IZMHAADilpekJHqiiyQmJoYsBw4cCKsNu3btcv8WL148ZP2UKVOsZMmSVr9+fRs0aJDt27cvTcdGJg8AAMStBO/fJb3bkIoVK4asHzJkiD344IPHfe7Ro0ftzjvvtLPPPtsFc35XX321Va5c2cqXL2/fffedDRw40PXbe/vtt8NuF0EeAABABGzYsMEKFy4cuJ0nT55Un6O+ed9//719+eWXIetvueWWwM8NGjSwcuXKWcuWLW3NmjVWvXr1sNpDkAcAAOKXF4HJjP/3dAV4wUFeanr16mUffPCBzZ8/3ypUqHDcxzZt2tT9u3r1aoI8AACArHjtWp/PZ71797YZM2bY3LlzrWrVqqk+Z/ny5e5fZfTCRZAHAACQiVSinTp1qr377rturrwtW7a49UWKFLF8+fK5kqzuv+iii6xEiRKuT17fvn3dyNuGDRuGvR+CPAAAELe8//2X3m2kxfjx4wMTHgebOHGiXX/99ZY7d26bPXu2PfXUU27uPA3o6NKli91///1p2g9BHgAAiFsJERxdm5Zy7fEoqNOEyenFPHkAAAAxiEweAACIW17QZMbp2UZWRJAHAADilheF0bWZhXItAABADAork/fee++FvcFLL700Pe0BAADINAme55b0biPbBnkdO3YMuyZ95MiR9LYJAAAgU3gxXK4NK8jTxXMBAACQfaRr4MX+/fstb968kWsNAABAJvJieHRtmgdeqBz70EMP2UknnWQFCxa0tWvXuvUPPPCATZgwISPaCAAAkKHlWi+dS0wEecOHD7dJkybZY4895i674Ve/fn178cUXI90+AAAAZEaQN3nyZHv++eftmmuusRw5cgTWN2rUyH7++ecTaQMAAEBUR9cmpHPJitLcJ++PP/6wGjVqJDs449ChQ5FqFwAAQIbz/rekdxsxkcmrW7euffHFF8esnz59up166qmRahcAAAAyM5M3ePBg6969u8voKXv39ttv26pVq1wZ94MPPkhPWwAAADKVx+ja/9ehQwd7//33bfbs2VagQAEX9P30009uXevWrTOmlQAAABkgwYvMEjPz5J177rk2a9asyLcGAAAA0Z0M+ZtvvnEZPH8/vSZNmkSmRQAAAJnEi+FybZqDvI0bN9pVV11lCxYssKJFi7p1O3futLPOOsumTZtmFSpUyIh2AgAAZAgva8Zomd8n7+abb3ZTpSiL99dff7lFP2sQhu4DAABANszkzZs3zxYuXGi1a9cOrNPPY8eOdX31AAAAsguPcu3/q1ixYrKTHuuatuXLl49UuwAAADJcQgRGx2bV0bVpLtc+/vjj1rt3bzfwwk8/9+nTx/773/9Gun0AAADIqExesWLFQlKRe/futaZNm1rOnP8+/fDhw+7nG2+80Tp27Hgi7QAAAMh0XryXa5966qmMbwkAAEAmi+Vr14YV5OkyZgAAAIiDyZBl//79dvDgwZB1hQsXTm+bAAAAMkWC57klvduIiYEX6o/Xq1cvK126tLt2rfrrBS8AAADZhedFZomJIO/uu++2zz77zMaPH2958uSxF1980YYOHeqmT5k8eXLGtBIAAAAZW659//33XTDXokULu+GGG9wEyDVq1LDKlSvblClT7JprrknrJgEAAKLCi+HRtWnO5OkyZtWqVQv0v9NtOeecc2z+/PmRbyEAAEAG8WK4XJvmTJ4CvHXr1lmlSpWsTp069sYbb9gZZ5zhMnxFixa1eHL99dfbzp077Z133rHsYO7cuXb++efb33//HXevVax6evJMe+aVWSHrqlYsZR++NDBqbULk3Niuod3YroFVLPPvgLaf1/9lj0/7ymYv/c0qli5s3024MdnnXT/yQ3t3wa+Z3FpE2thXZtnH876z1b9vs7x5ctlpDarYvf9pbzUqlYl205BNpDnIU4l2xYoV1rx5c7vnnnusffv29vTTT7tLnT355JMWi4Hcyy+/7H7OlSuXC267detm9957r40ePdp8Pp9lF2eddZZt3rzZihQpkmn7rFKlit15551uQcaoUaWMTXj01sDtnDlyRLU9iJxNf+62oS8vsDWbdrpMwVUt69qU+9pb8zun2C8b/7ba1z0f8vjuFzaw3p2auCAQ2d/iZWuse+dz7JQ6lezwkaM28vkP7eq+z9rcV++x/PnyRLt5MSMhhkfXpjnI69u3b+DnVq1a2c8//2xLly51/fIaNmxosejCCy+0iRMn2oEDB+yjjz6y22+/3QV8gwYNsuwkd+7cVrZsWcuONFWP2o9j5UjIYaWKM3VRLPpkybqQ2w+/stBl906rXc5l9bbt3Bdy/yVnVrd3vvzF9u4/9vriyH6mPNkz5PZT915tDdvfb9+t2mhnnlI9au2KNV4Eyq1ZNMZLe5+8pDTgonPnzjEb4IlGESs40rH+5z//ccHte++957J8wZdx02CUO+64w41ALl68uHvOgw8+GLj/t99+c50zly9fHlincq/WqZQqKqVq8EqpUqUsX758VrNmTRdgpsa/7WnTprmMXd68ea1+/fo2b968wGO0Dz1G+5RJkya5su3MmTPt5JNPtoIFC7qAVtk+vyVLlljr1q2tZMmSLgOoDO63334buF+ZTB2jMpw6TxplrXPgPx+///67+8MgacfWL7/80g3a0TFWrFjRPUfT8wRnAB966CGXNVXfz1tuuSWNr1r8WL9puzW/cpi1ue4Ru2vEFNu07e9oNwkZICHBs87n1rL8eXPakp///3fUr1H10taweml7ddYPUWkfMl7i3n/cv0UL5492U5BNhJXJGzNmTNgb9H/BxzIFJjt27Ej2PpV2+/XrZ1999ZUtWrTIBYJnn322C5TC8cADD9iPP/5oH3/8sQusVq9ebf/88+8vdjjuuusudxm6unXruvK5yunqQ1miRIlkH79v3z7773//a6+88oolJCTYtddeawMGDHAjpWX37t3uiidjx451Ad0TTzxhF110kf36669WqFAhe+utt2zUqFEuuKxXr55t2bLFlfPl7bfftkaNGrkArUePHoF9rlmzxgWTDz/8sL300ku2fft2N/eiluCAVu0aPHiwDRkyJMXjVXZVi19iYqLFk4Z1KtnwAV1dP7ztO3bbM69+atf1HWfvvTDACuTPG+3mIQLqVi5hMx+/0vLmzml7/zlk1w3/wFZt+HfAW7Dr2tSzn9fvsK+TCQCR/R09etSGjJlhpzeoanWqlYt2c2KKF8Oja8MK8vQlHu5BxnKQpyBnzpw5LvPVu3dvF5wkpYymPyhRFk79FfWccIO89evX26mnnmqnnXZaIKOVFgqUunTp4n7W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ZdIU/CpYVgY/JRo0ofeiBkHoM0DnU3+AKGjOyN9xtU/BnfajLLK6MGj7/ueF+3uoferqDPqM0O+YMon+zy2dP50XjZZWu7RPDdDQ58qHH36Y5tcKERaBfn1AplOHYb19ky7qFC0//vijr1mzZq5D9CmnnOL79NNPQzrBy4oVK3xt2rTx5c+f33WKPvfcc31r1qxx93377be+0047zZc3b15fzZo1fW+++eYxHc2T66S9e/dut73bbrvtmDbr+UOHDvVdfvnl7jFly5b1jR49OuQx7733nq9GjRq+nDlzusf7DR482HXmVifwvn37+nr16hXoHK1jbdu2ra9UqVJu4IA6y48dOzas86gO/NpW4cKF3cARdahW+7p27ZriAIi//vrLd91117m26Pxq3xqQ4adO1rrvrbfe8lWrVs21qVWrVq6DdrDjHVNy+1XHbr1eGmCj1+Sjjz4K6RT//PPPu9da9+t41PFbr2NKkut0ntJ9Sdsiul+P80vtPffQQw+5zuq6v3jx4u75a9eu9YU78GLq1Km+M844w5c7d25f3bp1fZ999lngMckNvNC5Cab3avBHfmrvcT2+adOm7lzqnJ555pm+2bNnB56/aNEiN7hIr2/wdr/++mtf69atfQULFnTP02M0IOp4AzYyg86jf1CE53muzZ07d/bt3bs37PeYbN682detWzdfyZIl3bHrPd6jRw/frl27jvu+0qCJLl26uPOp33+de/9ApIz6Hd+yZYsb5FKuXDn3vtG51340yCac/Yp+1udZz549A58T9957b8hADA3O0XaqVKniy5Url9tfp06dfN99912K70dkDk//i3TgCMQrzZelvkcqgaq0E0yZD81BlZUvEaQ+ZvorX/3Z1LcNWeM9pcl7lV3SoA1EhrJWyv6qr5uysEAs4ooXQASob5/6pqlEpy+MpAFeVuUv4WgeLZWzVKpSuSW4EzkQi9S3TX94qX+ZuhFw9QXEIt7VQASon42mqFAG79lnn7WsInhKg6SL+hTpi019rzTdiTp1q1O9rgKQng79SBv1tUrpNdKIXGScG264wWXWs3OAl9rvOOIb5VoghqmTf0o0WCKcwSTIWBpxmdKoS70+ep2AlPA7juMhyAMAAIhB2TdHDQAAgBQR5AEAAMQggjwAAIAYRJAHAAAQgwjyACCD6HJuupSVX4sWLaIyGbYuvaVL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",
374
- "text/plain": [
375
- "<Figure size 640x480 with 2 Axes>"
376
- ]
377
- },
378
- "metadata": {},
379
- "output_type": "display_data"
380
- }
381
- ],
382
- "source": [
383
- "# Confusion matrix and per-class report\n",
384
- "y_true = []\n",
385
- "y_pred = []\n",
386
- "\n",
387
- "model.eval()\n",
388
- "with torch.no_grad():\n",
389
- " for images, labels in test_loader:\n",
390
- " images = images.to(device)\n",
391
- " outputs = model(images)\n",
392
- " _, predicted = torch.max(outputs, 1)\n",
393
- " y_true.extend(labels.numpy())\n",
394
- " y_pred.extend(predicted.cpu().numpy())\n",
395
- "\n",
396
- "print(\"\\nClassification Report:\")\n",
397
- "print(classification_report(y_true, y_pred, target_names=label_encoder.classes_))\n",
398
- "\n",
399
- "cm = confusion_matrix(y_true, y_pred)\n",
400
- "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=label_encoder.classes_)\n",
401
- "disp.plot(cmap='Blues')\n",
402
- "plt.title('Confusion Matrix')\n",
403
- "plt.tight_layout()\n",
404
- "plt.show()"
405
- ]
406
- }
407
- ],
408
- "metadata": {
409
- "kernelspec": {
410
- "display_name": "3.12.0",
411
- "language": "python",
412
- "name": "python3"
413
- },
414
- "language_info": {
415
- "codemirror_mode": {
416
- "name": "ipython",
417
- "version": 3
418
- },
419
- "file_extension": ".py",
420
- "mimetype": "text/x-python",
421
- "name": "python",
422
- "nbconvert_exporter": "python",
423
- "pygments_lexer": "ipython3",
424
- "version": "3.12.0"
425
- }
426
- },
427
- "nbformat": 4,
428
- "nbformat_minor": 5
429
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Model_v2.ipynb DELETED
@@ -1,447 +0,0 @@
1
- {
2
- "cells": [
3
- {
4
- "cell_type": "code",
5
- "execution_count": 1,
6
- "id": "ebeb7e8a",
7
- "metadata": {},
8
- "outputs": [],
9
- "source": [
10
- "import os\n",
11
- "from PIL import Image\n",
12
- "from collections import Counter\n",
13
- "from sklearn.model_selection import train_test_split\n",
14
- "from sklearn.preprocessing import LabelEncoder\n",
15
- "from sklearn.utils.class_weight import compute_class_weight\n",
16
- "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay, classification_report\n",
17
- "import torch\n",
18
- "from torch.utils.data import Dataset, DataLoader\n",
19
- "from torchvision import transforms\n",
20
- "import torch.nn as nn\n",
21
- "import torch.nn.functional as F\n",
22
- "import torch.optim as optim\n",
23
- "import matplotlib.pyplot as plt\n",
24
- "import numpy as np"
25
- ]
26
- },
27
- {
28
- "cell_type": "code",
29
- "execution_count": 2,
30
- "id": "6f2b7a68",
31
- "metadata": {},
32
- "outputs": [],
33
- "source": [
34
- "# Config\n",
35
- "image_dir = './data_images'\n",
36
- "img_size = (128, 128)\n",
37
- "classes = ['Pinus_pinaster', 'Eucalyptus_globulus', 'Quercus_suber']\n",
38
- "batch_size = 16\n",
39
- "epochs = 10\n",
40
- "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")"
41
- ]
42
- },
43
- {
44
- "cell_type": "code",
45
- "execution_count": 3,
46
- "id": "83e19fd7",
47
- "metadata": {},
48
- "outputs": [],
49
- "source": [
50
- "# Custom Dataset\n",
51
- "class TreeDataset(Dataset):\n",
52
- " def __init__(self, file_paths, labels, transform=None):\n",
53
- " self.file_paths = file_paths\n",
54
- " self.labels = labels\n",
55
- " self.transform = transform\n",
56
- "\n",
57
- " def __len__(self):\n",
58
- " return len(self.file_paths)\n",
59
- "\n",
60
- " def __getitem__(self, idx):\n",
61
- " image = Image.open(self.file_paths[idx]).convert(\"RGB\")\n",
62
- " if self.transform:\n",
63
- " image = self.transform(image)\n",
64
- " label = self.labels[idx]\n",
65
- " return image, label"
66
- ]
67
- },
68
- {
69
- "cell_type": "code",
70
- "execution_count": 4,
71
- "id": "e51254b8",
72
- "metadata": {},
73
- "outputs": [
74
- {
75
- "name": "stdout",
76
- "output_type": "stream",
77
- "text": [
78
- "Dataset class distribution:\n",
79
- "Eucalyptus_globulus: 146\n",
80
- "Quercus_suber: 230\n",
81
- "Pinus_pinaster: 217\n"
82
- ]
83
- }
84
- ],
85
- "source": [
86
- "# Load file paths and labels\n",
87
- "all_paths = []\n",
88
- "all_labels = []\n",
89
- "\n",
90
- "for filename in os.listdir(image_dir):\n",
91
- " if filename.lower().endswith((\".jpg\", \".jpeg\")):\n",
92
- " label = \"_\".join(filename.split(\"_\")[:2])\n",
93
- " if label in classes:\n",
94
- " path = os.path.join(image_dir, filename)\n",
95
- " all_paths.append(path)\n",
96
- " all_labels.append(label)\n",
97
- "\n",
98
- "# Show dataset distribution\n",
99
- "label_counts = Counter(all_labels)\n",
100
- "print(\"Dataset class distribution:\")\n",
101
- "for k, v in label_counts.items():\n",
102
- " print(f\"{k}: {v}\")"
103
- ]
104
- },
105
- {
106
- "cell_type": "code",
107
- "execution_count": 5,
108
- "id": "3a39c03c",
109
- "metadata": {},
110
- "outputs": [],
111
- "source": [
112
- "# Encode labels\n",
113
- "label_encoder = LabelEncoder()\n",
114
- "labels_encoded = label_encoder.fit_transform(all_labels)\n",
115
- "\n",
116
- "# Compute class weights\n",
117
- "class_weights = compute_class_weight(class_weight='balanced', classes=np.unique(labels_encoded), y=labels_encoded)\n",
118
- "weights_tensor = torch.tensor(class_weights, dtype=torch.float).to(device)"
119
- ]
120
- },
121
- {
122
- "cell_type": "code",
123
- "execution_count": 6,
124
- "id": "ef2f416a",
125
- "metadata": {},
126
- "outputs": [],
127
- "source": [
128
- "# Dataset class\n",
129
- "class TreeDataset(Dataset):\n",
130
- " def __init__(self, file_paths, labels, transform=None):\n",
131
- " self.file_paths = file_paths\n",
132
- " self.labels = labels\n",
133
- " self.transform = transform\n",
134
- "\n",
135
- " def __len__(self):\n",
136
- " return len(self.file_paths)\n",
137
- "\n",
138
- " def __getitem__(self, idx):\n",
139
- " image = Image.open(self.file_paths[idx]).convert(\"RGB\")\n",
140
- " if self.transform:\n",
141
- " image = self.transform(image)\n",
142
- " label = self.labels[idx]\n",
143
- " return image, label"
144
- ]
145
- },
146
- {
147
- "cell_type": "code",
148
- "execution_count": 7,
149
- "id": "62d984bd",
150
- "metadata": {},
151
- "outputs": [],
152
- "source": [
153
- "# Transforms\n",
154
- "train_transform = transforms.Compose([\n",
155
- " transforms.Resize(img_size),\n",
156
- " transforms.RandomHorizontalFlip(),\n",
157
- " transforms.RandomRotation(15),\n",
158
- " transforms.ColorJitter(brightness=0.2, contrast=0.2),\n",
159
- " transforms.ToTensor(),\n",
160
- "])\n",
161
- "\n",
162
- "val_transform = transforms.Compose([\n",
163
- " transforms.Resize(img_size),\n",
164
- " transforms.ToTensor(),\n",
165
- "])"
166
- ]
167
- },
168
- {
169
- "cell_type": "code",
170
- "execution_count": 8,
171
- "id": "84e23857",
172
- "metadata": {},
173
- "outputs": [],
174
- "source": [
175
- "# Split dataset\n",
176
- "X_train, X_test, y_train, y_test = train_test_split(\n",
177
- " all_paths, labels_encoded, test_size=0.2, random_state=42, stratify=labels_encoded\n",
178
- ")\n",
179
- "\n",
180
- "train_dataset = TreeDataset(X_train, y_train, transform=train_transform)\n",
181
- "test_dataset = TreeDataset(X_test, y_test, transform=val_transform)\n",
182
- "\n",
183
- "train_loader = DataLoader(train_dataset, batch_size=batch_size, shuffle=True)\n",
184
- "test_loader = DataLoader(test_dataset, batch_size=batch_size)"
185
- ]
186
- },
187
- {
188
- "cell_type": "code",
189
- "execution_count": 9,
190
- "id": "b261f179",
191
- "metadata": {},
192
- "outputs": [],
193
- "source": [
194
- "class DeeperCNN(nn.Module):\n",
195
- " def __init__(self, num_classes):\n",
196
- " super(DeeperCNN, self).__init__()\n",
197
- " \n",
198
- " self.features = nn.Sequential(\n",
199
- " nn.Conv2d(3, 32, kernel_size=3, padding=1),\n",
200
- " nn.BatchNorm2d(32),\n",
201
- " nn.ReLU(inplace=True),\n",
202
- " nn.Conv2d(32, 32, kernel_size=3, padding=1),\n",
203
- " nn.BatchNorm2d(32),\n",
204
- " nn.ReLU(inplace=True),\n",
205
- " nn.MaxPool2d(2), # 128 → 64\n",
206
- " nn.Dropout(0.25),\n",
207
- "\n",
208
- " nn.Conv2d(32, 64, kernel_size=3, padding=1),\n",
209
- " nn.BatchNorm2d(64),\n",
210
- " nn.ReLU(inplace=True),\n",
211
- " nn.Conv2d(64, 64, kernel_size=3, padding=1),\n",
212
- " nn.BatchNorm2d(64),\n",
213
- " nn.ReLU(inplace=True),\n",
214
- " nn.MaxPool2d(2), # 64 → 32\n",
215
- " nn.Dropout(0.25),\n",
216
- "\n",
217
- " nn.Conv2d(64, 128, kernel_size=3, padding=1),\n",
218
- " nn.BatchNorm2d(128),\n",
219
- " nn.ReLU(inplace=True),\n",
220
- " nn.Conv2d(128, 128, kernel_size=3, padding=1),\n",
221
- " nn.BatchNorm2d(128),\n",
222
- " nn.ReLU(inplace=True),\n",
223
- " nn.Dropout(0.25),\n",
224
- " )\n",
225
- "\n",
226
- " self.classifier = nn.Sequential(\n",
227
- " nn.Flatten(),\n",
228
- " nn.Linear(128 * 32 * 32, 256),\n",
229
- " nn.ReLU(),\n",
230
- " nn.Dropout(0.5),\n",
231
- " nn.Linear(256, num_classes)\n",
232
- " )\n",
233
- "\n",
234
- " def forward(self, x):\n",
235
- " x = self.features(x)\n",
236
- " x = self.classifier(x)\n",
237
- " return x"
238
- ]
239
- },
240
- {
241
- "cell_type": "code",
242
- "execution_count": 10,
243
- "id": "24a29895",
244
- "metadata": {},
245
- "outputs": [],
246
- "source": [
247
- "# Initialize model\n",
248
- "model = DeeperCNN(num_classes=len(classes)).to(device)\n",
249
- "criterion = nn.CrossEntropyLoss(weight=weights_tensor)\n",
250
- "optimizer = optim.Adam(model.parameters(), lr=0.00001)"
251
- ]
252
- },
253
- {
254
- "cell_type": "code",
255
- "execution_count": 11,
256
- "id": "a8dcb931",
257
- "metadata": {},
258
- "outputs": [
259
- {
260
- "name": "stdout",
261
- "output_type": "stream",
262
- "text": [
263
- "Epoch 1/10 - Loss: 35.8074 - Train Acc: 0.35 - Val Acc: 0.24\n",
264
- "Epoch 2/10 - Loss: 31.1636 - Train Acc: 0.46 - Val Acc: 0.54\n",
265
- "Epoch 3/10 - Loss: 28.9828 - Train Acc: 0.54 - Val Acc: 0.45\n",
266
- "Epoch 4/10 - Loss: 29.0580 - Train Acc: 0.52 - Val Acc: 0.45\n",
267
- "Epoch 5/10 - Loss: 27.9740 - Train Acc: 0.57 - Val Acc: 0.46\n",
268
- "Epoch 6/10 - Loss: 27.3448 - Train Acc: 0.59 - Val Acc: 0.47\n",
269
- "Epoch 7/10 - Loss: 25.9506 - Train Acc: 0.60 - Val Acc: 0.54\n",
270
- "Epoch 8/10 - Loss: 26.8151 - Train Acc: 0.59 - Val Acc: 0.55\n",
271
- "Epoch 9/10 - Loss: 26.3785 - Train Acc: 0.60 - Val Acc: 0.55\n",
272
- "Epoch 10/10 - Loss: 25.4659 - Train Acc: 0.60 - Val Acc: 0.62\n"
273
- ]
274
- }
275
- ],
276
- "source": [
277
- "# Training loop with accuracy tracking\n",
278
- "train_accuracies = []\n",
279
- "val_accuracies = []\n",
280
- "\n",
281
- "for epoch in range(epochs):\n",
282
- " model.train()\n",
283
- " running_loss = 0.0\n",
284
- " correct_train = 0\n",
285
- " total_train = 0\n",
286
- "\n",
287
- " for images, labels in train_loader:\n",
288
- " images, labels = images.to(device), labels.to(device)\n",
289
- "\n",
290
- " optimizer.zero_grad()\n",
291
- " outputs = model(images)\n",
292
- " loss = criterion(outputs, labels)\n",
293
- " loss.backward()\n",
294
- " optimizer.step()\n",
295
- "\n",
296
- " _, preds = torch.max(outputs, 1)\n",
297
- " correct_train += (preds == labels).sum().item()\n",
298
- " total_train += labels.size(0)\n",
299
- " running_loss += loss.item()\n",
300
- "\n",
301
- " train_acc = correct_train / total_train\n",
302
- " train_accuracies.append(train_acc)\n",
303
- "\n",
304
- " # Validation\n",
305
- " model.eval()\n",
306
- " correct_val = 0\n",
307
- " total_val = 0\n",
308
- " with torch.no_grad():\n",
309
- " for images, labels in test_loader:\n",
310
- " images, labels = images.to(device), labels.to(device)\n",
311
- " outputs = model(images)\n",
312
- " _, preds = torch.max(outputs, 1)\n",
313
- " correct_val += (preds == labels).sum().item()\n",
314
- " total_val += labels.size(0)\n",
315
- "\n",
316
- " val_acc = correct_val / total_val\n",
317
- " val_accuracies.append(val_acc)\n",
318
- "\n",
319
- " print(f\"Epoch {epoch+1}/{epochs} - Loss: {running_loss:.4f} - Train Acc: {train_acc:.2f} - Val Acc: {val_acc:.2f}\")"
320
- ]
321
- },
322
- {
323
- "cell_type": "code",
324
- "execution_count": 12,
325
- "id": "632a6a27",
326
- "metadata": {},
327
- "outputs": [],
328
- "source": [
329
- "# saving model\n",
330
- "import torch\n",
331
- "torch.save(model, \"model.pth\")"
332
- ]
333
- },
334
- {
335
- "cell_type": "code",
336
- "execution_count": 13,
337
- "id": "f064e892",
338
- "metadata": {},
339
- "outputs": [
340
- {
341
- "data": {
342
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAHqCAYAAACZcdjsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAkTxJREFUeJzt3QWYVNX7B/Dvdu+ywQZLLd0dgoJBY9AlSKiYKNiCCiL8RVERQQT1JyEgXQaSiqCCSHc3LBvANtvzf94zO+tswcbs3onv53nuM33nzMxdOO8973uOnU6n04GIiIiIiKgE7EvyYiIiIiIiIsHAgoiIiIiISoyBBRERERERlRgDCyIiIiIiKjEGFkREREREVGIMLIiIiIiIqMQYWBARERERUYkxsCAiIiIiohJjYEFERERERCXGwIKIbNbw4cNRtWrVYr32/fffh52dncnbZCu2bdumvj+5LOrvceHCBfXa+fPnm7RN8t7SBiIiKh4GFkRkdqTTWJjNuFNKpadRo0aoXLkydDpdgc+59957ERQUhPT0dJizv//+WwWFMTExMEdfffWVOrZbt26tdVOIiIrMsegvISIqXQsXLsxx+/vvv8fmzZvz3F+3bt0Svc+3336LzMzMYr323Xffxdtvvw1bMHjwYPVZd+zYgfbt2+c7grBz506MGjUKjo6OmvweRQksJk6cqEYmypUrl+OxkydPwt5e2/NtixcvViMnu3fvxpkzZ1CjRg1N20NEVBQMLIjI7AwZMiTH7V27dqnAIvf9uSUlJcHd3b3Q7+Pk5FTsNkoHuiSdaEvy+OOPY+zYsfjhhx/yDSyWLFmiRjMkACmJkvwepuDi4qLp+58/f14FPqtXr8azzz6rgowJEybAHCUmJsLDw0PrZhCRmWEqFBFZpAceeAANGjTA3r17VWdXAopx48apx9atW4eHH34YFSpUUJ3F6tWrY9KkScjIyMixj9w5/Ybc/U8//RTffPONep28vmXLlvj333/vWmMht+Ws/dq1a1Xb5LX169fHhg0b8rRf0rhatGgBV1dX9T5ff/11oeo2ZP+enp4qiMpt0KBBCA4Ozv6ce/bsQZcuXRAQEAA3NzeEhYXhySefRFFVqlRJfccrV65EWlpanscl4JDPIOk7Fy9exAsvvIDatWur9/T390e/fv3Ud3s3+dVYSMqS3O/j46NGGIYNG5ZvGtOhQ4fU86pVq6a+U/ke5LPeuHEj+zny/b7xxhvqunwXhpQ6Q9vyq7E4d+6car+fn586xu655x788ssv+daLLF++HP/3f/+HihUrqjZ06NBBjToUlgQSvr6+6tjt27evup0f+fyvvPKKaq8cY/J+Q4cORXR0dPZzkpOT1eetVauWaktISAh69+6Ns2fP5mhz7nTC/OpX5DuRY05e2717d3h5eWUHkTKKJd+PpMpJW+RYkbbdvn07T7tPnDiB/v37o3z58urYkGPknXfeUY/9/vvv6n3XrFmT7/Elj8moGBGZN9s43UZEVkk6jd26dcPAgQPVaIbk+AvpFElH6NVXX1WXv/32G8aPH4+4uDh88sknd92vdGTi4+PVWWPp0EydOlV1yqSTebez6n/++ac64yyda+mAzZgxA3369MGlS5dUJ1vs378fXbt2VZ09ScuRQOCDDz5QHa67GTBgAGbNmqU6t9KhM5BA46efflKdQAcHB0RGRqJz585qn5LGJJ1y6TRK24pDOpLPPPMMNm7ciEceeST7/sOHD+PIkSPq+xUSgMlZd/lNpMMr7zl79mwVCB47dqxII0oyCtKjRw/1nT733HMq9U06nhJc5CYjWvL7jBgxQgUVR48eVcGhXMqIl/yO8hueOnVKjbB8/vnnKuASBX3vERERaNu2rfpuX375ZfX7LViwAI899pgKsnr16pXj+R999JFKpXr99dcRGxurjhv53v75559CfV4JJKSNzs7OKkiU702+TwlsDRISEtCuXTscP35cBU7NmjVTAcWPP/6IK1euqM8kx5P8Rlu3blW/w+jRo9XxLN+R/FYSBBaV1M5IkHrfffepwNvwO65YsUJ9P88//7z6fiSFa+bMmaot8phx4Cftlr8fOY4kKJJARY5ZCcbk+JCgRL6D3N+r3CdtbtOmTZHbTURlTEdEZOZefPFFqRrOcd/999+v7pszZ06e5yclJeW579lnn9W5u7vrkpOTs+8bNmyYrkqVKtm3z58/r/bp7++vu3nzZvb969atU/f/9NNP2fdNmDAhT5vktrOzs+7MmTPZ9x08eFDdP3PmzOz7Hn30UdWWq1evZt93+vRpnaOjY5595paZmakLDQ3V9enTJ8f9y5cvV6/dvn27ur1mzRp1+99//9WZgnwfLi4uukGDBuW4/+2331bvc/LkyQK/+507d6rnfP/9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Od544w01ajFw4EB1W2YUu3jxoprpkIGFZWKNhRmRoePmzZurfEPjs0Fyu02bNpq2jcybzMEgQcWaNWvw22+/qan7iAqjQ4cOOHz4sDpTaNjkDLSkIsh1BhV0J5JymXtqa8mXr1KlimZtIsuRlJSkakmNyb850vchy8QRCzMjeaoSpct/7K1atVKzssiUoSNGjNC6aWTm6U8ylLxu3Tq1lsX169fV/T4+Pmp2DaKCyPGSuxbHw8NDrUnAGh26m1deeUUV4EoqVP/+/dW6S998843aiO7m0UcfVTUVlStXVqlQ+/fvx7Rp0/Dkk09q3TQqJk43a4Yk/eCTTz5RnUOZ8nHGjBlqGlqigsiCZvmZN28ehg8fXubtIcv2wAMPcLpZKjRJvxw7dixOnz6tRkvlBNnIkSO1bhZZgPj4eLVAnoy2S0qm1FYMGjQI48ePV1kcZHkYWBARERERUYmxxoKIiIiIiEqMgQUREREREZUYAwsiIiIiIioxBhZERERERFRiDCyIiIiIiKjEGFgQEREREVGJMbAgIiIiIqISY2BBREREREQlxsCCiIisbiX6tWvXat0MIiKbw8CCiIhMZvjw4apjn3vr2rWr1k0jIqJS5ljab0BERLZFgoh58+bluM/FxUWz9hARUdngiAUREZmUBBHBwcE5Nl9fX/WYjF7Mnj0b3bp1g5ubG6pVq4aVK1fmeP3hw4fx0EMPqcf9/f3xzDPPICEhIcdz5s6di/r166v3CgkJwahRo3I8Hh0djV69esHd3R01a9bEjz/+WAafnIjItjGwICKiMvXee++hT58+OHjwIAYPHoyBAwfi+PHj6rHExER06dJFBSL//vsvVqxYgS1btuQIHCQwefHFF1XAIUGIBA01atTI8R4TJ05E//79cejQIXTv3l29z82bN8v8sxIR2RI7nU6n07oRRERkPTUWixYtgqura477x40bpzYZsXjuuedUcGBwzz33oFmzZvjqq6/w7bff4q233sLly5fh4eGhHl+/fj0effRRXLt2DUFBQQgNDcWIESMwefLkfNsg7/Huu+9i0qRJ2cGKp6cnfv31V9Z6EBGVItZYEBGRST344IM5Agfh5+eXfb1NmzY5HpPbBw4cUNdl5KJx48bZQYW49957kZmZiZMnT6qgQQKMDh063LENjRo1yr4u+/L29kZkZGSJPxsRERWMgQUREZmUdORzpyaZitRdFIaTk1OO2xKQSHBCRESlhzUWRERUpnbt2pXndt26ddV1uZTaC0lfMvjrr79gb2+P2rVrw8vLC1WrVsXWrVvLvN1ERHRnHLEgIiKTSklJwfXr13Pc5+joiICAAHVdCrJbtGiB++67D4sXL8bu3bvx3XffqcekyHrChAkYNmwY3n//fURFReGll17CE088oeorhNwvdRqBgYFqdqn4+HgVfMjziIhIOwwsiIjIpDZs2KCmgDUmow0nTpzInrFp6dKleOGFF9TzlixZgnr16qnHZHrYjRs3YvTo0WjZsqW6LTNITZs2LXtfEnQkJyfj888/x+uvv64Clr59+5bxpyQiotw4KxQREZUZqXVYs2YNevbsqXVTiIjIxFhjQUREREREJcbAgoiIiIiISow1FkREVGaYfUtEZL04YkFERERERCXGwIKIiIiIiEqMgQUREREREZUYAwsiIiIiIioxBhZERERERFRiDCyIiIiIiKjEGFgQEREREVGJMbAgIiIiIqISY2BBREREREQoqf8HOr7v7WAD+d0AAAAASUVORK5CYII=",
343
- "text/plain": [
344
- "<Figure size 800x500 with 1 Axes>"
345
- ]
346
- },
347
- "metadata": {},
348
- "output_type": "display_data"
349
- }
350
- ],
351
- "source": [
352
- "# Plot accuracy\n",
353
- "plt.figure(figsize=(8, 5))\n",
354
- "plt.plot(train_accuracies, label='Train Accuracy')\n",
355
- "plt.plot(val_accuracies, label='Validation Accuracy')\n",
356
- "plt.xlabel('Epoch')\n",
357
- "plt.ylabel('Accuracy')\n",
358
- "plt.title('Training vs. Validation Accuracy')\n",
359
- "plt.legend()\n",
360
- "plt.grid(True)\n",
361
- "plt.tight_layout()\n",
362
- "plt.show()"
363
- ]
364
- },
365
- {
366
- "cell_type": "code",
367
- "execution_count": 14,
368
- "id": "b6df79f8",
369
- "metadata": {},
370
- "outputs": [
371
- {
372
- "name": "stdout",
373
- "output_type": "stream",
374
- "text": [
375
- "\n",
376
- "Classification Report:\n",
377
- " precision recall f1-score support\n",
378
- "\n",
379
- "Eucalyptus_globulus 0.45 0.62 0.52 29\n",
380
- " Pinus_pinaster 0.65 0.80 0.71 44\n",
381
- " Quercus_suber 0.84 0.46 0.59 46\n",
382
- "\n",
383
- " accuracy 0.62 119\n",
384
- " macro avg 0.65 0.62 0.61 119\n",
385
- " weighted avg 0.67 0.62 0.62 119\n",
386
- "\n"
387
- ]
388
- },
389
- {
390
- "data": {
391
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnkAAAHKCAYAAAB/v13nAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXBtJREFUeJzt3Qm8VPP/x/HPuaV93/d914IiKYo2IaUsWUOWEIlEKGX5RSGE7GULWSJLpaKSFklFJG20r9r3Zf6P97f/jJnbvd253bl37p15PT2O28ycOed7zp0785nP5/v9Hs/n8/kMAAAAMSUh2g0AAABA5BHkAQAAxCCCPAAAgBhEkAcAABCDCPIAAABiEEEeAABADCLIAwAAiEEEeQAAADGIIA8AACAGEeQBQBiWLFlibdq0sYIFC5rnefb5559HdPt///232+7IkSMjut2srEWLFm4BcGII8gBkGcuWLbNbb73VqlSpYrly5bICBQpY06ZN7fnnn7e9e/em6767du1qv/32mz3xxBP27rvvWqNGjSxWXH/99S7A1PlM6jwqwNXjWp5++ulUb3/t2rU2YMAAmz9/foRaDCAc2cNaCwCi7Ouvv7bLLrvMcubMadddd53VrVvXDhw4YNOnT7f77rvPfv/9d3vttdfSZd8KfGbOnGkPPfSQ9ejRI132UbFiRbefk046yaIhe/bstmfPHvvyyy/t8ssvD3ns/fffd0H1vn37TmjbCvIGDhxolSpVslNOOSXs53377bcntD8ARxHkAcj0VqxYYV26dHGB0HfffWelS5cOPHbHHXfY0qVLXRCYXjZt2uR+FipUKN32oSyZAqloUfCsrOgHH3xwTJA3atQou/DCC+3TTz/NkLYo2MyTJ4/lyJEjQ/YHxCrKtQAyvcGDB9uuXbvszTffDAnw/KpVq2Y9e/YM3D506JA99thjVrVqVRe8KIP04IMP2v79+0Oep/svuugilw0844wzXJClUvA777wTWEdlRgWXooyhgjE9z1/m9P87mJ6j9YJNnDjRmjVr5gLFfPnyWc2aNV2bUuqTp6D27LPPtrx587rndujQwRYtWpTk/hTsqk1aT30Hb7jhBhcwheuqq66ycePG2bZt2wL3zZkzx5Vr9Vhi//77r/Xu3dvq1avnjknl3nbt2tmCBQsC60yZMsVOP/1092+1x1/29R+n+twpKzt37lw755xzXHDnPy+J++SpZK7fUeLjb9u2rRUuXNhlDAH8hyAPQKanEqKCr7POOius9W+66Sbr37+/nXbaaTZ06FBr3ry5DRo0yGUDE1NgdOmll1rr1q3tmWeeccGCAiWVf6VTp05uG3LllVe6/njPPfdcqtqvbSmYVJD56KOPuv1cfPHF9uOPPx73eZMmTXIBzMaNG10gd88999iMGTNcxk1BYWLKwO3cudMdq/6tQEpl0nDpWBWAffbZZyFZvFq1arlzmdjy5cvdABQd27PPPuuCYPVb1Pn2B1y1a9d2xyy33HKLO39aFND5bdmyxQWHKuXq3J577rlJtk99L4sXL+6CvcOHD7v7Xn31VVfWHTZsmJUpUybsYwXigg8AMrHt27f79FbVoUOHsNafP3++W/+mm24Kub93797u/u+++y5wX8WKFd1906ZNC9y3ceNGX86cOX333ntv4L4VK1a49YYMGRKyza5du7ptJPbII4+49f2GDh3qbm/atCnZdvv3MWLEiMB9p5xyiq9EiRK+LVu2BO5bsGCBLyEhwXfdddcds78bb7wxZJuXXHKJr2jRosnuM/g48ubN6/596aWX+lq2bOn+ffjwYV+pUqV8AwcOTPIc7Nu3z62T+Dh0/h599NHAfXPmzDnm2PyaN2/uHnvllVeSfExLsAkTJrj1H3/8cd/y5ct9+fLl83Xs2DHFYwTiEZk8AJnajh073M/8+fOHtf4333zjfirrFezee+91PxP33atTp44rh/opU6RSqrJUkeLvy/fFF1/YkSNHwnrOunXr3GhUZRWLFCkSuL9+/fou6+g/zmDdu3cPua3jUpbMfw7DobKsSqzr1693pWL9TKpUKyqFJyQc/RhRZk378peif/nll7D3qe2olBsOTWOjEdbKDirzqPKtsnkAjkWQByBTUz8vURkyHP/8848LPNRPL1ipUqVcsKXHg1WoUOGYbahku3XrVouUK664wpVYVUYuWbKkKxuPHj36uAGfv50KmBJTCXTz5s22e/fu4x6LjkNScywXXHCBC6g/+ugjN6pW/ekSn0s/tV+l7OrVq7tArVixYi5I/vXXX2379u1h77Ns2bKpGmShaVwU+CoIfuGFF6xEiRJhPxeIJwR5ADJ9kKe+VgsXLkzV8xIPfEhOtmzZkrzf5/Od8D78/cX8cufObdOmTXN97K699loXBCnw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iEweAACIWx7lWgAAgNjjUa4FAABAVkImDwAAxC2Pci0AAEDs8SJQbs2cIR7lWgAAgJhEJg8AAMStBM9zS1q3kRkR5AEAgLjlMboWAAAAWQmZPAAAELc8RtcCAADEngTv6JLWbWRGlGsBAABiEJk8AAAQv7wIlFszaSaPIA8AAMQtj9G1AAAAyErI5AEAgLjl/f9/ad1GZkSQBwAA4lYCo2sBAACQlZDJAwAAcctjMmQAAIDY4zG6FgAAAFlJWJm8sWPHhr3Biy++OC3tAQAAyDAJnueWtG4jywZ5HTt2DLsmffjw4bS2CQAAIEN4MVyuDSvIO3LkSPq3BAAAAJlj4MW+ffssV65ckWsNAABABvJieHRtqgdeqBz72GOPWdmyZS1fvny2fPlyd3+/fv3szTffTI82AgAApGu51kvjEhNB3hNPPGEjR460wYMHW44cOQL3161b1954441Itw8AAAAZEeS988479tprr9nVV19t2bJlC9zfoEED+/PPP0+kDQAAAFEdXZuQxiUzSnWfvDVr1li1atWSHJxx8ODBSLULAAAg3Xn/v6R1GzGRyatTp4798MMPx9z/ySef2KmnnhqpdgEAACAjM3n9+/e3rl27uoyesnefffaZLV682JVxv/rqq7S0BQAAIEN5jK79T4cOHezLL7+0SZMmWd68eV3Qt2jRIndf69at06eVAAAA6SDBi8ySGoMGDbLTTz/d8ufPbyVKlHAXnVDCLPE0dXfccYcVLVrUzWbSuXNn27BhQ+qOzU7A2WefbRMnTrSNGzfanj17bPr06damTZsT2RQAAEBcmTp1qgvgZs2a5eIpjWlQHLV79+7AOr169XIJtI8//titv3btWuvUqVPGTIb8888/uwyev59ew4YNT3RTAAAAcVOuHT9+fMhtTU2njN7cuXPtnHPOse3bt7u5h0eNGmXnnXeeW2fEiBFWu3ZtFxieeeaZ6RPkrV692q688kr78ccfrVChQu6+bdu22VlnnWUffvihlStXLrWbBAAAiBovQl3qduzYEXI7Z86cbkmJgjopUqSI+6lgT9m9Vq1aBdapVauWVahQwWbOnBl2kJfqcu1NN93kdqws3r///usW/VuDMPQYAABAPCpfvrwVLFgwsKjvXUoUP919993WtGlTd2EJWb9+vbvghD+Z5leyZEn3WLhSnclTXXjGjBlWs2bNwH3697Bhw1xfPQAAgHgs165atcoKFCgQuD+cLJ765i1cuNCNb4i07CcSpSY16bGuaVumTJlItQsAACDdJZzA6NiktiEK8IKDvJT06NHDTT83bdq0kO5upUqVsgMHDrjucMHZPI2u1WNht8tSaciQIXbnnXe6gRd++nfPnj3t6aefTu3mAAAA4orP53MB3pgxY+y7776zypUrhzyuwawnnXSSTZ48OXCfplhZuXKlNWnSJLKZvMKFC4ekMjXEt3HjxpY9+9GnHzp0yP37xhtvdHO9AAAAZAVeFEbXqkSrkbNffPGFmyvP389O/fhy587tfnbr1s3uueceNxhD2UEl2BTghTvoIuwg77nnnktV4wEAALKCaFy7dvjw4e5nixYtQu7XNCnXX3+9+/fQoUMtISHBTYK8f/9+a9u2rb388sup2k9YQZ4uYwYAAIDIlGtTkitXLnvppZfccqJOeDJk/yU31DEwWGo6HAIAAERTgue5Ja3byIxSPfBC/fHUWVAzM+vateqvF7wAAABkFZ4XmSUmgrw+ffq4kSCqJ2v+lzfeeMMGDhzopk9555130qeVAAAASN9yrS6Wq2BOnQVvuOEGNwFytWrVrGLFivb+++/b1VdfndpNAgAAxM3o2kybydNlzKpUqRLof6fb0qxZMzeZHwAAQFbhxXC5NtWZPAV4K1ascBfJ1cVyR48ebWeccYbL8CW+xlqs0zBnzUb9+eefW1YwZcoUO/fcc23r1q1x97uKVe26DrK1G7cec/8VFzWxB++4JCptQuTc2LmZ3dj5bCtf+uhFy/9cvt6GvDnOJs34w93+8pWe1qxh9ZDnjPh0ut3z5IdRaS8i69kRE+yr7xfYkn82WK6cJ9kZ9avYgB4drHqlktFuGrKIVAd5KtEuWLDAmjdvbg888IC1b9/eXnzxRXeps2effdZiMZB7++233b81+7SC2+uuu84efPBBe/7558MaBp1ZnHXWWbZu3To3yWJGqVSpkrvwshZE3vvP32lHjvz3Glz6z3q79cHXrfXZ9aPaLkTG2o3bbOCLX9iyVZtcOejKCxvb+0/fYs2vedIFfDJyzI826NWvAs/Zu+/Yy04ia5rxy1K76bJz7NQ6Fe3Q4cP22MtfWqc7X7RZox+2vLlTviYqwhPLo2tTHeT16tUr8O9WrVrZn3/+aXPnznX98urXj80PlvPPP99NUKjJCL/55hs3U7UCvr59+1pWkiNHjlRd8y4z0VQ9aj9CFSmUL+T2W6O/t/Kli1qjeke7VCBrG//DwpDbjw//0mX3GtWtHAjy9u47YBu37IxSC5GePhl2R8jtlx+5xqq36WvzF62ypqdVi1q7Yo0XgXJrJo3xUt8nLzENuOjUqVPMBniiUcQKjnSst912mwtux44d67J8wZdx02CUu+66y41A1mVI9JwBAwYEHv/777/dt/H58+cH7lO5V/eplCoqpWrwSvHixd2lTapXr+4CzJT4t/3hhx+6jJ0mUaxbt65NnTo1sI72oXW0Txk5cqQr206YMMFq165t+fLlcwGtsn1+c+bMsdatW1uxYsVcBlAZ3F9++SXwuDKZOkZlOHWeNMpa58B/Pv755x/3xSBxx9bp06e7QTs6xvLly7vnaHqe4AzgY4895rKm6vt5yy23pPK3Fn8OHjxkX3//i3Vsc3qm7QSME5eQ4Fmn1g0tT+4cNue3FYH7Lzu/kS2d+KTN+PBB63/HxZY750lRbSfSz45d+9zPwgXyRLspyCLCyuS98MILYW/Q/wEfyxSYbNmyJcnHVNrVteZmz55tM2fOdIFg06ZNXaAUjn79+tkff/xh48aNc4HV0qVLbe/evWG37b777nOXoatTp44rn6ucrj6URYsWTXL9PXv22NNPP23vvvuuu3zKNddcY71793YjpWXnzp3uiifDhg1zAd0zzzxjF1xwgS1ZssRdb+/TTz91l15RcHnyySe76++pnC+fffaZNWjQwAVoN998c2Cfy5Ytc8Hk448/bm+99ZZt2rTJzb2oJTigVbv69+9vjzzySLLHq+yqFr8dO3ZYvPpu5u+2c9c+u7h1w2g3BRFUp2oZm/DWvZYrR3bbvXe/XXvf67Z4xdEs3icTfrZV6/619Zu228nVy9gjPTpYtYol7Lo+b0S72YiwI0eOWN9nP7HGDapYnWplot2cmOLF8OjasII8fYiHe5CxHOQpyJk8ebLLfOlCwQpOElNG0x+UKAun/op6TrhB3sqVK+3UU0+1Ro0aBTJaqaFASde5E81lOH78eHvzzTdddjEp6kv5yiuvWNWqVQPPf/TRRwOPn3feeSHrv/baay77pwzhRRdd5NqrjKWym/4+ixqII8pmZsuWzQWDwWXiQYMGuWylv5+ezpO+SChLqDYrC+nf97333nvc49W2NE8jzMZMmGNNG9W0EkUzrs8l0p863Z9z9SArkC+3dWh5qr084Fq76NbnXaD39pgfA+v9sWytrd+8w8YOv8sqlS1mf6/ZHNV2I7J6Dx5ti5ats3Gv/9dlCpEraSZEYBuZUVjtUiYonGX58uUWi7766itXylTw0a5dO7viiitCyrDBEpetS5cubRs3bgx7XyoHKyt2yimnuMBsxowZqWprkyZNAv/Onj27CxYXLVqU7Pp58uQJBHhJtXfDhg0uC6dATOValU537drlgju57LLLXKZRo6613pgxY+zQoUPHbaMyfSoV65z6F114Wd9U9Try8we6x6N+kdu3bw8sq1atsni0dsNWmz1/iXU6/2iAjdhx8NBhW7F6sy34c5U9+tJYW7hkjXXvEnpRc7+5C/92P6uUL57BrUR6um/waJvww0L7cvhdVrYkV5ZCBl27Nl5o2hFlmNTxX33OFDwlR9msxNlNBS+icqgEj8hVJi2Ygkj1Y9MAj4kTJ1rLli3dQA+VLtNDUu0Nbp9KtSpNaySx+iSq350CSf81i9WfbvHixTZp0iTX3ttvv92GDBniMn2Jt+2nIPHWW29NMuurTKCfLpuXErVHS7z7YuIcK1Iwn519Rq1oNwXpTKP4cuRI+j2oXo1y7ueGzdszuFVID3ov7jPkY/t6ygI3XU7FssWi3aSY5MVwuTazZhgzFQUbGj2sAOR4AV5KNJhCggc2BA/CCF5PwdV7773n+tepRBquWbNmBf6tjJpGPmtQxYn68ccfXTCmfnjqc6eAavPmzcf0UVTfP5VcNbhDfRF/++0395gC48OHD4esf9ppp7l+hzqniRdG0KaevkR8MfFna9+qoWXPli3azUEEaSDFWadWdfPkqW+ebmtevI/H/exKsr27nW8NapV3j7c7p54NH3it/fjLEvt96dpoNx0R0Pup0TZ63Bx7/bHrLV+eXLZh8w63aEQ1Isfz9OUpbUsmjfHI5GUkBUNnnnmmPfnkk1a5cmVXFn344YdD1tFAg4YNG7qASgMKVCpOTZD20ksvudKqnqO+lBqte+ONN55wm7UtDcpQ6VSDGjSwQ8fhp7KrgrjGjRu70q8CUz2urJ+/T6GuhNKlSxcXIGowyf333+/Og/r/3XTTTS6IVtCnTKD6MCJ1Zs1baus2bnOjahFbihXOZ8MHXGclixVwIyt/X7rGOt/5sk356U8rW7KQtTijpt3W5Vw34nbNhq325Xfz7em3JkS72YiQtz79wf28qPvzIfe/1P8au6r9mVFqFbISgrwMptGk3bp1c4FczZo1bfDgwdamTZvA48pkqZ+ZpkRRsKRpRtRHL1wKILUoQ6jMmKZ6UWB1ojRoQ6NjlX1TafZ///ufG33rp0EY2p9GFCvYq1evnrv6iX80rwZxqDSrfn8KWlV+UL9FlXMfeughd3y6T4+rryNS76yGNWzBuMHRbgbSwV2Pj0r2sTUbtrkBGIhdW+fwpTcjJPx/Ni6t28iMPF9WumQDkqWgUNnBefPmuUEb8UrZRg0QmfvXOsuXv0C0m4MM0KBd0iPHEbsIfuLrPb1k0YJuYJ0G/qXH58UdH/5sOfOETiyfWvv37LKXujRKl3ZmeJ+8H374wc2npg74a9ascfeppKcJbgEAAJAFgzxNfqvpLlRKVNbIPxGtoleV8pA+dG6DpxwJXjQiFwAApF5CBAZeZNZybar75OkqBZo8V5ebCu4rpqs66DGkj+7du9vll1+e5GMKuMuWLRsy9QkAAIjva9emOsjTnGjnnHPOMferru2/JioiT1eP0AIAAJAu5VpdnkrXU01M/fF01QMAAICsNMF4QgSWmAjydOmqnj172uzZs90Mz2vXrnUXs9e0GrokFwAAQFa7dm1CGpeYKNc+8MADboZ9XW5rz549rnSrSW4V5N15553p00oAAACkb5Cn7J0msdWVD1S21XVI69Sp40Z5AgAAZCUeAy+OpSszKLgDAADIqhIs7X3qtI2YCPLOPfdcl81LznfffZfWNgEAACCjg7zEl8w6ePCgu07qwoULrWvXrmltDwAAQIbxKNf+Z+jQoUneP2DAANc/DwAAIKtIiMAVKzLrFS8iNupX17J96623IrU5AAAARGPgRWIzZ860XLlyRWpzAAAA6c5zmby0peJiplzbqVOnkNu6Xuq6devs559/tn79+kWybQAAAOnKo09e6DVqgyUkJFjNmjXt0UcftTZt2kSybQAAAMiIIO/w4cN2ww03WL169axw4cInuk8AAIBMIYGBF0dly5bNZeu2bduWfi0CAADIIF6E/ouJ0bV169a15cuXp09rAAAAEJ0g7/HHH7fevXvbV1995QZc7NixI2QBAADIauXahDQuWbpPngZW3HvvvXbBBRe42xdffHHI5c00yla31W8PAAAgK0iI4T55YQd5AwcOtO7du9v333+fvi0CAABAxgV5ytRJ8+bN075XAACATMDzvJDK5IluI8tPoZJZDwIAAOBEJFCuPapGjRopBnr//vtvWtsEAACAjAzy1C8v8RUvAAAAsiqPy5od1aVLFytRokT6tQYAACADJXieW9K6jSw9Tx798QAAAGJ4dC0AAECsSGDghdmRI0fStyUAAAAZzYtAnzovRi5rBgAAgLSZNm2atW/f3sqUKeO6xH3++echj19//fWBOfz8y/nnn59+Ay8AAABiSYJ5bknrNlJr9+7d1qBBA7vxxhutU6dOSa6joG7EiBGB2zlz5kzVPgjyAABA3PKiNIVKu3bt3HI8CupKlSp1wu2iXAsAABABO3bsCFn279+fpu1NmTLFTV1Xs2ZNu+2222zLli2pej5BHgAAsHgfXZuQxkXKly/vLhrhXwYNGnTC7VKp9p133rHJkyfbU089ZVOnTnWZv8OHD4e9Dcq1AAAgbiVEcDLkVatWWYECBU64D13iC1D41atXz+rXr29Vq1Z12b2WLVuG164T3jsAAAACFOAFL2kJ8hKrUqWKFStWzJYuXRr2c8jkAQCAuOVlkWvXrl692vXJK126dNjPIcgDAADxPYWKl/FTqOzatSskK7dixQqbP3++FSlSxC0DBw60zp07u9G1y5Ytsz59+li1atWsbdu2Ye+DIA8AACCD/fzzz3buuecGbt9zzz3uZ9euXW348OH266+/2ttvv23btm1zEya3adPGHnvssVSVgAnyAABA3PKiVK5t0aKF+Xy+ZB+fMGFC2hpFkAcAAOJZQgRGoWbWUayZtV0AAABIAzJ5AAAgbnme55a0biMzIsgDAABxy/v/Ja3byIwo1wIAAMQgMnkAACBuJUTwsmaZDUEeAACIa57FJsq1AAAAMYhMHgAAiFteFrl27YkgyAMAAHHLi+EpVCjXAgAAxCAyeQAAIG4lxPBlzQjyAABA3PIo1wIAACArIZOHmDT1n02WO+++aDcDGeD7jx+PdhOQwa56e260m4AMcnDvrnTfhxfDlzUjyAMAAHHLo1wLAACArIRMHgAAiFsJjK4FAACIPR7lWgAAAGQlZPIAAEDc8hhdCwAAEHs87+iS1m1kRpRrAQAAYhCZPAAAELcSzHNLWreRGRHkAQCAuOVRrgUAAEBWQiYPAADELe///0vrNjIjgjwAABC3PMq1AAAAyErI5AEAgLjlRWB0LeVaAACATMajXAsAAICshEweAACIW14MZ/II8gAAQNzyYngKFcq1AAAAMYhMHgAAiFsJ3tElrdvIjAjyAABA3PIo1wIAACArIZMHAADilsfoWgAAgNjjRaDcmkljPMq1AAAAsYhMHgAAiFsJjK4FAACIPR6jawEAAJCVkMkDAABxy2N0LQAAQKyOrk2bTBrjUa4FAACIRQR5AAAgbiWYZwleGpcTyOVNmzbN2rdvb2XKlDHP8+zzzz8Pedzn81n//v2tdOnSljt3bmvVqpUtWbIklccGAAAQ5+VaL41Lau3evdsaNGhgL730UpKPDx482F544QV75ZVXbPbs2ZY3b15r27at7du3L+x90CcPAAAgg7Vr184tSVEW77nnnrOHH37YOnTo4O575513rGTJki7j16VLl7D2QSYPAADELy9yqbwdO3aELPv37z+hJq1YscLWr1/vSrR+BQsWtMaNG9vMmTPD3g5BHgAAsHifDNlL439Svnx5F4z5l0GDBp1QmxTgiTJ3wXTb/1g4KNcCAABEwKpVq6xAgQKB2zlz5rRoIpMHAADil/ffhMgnuvjLtQrwgpcTDfJKlSrlfm7YsCHkft32PxYOgjwAABC3vCiNrj2eypUru2Bu8uTJgfvUx0+jbJs0aRL2dijXAgAAZLBdu3bZ0qVLQwZbzJ8/34oUKWIVKlSwu+++2x5//HGrXr26C/r69evn5tTr2LFj2PsgyAMAAPHLi851zX7++Wc799xzA7fvuece97Nr1642cuRI69Onj5tL75ZbbrFt27ZZs2bNbPz48ZYrV66w90GQBwAA4pYXNDo2LdtIrRYtWrj58JLdpufZo48+6pYTRZ88AACAGEQmDwAAxC3PP0I2jdvIjAjyAABA3PKi0yUvQ1CuBQAAiEFk8gAAQPzyYjeVR5AHAADilhel0bUZgXItAABADCKTBwAA4pbH6FoAAIDY48VulzzKtQAAALGITB4AAIhfXuym8gjyAABA3PIYXQsAAICshEwekIUsW7LKvps4x1av2mA7tu+2G2/pYPVOqR54fNQ742zOrN9DnlOrTiW7tcelUWgt0mrBHyvso7HT7a/la23L1p322H1XWbMz6gQe9/l8NuKjyfb15J9t1+59VrdWBet188VWrnSxqLYbJ+biuqXs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xyUDAABkUvv27bMDBw5EZFsK8HLlymWZCUEeAABADGLgBQAAQAwiyAMAAIhBBHnACdJky59//rnFuhYtWtjdd98d9vojR460QoUKZfh+I+n666+3jh07WlYxZcoU93rctm1btJuCGBPNv0OkHUEesiR9COtDLfFy/vnnW1YWL4FjZnsNqcN0tWrV7NFHH7VDhw7Z888/74LVrOKss86ydevWZehlnypVqmTPPfecZRW6UsSNN97orpyg33fFihWtZ8+etmXLlmg3DUg3TKGCLEsB3YgRI0LuY3oBnMhraP/+/fbNN9/YHXfcYSeddJL17dvXsuJUEFmRRjam97QTy5cvtyZNmliNGjXsgw8+sMqVK9vvv/9u9913n40bN85mzZplRYoUybLHl9UcPnzYfbnSFYqQvjjDyLIU0OmDLXgpXLiw/f333+4NZP78+YF1VcbSfSpr+elN/qKLLnKXCNK1bs8++2xbtmyZe2zOnDnWunVrK1asmMuONG/e3H755Zdk23LeeedZjx49Qu7btGmTe3OfPHlyIPPx2GOP2ZVXXml58+a1smXL2ksvvRRYX4/LJZdc4trqv51U6VDlE5VR/D755BOrV6+e5c6d24oWLWqtWrWy3bt3p3gOlbW66667XHlVz7v//vuta9euxy1Vbt261a677jp3rvPkyWPt2rWzJUuWHLOeMpLVq1d3Uwq0bdvWZVL8wjmmcLKcarc/46YPU/0OSpcu7fapTM2gQYPCeg1p3dtuu82dt7Fjxx7TPrVL56lPnz4uGNBzBgwYEHg8nNecztvVV19txYsXd78nnZvEX1KS4t/2hx9+6DJ2Ora6deva1KlTky3X+kvmEyZMsNq1a1u+fPlcQKtsn19Kr3FNvKBjrFChgjtPyoDpHPjPxz///GO9evUKZEP9pk+f7v6WdIy61qqeE/xa9P8d6DWkv71bbrnF0puCd/0tfvvtt+44dUx63U6aNMnWrFljDz30UFivMdHr+PLLL3f367XQoUMH9zvy8792nnjiCXfOatas6e5fvXq1+9vXc/T336hRI5s9e3bIc9Ljb1yvjTPOOMPtU21u2rSp+92Fu1//+4T+tvQ60eulX79+7vXhpy9JvXv3du9p2k/jxo1D3mv9r0f9bdWpU8e9nlauXJli25F2BHmIS3pjP+ecc9ybzXfffWdz5851pRy9mYkuiK1gRx9Y+pavD+QLLrjA3Z+Um266yUaNGuXe7Pzee+8996anANBvyJAh1qBBA5s3b5498MADrlw0ceLEwIeu6INfH8b+2ynRuvrwUPsXLVrk3lw7deoU8iacnKeeesref/99t88ff/zRXQQ9pXKxPhh+/vln94Y9c+ZMtx+dm4MHDwbW2bNnj/uQe+edd9x2FXx06dLF0tMLL7zg2jR69GhbvHixOy5/oBwufYAmN2fW22+/7T7A9ME8ePBgV9r1/+7CoQ/GP/74w2WO9HsaPny4+8AMl7JO9957r3vtKCvVvn3745Ya9Tt4+umn7d1337Vp06a5D1V9EPul9Br/9NNPbejQofbqq6+6IF6vCwUZ8tlnn7lrROsc6PXnDx71JUnBZOfOne3XX3+1jz76yG0/8Rcgtcv/d6Dzkp7+/fdfF+zefvvt7vcbTMG6Am+1M5y/F73G9YVFXwp/+OEH99r2B9DBrxt9sdNrUK+Pr776ynbt2uWCS73v6DW6YMEC94XhyJEj6fo3rvczBXHat34f+ntVUB0clIdDr/3s2bPbTz/95LoyPPvss/bGG28EHtfvV9vWFxHt57LLLnPnJPjLn16Per/R8/QFu0SJEqlqA06Q5skDspquXbv6smXL5subN2/I8sQTT/hWrFihdz7fvHnzAutv3brV3ff999+723379vVVrlzZd+DAgbD2d/jwYV/+/Pl9X375ZeA+bW/MmDHu33v37vUVLlzY99FHHwUer1+/vm/AgAGB2xUrVvSdf/75Idu94oorfO3atUtym8HH2qFDh5D7evbs6WvevLn799y5c93z/v77b19qlSxZ0jdkyJDA7UOHDvkqVKgQsj/tR/uTv/76y+3rxx9/DDy+efNmX+7cuX2jR492t0eMGOHWmTVrVmCdRYsWuftmz54d1jEl3m9y56ZgwYJuf3LnnXf6zjvvPN+RI0fCOvbgNug5EydO9OXMmdPXu3fvY9qntjRr1izk+aeffrrv/vvvd/8O5zXXvn173w033OBLLf+2n3zyycB9Bw8e9JUrV8731FNPudvah9bRPoN/B0uXLg0856WXXnK/73Bf488884yvRo0ayf6N6PU8dOjQkPu6devmu+WWW0Lu++GHH3wJCQnub8T/vI4dO/oyil6HSb12/J599ln3+IYNG1J8jb377ru+mjVrhrzG9u/f717/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BUzaroKmTz/91K2jdqxbt86ef/55d1sB3jvvvOMun/f7779br1697JprrrGpU6cGgtFOnTpZ+/btXV+3m266yR544IFUnxMdq47njz/+cPt+/fXXbejQocdcbWH06NH25Zdf2vjx423evHl2++23Bx5///33rX///i5g1vHpEm4KFt9+++1UtwfACdAVLwAgXnTt2tXXoUMH9+8jR474Jk6c6MuZM6evd+/egcdLlizp279/f+A57777rq9mzZpufT89njt3bt+ECRPc7dKlS/sGDx4cePzgwYO+cuXKBfYlzZs39/Xs2dP9e/HixUrzuf0n5fvvv3ePb926NXDfvn37fHny5PHNmDEjZN1u3br5rrzySvfvvn37+urUqRPy+P3333/MthLT42PGjEn28SFDhvgaNmwYuP3II4/4smXL5lu9enXgvnHjxvkSEhJ869atc7erVq3qGzVqVMh2HnvsMV+TJk3cv1esWOH2O2/evGT3C+DE0ScPQNxRdk4ZM2XoVP686qqr3GhRv3r16oX0w1uwYIHLWim7FWzfvn22bNkyV6JUtq1x48aBx7Jnz26NGjU6pmTrpyxbtmzZrHnz5mG3W23Ys2ePtW7dOuR+ZRNPPfVU929lzILbIU2aNLHU+uijj1yGUce3a9cuNzClQIECIetUqFAh5Nq62o/Op7KPOld6brdu3ezmm28OrKPtFCxYMNXtAZB6BHkA4o76qQ0fPtwFcup3p4AsWN68eUNuK8hp2LChKz8mVrx48RNqw4lcOF7tkK+//jokuBL16YuUmTNn2tVXX20DBw50ZWoFZR9++KErSae2rSrzJg46FdwCSH8EeQDijoI4DXII12mnneYyWyVKlDgmm+VXunRpmz17tp1zzjmBjNXcuXPdc5OibKGyXupLp4EfifkziRrQ4VenTh0XzK1cuTLZDKAGOfgHkfjNmjXLUmPGjBluUMpDDz0UuO+ff/45Zj21Y+3atS5Q9u8nISHBDVYpWbKku3/58uUuYASQ8Rh4AQApUJBSrFgxN6JWAy9WrFjh5rG76667bPXq1W6dnj172pNPPukmFP7zzz/dAITjzXFXqVIl69q1q914443uOf5taiCDKMjSqFqVljdt2uQyYyqB9u7d2w220OAFlUN/+eUXGzZsWGAwQ/fu3W3JkiV23333ubLpqFGj3ACK1KhevboL4JS90z5Utk1qEIlGzOoYVM7WedH50AhbjVwWZQI1UETP/+uvv+y3335zU9c8++yzqWoPgBNDkAcAKdD0INOmTXN90DRyVdky9TVTnzx/Zu/ee++1a6+91gU96pumgOySSy457nZVMr700ktdQKjpRdR3bffu3e4xlWMVJGlkrLJiPXr0cPdrMmWNUFXwpHZohK/Kt5pSRdRGjcxV4KjpVTQKV6NaU+Piiy92gaT2qataKLOnfSambKjOxwUXXGBt2rSx+vXrh0yRopG9mkJFgZ0yl8o+KuD0txVA+vI0+iKd9wEAAIAMRiYPAAAgBhHkAQAAxCCCPAAAgBhEkAcAABCDCPIAAABiEEEeAABADCLIAwAAiEEEeQAAADGIIA8AACAGEeQBAADEIII8AAAAiz3/B278qrv1fArMAAAAAElFTkSuQmCC",
392
- "text/plain": [
393
- "<Figure size 640x480 with 2 Axes>"
394
- ]
395
- },
396
- "metadata": {},
397
- "output_type": "display_data"
398
- }
399
- ],
400
- "source": [
401
- "# Confusion matrix and per-class report\n",
402
- "y_true = []\n",
403
- "y_pred = []\n",
404
- "\n",
405
- "model.eval()\n",
406
- "with torch.no_grad():\n",
407
- " for images, labels in test_loader:\n",
408
- " images = images.to(device)\n",
409
- " outputs = model(images)\n",
410
- " _, predicted = torch.max(outputs, 1)\n",
411
- " y_true.extend(labels.numpy())\n",
412
- " y_pred.extend(predicted.cpu().numpy())\n",
413
- "\n",
414
- "print(\"\\nClassification Report:\")\n",
415
- "print(classification_report(y_true, y_pred, target_names=label_encoder.classes_))\n",
416
- "\n",
417
- "cm = confusion_matrix(y_true, y_pred)\n",
418
- "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=label_encoder.classes_)\n",
419
- "disp.plot(cmap='Blues')\n",
420
- "plt.title('Confusion Matrix')\n",
421
- "plt.tight_layout()\n",
422
- "plt.show()"
423
- ]
424
- }
425
- ],
426
- "metadata": {
427
- "kernelspec": {
428
- "display_name": "3.12.0",
429
- "language": "python",
430
- "name": "python3"
431
- },
432
- "language_info": {
433
- "codemirror_mode": {
434
- "name": "ipython",
435
- "version": 3
436
- },
437
- "file_extension": ".py",
438
- "mimetype": "text/x-python",
439
- "name": "python",
440
- "nbconvert_exporter": "python",
441
- "pygments_lexer": "ipython3",
442
- "version": "3.12.0"
443
- }
444
- },
445
- "nbformat": 4,
446
- "nbformat_minor": 5
447
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app.py CHANGED
@@ -6,8 +6,6 @@ from PIL import Image
6
  import gradio as gr
7
  import os
8
 
9
- # Define the DeeperCNN class here, as it's needed for torch.load to reconstruct the model
10
- # This class definition is extracted from the user's Model_v2.ipynb file
11
  class DeeperCNN(nn.Module):
12
  def __init__(self, num_classes):
13
  super(DeeperCNN, self).__init__()
@@ -19,7 +17,7 @@ class DeeperCNN(nn.Module):
19
  nn.Conv2d(32, 32, kernel_size=3, padding=1),
20
  nn.BatchNorm2d(32),
21
  nn.ReLU(inplace=True),
22
- nn.MaxPool2d(2), # 128 → 64
23
  nn.Dropout(0.25),
24
 
25
  nn.Conv2d(32, 64, kernel_size=3, padding=1),
@@ -28,7 +26,7 @@ class DeeperCNN(nn.Module):
28
  nn.Conv2d(64, 64, kernel_size=3, padding=1),
29
  nn.BatchNorm2d(64),
30
  nn.ReLU(inplace=True),
31
- nn.MaxPool2d(2), # 64 → 32
32
  nn.Dropout(0.25),
33
 
34
  nn.Conv2d(64, 128, kernel_size=3, padding=1),
@@ -56,36 +54,25 @@ class DeeperCNN(nn.Module):
56
  class_names = ["Eucalyptus globulus", "Pinus pinaster", "Quercus suber"]
57
 
58
  model_aliases = {
59
- "model.pth": "GBIF Model (DeeperCNN)",
60
  "resnet_model.pth": "ResNet Model"
61
  }
62
 
63
- # Image transformations
64
  transform = transforms.Compose([
65
  transforms.Resize((128, 128)),
66
  transforms.ToTensor()
67
  ])
68
 
69
- # Global variable for the loaded model
70
  model = None
 
71
 
72
- # Number of classes in your task (still useful for context or other parts of the app)
73
- num_classes = 3
74
-
75
- # Function to load model given a selected model filename
76
  def load_model(selected_model):
77
  global model
78
  model_path = os.path.join("models", selected_model)
79
  model_path = os.path.normpath(model_path)
80
-
81
  try:
82
- # Load the entire model object, explicitly setting weights_only=False.
83
- # This is necessary because the model includes custom class definitions
84
- # (like DeeperCNN) that are now defined in this script.
85
  model = torch.load(model_path, map_location=torch.device("cpu"), weights_only=False)
86
-
87
- model.eval() # Set the loaded model to evaluation mode
88
-
89
  alias = model_aliases.get(selected_model, selected_model)
90
  return f"{alias} loaded successfully."
91
  except FileNotFoundError:
@@ -93,50 +80,64 @@ def load_model(selected_model):
93
  except Exception as e:
94
  return f"Error loading {model_aliases.get(selected_model, selected_model)}: {str(e)}"
95
 
96
- # Prediction function
97
- def predict(image):
98
  if model is None:
99
  return {}, "Please load a model first."
 
 
100
  image = transform(image).unsqueeze(0)
 
101
  with torch.no_grad():
102
  outputs = model(image)
103
  probs = F.softmax(outputs, dim=1)[0]
 
104
  probs_dict = {class_names[i]: float(probs[i]) for i in range(len(class_names))}
105
- max_prob = max(probs_dict.values())
106
- if max_prob < 0.6:
107
- final_label = "Unknown"
 
 
 
108
  else:
109
- final_label = max(probs_dict, key=probs_dict.get)
 
110
  return probs_dict, final_label
111
 
112
- # Gradio UI elements
113
  model_selector = gr.Dropdown(
114
  choices=[(alias, filename) for filename, alias in model_aliases.items()],
115
  label="Select Model",
116
- value="model.pth" # Default to your first model
117
  )
118
 
119
  load_button = gr.Button("Load Model")
 
120
 
121
  with gr.Blocks() as demo:
122
  with gr.Row():
123
- # Left column: model selector, load button, load status
124
  with gr.Column(scale=1):
125
  model_selector.render()
126
  load_button.render()
127
- load_output = gr.Textbox(label="Model Status")
 
 
 
 
 
 
 
 
 
 
 
128
 
129
- # Center column: image input and predict button
130
  with gr.Column(scale=1):
131
- image_input = gr.Image(type="pil", interactive=True, label="", height=400)
132
  predict_button = gr.Button("Predict")
133
-
134
- # Right column: prediction output label
135
  with gr.Column(scale=1):
136
- label_output = gr.Label(label="")
137
  final_output = gr.Textbox(label="Final Prediction", interactive=False)
138
 
139
- # Events
140
  load_button.click(fn=load_model, inputs=model_selector, outputs=load_output)
141
  predict_button.click(fn=predict, inputs=image_input, outputs=[label_output, final_output])
142
 
 
6
  import gradio as gr
7
  import os
8
 
 
 
9
  class DeeperCNN(nn.Module):
10
  def __init__(self, num_classes):
11
  super(DeeperCNN, self).__init__()
 
17
  nn.Conv2d(32, 32, kernel_size=3, padding=1),
18
  nn.BatchNorm2d(32),
19
  nn.ReLU(inplace=True),
20
+ nn.MaxPool2d(2),
21
  nn.Dropout(0.25),
22
 
23
  nn.Conv2d(32, 64, kernel_size=3, padding=1),
 
26
  nn.Conv2d(64, 64, kernel_size=3, padding=1),
27
  nn.BatchNorm2d(64),
28
  nn.ReLU(inplace=True),
29
+ nn.MaxPool2d(2),
30
  nn.Dropout(0.25),
31
 
32
  nn.Conv2d(64, 128, kernel_size=3, padding=1),
 
54
  class_names = ["Eucalyptus globulus", "Pinus pinaster", "Quercus suber"]
55
 
56
  model_aliases = {
57
+ "model.pth": "GBIF Model (CNN)",
58
  "resnet_model.pth": "ResNet Model"
59
  }
60
 
 
61
  transform = transforms.Compose([
62
  transforms.Resize((128, 128)),
63
  transforms.ToTensor()
64
  ])
65
 
 
66
  model = None
67
+ num_classes = 3
68
 
 
 
 
 
69
  def load_model(selected_model):
70
  global model
71
  model_path = os.path.join("models", selected_model)
72
  model_path = os.path.normpath(model_path)
 
73
  try:
 
 
 
74
  model = torch.load(model_path, map_location=torch.device("cpu"), weights_only=False)
75
+ model.eval()
 
 
76
  alias = model_aliases.get(selected_model, selected_model)
77
  return f"{alias} loaded successfully."
78
  except FileNotFoundError:
 
80
  except Exception as e:
81
  return f"Error loading {model_aliases.get(selected_model, selected_model)}: {str(e)}"
82
 
83
+ def predict(image_path):
 
84
  if model is None:
85
  return {}, "Please load a model first."
86
+
87
+ image = Image.open(image_path).convert("RGB")
88
  image = transform(image).unsqueeze(0)
89
+
90
  with torch.no_grad():
91
  outputs = model(image)
92
  probs = F.softmax(outputs, dim=1)[0]
93
+
94
  probs_dict = {class_names[i]: float(probs[i]) for i in range(len(class_names))}
95
+ sorted_probs = sorted(probs_dict.items(), key=lambda x: x[1], reverse=True)
96
+ top1_class, top1_prob = sorted_probs[0]
97
+ top2_class, top2_prob = sorted_probs[1]
98
+
99
+ if top1_prob < 0.6 and (top1_prob - top2_prob) < 0.2:
100
+ final_label = "Inconclusive, low confidence"
101
  else:
102
+ final_label = top1_class
103
+
104
  return probs_dict, final_label
105
 
 
106
  model_selector = gr.Dropdown(
107
  choices=[(alias, filename) for filename, alias in model_aliases.items()],
108
  label="Select Model",
109
+ value="model.pth"
110
  )
111
 
112
  load_button = gr.Button("Load Model")
113
+ image_input = gr.Image(type="filepath", interactive=True, label="Input Image", sources=["upload", "clipboard"], height=400)
114
 
115
  with gr.Blocks() as demo:
116
  with gr.Row():
 
117
  with gr.Column(scale=1):
118
  model_selector.render()
119
  load_button.render()
120
+ load_output = gr.Textbox(label="Model Status", interactive=False)
121
+
122
+ gr.Examples(
123
+ examples=[
124
+ os.path.join("examples", f)
125
+ for f in os.listdir("examples")
126
+ if f.lower().endswith((".jpg", ".jpeg", ".png"))
127
+ ],
128
+ inputs=image_input,
129
+ label="Example Images",
130
+ examples_per_page=6,
131
+ )
132
 
 
133
  with gr.Column(scale=1):
134
+ image_input.render()
135
  predict_button = gr.Button("Predict")
136
+
 
137
  with gr.Column(scale=1):
138
+ label_output = gr.Label(label="Prediction Probabilities")
139
  final_output = gr.Textbox(label="Final Prediction", interactive=False)
140
 
 
141
  load_button.click(fn=load_model, inputs=model_selector, outputs=load_output)
142
  predict_button.click(fn=predict, inputs=image_input, outputs=[label_output, final_output])
143