From 39c2ffdb0ee175c6277e9427cdfd412a89ebbd22 Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Tue, 1 Oct 2024 23:09:56 +1000 Subject: [PATCH 01/29] Added my recognition problem solution using GFNet --- .DS_Store | Bin 0 -> 6148 bytes recognition/s4765132_ADNI_GFNet/README.md | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 .DS_Store create mode 100644 recognition/s4765132_ADNI_GFNet/README.md diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e119235f57a8b379c0f889e644b0e1d0fc4f97de GIT binary patch literal 6148 zcmeHKL2KJE6n;w6#U>1L*dUjIVAs%P?N%0gans~b*mkH#cW6fz*P%0WrII+yAq0Hh ze$1}>CHp(u_avn(%?dk|GKwBNebUqWB>c&iEFu!!Y5JU~K|}$Zu@a*Ai*Y~unpIq6 z6DZ6WZz-n!VXn`Td@b7t{znCP?P~Oz4(WjU^vC+?1U>v(?8CQy8AFXIq$6bRQ;*&N zx9EaWyW&@j@7EZ08qMI)-qGN5exdYNmIt8-*5*-Ms3uYgy;D{y-XxE&^_-`+$#k{wHNogcqDhWu00%| uwG#dj&c=DA#VZOb<|sxkAH_|$F~lWTfRV$}A|f#VBVc6kg;(HC75EKR=yo3f literal 0 HcmV?d00001 diff --git a/recognition/s4765132_ADNI_GFNet/README.md b/recognition/s4765132_ADNI_GFNet/README.md new file mode 100644 index 000000000..8ac681d85 --- /dev/null +++ b/recognition/s4765132_ADNI_GFNet/README.md @@ -0,0 +1,3 @@ +# ADNI Disease Classification Using GFNet +This project implements Alzheimer's disease classification using the ADNI dataset and GFNet model. + From 9faf8d6116083634eff440d983e272e23bb646ef Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Fri, 18 Oct 2024 11:44:09 +1000 Subject: [PATCH 02/29] Add data loading functions in dataset.py --- recognition/s4765132_ADNI_GFNet/dataset.py | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 recognition/s4765132_ADNI_GFNet/dataset.py diff --git a/recognition/s4765132_ADNI_GFNet/dataset.py b/recognition/s4765132_ADNI_GFNet/dataset.py new file mode 100644 index 000000000..114863312 --- /dev/null +++ b/recognition/s4765132_ADNI_GFNet/dataset.py @@ -0,0 +1,80 @@ +""" +Load and preprocess data + +""" +import torch +import os +from PIL import Image +from torch.utils.data import DataLoader, Dataset +from torchvision import transforms + +class ADNIDataset(Dataset): + def __init__(self, folder_path, transform=None): + self.folder_path = folder_path + self.transform = transform + + # get the path of AD and NC directory + self.ad_path = os.path.join(folder_path, "AD") + self.nc_path = os.path.join(folder_path, "NC") + + # Create lists for image path and corresponding label + self.image_paths = [] + self.labels = [] + + for label, class_dir in enumerate([self.ad_path, self.nc_path]): + for img_name in os.listdir(class_dir): + if img_name.endswith(".jpeg"): + self.image_paths.append(os.path.join(class_dir, img_name)) + self.labels.append(label) # set class AD as 0, class NC as 1 + + + def __len__(self): + return len(self.image_paths) + + def __getitem__(self, idx): + image_path = self.image_paths[idx] + label = self.labels[idx] + + image = Image.open(image_path).convert("RGB") + + if self.transform: + image = self.transform(image) + + return image, label + + +transform = transforms.Compose([ + transforms.Resize((224,224)), + transforms.ToTensor(), + transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) +]) + +# Create train and test dataset +train_dataset = ADNIDataset(folder_path="./ADNI/AD_NC/train", transform=transform) +test_dataset =ADNIDataset(folder_path="./ADNI/AD_NC/test", transform=transform) + +# Load train and test set +train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4) +test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False, num_workers=4) + + +# # check +# def check_dataloader(loader, name): + +# data_iter = iter(loader) +# images, labels = next(data_iter) + +# print(f"\ncheck {name} dataloader:") +# print(f"batch image size: {images.shape}") # should be [batch_size, 3, 224, 224] +# print(f"batch labels: {labels}") # len should batch_size tensor + +# # ensure image tensor in a range of [0, 1] if necessary +# print(f"image tensor min: {torch.min(images)}") +# print(f"image tensor max: {torch.max(images)}") +# print(f"image tensor avg: {torch.mean(images)}") + +# # chack training dataloader +# check_dataloader(train_loader, "training set") + +# # check test dataloader +# check_dataloader(test_loader, "test set") From efbaea65ff20527f3f088c0a7404f2aede912eeb Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 21 Oct 2024 11:43:49 +1000 Subject: [PATCH 03/29] Add initial test version --- recognition/s4765132_ADNI_GFNet/modules.py | 47 +++++++++++++ recognition/s4765132_ADNI_GFNet/train.py | 80 ++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 recognition/s4765132_ADNI_GFNet/modules.py create mode 100644 recognition/s4765132_ADNI_GFNet/train.py diff --git a/recognition/s4765132_ADNI_GFNet/modules.py b/recognition/s4765132_ADNI_GFNet/modules.py new file mode 100644 index 000000000..569b529ab --- /dev/null +++ b/recognition/s4765132_ADNI_GFNet/modules.py @@ -0,0 +1,47 @@ +import torch +import torch.nn as nn +import torch.fft + +class GlobalFilter(nn.Module): + def __init__(self, dim, h=14, w=8): + super(GlobalFilter, self).__init__() + self.complex_weight = nn.Parameter(torch.randn(h, w, dim, 2, dtype=torch.float32) * 0.02) + + def forward(self, x): + B, H, W, C = x.shape + x = torch.fft.rfft2(x, dim=(1, 2), norm='ortho') + weight = torch.view_as_complex(self.complex_weight) + x = x * weight + x = torch.fft.irfft2(x, s=(H, W), dim=(1, 2), norm='ortho') + return x + + +class GFNet(nn.Module): + def __init__(self, img_size=224, num_classes=2, channels=3, embed_dim=768, ff_dim=1024, dropout_rate=0.1, num_global_filters=3): + super(GFNet, self).__init__() + + self.global_filters = nn.ModuleList([GlobalFilter(dim=embed_dim) for _ in range(num_global_filters)]) + + + self.ffn = nn.Sequential( + nn.Linear(embed_dim, ff_dim), + nn.ReLU(), + nn.Dropout(dropout_rate), + nn.Linear(ff_dim, embed_dim), + ) + + self.layer_norm = nn.LayerNorm(embed_dim) + self.pool = nn.AdaptiveAvgPool2d((1, 1)) + self.fc = nn.Linear(embed_dim, num_classes) + + def forward(self, x): + + for global_filter in self.global_filters: + x = global_filter(x) + + x = self.ffn(x) + x = self.layer_norm(x) + x = self.pool(x) + x = torch.flatten(x, 1) + x = self.fc(x) + return x diff --git a/recognition/s4765132_ADNI_GFNet/train.py b/recognition/s4765132_ADNI_GFNet/train.py new file mode 100644 index 000000000..b398be6f9 --- /dev/null +++ b/recognition/s4765132_ADNI_GFNet/train.py @@ -0,0 +1,80 @@ +import torch +from torch import nn, optim +import matplotlib.pyplot as plt +from modules import GFNet +from dataset import train_loader, test_loader + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +model = GFNet(num_classes=2).to(device) +criterion = nn.CrossEntropyLoss() +optimizer = optim.Adam(model.parameters(), lr=0.001) + + +def train_and_validate(model, train_loader, test_loader, num_epochs=10): + train_loss_history = [] + train_acc_history = [] + test_acc_history = [] + + for epoch in range(num_epochs): + model.train() + running_loss = 0.0 + correct_train = 0 + total_train = 0 + + + for images, labels in train_loader: + images, labels = images.to(device), labels.to(device) + + outputs = model(images) + loss = criterion(outputs, labels) + optimizer.zero_grad() + loss.backward() + optimizer.step() + + running_loss += loss.item() + _, preds = torch.max(outputs, 1) + correct_train += (preds == labels).sum().item() + total_train += labels.size(0) + + train_loss = running_loss / len(train_loader) + train_acc = correct_train / total_train + train_loss_history.append(train_loss) + train_acc_history.append(train_acc) + + model.eval() + correct_test = 0 + total_test = 0 + with torch.no_grad(): + for images, labels in test_loader: + images, labels = images.to(device), labels.to(device) + outputs = model(images) + _, preds = torch.max(outputs, 1) + correct_test += (preds == labels).sum().item() + total_test += labels.size(0) + + test_acc = correct_test / total_test + test_acc_history.append(test_acc) + + print(f'Epoch {epoch+1}/{num_epochs}, Loss: {train_loss:.4f}, Train Accuracy: {train_acc:.4f}, Test Accuracy: {test_acc:.4f}') + + + plt.figure() + plt.plot(train_loss_history, label='Train Loss') + plt.title('Train Loss') + plt.legend() + plt.show() + + plt.figure() + plt.plot(train_acc_history, label='Train Accuracy') + plt.plot(test_acc_history, label='Test Accuracy') + plt.title('Train and Test Accuracy') + plt.legend() + plt.show() + + torch.save(model.state_dict(), 'alzheimer_gfnet.pth') + + +train_and_validate(model, train_loader, test_loader, num_epochs=10) From 927fb81003a050b3d8d13c2bd6b978c59d80cdca Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Sun, 27 Oct 2024 08:38:47 +1000 Subject: [PATCH 04/29] Updated for training set split --- recognition/s4765132_ADNI_GFNet/dataset.py | 102 +++++++++++---------- 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/recognition/s4765132_ADNI_GFNet/dataset.py b/recognition/s4765132_ADNI_GFNet/dataset.py index 114863312..00492a543 100644 --- a/recognition/s4765132_ADNI_GFNet/dataset.py +++ b/recognition/s4765132_ADNI_GFNet/dataset.py @@ -1,33 +1,15 @@ -""" -Load and preprocess data - -""" -import torch import os from PIL import Image from torch.utils.data import DataLoader, Dataset from torchvision import transforms +from sklearn.model_selection import train_test_split class ADNIDataset(Dataset): - def __init__(self, folder_path, transform=None): - self.folder_path = folder_path + def __init__(self, image_paths, labels, transform=None): + self.image_paths = image_paths + self.labels = labels self.transform = transform - # get the path of AD and NC directory - self.ad_path = os.path.join(folder_path, "AD") - self.nc_path = os.path.join(folder_path, "NC") - - # Create lists for image path and corresponding label - self.image_paths = [] - self.labels = [] - - for label, class_dir in enumerate([self.ad_path, self.nc_path]): - for img_name in os.listdir(class_dir): - if img_name.endswith(".jpeg"): - self.image_paths.append(os.path.join(class_dir, img_name)) - self.labels.append(label) # set class AD as 0, class NC as 1 - - def __len__(self): return len(self.image_paths) @@ -36,45 +18,69 @@ def __getitem__(self, idx): label = self.labels[idx] image = Image.open(image_path).convert("RGB") - if self.transform: image = self.transform(image) - return image, label +def load_train_val_datasets(folder_path, transform=None, val_split=0.2): + # Get paths of AD and NC directories + ad_path = os.path.join(folder_path, "AD") + nc_path = os.path.join(folder_path, "NC") + # Create lists for image paths and corresponding labels + image_paths = [] + labels = [] + + for label, class_dir in enumerate([ad_path, nc_path]): + for img_name in os.listdir(class_dir): + if img_name.endswith(".jpeg"): + image_paths.append(os.path.join(class_dir, img_name)) + labels.append(label) # Set class AD as 0, class NC as 1 + + # Split data into training and validation sets + train_paths, val_paths, train_labels, val_labels = train_test_split( + image_paths, labels, test_size=val_split, stratify=labels + ) + + # Create dataset objects + train_dataset = ADNIDataset(train_paths, train_labels, transform=transform) + val_dataset = ADNIDataset(val_paths, val_labels, transform=transform) + + return train_dataset, val_dataset + +# Define the transform transform = transforms.Compose([ - transforms.Resize((224,224)), + transforms.Resize((128, 128)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) -# Create train and test dataset -train_dataset = ADNIDataset(folder_path="./ADNI/AD_NC/train", transform=transform) -test_dataset =ADNIDataset(folder_path="./ADNI/AD_NC/test", transform=transform) - -# Load train and test set -train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4) -test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False, num_workers=4) +# Load train and validation datasets +train_dataset, val_dataset = load_train_val_datasets("./ADNI/AD_NC/train", transform=transform) +# Load train and validation data +train_loader = DataLoader(train_dataset, batch_size=8, shuffle=True, num_workers=1) +val_loader = DataLoader(val_dataset, batch_size=8, shuffle=False, num_workers=1) -# # check -# def check_dataloader(loader, name): - -# data_iter = iter(loader) -# images, labels = next(data_iter) +# Load test dataset +def load_test_dataset(folder_path, transform=None): + test_image_paths = [] + test_labels = [] -# print(f"\ncheck {name} dataloader:") -# print(f"batch image size: {images.shape}") # should be [batch_size, 3, 224, 224] -# print(f"batch labels: {labels}") # len should batch_size tensor + # Get paths of AD and NC directories + ad_path = os.path.join(folder_path, "AD") + nc_path = os.path.join(folder_path, "NC") -# # ensure image tensor in a range of [0, 1] if necessary -# print(f"image tensor min: {torch.min(images)}") -# print(f"image tensor max: {torch.max(images)}") -# print(f"image tensor avg: {torch.mean(images)}") + # Collect all test images and labels + for label, class_dir in enumerate([ad_path, nc_path]): + for img_name in os.listdir(class_dir): + if img_name.endswith(".jpeg"): + test_image_paths.append(os.path.join(class_dir, img_name)) + test_labels.append(label) -# # chack training dataloader -# check_dataloader(train_loader, "training set") + # Create the test dataset + return ADNIDataset(test_image_paths, test_labels, transform=transform) -# # check test dataloader -# check_dataloader(test_loader, "test set") +# Load the test dataset and create DataLoader +test_dataset = load_test_dataset("./ADNI/AD_NC/test", transform=transform) +test_loader = DataLoader(test_dataset, batch_size=8, shuffle=False, num_workers=1) From efa89d36a8aa8d0c5fc039564aac108ad12f6c32 Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Sun, 27 Oct 2024 08:43:17 +1000 Subject: [PATCH 05/29] Updated with some detail changes --- recognition/s4765132_ADNI_GFNet/modules.py | 41 +++++++++++++++------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/recognition/s4765132_ADNI_GFNet/modules.py b/recognition/s4765132_ADNI_GFNet/modules.py index 569b529ab..fc333b1ce 100644 --- a/recognition/s4765132_ADNI_GFNet/modules.py +++ b/recognition/s4765132_ADNI_GFNet/modules.py @@ -3,26 +3,35 @@ import torch.fft class GlobalFilter(nn.Module): - def __init__(self, dim, h=14, w=8): + def __init__(self, dim): super(GlobalFilter, self).__init__() - self.complex_weight = nn.Parameter(torch.randn(h, w, dim, 2, dtype=torch.float32) * 0.02) + self.dim = dim def forward(self, x): B, H, W, C = x.shape x = torch.fft.rfft2(x, dim=(1, 2), norm='ortho') - weight = torch.view_as_complex(self.complex_weight) - x = x * weight + + # Dynamically generate complex_weight to match the transformed x dimensions + _, new_H, new_W, _ = x.shape + complex_weight = torch.randn(new_H, new_W, self.dim, dtype=torch.complex64, device=x.device) * 0.02 + + # Apply frequency domain filtering + x = x * complex_weight + # Convert back to spatial domain using inverse FFT with the original height and width x = torch.fft.irfft2(x, s=(H, W), dim=(1, 2), norm='ortho') return x class GFNet(nn.Module): - def __init__(self, img_size=224, num_classes=2, channels=3, embed_dim=768, ff_dim=1024, dropout_rate=0.1, num_global_filters=3): + def __init__(self, img_size=224, num_classes=2, in_chans=3, embed_dim=768, ff_dim=1024, dropout_rate=0.1, num_global_filters=3): super(GFNet, self).__init__() + # Convolutional layer to project input images to the embedding dimension + self.conv1 = nn.Conv2d(in_chans, embed_dim, kernel_size=3, stride=1, padding=1) + # Module with a series of global filters self.global_filters = nn.ModuleList([GlobalFilter(dim=embed_dim) for _ in range(num_global_filters)]) - + # Feed-forward network layers self.ffn = nn.Sequential( nn.Linear(embed_dim, ff_dim), nn.ReLU(), @@ -30,18 +39,26 @@ def __init__(self, img_size=224, num_classes=2, channels=3, embed_dim=768, ff_di nn.Linear(ff_dim, embed_dim), ) + # Normalization layer and classification layer self.layer_norm = nn.LayerNorm(embed_dim) self.pool = nn.AdaptiveAvgPool2d((1, 1)) self.fc = nn.Linear(embed_dim, num_classes) def forward(self, x): - + # Project input to desired embedding dimension using convolution + x = self.conv1(x) + B, C, H, W = x.shape + + # Permute tensor from [B, C, H, W] to [B, H, W, C] to match GlobalFilter + x = x.permute(0, 2, 3, 1) + for global_filter in self.global_filters: x = global_filter(x) - - x = self.ffn(x) - x = self.layer_norm(x) - x = self.pool(x) - x = torch.flatten(x, 1) + + # Permute back to [B, C, H, W] after filtering + x = x.permute(0, 3, 1, 2) + x = self.pool(x) + x = torch.flatten(x, 1) x = self.fc(x) return x + From 4743cf6ad31688ec3f858149383e25c2478ab3fd Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Sun, 27 Oct 2024 08:45:12 +1000 Subject: [PATCH 06/29] Updated for using of validation sets to validate models --- recognition/s4765132_ADNI_GFNet/train.py | 44 +++++++++++------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/recognition/s4765132_ADNI_GFNet/train.py b/recognition/s4765132_ADNI_GFNet/train.py index b398be6f9..62c0f6b89 100644 --- a/recognition/s4765132_ADNI_GFNet/train.py +++ b/recognition/s4765132_ADNI_GFNet/train.py @@ -1,22 +1,19 @@ import torch from torch import nn, optim import matplotlib.pyplot as plt -from modules import GFNet -from dataset import train_loader, test_loader - +from modules_split import GFNet +from dataset_split import train_loader, val_loader, test_loader device = torch.device("cuda" if torch.cuda.is_available() else "cpu") - model = GFNet(num_classes=2).to(device) criterion = nn.CrossEntropyLoss() optimizer = optim.Adam(model.parameters(), lr=0.001) - -def train_and_validate(model, train_loader, test_loader, num_epochs=10): +def train_and_validate(model, train_loader, val_loader, num_epochs=10): train_loss_history = [] train_acc_history = [] - test_acc_history = [] + val_acc_history = [] for epoch in range(num_epochs): model.train() @@ -24,10 +21,9 @@ def train_and_validate(model, train_loader, test_loader, num_epochs=10): correct_train = 0 total_train = 0 - + # Training loop for images, labels in train_loader: images, labels = images.to(device), labels.to(device) - outputs = model(images) loss = criterion(outputs, labels) optimizer.zero_grad() @@ -44,37 +40,39 @@ def train_and_validate(model, train_loader, test_loader, num_epochs=10): train_loss_history.append(train_loss) train_acc_history.append(train_acc) + # Validation loop model.eval() - correct_test = 0 - total_test = 0 + correct_val = 0 + total_val = 0 with torch.no_grad(): - for images, labels in test_loader: + for images, labels in val_loader: images, labels = images.to(device), labels.to(device) outputs = model(images) _, preds = torch.max(outputs, 1) - correct_test += (preds == labels).sum().item() - total_test += labels.size(0) + correct_val += (preds == labels).sum().item() + total_val += labels.size(0) - test_acc = correct_test / total_test - test_acc_history.append(test_acc) + val_acc = correct_val / total_val + val_acc_history.append(val_acc) - print(f'Epoch {epoch+1}/{num_epochs}, Loss: {train_loss:.4f}, Train Accuracy: {train_acc:.4f}, Test Accuracy: {test_acc:.4f}') + print(f'Epoch {epoch+1}/{num_epochs}, Loss: {train_loss:.4f}, Train Accuracy: {train_acc:.4f}, Validation Accuracy: {val_acc:.4f}') - + # Plot training loss and accuracy plt.figure() plt.plot(train_loss_history, label='Train Loss') plt.title('Train Loss') plt.legend() plt.show() + plt.savefig("train_loss_split.png") plt.figure() plt.plot(train_acc_history, label='Train Accuracy') - plt.plot(test_acc_history, label='Test Accuracy') - plt.title('Train and Test Accuracy') + plt.plot(val_acc_history, label='Validation Accuracy') + plt.title('Train and Validation Accuracy') plt.legend() plt.show() - - torch.save(model.state_dict(), 'alzheimer_gfnet.pth') + plt.savefig("train_val_accuracy_split.png") + torch.save(model.state_dict(), 'alzheimer_gfnet_split.pth') -train_and_validate(model, train_loader, test_loader, num_epochs=10) +train_and_validate(model, train_loader, val_loader, num_epochs=10) From 309aa33801e3577134ba0b1382c0cb70b913f559 Mon Sep 17 00:00:00 2001 From: XuanyuQin <132045257+XuanyuQin@users.noreply.github.com> Date: Sun, 27 Oct 2024 08:46:32 +1000 Subject: [PATCH 07/29] Updated README.md --- recognition/s4765132_ADNI_GFNet/README.md | 32 +++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/recognition/s4765132_ADNI_GFNet/README.md b/recognition/s4765132_ADNI_GFNet/README.md index 8ac681d85..4d0513630 100644 --- a/recognition/s4765132_ADNI_GFNet/README.md +++ b/recognition/s4765132_ADNI_GFNet/README.md @@ -1,3 +1,31 @@ -# ADNI Disease Classification Using GFNet -This project implements Alzheimer's disease classification using the ADNI dataset and GFNet model. +# Alzheimer’s Disease Classification Using Global Filter Network (GFNet) +## Introduction +This project implements Alzheimer's disease classification using the ADNI dataset and Global Filter Network (GFNet) model. + +### GFNet Model +GFNet is a Transformer based deep learning network and it incorporates desing elemtents from CNN, especially in its hierarchical model variant. +![GFNet Architecture] (https://github.com/raoyongming/GFNet/raw/master/figs/intro.gif) + + +### Dataset +In this project, we will use ADNI dataset obatined from Alzheimer’s Disease Neuroimaging Initiative [^1]. This dataset contains two classes: Alzheimer's Disease (AD) and Normal Control (NC). Each class has separate folders for train and test sets. The distribution of the dataset is shown in the table below. + +| Dataset | AD | NC | +|---------|----|----| +| Training set | 10400 | 11120 | +| Test set | 4460 | 4540 | + +Some examples of the images from dataset is shown below. + + +## Data Preprocessing + + + + + + + +## References +[^1] ADNI Dataset. Sharing Alzheimer’s Research Data with the World. *Alzheimer’s Disease Neuroimaging Initiative*. https://adni.loni.usc.edu/ From 7830f05e26ae8ef12b8887f0b5174589f0655dbe Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Sun, 27 Oct 2024 09:34:29 +1000 Subject: [PATCH 08/29] Add predict file --- recognition/s4765132_ADNI_GFNet/predict.py | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 recognition/s4765132_ADNI_GFNet/predict.py diff --git a/recognition/s4765132_ADNI_GFNet/predict.py b/recognition/s4765132_ADNI_GFNet/predict.py new file mode 100644 index 000000000..b20bd268f --- /dev/null +++ b/recognition/s4765132_ADNI_GFNet/predict.py @@ -0,0 +1,38 @@ +import torch +from modules import GFNet +from dataset_split import test_loader + + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + +model = GFNet(num_classes=2).to(device) +model.load_state_dict(torch.load('alzheimer_gfnet_split.pth')) +model.eval() + + +def predict(model, test_loader): + correct = 0 + total = 0 + predictions = [] + + with torch.no_grad(): + for images, labels in test_loader: + images, labels = images.to(device), labels.to(device) + outputs = model(images) + _, predicted = torch.max(outputs, 1) + predictions.append((predicted, labels)) + + + correct += (predicted == labels).sum().item() + total += labels.size(0) + + accuracy = correct / total + print(f'Accuracy on test set: {accuracy * 100:.2f}%') + + for i, (pred, label) in enumerate(predictions[:5]): + print(f'Prediction: {pred.cpu().numpy()}, Ground Truth: {label.cpu().numpy()}') + + +predict(model, test_loader) + From 7bedbcfc47cf0f0ff15b5f2014efc7d6c2885d22 Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Sun, 27 Oct 2024 09:45:45 +1000 Subject: [PATCH 09/29] Updated README --- recognition/s4765132_ADNI_GFNet/.DS_Store | Bin 0 -> 6148 bytes recognition/s4765132_ADNI_GFNet/.Rhistory | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/s4765132_ADNI_GFNet/.DS_Store create mode 100644 recognition/s4765132_ADNI_GFNet/.Rhistory diff --git a/recognition/s4765132_ADNI_GFNet/.DS_Store b/recognition/s4765132_ADNI_GFNet/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f07c010187ac90ee23fadd76efcf519fe986b0c6 GIT binary patch literal 6148 zcmeHKu}%Xq47H)d36_qG`GQLP!BMpXGe1B}8ITSRQ95+HosZ!Y;XT_RdSpZhAzO-{ zFR|m~NteVTqVwJ6Tx2RD4H{8tRD|8tp`&m<2CB`mm0Nk1nLNtAGSOe`;@VGSBP*!1JM?5!=AQ(T)x%D*=ELbeq8DbD1$Eunim> zF#=H!1$wAPiJ=~j{t|v|;Na-tqEUQkWd0~#)Usp#V(y}?W9noe88~EswJ&7K`+tdF zrds5iOR8ib8ThXZ=wxxVm}7Tww|?6v@7jWPjYgs0Km!8%;1Pfio+D>A=;MVp{Mx|5 Uk+ZPh!h!h^FhWu#1HZt)JJu^TtpET3 literal 0 HcmV?d00001 diff --git a/recognition/s4765132_ADNI_GFNet/.Rhistory b/recognition/s4765132_ADNI_GFNet/.Rhistory new file mode 100644 index 000000000..e69de29bb From f8cbce13045543f04af446f53b5f9cc47c83ae0c Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Sun, 27 Oct 2024 10:00:18 +1000 Subject: [PATCH 10/29] Update --- .../Preprocessed_data_sample.png | Bin 0 -> 88459 bytes recognition/s4765132_ADNI_GFNet/README.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 recognition/s4765132_ADNI_GFNet/Preprocessed_data_sample.png diff --git a/recognition/s4765132_ADNI_GFNet/Preprocessed_data_sample.png b/recognition/s4765132_ADNI_GFNet/Preprocessed_data_sample.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1f0fcb9a45a11036d1d6d8381594f75d519e2c GIT binary patch literal 88459 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 literal 0 HcmV?d00001 diff --git a/recognition/s4765132_ADNI_GFNet/README.md b/recognition/s4765132_ADNI_GFNet/README.md index 4d0513630..78859ce79 100644 --- a/recognition/s4765132_ADNI_GFNet/README.md +++ b/recognition/s4765132_ADNI_GFNet/README.md @@ -5,7 +5,7 @@ This project implements Alzheimer's disease classification using the ADNI datase ### GFNet Model GFNet is a Transformer based deep learning network and it incorporates desing elemtents from CNN, especially in its hierarchical model variant. -![GFNet Architecture] (https://github.com/raoyongming/GFNet/raw/master/figs/intro.gif) +![GFNet Architecture](https://github.com/raoyongming/GFNet/raw/master/figs/intro.gif) ### Dataset From 30992eb2a90052ea6d5df84a25b2cbea53e43c4e Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 00:14:25 +1000 Subject: [PATCH 11/29] Add sample image --- .../Before_Preprocessing_data_sample.png | Bin 0 -> 88459 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/s4765132_ADNI_GFNet/Before_Preprocessing_data_sample.png diff --git a/recognition/s4765132_ADNI_GFNet/Before_Preprocessing_data_sample.png b/recognition/s4765132_ADNI_GFNet/Before_Preprocessing_data_sample.png new file mode 100644 index 0000000000000000000000000000000000000000..2a1f0fcb9a45a11036d1d6d8381594f75d519e2c GIT binary patch literal 88459 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 literal 0 HcmV?d00001 From 86eb3591e0cc25e4c53c2e544159d1a796d46e76 Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 00:15:27 +1000 Subject: [PATCH 12/29] Updated README --- recognition/s4765132_ADNI_GFNet/README.md | 30 ++++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/recognition/s4765132_ADNI_GFNet/README.md b/recognition/s4765132_ADNI_GFNet/README.md index 78859ce79..a2c226f6e 100644 --- a/recognition/s4765132_ADNI_GFNet/README.md +++ b/recognition/s4765132_ADNI_GFNet/README.md @@ -4,12 +4,21 @@ This project implements Alzheimer's disease classification using the ADNI dataset and Global Filter Network (GFNet) model. ### GFNet Model -GFNet is a Transformer based deep learning network and it incorporates desing elemtents from CNN, especially in its hierarchical model variant. -![GFNet Architecture](https://github.com/raoyongming/GFNet/raw/master/figs/intro.gif) +GFNet is a deep learning network, which can efficiently capture long-range dependencies in image data by using frequency-domain analysis. It is especially designed for processing and classifying images. It is originally based on the vision Transformer and CNNs, but introduces some key updates. The self-attention mechanism of the vision Transformer is replaced with Fourier transforms in GFNet, which improve the computational effectiveness and enables more effective global feature extraction [\[1\]](#reference1). Additionally, GFNet incorporates design elements from CNN, especially in its hierarchical model variant, which enables capturing local spatial features. These characteristics make GFNet as a powerful and robust tool for handling complex image classification tasks. +Here is the architecture of GFNet. +![GFNet Architecture](https://miro.medium.com/v2/resize:fit:1400/format:webp/1*rkWAbLHZjMjnOpfmAmFc3w.png) + +Based on the architecture of GFNet, there are four key components. + 1. Patch Embedding Layer: The input image is divided into small patches, which are linearly embedded into high-dimensional tokens, creating a set of vectors representing different regions of the image. + 2. Global Filter Layer: This is the core component of GFNet. Based on the vision Transformer design, this layer adds a 2D Fourier Transform (FFT) to convert spatial features into the frequency domain. And then, an inverse Fourier transform (IFFT) is used to transform the results back to the spatial domain. These processes can capture global spatial dependencies and reduce the computational complexity. + 3. Feed Forward Network (FFN): This layer contains layer normalization, a multi-layer perceptron (MLP) and another normalization layer. It ensures that features can propagate smoothly through the network. + 4. Global Avaerage Pooling and Classification Head: After several rounds of the Global Filter layer and FFN, the resulting tokens are aggregated through global average pooling. Finally, through the classification head to get the classification output. + +The combination of these componets make GFNet more robust and effective for image classification tasks. ### Dataset -In this project, we will use ADNI dataset obatined from Alzheimer’s Disease Neuroimaging Initiative [^1]. This dataset contains two classes: Alzheimer's Disease (AD) and Normal Control (NC). Each class has separate folders for train and test sets. The distribution of the dataset is shown in the table below. +This project uses ADNI dataset obatined from Alzheimer’s Disease Neuroimaging Initiative [\[2\]](#reference2). This dataset contains two classes: Alzheimer's Disease (AD) and Normal Control (NC) with images of dimension 256 × 240 in greyscale. Each class has separate folders for train and test sets. The distribution of the dataset is shown in the table below. | Dataset | AD | NC | |---------|----|----| @@ -17,15 +26,28 @@ In this project, we will use ADNI dataset obatined from Alzheimer’s Disease Ne | Test set | 4460 | 4540 | Some examples of the images from dataset is shown below. +![Samples of images](Before_Preprocessing_data_sample.png) ## Data Preprocessing +In the data preprocessing stage, the original training set is split 80% into training set and 20% into validation set. The distribution of data is shown as below. +| Dataset | AD | NC | +|---------|----|----| +| Training set | 8320 | 8896 | +| Validation set | 2080 | 2224 | +| Test set | 4460 | 4540 | +## Model Building +## Model Performance ## References -[^1] ADNI Dataset. Sharing Alzheimer’s Research Data with the World. *Alzheimer’s Disease Neuroimaging Initiative*. https://adni.loni.usc.edu/ + +[1] ADNI Dataset. Sharing Alzheimer’s Research Data with the World. *Alzheimer’s Disease Neuroimaging Initiative*. https://adni.loni.usc.edu/ + + +[2] ADNI Dataset. Sharing Alzheimer’s Research Data with the World. *Alzheimer’s Disease Neuroimaging Initiative*. https://adni.loni.usc.edu/ From 684d0773a96c1148256d502ca7ad879b8ee8a0aa Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 01:15:05 +1000 Subject: [PATCH 13/29] Remove duplicated image --- .../Preprocessed_data_sample.png | Bin 88459 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 recognition/s4765132_ADNI_GFNet/Preprocessed_data_sample.png diff --git a/recognition/s4765132_ADNI_GFNet/Preprocessed_data_sample.png b/recognition/s4765132_ADNI_GFNet/Preprocessed_data_sample.png deleted file mode 100644 index 2a1f0fcb9a45a11036d1d6d8381594f75d519e2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88459 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 From 0f1e6076b9acd405121e95170f75bc8a6dc3cb37 Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 02:01:10 +1000 Subject: [PATCH 14/29] Update GFNet model building part --- recognition/s4765132_ADNI_GFNet/README.md | 32 ++++++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/recognition/s4765132_ADNI_GFNet/README.md b/recognition/s4765132_ADNI_GFNet/README.md index a2c226f6e..ff4f7950a 100644 --- a/recognition/s4765132_ADNI_GFNet/README.md +++ b/recognition/s4765132_ADNI_GFNet/README.md @@ -18,7 +18,7 @@ Based on the architecture of GFNet, there are four key components. The combination of these componets make GFNet more robust and effective for image classification tasks. ### Dataset -This project uses ADNI dataset obatined from Alzheimer’s Disease Neuroimaging Initiative [\[2\]](#reference2). This dataset contains two classes: Alzheimer's Disease (AD) and Normal Control (NC) with images of dimension 256 × 240 in greyscale. Each class has separate folders for train and test sets. The distribution of the dataset is shown in the table below. +This project uses the ADNI dataset obatined from the Alzheimer’s Disease Neuroimaging Initiative [\[2\]](#reference2). This dataset contains two classes: Alzheimer's Disease (AD) and Normal Control (NC) with greyscale images of dimensions 256 × 240. Each class has separate folders for train and test sets. The distribution of the dataset is shown in the table below. | Dataset | AD | NC | |---------|----|----| @@ -26,11 +26,22 @@ This project uses ADNI dataset obatined from Alzheimer’s Disease Neuroimaging | Test set | 4460 | 4540 | Some examples of the images from dataset is shown below. + ![Samples of images](Before_Preprocessing_data_sample.png) +## Setup +- **Programming Language**: Python 3.12.4 +- **Dependencies**: + - `scikit-learn` 1.5.1 + - `torch` 2.4.0 + - `torchvision` 0.19.0 + - `matplotlib-base` 3.9.2 +- **Environment**: Conda 24.5.0 + +To set up the environment, ensure you have [Conda](https://docs.conda.io/en/latest/miniconda.html) ## Data Preprocessing -In the data preprocessing stage, the original training set is split 80% into training set and 20% into validation set. The distribution of data is shown as below. +In the data preprocessing stage, load data first and assign correponding labels to loaded data based on the folder structure. Specifically, AD images are labeled as 0, NC images are labeled as 1. Next, in order to achieve a robust model, the original training set is split into 80% training and 20% validation by using ```train_test_split```. The distribution of data after the split is shown below. | Dataset | AD | NC | |---------|----|----| @@ -38,16 +49,29 @@ In the data preprocessing stage, the original training set is split 80% into tra | Validation set | 2080 | 2224 | | Test set | 4460 | 4540 | -## Model Building +To enhance data consistency and improve model convergence, each input image is resized to ```64x64``` pixels, converted into a PyTorch tensor, and normalize images to help stabilize the following training process. + +## GFNet Model Building +The GFNet model has two key components: ```GlobalFilter``` and ```GFNet```. ```GlobalFilter``` module performs frequency-domain filtering and ```GFNet``` is the main neural network architecture designed for image classification. + +The ```GlobalFilter``` module is designed to process input images in the frequency domain. The original code can be found on [GitHub](https://github.com/raoyongming/GFNet). It first uses the 2D FFT to convert the spatial features into the frequency domain for subsequent filtering. Unlike the original implementation, intead of using a fixed filter size, the code in this project made an adjustment for generating the ```complex_weight``` automatically with dimensions based on the transformed shape of ```x``` in the frequency domain. This adjustment is more suitble for this classification task. After frequency filtering, an inverse FFT is used to transfrom features back to the spatial domain. +The ```GFNet``` module is the main neural network model for classification. It consists of convolutional layers, global filter modules, a feed-forward network and a classification layer. + +## Predict ## Model Performance + + ## References -[1] ADNI Dataset. Sharing Alzheimer’s Research Data with the World. *Alzheimer’s Disease Neuroimaging Initiative*. https://adni.loni.usc.edu/ +[1] Rao, Y., Zhao, W., Zhu, Z., Zhou, J., & Lu, J. (2023). GFNet: Global filter networks for visual recognition. *IEEE Transactions on Pattern Analysis and Machine Intelligence*, 45(9), 10960-10973. https://doi.org/10.1109/TPAMI.2023.3263824 [2] ADNI Dataset. Sharing Alzheimer’s Research Data with the World. *Alzheimer’s Disease Neuroimaging Initiative*. https://adni.loni.usc.edu/ + + +[3] Rao, Y., Zhao, W., Zhu, Z., Zhou, J., & Lu, J. (2023). Global filter networks for visual recognition. *GitHub* https://github.com/raoyongming/GFNet From e9d90daf620ba906fcf8b86104ffb57d65bf7d0c Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 10:33:53 +1000 Subject: [PATCH 15/29] Updated training, test, how to run parts --- recognition/s4765132_ADNI_GFNet/README.md | 66 +++++++++++++++++------ 1 file changed, 51 insertions(+), 15 deletions(-) diff --git a/recognition/s4765132_ADNI_GFNet/README.md b/recognition/s4765132_ADNI_GFNet/README.md index ff4f7950a..9af66f43e 100644 --- a/recognition/s4765132_ADNI_GFNet/README.md +++ b/recognition/s4765132_ADNI_GFNet/README.md @@ -1,12 +1,13 @@ # Alzheimer’s Disease Classification Using Global Filter Network (GFNet) ## Introduction -This project implements Alzheimer's disease classification using the ADNI dataset and Global Filter Network (GFNet) model. +This project uses Python to implement Alzheimer's disease classification using the ADNI dataset and Global Filter Network (GFNet) model. ### GFNet Model GFNet is a deep learning network, which can efficiently capture long-range dependencies in image data by using frequency-domain analysis. It is especially designed for processing and classifying images. It is originally based on the vision Transformer and CNNs, but introduces some key updates. The self-attention mechanism of the vision Transformer is replaced with Fourier transforms in GFNet, which improve the computational effectiveness and enables more effective global feature extraction [\[1\]](#reference1). Additionally, GFNet incorporates design elements from CNN, especially in its hierarchical model variant, which enables capturing local spatial features. These characteristics make GFNet as a powerful and robust tool for handling complex image classification tasks. Here is the architecture of GFNet. + ![GFNet Architecture](https://miro.medium.com/v2/resize:fit:1400/format:webp/1*rkWAbLHZjMjnOpfmAmFc3w.png) Based on the architecture of GFNet, there are four key components. @@ -29,16 +30,6 @@ Some examples of the images from dataset is shown below. ![Samples of images](Before_Preprocessing_data_sample.png) -## Setup -- **Programming Language**: Python 3.12.4 -- **Dependencies**: - - `scikit-learn` 1.5.1 - - `torch` 2.4.0 - - `torchvision` 0.19.0 - - `matplotlib-base` 3.9.2 -- **Environment**: Conda 24.5.0 - -To set up the environment, ensure you have [Conda](https://docs.conda.io/en/latest/miniconda.html) ## Data Preprocessing In the data preprocessing stage, load data first and assign correponding labels to loaded data based on the folder structure. Specifically, AD images are labeled as 0, NC images are labeled as 1. Next, in order to achieve a robust model, the original training set is split into 80% training and 20% validation by using ```train_test_split```. The distribution of data after the split is shown below. @@ -54,16 +45,61 @@ To enhance data consistency and improve model convergence, each input image is r ## GFNet Model Building The GFNet model has two key components: ```GlobalFilter``` and ```GFNet```. ```GlobalFilter``` module performs frequency-domain filtering and ```GFNet``` is the main neural network architecture designed for image classification. -The ```GlobalFilter``` module is designed to process input images in the frequency domain. The original code can be found on [GitHub](https://github.com/raoyongming/GFNet). It first uses the 2D FFT to convert the spatial features into the frequency domain for subsequent filtering. Unlike the original implementation, intead of using a fixed filter size, the code in this project made an adjustment for generating the ```complex_weight``` automatically with dimensions based on the transformed shape of ```x``` in the frequency domain. This adjustment is more suitble for this classification task. After frequency filtering, an inverse FFT is used to transfrom features back to the spatial domain. +The ```GlobalFilter``` module is designed to process input images in the frequency domain. The original code can be found on [GitHub](https://github.com/raoyongming/GFNet) [\[3\]](#reference3). This module first uses a 2D FFT to convert the spatial features into the frequency domain for subsequent filtering. Unlike the original implementation, this project adjusts the code to generate the ```complex_weight``` automatically based on the transformed shape of ```x``` in the frequency domain. This adjustment is more suited for this classification task. After frequency filtering, an inverse FFT is used to transform the features back to the spatial domain. + +The ```GFNet``` module is the main neural network model for classification. The main components of GFNet include convolutional layers, global filter modules, a feed-forward network, normalization layers, and a classification layer. During the forward pass, the input image is first processed through convolutional layers with ReLU activations. Then the output passes through the Global Filtering module. After this step, the output is pooled, flattened, and passed through a fully connected layer for classification. + +## Training Phase +The training phase of the GFNet model includes defining the model, loss function, and optimizer, followed by iterative training and validation, with an early stopping mechanism to prevent overfitting. The process has two key parts: a training loop and a validation loop. In the training loop, the number of training epochs is set to ```100```, but early stopping is applied with a patience of ```5``` to stop training if the performance stops improving. The training loss and accuracy are calculated at the end of each epoch. After each training epoch, the model's performance is evaluated on a separate validation set. + +To visualize training progress, the training loss history over epochs is plotted to observe how the model's learning evolves with each epoch, and both training and validation accuracy are plotted to monitor the model's performance. + +## Testing Phase +The testing phase of the GFNet model involves loading the trained model, evaluating its performance on a separate test dataset, and generating predictions. The predicted results are compared with the actual labels to assess the model’s generalization ability and overall performance. + +## Results + +### Model Evaluation + +### Predict Results + + +## How to Run +### Prerequisites +- **Programming Language**: Python 3.12.4 +- **Main Dependencies**: + - `scikit-learn` 1.5.1 + - `torch` 2.4.0 + - `torchvision` 0.19.0 + - `matplotlib-base` 3.9.2 +- **Environment**: Conda 24.5.0 + +### Setup +To set up the environment, make sure you have [Conda](https://docs.conda.io/en/latest/miniconda.html). +Use the code below to install with all necessary dependencies: +```bash +conda env create -f environment.yml +conda activate +``` -The ```GFNet``` module is the main neural network model for classification. It consists of convolutional layers, global filter modules, a feed-forward network and a classification layer. +### Steps to Run +To run the code, make sure you have met all the setup prerequisites. -## Predict +1. Train the model: +Run the ```train.py``` to train the model: -## Model Performance +```bash +python train.py +``` +This will start the training process and save the best model to ./result/best_model.pth +2. Run Predictions +After training, use the ```predict.py``` to make predictions with the saved model. +```bash +python predict.py +``` ## References From 6ffab6f04a2a37f00cb3b5b7fa297fb4f69dba2c Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 10:41:29 +1000 Subject: [PATCH 16/29] Add running environment dependencies --- .../s4765132_ADNI_GFNet/environment.yml | 118 ++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 recognition/s4765132_ADNI_GFNet/environment.yml diff --git a/recognition/s4765132_ADNI_GFNet/environment.yml b/recognition/s4765132_ADNI_GFNet/environment.yml new file mode 100644 index 000000000..733594397 --- /dev/null +++ b/recognition/s4765132_ADNI_GFNet/environment.yml @@ -0,0 +1,118 @@ +name: torch +channels: + - conda-forge + - defaults +dependencies: + - _libgcc_mutex=0.1=conda_forge + - _openmp_mutex=4.5=2_gnu + - blas=1.0=mkl + - brotli=1.0.9=h5eee18b_8 + - brotli-bin=1.0.9=h5eee18b_8 + - bzip2=1.0.8=h5eee18b_6 + - ca-certificates=2024.9.24=h06a4308_0 + - contourpy=1.2.0=py312hdb19cb5_0 + - cycler=0.11.0=pyhd3eb1b0_0 + - expat=2.6.2=h6a678d5_0 + - fonttools=4.51.0=py312h5eee18b_0 + - freetype=2.12.1=h4a9f257_0 + - importlib_resources=6.4.5=pyhd8ed1ab_0 + - intel-openmp=2023.1.0=hdb19cb5_46306 + - joblib=1.4.2=py312h06a4308_0 + - jpeg=9e=h5eee18b_3 + - kiwisolver=1.4.4=py312h6a678d5_0 + - lcms2=2.12=h3be6417_0 + - ld_impl_linux-64=2.38=h1181459_1 + - lerc=3.0=h295c915_0 + - libbrotlicommon=1.0.9=h5eee18b_8 + - libbrotlidec=1.0.9=h5eee18b_8 + - libbrotlienc=1.0.9=h5eee18b_8 + - libdeflate=1.17=h5eee18b_1 + - libffi=3.4.4=h6a678d5_1 + - libgcc=14.1.0=h77fa898_1 + - libgcc-ng=14.1.0=h69a702a_1 + - libgfortran-ng=11.2.0=h00389a5_1 + - libgfortran5=11.2.0=h1234567_1 + - libgomp=14.1.0=h77fa898_1 + - libpng=1.6.39=h5eee18b_0 + - libstdcxx-ng=11.2.0=h1234567_1 + - libtiff=4.5.1=h6a678d5_0 + - libuuid=1.41.5=h5eee18b_0 + - libwebp-base=1.3.2=h5eee18b_0 + - lz4-c=1.9.4=h6a678d5_1 + - matplotlib-base=3.9.2=py312h66fe004_0 + - mkl=2023.1.0=h213fc3f_46344 + - mkl-service=2.4.0=py312h5eee18b_1 + - mkl_fft=1.3.10=py312h5eee18b_0 + - mkl_random=1.2.7=py312h526ad5a_0 + - ncurses=6.4=h6a678d5_0 + - nibabel=5.2.1=pyha770c72_0 + - numpy-base=1.26.4=py312h0da6c21_0 + - openjpeg=2.5.2=he7f1fd0_0 + - openssl=3.3.2=hb9d3cd8_0 + - packaging=24.1=py312h06a4308_0 + - pip=24.2=py312h06a4308_0 + - pybind11-abi=5=hd3eb1b0_0 + - pyparsing=3.1.2=py312h06a4308_0 + - python=3.12.4=h5148396_1 + - python-dateutil=2.9.0post0=py312h06a4308_2 + - readline=8.2=h5eee18b_0 + - scikit-learn=1.5.1=py312h526ad5a_0 + - scipy=1.13.1=py312hc5e2394_0 + - setuptools=72.1.0=py312h06a4308_0 + - six=1.16.0=pyhd3eb1b0_1 + - sqlite=3.45.3=h5eee18b_0 + - tbb=2021.8.0=hdb19cb5_0 + - threadpoolctl=3.5.0=py312he106c6f_0 + - tk=8.6.14=h39e8969_0 + - tzdata=2024a=h04d1e81_0 + - unicodedata2=15.1.0=py312h5eee18b_0 + - wheel=0.43.0=py312h06a4308_0 + - xz=5.4.6=h5eee18b_1 + - zipp=3.20.2=pyhd8ed1ab_0 + - zlib=1.2.13=h5eee18b_1 + - zstd=1.5.5=hc292b87_2 + - pip: + - asttokens==2.4.1 + - debugpy==1.8.5 + - decorator==5.1.1 + - executing==2.1.0 + - filelock==3.13.1 + - fsspec==2024.2.0 + - jinja2==3.1.3 + - markupsafe==2.1.5 + - mpmath==1.3.0 + - nest-asyncio==1.6.0 + - networkx==3.2.1 + - numpy==1.26.3 + - nvidia-cublas-cu11==11.11.3.6 + - nvidia-cuda-cupti-cu11==11.8.87 + - nvidia-cuda-nvrtc-cu11==11.8.89 + - nvidia-cuda-runtime-cu11==11.8.89 + - nvidia-cudnn-cu11==9.1.0.70 + - nvidia-cufft-cu11==10.9.0.58 + - nvidia-curand-cu11==10.3.0.86 + - nvidia-cusolver-cu11==11.4.1.48 + - nvidia-cusparse-cu11==11.7.5.86 + - nvidia-nccl-cu11==2.20.5 + - nvidia-nvtx-cu11==11.8.86 + - parso==0.8.4 + - pexpect==4.9.0 + - pillow==10.2.0 + - platformdirs==4.2.2 + - prompt-toolkit==3.0.47 + - psutil==6.0.0 + - ptyprocess==0.7.0 + - pure-eval==0.2.3 + - pygments==2.18.0 + - pyzmq==26.2.0 + - stack-data==0.6.3 + - sympy==1.12 + - torch==2.4.0+cu118 + - torchaudio==2.4.0+cu118 + - torchvision==0.19.0+cu118 + - tornado==6.4.1 + - traitlets==5.14.3 + - triton==3.0.0 + - typing-extensions==4.9.0 + - wcwidth==0.2.13 +prefix: /home/Student/s4765132/miniconda3/envs/torch From 2aed3b09339626632200a0f06167ff0a8db851cf Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 12:42:50 +1000 Subject: [PATCH 17/29] Add seaborn library --- recognition/s4765132_ADNI_GFNet/environment.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/recognition/s4765132_ADNI_GFNet/environment.yml b/recognition/s4765132_ADNI_GFNet/environment.yml index 733594397..4b0542f4f 100644 --- a/recognition/s4765132_ADNI_GFNet/environment.yml +++ b/recognition/s4765132_ADNI_GFNet/environment.yml @@ -6,6 +6,7 @@ dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - blas=1.0=mkl + - bottleneck=1.3.7=py312ha883a20_0 - brotli=1.0.9=h5eee18b_8 - brotli-bin=1.0.9=h5eee18b_8 - bzip2=1.0.8=h5eee18b_6 @@ -46,18 +47,23 @@ dependencies: - mkl_random=1.2.7=py312h526ad5a_0 - ncurses=6.4=h6a678d5_0 - nibabel=5.2.1=pyha770c72_0 + - numexpr=2.8.7=py312hf827012_0 - numpy-base=1.26.4=py312h0da6c21_0 - openjpeg=2.5.2=he7f1fd0_0 - openssl=3.3.2=hb9d3cd8_0 - packaging=24.1=py312h06a4308_0 + - pandas=2.2.2=py312h526ad5a_0 - pip=24.2=py312h06a4308_0 - pybind11-abi=5=hd3eb1b0_0 - pyparsing=3.1.2=py312h06a4308_0 - python=3.12.4=h5148396_1 - python-dateutil=2.9.0post0=py312h06a4308_2 + - python-tzdata=2023.3=pyhd3eb1b0_0 + - pytz=2024.1=py312h06a4308_0 - readline=8.2=h5eee18b_0 - scikit-learn=1.5.1=py312h526ad5a_0 - scipy=1.13.1=py312hc5e2394_0 + - seaborn=0.13.2=py312h06a4308_0 - setuptools=72.1.0=py312h06a4308_0 - six=1.16.0=pyhd3eb1b0_1 - sqlite=3.45.3=h5eee18b_0 From b76fa65e93dedf18df5658cb582e0e750a9f78e5 Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 12:43:43 +1000 Subject: [PATCH 18/29] Add training loss plot --- recognition/s4765132_ADNI_GFNet/train_loss.png | Bin 0 -> 34106 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/s4765132_ADNI_GFNet/train_loss.png diff --git a/recognition/s4765132_ADNI_GFNet/train_loss.png b/recognition/s4765132_ADNI_GFNet/train_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..f95ec79cc6ff6be3bbe488aa5dda82c6a9f96d9f GIT binary patch literal 34106 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 CSYU$y literal 0 HcmV?d00001 From 26368b1a0b13ec849371a51f561d6e185d29c785 Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 12:44:21 +1000 Subject: [PATCH 19/29] Add train and validation accuracy plot --- .../s4765132_ADNI_GFNet/train_val_accuracy.png | Bin 0 -> 30145 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/s4765132_ADNI_GFNet/train_val_accuracy.png diff --git a/recognition/s4765132_ADNI_GFNet/train_val_accuracy.png b/recognition/s4765132_ADNI_GFNet/train_val_accuracy.png new file mode 100644 index 0000000000000000000000000000000000000000..d95bd18424ccdcb723ecf0115a3eb8accd70f35c GIT binary patch literal 30145 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 OqU7%=%VbIGzWg6dnS&hw literal 0 HcmV?d00001 From a9aefb0b137382191c54ef1ac1f301e996e871fc Mon Sep 17 00:00:00 2001 From: XuanyuQin Date: Mon, 28 Oct 2024 12:45:13 +1000 Subject: [PATCH 20/29] Add confusion matrix plott --- .../s4765132_ADNI_GFNet/confusion_matrix.png | Bin 0 -> 17818 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/s4765132_ADNI_GFNet/confusion_matrix.png diff --git a/recognition/s4765132_ADNI_GFNet/confusion_matrix.png b/recognition/s4765132_ADNI_GFNet/confusion_matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1d6218391de6c01c82835a5a4049d80fe27115 GIT binary patch literal 17818 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