一、项目说明
1.1 项目仓库
- GIT URL: https://github.com/neuropoly/totalspineseg
1.2 项目介绍
TotalSpineSeg 是一款用于自动分割 MRI 图像中所有椎骨、椎间盘、脊髓和椎管的工具。它对各种 MRI 对比度、采集方向和分辨率均具有鲁棒性。TotalSpineSeg 使用的模型基于nnU-Net,并以此作为训练和推理的主干网络。
如果您使用此模型,请引用我们的工作:
Warszawer Y、Molinier N、Valošek J、Shirbint E、Benveniste PL、Achiron A、Eshaghi A和Cohen-Adad J。使用结合nnU-Net和迭代算法的混合方法进行全自动椎骨和脊髓分割。 ISMRM 第 32 届年会论文集。 2024年
请同时引用nnU-Net,因为我们的工作很大程度上依赖于它:
Isensee, F., Jaeger, PF, Kohl, SA, Petersen, J., & Maier-Hein, KH (2021). nnU-Net:一种基于深度学习的生物医学图像分割的自配置方法。自然方法,18(2),203-211。

1.3 模型描述
TotalSpineSeg采用混合方法,将nnU-Net与迭代算法相结合,用于椎骨、椎间盘、脊髓和椎管的实例分割和标注。该过程包括两个主要步骤:
步骤 1:使用 nnU-Net 模型(Dataset101)识别总共九个类别。这包括四个语义类别:脊髓、椎管、椎间盘和椎骨;以及五个地标类别:C2-C3、C7-T1、T12-L1 和 L5-S,它们代表脊柱上的关键椎间盘,以及 C1 椎骨,用于确定 MRI 图像是否覆盖 C1(图 1B)。然后使用迭代算法处理输出分割结果,以映射各个椎间盘,并从中提取异常椎间盘分割结果(图 1C)。
步骤 2:随后使用第二个 nnU-Net 模型(Dataset102)来识别总共十个类别。这包括五个语义类别:脊髓、椎管、椎间盘、奇数椎体和偶数椎体;以及五个地标类别:C2-C3、C7-T1、T12-L1 和 L5-S,它们分别代表脊柱上的关键椎间盘以及骶骨(图 1D)。该模型使用两个输入通道:MRI 图像(图 1A)和从第一步中提取的奇数椎间盘(图 1C)。最后,使用一种算法对输出分割结果进行处理,该算法为每个椎体和椎间盘分配单独的标签,从而生成最终分割结果(图 1F)。
为了进行比较,我们还训练了一个单一模型(Dataset103),该模型一步即可输出每个椎骨和椎间盘的单独标签值。

图 1:用于脊柱结构自动分割的混合方法示意图。(A) 输入 MRI 图像。(B) 步骤 1 模型预测。© 从步骤 1 预测中提取异常椎间盘。(D) 步骤 2 模型预测。(E) 最终分割结果,每个椎体和椎间盘均有单独的标签。
二、前置准备
2.1 cuda版本适配
cuda版本太高,cuda12.9的torch版本是2.8.0,readme要求torch的版本是小于2.6。
如需 CUDA GPU 支持,请按照其网站上的说明安装 PyTorch<2.6。请务必将 --upgrade 标志添加到您的安装命令中,以替换任何现有的 PyTorch 安装。例:
python3 -m pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu118 --upgrade
pytorch官网信息:
pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu129
满足条件的torch版本是2.5.1,对应的安装命令如下,满足要求的最高CUDA版本是12.4.
# CUDA 11.8
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=11.8 -c pytorch -c nvidia
# CUDA 12.1
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.1 -c pytorch -c nvidia
# CUDA 12.4
conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia
2.2 WSL环境配置
更换wsl中Ubuntu镜像源地址为清华大学的镜像地址。
sudo sed -i 's@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo sed -i 's@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
更新仓库,安装依赖模块。
sudo apt update -y
sudo apt install gcc g++ cmake build-essential -y
2.2.1 CUDA12.4安装
下载并按照CUDA12.4。
wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run
sudo bash cuda_12.4.0_550.54.14_linux.run
打开~/.bashrc,配置CUDA环境:
export CUDA_HOME=/usr/local/cuda-12.4
export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH
2.2.2 anaconda安装
下载anaconda安装包,执行安装。
wget https://mirror.lzu.edu.cn/anaconda/archive/Anaconda3-2025.06-1-Linux-x86_64.sh
chmod +x Anaconda3-2025.06-1-Linux-x86_64.sh
./Anaconda3-2025.06-1-Linux-x86_64.sh
安装结束之后,我们对pip全局设置国内代理,这里选择腾讯的pip镜像源。
pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
pip config set global.trusted-host mirrors.cloud.tencent.com
2.3 运行环境配置
通过conda创建python3.10的环境,手动安装pillow。
conda create -n totalspineseg python=3.10
conda install pillow
然后从git仓库拉取代码,我们安装totalspineseg:
git clone https://github.com/neuropoly/totalspineseg.git
# 此时不需要先cd到totalspineseg中
python3 -m pip install -e totalspineseg[nnunetv2]
然后手工安装torch:
pip uninstall torch torchvision torchaudio
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124
三、使用方法
3.1 代理配置
- 代理配置
wsl种使用代理一定要打开局域网代理,关闭Windows的防火墙:
export http_proxy=http://172.30.160.1:7879
export https_proxy=http://172.30.160.1:7879
# 测试代理是否生效,返回200,301等状态码,则表示成功
curl -I https://github.com
3.2 模型推理
- 帮助手册
totalspineseg --help
usage: totalspineseg [-h] [--iso] [--loc LOC] [--suffix SUFFIX [SUFFIX ...]]
[--loc-suffix LOC_SUFFIX] [--step1]
[--keep-only KEEP_ONLY [KEEP_ONLY ...]]


163

被折叠的 条评论
为什么被折叠?



