This repository contains the implementation for brain-to-image reconstruction using fMRI data with advanced Mixture-of-Experts (MoE) neural architectures. The system converts brain activity patterns into visual images through a multi-stage pipeline involving neural encoding, diffusion model fine-tuning, and image generation.
BrainGen implements a state-of-the-art approach for reconstructing visual images from fMRI brain signals using:
We follow the same data preprocessing settings as MindEyeV2 (https://github.com/MedARC-AI/MindEyeV2).
The complete pipeline consists of four main stages:
Train neural encoders to map fMRI voxel data to CLIP embedding space:
# For image-conditioned training
bash launch_train.sh <num_sessions>
# For text-conditioned training
bash launch_train_text.sh <num_sessions>
Key Files:
Train.py: Main training script for image-conditioned brain encodersTrain_text.py: Training script for text-conditioned brain encoderslaunch_train.sh / launch_train_text.sh: Launch scripts with configurationFine-tune Stable Diffusion XL with LoRA adapters using brain-derived embeddings:
bash launch_tune_diffusion.sh
Key Files:
Finetune_diffusion.py: Fine-tuning script for Stable Diffusion XLlaunch_tune_diffusion.sh: Launch script for diffusion fine-tuningGenerate reconstructed images from brain signals using the trained models:
# Automatically called in launch_tune_diffusion.sh
python Recon_inference.py --model_name_image <image_model> --model_name_text <text_model> [options]
Key Files:
Recon_inference.py: Main reconstruction inference scriptpipeline_stable_diffusion_xl.py: Custom SDXL pipeline with brain routingApply post-processing refinement to improve reconstruction quality, as in MindEyeV2:
python Recon_inference_refiner.py [options]
Key Files:
Recon_inference_refiner.py: Optional refinement post-processingbrain_encoder.py: Base brain encoder with ridge regression and transformer backbonebrain_moe_encoder.py: Mixture-of-Experts variants including:
BrainMoE: Standard MoE with expert routingBrainMoEMulti: Multi-layer MoE with hierarchical expertsBrainMoEHier: Hierarchical MoE with meta-expertsclip_encoders.py:
CLIPImageEncoder: Image encoding with ViT-L/ViT-BigG supportCLIPTextEncoderDual: Dual text encoder (ViT-L + ViT-BigG)routers.py: Expert routing mechanisms including:
ExpertRouter: Basic expert selection with load balancingbase_encoders.py: Foundational neural network componentsload_data.py: Data loading utilities for NSD datasetfinal_evaluations.py: Comprehensive evaluation metricsKey hyperparameters can be configured via command line arguments:
--model_name: Model identifier for checkpointing--subj: Subject ID (1-8) for single-subject training--multi_subject: Enable multi-subject training--num_sessions: Number of training sessions to include--hidden_dim: Hidden dimension size (default: 4096)--n_blocks: Number of transformer blocks (default: 4)--use_prior: Enable diffusion prior training--batch_size: Training batch sizeThe codebase supports multiple encoder architectures:
The system requires the Natural Scenes Dataset (NSD) with the following structure:
data/NSD/
├── wds/ # WebDataset format
│ └── subj0X/
│ ├── train/ # Training sessions
│ └── new_test/ # Test data
├── betas_all_subj0X_fp32_renorm.hdf5 # fMRI voxel data
├── coco_images_224_float16.hdf5 # COCO images
└── coco_captions.json # COCO captions
bash launch_train.sh 40 # Use 40 sessions
bash launch_tune_diffusion.sh
The system includes comprehensive evaluation metrics:
Run evaluations using:
python final_evaluations.py --all_recons_path <path_to_reconstructions> [options]
The system supports multi-GPU distributed training via Accelerate:
Configure MoE behavior via:
--num_exp_0: Number of base experts--exp_factor_list: Expert multiplication factors per layer--capacity_factor_0: Expert capacity scaling--train_router_only: Train only routing components (for cross-subject generalization)Fine-tune diffusion behavior with:
--rank: LoRA rank for efficient fine-tuning--snr_gamma: Signal-to-noise ratio gamma--route_image / --route_text: Enable brain-guided routingIf you use this code in your research, please cite:
@article{wei2025more,
title={MoRE-Brain: Routed Mixture of Experts for Interpretable and Generalizable Cross-Subject fMRI Visual Decoding},
author={Wei, Yuxiang and Zhang, Yanteng and Xiao, Xi and Wang, Tianyang and Wang, Xiao and Calhoun, Vince D},
journal={arXiv preprint arXiv:2505.15946},
year={2025}
}
Note: This implementation builds upon MindEyeV2 and Stable Diffusion XL. Please ensure proper attribution to the original works.
2 commits
Jupyter Notebook
76.6%
Python
22.9%
This repository contains the implementation for brain-to-image reconstruction using fMRI data with advanced Mixture-of-Experts (MoE) neural architectures. The system converts brain activity patterns into visual images through a multi-stage pipeline involving neural encoding, diffusion model fine-tuning, and image generation.
BrainGen implements a state-of-the-art approach for reconstructing visual images from fMRI brain signals using:
We follow the same data preprocessing settings as MindEyeV2 (https://github.com/MedARC-AI/MindEyeV2).
The complete pipeline consists of four main stages:
Train neural encoders to map fMRI voxel data to CLIP embedding space:
# For image-conditioned training
bash launch_train.sh <num_sessions>
# For text-conditioned training
bash launch_train_text.sh <num_sessions>
Key Files:
Train.py: Main training script for image-conditioned brain encodersTrain_text.py: Training script for text-conditioned brain encoderslaunch_train.sh / launch_train_text.sh: Launch scripts with configurationFine-tune Stable Diffusion XL with LoRA adapters using brain-derived embeddings:
bash launch_tune_diffusion.sh
Key Files:
Finetune_diffusion.py: Fine-tuning script for Stable Diffusion XLlaunch_tune_diffusion.sh: Launch script for diffusion fine-tuningGenerate reconstructed images from brain signals using the trained models:
# Automatically called in launch_tune_diffusion.sh
python Recon_inference.py --model_name_image <image_model> --model_name_text <text_model> [options]
Key Files:
Recon_inference.py: Main reconstruction inference scriptpipeline_stable_diffusion_xl.py: Custom SDXL pipeline with brain routingApply post-processing refinement to improve reconstruction quality, as in MindEyeV2:
python Recon_inference_refiner.py [options]
Key Files:
Recon_inference_refiner.py: Optional refinement post-processingbrain_encoder.py: Base brain encoder with ridge regression and transformer backbonebrain_moe_encoder.py: Mixture-of-Experts variants including:
BrainMoE: Standard MoE with expert routingBrainMoEMulti: Multi-layer MoE with hierarchical expertsBrainMoEHier: Hierarchical MoE with meta-expertsclip_encoders.py:
CLIPImageEncoder: Image encoding with ViT-L/ViT-BigG supportCLIPTextEncoderDual: Dual text encoder (ViT-L + ViT-BigG)routers.py: Expert routing mechanisms including:
ExpertRouter: Basic expert selection with load balancingbase_encoders.py: Foundational neural network componentsload_data.py: Data loading utilities for NSD datasetfinal_evaluations.py: Comprehensive evaluation metricsKey hyperparameters can be configured via command line arguments:
--model_name: Model identifier for checkpointing--subj: Subject ID (1-8) for single-subject training--multi_subject: Enable multi-subject training--num_sessions: Number of training sessions to include--hidden_dim: Hidden dimension size (default: 4096)--n_blocks: Number of transformer blocks (default: 4)--use_prior: Enable diffusion prior training--batch_size: Training batch sizeThe codebase supports multiple encoder architectures:
The system requires the Natural Scenes Dataset (NSD) with the following structure:
data/NSD/
├── wds/ # WebDataset format
│ └── subj0X/
│ ├── train/ # Training sessions
│ └── new_test/ # Test data
├── betas_all_subj0X_fp32_renorm.hdf5 # fMRI voxel data
├── coco_images_224_float16.hdf5 # COCO images
└── coco_captions.json # COCO captions
bash launch_train.sh 40 # Use 40 sessions
bash launch_tune_diffusion.sh
The system includes comprehensive evaluation metrics:
Run evaluations using:
python final_evaluations.py --all_recons_path <path_to_reconstructions> [options]
The system supports multi-GPU distributed training via Accelerate:
Configure MoE behavior via:
--num_exp_0: Number of base experts--exp_factor_list: Expert multiplication factors per layer--capacity_factor_0: Expert capacity scaling--train_router_only: Train only routing components (for cross-subject generalization)Fine-tune diffusion behavior with:
--rank: LoRA rank for efficient fine-tuning--snr_gamma: Signal-to-noise ratio gamma--route_image / --route_text: Enable brain-guided routingIf you use this code in your research, please cite:
@article{wei2025more,
title={MoRE-Brain: Routed Mixture of Experts for Interpretable and Generalizable Cross-Subject fMRI Visual Decoding},
author={Wei, Yuxiang and Zhang, Yanteng and Xiao, Xi and Wang, Tianyang and Wang, Xiao and Calhoun, Vince D},
journal={arXiv preprint arXiv:2505.15946},
year={2025}
}
Note: This implementation builds upon MindEyeV2 and Stable Diffusion XL. Please ensure proper attribution to the original works.
2 commits
Jupyter Notebook
76.6%
Python
22.9%