ONNX 模型库
返回模型

说明文档

安装

配置系统

<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

image-classification
↓ 0 ♥ 0

创建时间: 2025-12-17 12:45:58+00:00

更新时间: 2025-12-19 10:41:25+00:00

在 Hugging Face 上查看

文件 (44)

.gitattributes
.gitignore
CHANGELOG.md
LICENSE.md
README.md
artifacts/sfcn-multi.onnx ONNX
docker/README.md
docker/predict.Dockerfile
docker/preprocess.Dockerfile
docker/preprocess_and_predict.Dockerfile
poetry.lock
pyment/__init__.py
pyment/configurations/__init__.py
pyment/configurations/data_split_configuration.py
pyment/configurations/dataset_configuration.py
pyment/configurations/finetuning_configuration.py
pyment/configurations/learning_rate_schedule_configuration.py
pyment/configurations/model_configuration.py
pyment/configurations/training_configuration.py
pyment/factories/__init__.py
pyment/factories/loss_factory.py
pyment/factories/metric_factory.py
pyment/factories/optimizer_factory.py
pyment/models/__init__.py
pyment/models/sfcn/__init__.py
pyment/models/sfcn/sfcn.py
pyment/models/sfcn/sfcn_multi.py
pyment/models/sfcn/sfcn_reg.py
pyment/models/utils/ensure_weights.py
pyment/models/utils/load_select_pretrained_weights.py
pyment/preprocessing/__init__.py
pyment/preprocessing/conform.py
pyment/utils/download_file.py
pyment/utils/json_serialize.py
pyproject.toml
scripts/finetune_from_bids_folder.py
scripts/finetune_from_fastsurfer_folder.py
scripts/predict_from_bids_folder.py
scripts/predict_from_fastsurfer_folder.py
scripts/preprocess.sh
scripts/utils/upload_weights_to_github.py
tutorials/download_ixi.py
tutorials/evaluate_ixi_predictions.py
tutorials/preprocess_ixi.sh