A few days ago I came across a paper published in Procedia Computer Science at KES 2025 — a peer-reviewed Elsevier conference. The title: “Fusion of Simple Fully Convolutional Network with 3D Generative Adversarial Network for Alzheimer’s Disease.”
They had used my Kaggle dataset. And honestly, the way they used it made me want to write this article.
This paper is a perfect case study for something I think about a lot: what does it actually look like when a NeuroAI researcher can just focus on the science?
Let me break it down.
You find an interesting neuroimaging dataset. You download it. You open one of the files and it’s a .nii.gz — a 3D volume with voxel dimensions, affine transforms, and header metadata you've never seen before.
Then you start googling: skull-stripping, MNI registration, intensity normalization, BIDS format, FreeSurfer, FSL, ANTs…
Six weeks later you’ve barely started on the actual model.
This is the real barrier to entry in NeuroAI. Not the deep learning — the data preparation. And it’s not just a newbie problem. Even experienced researchers spend a disproportionate amount of time reproducing preprocessing pipelines that have been done a hundred times before on the same public datasets.
I went through this for the OASIS-1 dataset — one of the most used open brain MRI datasets for Alzheimer’s disease research. I skull-stripped every scan, registered each volume to the MNI152 2mm standard template, and applied Shinohara intensity normalization across all 416 subjects.
It took a while. And then I put it on Kaggle — preprocessed, skull-stripped, spatially aligned, ready to load into PyTorch — along with a sample notebook so you can go from zero to training in an afternoon rather than a month.
👉 Dataset: https://www.kaggle.com/datasets/ninadaithal/oasis-1-shinohara/data
The team — Intissar Hilali, Nozha Jlidi, Olfa Jemai, and Ridha Ejbali from the National Engineering School of Gabes, Tunisia — described their pipeline like this:

Four stages. Here’s where things get interesting:
Stage 1 was already done. Stages 3 and 4 were already in the sample notebook I’d included with the dataset.
Their entire paper is about Stage 2. The 3D GAN. That’s it. That’s where all their energy went — and that’s exactly where it should go.
The OASIS dataset has a class imbalance problem: 294 healthy controls vs. 142 Alzheimer’s cases. A model trained naively on this will mostly learn to predict “healthy” — because most of the time, that’s right. But in a clinical setting, missing an actual AD patient is far worse than a false alarm.
The usual fix is class weighting (which the sample notebook already handles with BCEWithLogitsLoss(pos_weight=...)). The team went further: they trained a 3D Generative Adversarial Network to generate synthetic but anatomically realistic AD brain MRI volumes. Generator produces fake 3D brain scans, discriminator learns to tell real from fake, and after training you get new AD volumes that look like real data.
Why 3D specifically? Because 2D GANs generate slice-by-slice and lose spatial continuity. Alzheimer’s-related changes — hippocampal atrophy, cortical thinning — happen across the full 3D volume. You need to model that in 3D to capture it faithfully.
The generated volumes preserved cortical folds, ventricles, and the medial temporal lobe — no obvious artifacts, structurally sound. 10 synthetic volumes per real AD scan added to the training set.
Yes — and the number that matters isn’t accuracy.
The baseline model was catching roughly 1 in 3 Alzheimer’s patients. The GAN-augmented model catches 9 in 10.
Specificity dropped a bit — some healthy controls get flagged incorrectly. But a false positive means a follow-up scan. A false negative means a missed diagnosis. In early-stage AD screening, that trade-off is more than acceptable.

If you want to reproduce this or build on it, here’s how simple it is to get started:
import nibabel as nib
import torch
# Load a preprocessed scan - skull-stripped, MNI-registered, normalized
nifti = nib.load('OAS1_0002_MR1_mpr_n4_anon_sbj_111_normalised.nii.gz')
volume = nifti.get_fdata() # shape: (91, 109, 91) - MNI152 2mm grid
tensor = torch.tensor(volume, dtype=torch.float32).unsqueeze(0) # add channel dim
The input shape [batch, 1, 91, 109, 91] matches the MNI152 2mm voxel grid exactly — no resizing, no resampling needed. The SFCN model in the sample notebook is about 2.95M parameters and trains on a single GPU. The paper used dual NVIDIA T4s.
This is the fair pushback. OASIS happens to have a clean, well-documented preprocessing pipeline, and I happened to have already done it. That’s not always the case.
When you’re working with a dataset that doesn’t come preprocessed — or you need to run your own pipeline at scale — Nipoppy is worth knowing about. It is an open-source, BIDS-aware framework for standardized neuroimaging dataset organization and processing. Instead of manually writing and managing bash scripts for hundreds of subjects, Nipoppy provides tools to orchestrate existing containerized pipelines and keep track of raw and processed data, making large-scale preprocessing more reproducible and manageable.
(A full article on Nipoppy is coming next — stay tuned.)
If OASIS isn’t the right fit for your question, NeuroDataHub is a good starting point — it indexes 50+ open neuroimaging datasets covering structural MRI, fMRI, diffusion imaging, and more, with metadata on scanners, age ranges, population types, and download links. It won’t preprocess anything for you, but it’ll help you find what already exists before you decide what you need to build.
👉 https://neurodatahub.github.io/ &
👉https://blackpearl006.github.io/NeuroDataHub/
The authors are upfront about what still needs work, which I appreciate:
These are the right problems to be spending time on. And they got to work on them precisely because they didn’t spend that time on skull-stripping 💀
You don’t need months of preprocessing to do meaningful Alzheimer’s detection research. The dataset is there, the notebook is there, and a published paper at an international conference shows exactly what you can build when you start from a clean foundation.
Dataset (OASIS, preprocessed, skull-stripped, MNI-registered, NIfTI): 👉 https://www.kaggle.com/datasets/ninadaithal/oasis-1-shinohara/data
Paper: Hilali et al., Procedia Computer Science 270 (2025) 3027–3036 · doi: 10.1016/j.procs.2025.09.427
Also cited in the same paper: Aithal, N. & Sinha, N. “Simple fully convolutional network to estimate Brain Age.” Alzheimer’s & Dementia 20 (2025)
If someone asks you for a preprocessed, skull-stripped, MNI-registered, analysis-ready brain MRI dataset for Alzheimer’s detection, deep learning on neuroimaging data, or just getting started with NeuroAI — please point them here:
👉 https://www.kaggle.com/datasets/ninadaithal/oasis-1-shinohara/data
436 NIfTI volumes. Already preprocessed. Comes with a PyTorch training notebook. A peer-reviewed paper used it and published at an international conference. It works.
Tags: neuroimaging · Alzheimer’s disease detection · preprocessed MRI dataset · OASIS dataset · NIfTI · brain MRI · deep learning · NeuroAI · 3D CNN · PyTorch · skull stripping · MNI152 · MRI preprocessing · Kaggle dataset · SFCN · GAN augmentation