说明文档
安装
配置系统
<details> <summary>Ubuntu</summary>
首先我们需要下载并安装 CUDA 11.2:
wget https://developer.download.nvidia.com/compute/cuda/11.2.2/local_installers/cuda_11.2.2_460.32.03_linux.run
sudo sh cuda_11.2.2_460.32.03_linux.run --silent --toolkit --installpath=/usr/local/cuda-11.2
接下来,必须安装 cudnn。从 https://developer.nvidia.com/rdp/cudnn-archive 下载合适的 deb 文件。然后安装该文件:
sudo dpkg -i ~/Downloads/cudnn-local-repo-ubuntu2204-8.9.7.29_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-8.9.7.29/cudnn-local-*-keyring.gpg /usr/share/keyrings/
sudo apt update
sudo apt install libcudnn8 libcudnn8-dev
sudo cp /usr/include/cudnn*.h /usr/local/cuda-11.2/include/
sudo cp -P /usr/lib/x86_64-linux-gnu/libcudnn*.so* /usr/local/cuda-11.2/lib64/
sudo ldconfig
最后,我们必须在 .bashrc 中配置系统路径:
echo 'export CUDA_HOME=/usr/local/cuda-11.2' >> ~/.bashrc
echo 'export PATH=$CUDA_HOME/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$CUDA_HOME/extras/CUPTI/lib64' >> ~/.bashrc
</details>
安装 pyenv 和 Python
<details> <summary> <b>Ubuntu</b> </summary>
在 Ubuntu 上,通过 curl 安装 pyenv:
curl https://pyenv.run | bash
安装完成后,将 pyenv 添加到 ~/.bashrc 文件中以启用终端快捷方式:
echo 'export PYENV_ROOT=\"$HOME/.pyenv\"' >> ~/.bashrc
echo 'export PATH=\"$PYENV_ROOT/bin:$PATH\"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval \"$(pyenv init -)\"\nfi' >> ~/.bashrc
source ~/.bashrc
</details>
<details>
<summary> <b>macOS</b> </summary>
在 macOS 上,通过 brew 安装 pyenv:
brew update
brew install pyenv
安装完成后,将 pyenv 添加到 ~/.zshrc 文件中以启用终端快捷方式:
echo 'export PYENV_ROOT=\"$HOME/.pyenv\"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH=\"$PYENV_ROOT/bin:$PATH\"' >> ~/.zshrc
echo 'eval \"$(pyenv init - zsh)\"' >> ~/.zshrc
</details>
安装正确的 Python 版本
此仓库中的模型需要 Python 版本 3.10.4:
pyenv install 3.10.4
配置 Python 环境
接下来,我们可以设置一个 Python 环境来运行仓库中的代码:
pyenv local 3.10.4
poetry env use 3.10.4
poetry install
激活环境
可以使用以下命令激活环境:
eval $(poetry env activate)
教程
下载 IXI 数据集
下面描述的所有方法都需要先下载 IXI 数据集。如果您想在自己的数据上运行模型,可以跳过此步骤,但需要在后续脚本中相应地替换路径。否则,可以通过以下方式下载 IXI 数据集:
python tutorials/download_ixi.py
生成预测
<details> <summary> 使用 Docker 进行预处理和预测 </summary>
使用 Docker 进行预处理和预测依赖于运行 Docker 容器,该容器首先对所有原始输入图像运行 FastSurfer 预处理,然后在生成的预处理图像上运行模型。Docker 容器将生成一个包含预处理图像的文件夹和一个包含所有预测的 predictions.csv 文件。
运行容器需要挂载三个卷:
- Inputs: 包含输入数据的文件夹。将处理在此文件夹或其子文件夹中检测到的所有 nifti 文件
- Outputs: 用于写入预处理图像和预测的文件夹。运行容器之前必须创建此文件夹
- Licenses: 包含 freesurfer 许可证的文件夹。文件必须命名为 freesurfer.txt
mkdir -p ~/data/ixi/outputs
docker pull estenhl/pyment-preprocess-and-predict:1.0.0
docker run --rm -it \
--user $(id -u):$(id -g) \
--volume $HOME/data/ixi/images:/input \
--volume $HOME/data/ixi/outputs:/output \
--volume $HOME/licenses:/licenses \
--gpus all \
estenhl/pyment-preprocess-and-predict:1.0.0
</details> <details> <summary> 在 Python 中进行预处理和预测 </summary>
手动进行预处理和预测依赖于使用此仓库中提供的脚本,通过两个步骤生成预测
预处理
必须使用 FastSurfer 对图像进行预处理。首先,必须下载 FastSurfer。如果后续任何步骤失败,可以在 FastSurfer GitHub 仓库 中找到全面的安装指南。以下步骤将 FastSurfer 下载并安装到 ~/repos/fastsurfer 文件夹中。首先,必须安装一些系统包:
sudo apt-get update && apt-get install -y --no-install-recommends wget git ca-certificates file
接下来,我们可以克隆 FastSurfer 并切换到正确的分支:
mkdir -p ~/repos
export FASTSURFER_HOME=~/repos/fastsurfer
git clone --branch stable https://github.com/Deep-MI/FastSurfer.git $FASTSURFER_HOME
(cd $FASTSURFER_HOME && git checkout v2.0.1)
然后我们可以为 fastsurfer 创建一个 Python 环境并安装其依赖项。注意,这些包是使用新创建的虚拟环境中的 pip 安装的,而不是系统默认的:
mkdir -p ~/venvs
export FASTSURFER_VENV=~/venvs/fastsurfer
python -m venv $FASTSURFER_VENV
# requirements 文件中的 SimpleITK 版本已被撤回,因此我们在安装其余要求之前手动安装一个有效版本
$FASTSURFER_VENV/bin/pip install simpleitk==2.1.1.2
# 然后在安装其余部分之前必须从 requirements.txt 中删除 SimpleITK
grep -v \"simpleitk==2.1.1\" $FASTSURFER_HOME/requirements.txt | $FASTSURFER_VENV/bin/pip install -r /dev/stdin
最后,我们可以运行预处理脚本,指向虚拟环境中的 Python。注意,还必须将有效的 freesurfer 许可证传递给此脚本,并且必须设置 $FASTSURFER_HOME 变量:
sh scripts/preprocess.sh --license <path-to-license> --python ~/venvs/fastsurfer/bin/python ~/data/ixi/images ~/data/ixi/preprocessed
生成预测
预处理后,我们可以使用仓库中的脚本为 IXI 数据集生成预测。首先,确保已加载虚拟环境:
eval $(poetry env activate)
接下来,为预测创建输出文件夹并运行预测脚本:
mkdir ~/data/ixi/outputs
python scripts/predict_from_fastsurfer_folder.py ~/data/ixi/preprocessed -d ~/data/ixi/outputs/predictions.csv
</details>
<details> <summary> 使用 Docker 分两步进行预处理和预测 </summary> 通过 Docker 分两步进行预处理和预测需要使用两个预构建的 Docker 容器分别完成这两个步骤。
预处理
运行用于预处理的容器需要挂载三个卷:
- Inputs: 包含输入数据的文件夹。将处理在此文件夹或其子文件夹中检测到的所有 nifti 文件
- Outputs: 用于写入预处理图像的文件夹。运行容器之前必须创建此文件夹
- Licenses: 包含 freesurfer 许可证的文件夹。文件必须命名为 freesurfer.txt
mkdir -p ~/data/ixi/outputs
docker pull estenhl/pyment-preprocessing:1.0.0
docker run --rm \
--user $(id -u):$(id -g) \
--volume $HOME/data/ixi/images:/input \
--volume $HOME/data/ixi/outputs:/output \
--volume <path_to_licenses>:/licenses \
--gpus all \
estenhl/pyment-preprocessing:1.0.0
生成预测
运行用于预测的容器需要两个卷:
- Fastsurfer: 包含 fastsurfer 处理后图像的文件夹
- Outputs: 写入预测的文件夹
docker pull estenhl/pyment-predict:1.0.0
docker run --rm -it \
--user $(id -u):$(id -g) \
--volume $HOME/data/ixi/outputs/fastsurfer:/fastsurfer \
--volume $HOME/data/ixi/outputs:/output \
--gpus all \
estenhl/pyment-predict:1.0.0
</details>
评估预测
使用以下命令评估 IXI 预测:
python tutorials/evaluate_ixi_predictions.py
如果一切设置正确,这应该产生 3.12 的 MAE。请注意,如果标签和预测不在标准位置,可以将它们的路径作为关键字参数传递给脚本。
estenhl/pyment-public
作者 estenhl
创建时间: 2025-12-17 12:45:58+00:00
更新时间: 2025-12-19 10:41:25+00:00
在 Hugging Face 上查看