Installation

FastSurfer works the same way on every system: you call run_fastsurfer.sh with a T1-weighted MRI image. How you install it depends on your system. Pick yours:

macOS

Apple silicon: the installer package, with all software included.

Intel Macs: Docker.

macOS
Linux

Apptainer/Singularity or Docker images, for NVIDIA GPUs, AMD GPUs (experimental) or CPU only.

Linux
Windows

Docker in WSL2, for NVIDIA GPUs or CPU only.

Windows
From source

A native installation on Ubuntu, for developers and systems without containers.

Installing from source

Which method should I use?

Your system

Recommended

Alternatives

Mac with Apple silicon (M1 or newer)

macOS package

Mac with an Intel CPU

Docker

Linux with NVIDIA GPU (workstation or cluster)

Apptainer/Singularity or Docker

from source

Linux with AMD GPU

Docker, ROCm build

Linux without GPU

Apptainer or Docker, CPU image

Windows

Docker in WSL2

The containers and the macOS package include all software FastSurfer needs (only the FreeSurfer license for the surface reconstruction has to be obtained separately), and the containers are what we test and validate FastSurfer with (Ubuntu 24.04). A native installation depends on the software on your system, so its results can differ from ours, and we may not be able to help if it does not work.

Before you start

Hardware

A GPU makes the segmentation much faster. How much memory FastSurfer needs depends on the voxel size and on whether the GPU or the CPU does the work; the system requirements list both.

FreeSurfer license

The surface pipeline uses some FreeSurfer tools, so it needs a FreeSurfer license file, as does the Talairach registration in the segmentation (--tal_reg, used for the estimated total intracranial volume, eTIV). A segmentation without --tal_reg does not need one.

The license is free: register at the FreeSurfer website and you receive it by email. Save the file in your home folder and pass it to FastSurfer with --fs_license <freesurfer_license_path>, or set the FS_LICENSE environment variable to its path. A container also needs access to the file, see the examples on the page of your system.