Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Classifying Alzheimer's Disease Diagnoses Using Vision Trainsformer

This project aims to categorize the ADNI brain dataset into AD (Alzheimer's Disease) and NC (Normal Cognitive) groups. It employs a Vision Transformer network (ViT) based on the principles presented in the paper. The model was trained using an Adam Optimizer and the parameters were tweaked often to find a good accuracy. Each sample has 20 slices that is 240x256 greyscale image corresponding to a patient, which is to be classified as either NC or AD

Dataset Splitting

The dataset is already split into 21,500 images for training, and 9000 images for testing. However, I needed a third split for validation in the dataset.py file. data_val, data_test = random_split(TensorDataset(xtest, ytest), [0.7,0.3]) I used random_split for the validation and did a 70/30 split. I then ended up with 6300 images for validation, and 2700 for testing.

Preprocessing the data

The provided code preprocesses the image data by dividing it into patches, applying layer normalization and Multihead Attention mechanisms, and incorporating positional encoding before utilizing the Vision Transformer

Training the data

These were the following parameters used for training. I didnt need a parameter for number of channels as we were only dealing with black and white data. vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16)) input_dimen - Dimensionality of the input feature vectors to the Transformer hiddenlayer_dimen - Dimensionality of the hidden layer in the feed-forward networks within the Transformer number_heads - Number of heads to use in the Multi-Head Attention block transform_layers - Number of layers to use in the Transformer predict_num - Number of classes to predict size_patch - Number of pixels that the patches have per dimension

The time taken to finish training depended on the parameters. Using adam optimizer and learning rate = 1e-4 and 75 epoch, I had accuracy of 0.68 ( 5.5 hours ) With adamW optimizer and learning rate = 3e-4 and 100 epoch, I had a low accuracy of 0.53 ( 7 hours )

Configuration

All main configurations would be done in the train.py file In the train function there is this: optimizer = optim.AdamW(net.parameters(), lr=3e-4) epochs = 100 You can change between optimizers, learning rate and epoch value in here Also in the end of the train.py file, there is the VIT.

vit = VisionTransformer(input_dimen=128, hiddenlayer_dimen=256, number_heads=4, transform_layers=4, predict_num=2, size_patch=(16,16))

Results

These are the results: loss vs epoch graph- image

Accuracy vs epoch graph - image

How to use

The project consists of four essential files, namely dataset.py, modules.py, train.py, and predict.py. The primary files to be executed are train.py and predict.py. The train.py file handles the training and testing of the model, allowing the option to save the model, along with recording the loss and validation accuracy for each epoch. This data is utilized by predict.py. Predict.py evaluates the actual output data as it can generate graphs depicting the loss and accuracy curves using the matplotlib library.

Key considerations:

  1. Inside the dataset.py file, script loads, preprocesses, and organizes medical image data from specific directories, converting the images to tensors, dividing them into training and testing sets with corresponding labels, and creating data loaders for training, testing, and validation.
  2. in train.py script imports required libraries, modules, and functions, then loads the data using returnDataLoaders from the dataset.py file. It defines an empty list for storing losses and accuracies, sets up a training function that utilizes the AdamW optimizer and CrossEntropyLoss
  3. In the predict.py script, I plot two separate graphs. The first graph illustrates the accuracy vs epoch, displaying the trend of the model's accuracy over the training epochs. The second graph demonstrates the loss vs epoch, showcasing how the training loss varies throughout the training process.
  4. The modules.py file contains functions and classes for implementing a Vision Transformer model, including an image patching function, an attention block class for multi-head attention, and a VisionTransformer class that applies linear transformations, positional embeddings

URL

https://github.com/HaadiQureshi/VIT-46878467.git

About

Pattern Analysis of various datasets by COMP3710 students at the University of Queensland

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages